SlideShare une entreprise Scribd logo
1  sur  4
Télécharger pour lire hors ligne
Definiendo historias de usuario en Scrum
Uno de los puntos que más interrogantes provocan en la gente que se acerca a
Scrum es cómo dividir el desarrollo de un proyecto en historias de usuario, es
decir en tareas lo más pequeñas posibles que aporten valor funcional al cliente.
En este artículo voy a tratar de explicar el enfoque que yo adopto cuando trato
de describir un requisito funcional cómo historia de usuario. Obviamente no es
la única opción, ni la mejor, de echo es probable que esté pasando un montón
de cosas por alto y que muchos se lleven las manos a la cabeza, pero creo que
puede ser útil cómo primera aproximación para aquellas personas que no
tengan del todo claro un procedimiento a seguir.
Vamos a tomar cómo ejemplo un problema de la asignatura de Especificación
de Software de la Facultad de Informática de Barcelona (Enginyeria del
Software: Especificació. Especificació de sistemes orientats a objectes amb la
notació UML. EDICIONS UPC), que presenta el siguiente enunciado:
Se quiere desarrollar un sistema sencillo de control de préstamos en un a
biblioteca. El sistema debe admitir el alta y la baja de socios y de libros. Los
socios pueden pedir libros en préstamo, pero no se pueden tener más de tres
libros en préstamo en un momento determinado. Los libros se han de devolver
antes de un mes de la fecha del préstamo. Cada vez que un socio devuelve un
libro después de la fecha de la devolución, se penaliza reduciendo en una
unidad el número de libros que puede tener simultáneamente. Cuando llega a
cero el socio se de de baja automáticamente.
Ahora supongamos que este problema nos lo ha planteado nuestro cliente, que
quiere que le construyamos exactamente el sistema descrito en el enunciado
¿Cómo llegamos desde el mismo, a la lista de tareas del backlog? Por el
momento vamos a obviar aquellas tareas que a simple vista no aportan valor al
cliente pero que son del todo necesarias para el proyecto (definir e implementar
la arquitectura del sistema por ejemplo) y vamos a centrarnos únicamente en
los objetivos funcionales.
Lo que vamos a hacer va a ser un “clásico” análisis de requerimientos,
intentando extraer del texto (lo que nos dice el cliente) las diferentes
funcionalidades que debe tener el sistema. Para ello analizamos los párrafos
del texto. A simple vista podemos extraer las siguientes funcionalidades:
De la siguiente frase: El sistema debe admitir el alta y la baja de socios y de
libros extraemos las siguientes posibles historias de usuario:
 Alta Libro
 Baja Libro
 Alta Socio
 Baja Socio
Del párrafo siguiente: Los socios pueden pedir libros en préstamo, pero no se
pueden tener mas de tres libros en préstamo en un momento
determinado obtenemos una única funcionalidad o historia
 Préstamo libro
En este párrafo: Los libros se han de devolver antes de un mes de la fecha del
préstamo. Cada vez que un socio devuelve un libro después de la fecha de la
devolución, se penaliza reduciendo en una unidad el número de libros que
puede tener simultáneamente creo que podrían identificarse dos historias (es
mi opinión, quizás otra gente opine que sólo hay una posible historia)
 Devolver libro
 Penalizar socio
En el último párrafo obtenemos otra posible historia: Cuando llega a cero el
socio se de de baja automáticamente. Aunque pueda parecer que es una
historia repetida, yo considero que a nivel de valor al cliente es una
funcionalidad diferente.
 Baja automática de socio
Aparte de las historias que aparecen más o menos explícitas en el código,
quizás podrían deducirse otras historias cómo:
 Iniciar sesión en el sistema
 Cerrar sesión
 Alta usuario
 Baja usuario
La lista completa de historias que tendríamos sería la siguiente:
 Alta libro
 Baja libro
 Alta socio
 Baja socio
 Préstamo de libro
 Devolver libro
 Penalizar socio
 Baja automática de socio
 Iniciar sesión en el sistema
 Cerrar sesión
 Alta usuario
 Baja usuario
Si estuviéramos en una metodología clásica de desarrollo, en este punto
deberíamos hacer los casos de uso para los requerimientos identificados, sus
diagramas de secuencia, etc. En una metodología cómo Scrum, por definición,
no es necesaria esta documentación (queda a elección de cada uno decidir que
documentación necesita su proyecto) y lo que nos quedaría por hacer es definir
e introducir las historias en el backlog. ¿Y cómo se define una funcionalidad en
forma de historia de usuario? Pues la idea es expresarla desde el punto de
vista del cliente, o del usuario que va a usar el sistema, con un lenguaje que
pueda ser entendido perfectamente por ellos (nada de UML, OCL o demás
lenguajes de especificación) y que no cree ambigüedades. Por ejemplo:
Historia: Préstamo de libro
ID: 5
Descripción: Cómo cliente quiero que los socios puedan pedir prestado un
libro, indicando su número de socio y la referencia del libro, siempre y cuando
no tengan ya tres libros en préstamo en ese momento.
Importancia: 300
Cómo probarlo:
 Introducir un número de socio incorrecto y comprobar que se indica error
 Introducir un socio que ya tiene 3 libros en préstamo y comprobar que se
indica error
 Introducir un libro del que no hay ejemplares y comprobar que se indica
un error
 Introducir todos los datos correctos y comprobar que el número de
ejemplares disponibles del libro disminuye y el número de préstamos del socio
aumenta en uno.
Cómo vemos, en Scrum se detalla de manera poco explícita la funcionalidad,
únicamente se explica a nivel de cliente. La ventaja es que no se fijan los
detalles de la implementación hasta el momento en que se va a realizar (en la
descomposición en tareas) con lo que se puede reaccionar más ágilmente ante
los cambios de los requisitos o de las necesidades del cliente.
Haciendo lo mismo con las demás funcionalidades, nos quedaría un product
backlog similar al siguiente (se ha obviado la parte de test de las historias):
Historia Importancia Descripción
Alta libros 600 Dar de alta un libro en el sistema
Baja libros 250 Dar de baja un libro del sistema
Alta socio 500 Dar de alta un socio en el sistema
Baja socio 300 Dar de baja un socio del sistema
Pedir libro 350 Pedir prestado un libro
Devolver libro 340 Devolver un libro
Penalización
socio
330 Penalizar al socio por retrasarse en la
devolución
Baja automática 320 Dar de baja automáticamente de socio
Iniciar sesión en
el sistema
550 Iniciar una sesión de usuario en el sistema
Cerrar sesión 500 Terminar sesión con el sistema
Alta usuario 450 Dar de alta un nuevo usuario en el sistema
Baja usuario 400 Dar de baja un usuario del sistema
En este punto tenemos identificadas todas las tareas funcionales del proyecto,
y se ha descrito cada una de ellas cómo una historia de usuario.
Aunque ya tenemos completa la lista de funcionalidades, es obvio que el
product backlog tal y como está no es suficiente para poder avanzar en el
proyecto, ya que no aparecen todas aquellas tareas que no son funcionales
(historias técnicas, requisitos no funcionales o como se le quieran llamar) pero
que son necesarias para el desarrollo del proyecto. Pero la mayoría de estas
tareas no aportan valor al cliente, entonces ¿Se deben incluir estas tareas en el
backlog? ¿Y de que manera? No vamos a discutir en este artículo el tema, ya
que daría para muchos posts, pero a modo de apunte se podría gestionar de la
siguiente forma:
En proyectos que se están iniciando, es fácilmente justificable introducir tareas
técnicas o no funcionales, ya que sin ellas el proyecto no existe. Así bajo la
forma de Epics (o super historias de usuario) se podrían englobar tareas tales
cómo Implementar la capa de datos, implementar la capa de comunicaciones,
etc. Estas tareas se llevarían a cabo en las primeras iteraciones, o incluso en
una primera iteración mayor que las otras.
En fases más avanzadas del proyecto, es difícil justificar tareas no funcionales,
cómo la refactorización de módulos, instalación de servidores de pruebas, etc.
Ya que el cliente querrá priorizar aquellas historias que le aporten valor. En
este caso lo ideal es intentar que el cliente comprenda la importancia de las
tareas a realizar, o si eso no es posible utilizar otras técnicas, cómo
introducirlas dentro de alguna de las historias de usuario, o mantener una lista
separada de historias técnicas con un porcentaje de tiempo no negociable con
el dueño de producto.
Cómo hemos visto el proceso de definir historias de usuario es tan simple (o
tan complicado) cómo realizar un análisis de requerimientos, proceso para el
cual no hay ningún truco infalible y dependerá en gran medida de la
experiencia y pericia del analista o analistas que se encarguen de él, y
expresar las funcionalidades resultantes del análisis en un lenguaje que pueda
ser fácilmente entendido por el cliente de nuestro proyecto.
Por si queréis ampliar información os dejo algunos links interesantes sobre
Historias de Usuario i Scrum (o Agile en general). Esperamos vuestros
comentarios!

Contenu connexe

Dernier

9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudianteAndreaHuertas24
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxLolaBunny11
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesFundación YOD YOD
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
Herramientas de corte de alta velocidad.pptx
Herramientas de corte de alta velocidad.pptxHerramientas de corte de alta velocidad.pptx
Herramientas de corte de alta velocidad.pptxRogerPrieto3
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIAWilbisVega
 

Dernier (15)

9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento Protégeles
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
Herramientas de corte de alta velocidad.pptx
Herramientas de corte de alta velocidad.pptxHerramientas de corte de alta velocidad.pptx
Herramientas de corte de alta velocidad.pptx
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
 

En vedette

AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfmarketingartwork
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024Neil Kimberley
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)contently
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024Albert Qian
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsKurio // The Social Media Age(ncy)
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Search Engine Journal
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summarySpeakerHub
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next Tessa Mero
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentLily Ray
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best PracticesVit Horky
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project managementMindGenius
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...RachelPearson36
 
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Applitools
 
12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at WorkGetSmarter
 

En vedette (20)

AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
 
Skeleton Culture Code
Skeleton Culture CodeSkeleton Culture Code
Skeleton Culture Code
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
 
12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work
 
ChatGPT webinar slides
ChatGPT webinar slidesChatGPT webinar slides
ChatGPT webinar slides
 
More than Just Lines on a Map: Best Practices for U.S Bike Routes
More than Just Lines on a Map: Best Practices for U.S Bike RoutesMore than Just Lines on a Map: Best Practices for U.S Bike Routes
More than Just Lines on a Map: Best Practices for U.S Bike Routes
 

Ejemplo de historia de usuario

  • 1. Definiendo historias de usuario en Scrum Uno de los puntos que más interrogantes provocan en la gente que se acerca a Scrum es cómo dividir el desarrollo de un proyecto en historias de usuario, es decir en tareas lo más pequeñas posibles que aporten valor funcional al cliente. En este artículo voy a tratar de explicar el enfoque que yo adopto cuando trato de describir un requisito funcional cómo historia de usuario. Obviamente no es la única opción, ni la mejor, de echo es probable que esté pasando un montón de cosas por alto y que muchos se lleven las manos a la cabeza, pero creo que puede ser útil cómo primera aproximación para aquellas personas que no tengan del todo claro un procedimiento a seguir. Vamos a tomar cómo ejemplo un problema de la asignatura de Especificación de Software de la Facultad de Informática de Barcelona (Enginyeria del Software: Especificació. Especificació de sistemes orientats a objectes amb la notació UML. EDICIONS UPC), que presenta el siguiente enunciado: Se quiere desarrollar un sistema sencillo de control de préstamos en un a biblioteca. El sistema debe admitir el alta y la baja de socios y de libros. Los socios pueden pedir libros en préstamo, pero no se pueden tener más de tres libros en préstamo en un momento determinado. Los libros se han de devolver antes de un mes de la fecha del préstamo. Cada vez que un socio devuelve un libro después de la fecha de la devolución, se penaliza reduciendo en una unidad el número de libros que puede tener simultáneamente. Cuando llega a cero el socio se de de baja automáticamente. Ahora supongamos que este problema nos lo ha planteado nuestro cliente, que quiere que le construyamos exactamente el sistema descrito en el enunciado ¿Cómo llegamos desde el mismo, a la lista de tareas del backlog? Por el momento vamos a obviar aquellas tareas que a simple vista no aportan valor al cliente pero que son del todo necesarias para el proyecto (definir e implementar la arquitectura del sistema por ejemplo) y vamos a centrarnos únicamente en los objetivos funcionales. Lo que vamos a hacer va a ser un “clásico” análisis de requerimientos, intentando extraer del texto (lo que nos dice el cliente) las diferentes funcionalidades que debe tener el sistema. Para ello analizamos los párrafos del texto. A simple vista podemos extraer las siguientes funcionalidades: De la siguiente frase: El sistema debe admitir el alta y la baja de socios y de libros extraemos las siguientes posibles historias de usuario:  Alta Libro  Baja Libro  Alta Socio  Baja Socio
  • 2. Del párrafo siguiente: Los socios pueden pedir libros en préstamo, pero no se pueden tener mas de tres libros en préstamo en un momento determinado obtenemos una única funcionalidad o historia  Préstamo libro En este párrafo: Los libros se han de devolver antes de un mes de la fecha del préstamo. Cada vez que un socio devuelve un libro después de la fecha de la devolución, se penaliza reduciendo en una unidad el número de libros que puede tener simultáneamente creo que podrían identificarse dos historias (es mi opinión, quizás otra gente opine que sólo hay una posible historia)  Devolver libro  Penalizar socio En el último párrafo obtenemos otra posible historia: Cuando llega a cero el socio se de de baja automáticamente. Aunque pueda parecer que es una historia repetida, yo considero que a nivel de valor al cliente es una funcionalidad diferente.  Baja automática de socio Aparte de las historias que aparecen más o menos explícitas en el código, quizás podrían deducirse otras historias cómo:  Iniciar sesión en el sistema  Cerrar sesión  Alta usuario  Baja usuario La lista completa de historias que tendríamos sería la siguiente:  Alta libro  Baja libro  Alta socio  Baja socio  Préstamo de libro  Devolver libro  Penalizar socio  Baja automática de socio  Iniciar sesión en el sistema  Cerrar sesión  Alta usuario  Baja usuario Si estuviéramos en una metodología clásica de desarrollo, en este punto deberíamos hacer los casos de uso para los requerimientos identificados, sus diagramas de secuencia, etc. En una metodología cómo Scrum, por definición, no es necesaria esta documentación (queda a elección de cada uno decidir que documentación necesita su proyecto) y lo que nos quedaría por hacer es definir e introducir las historias en el backlog. ¿Y cómo se define una funcionalidad en forma de historia de usuario? Pues la idea es expresarla desde el punto de vista del cliente, o del usuario que va a usar el sistema, con un lenguaje que pueda ser entendido perfectamente por ellos (nada de UML, OCL o demás lenguajes de especificación) y que no cree ambigüedades. Por ejemplo:
  • 3. Historia: Préstamo de libro ID: 5 Descripción: Cómo cliente quiero que los socios puedan pedir prestado un libro, indicando su número de socio y la referencia del libro, siempre y cuando no tengan ya tres libros en préstamo en ese momento. Importancia: 300 Cómo probarlo:  Introducir un número de socio incorrecto y comprobar que se indica error  Introducir un socio que ya tiene 3 libros en préstamo y comprobar que se indica error  Introducir un libro del que no hay ejemplares y comprobar que se indica un error  Introducir todos los datos correctos y comprobar que el número de ejemplares disponibles del libro disminuye y el número de préstamos del socio aumenta en uno. Cómo vemos, en Scrum se detalla de manera poco explícita la funcionalidad, únicamente se explica a nivel de cliente. La ventaja es que no se fijan los detalles de la implementación hasta el momento en que se va a realizar (en la descomposición en tareas) con lo que se puede reaccionar más ágilmente ante los cambios de los requisitos o de las necesidades del cliente. Haciendo lo mismo con las demás funcionalidades, nos quedaría un product backlog similar al siguiente (se ha obviado la parte de test de las historias): Historia Importancia Descripción Alta libros 600 Dar de alta un libro en el sistema Baja libros 250 Dar de baja un libro del sistema Alta socio 500 Dar de alta un socio en el sistema Baja socio 300 Dar de baja un socio del sistema Pedir libro 350 Pedir prestado un libro Devolver libro 340 Devolver un libro Penalización socio 330 Penalizar al socio por retrasarse en la devolución Baja automática 320 Dar de baja automáticamente de socio Iniciar sesión en el sistema 550 Iniciar una sesión de usuario en el sistema Cerrar sesión 500 Terminar sesión con el sistema Alta usuario 450 Dar de alta un nuevo usuario en el sistema Baja usuario 400 Dar de baja un usuario del sistema En este punto tenemos identificadas todas las tareas funcionales del proyecto, y se ha descrito cada una de ellas cómo una historia de usuario. Aunque ya tenemos completa la lista de funcionalidades, es obvio que el
  • 4. product backlog tal y como está no es suficiente para poder avanzar en el proyecto, ya que no aparecen todas aquellas tareas que no son funcionales (historias técnicas, requisitos no funcionales o como se le quieran llamar) pero que son necesarias para el desarrollo del proyecto. Pero la mayoría de estas tareas no aportan valor al cliente, entonces ¿Se deben incluir estas tareas en el backlog? ¿Y de que manera? No vamos a discutir en este artículo el tema, ya que daría para muchos posts, pero a modo de apunte se podría gestionar de la siguiente forma: En proyectos que se están iniciando, es fácilmente justificable introducir tareas técnicas o no funcionales, ya que sin ellas el proyecto no existe. Así bajo la forma de Epics (o super historias de usuario) se podrían englobar tareas tales cómo Implementar la capa de datos, implementar la capa de comunicaciones, etc. Estas tareas se llevarían a cabo en las primeras iteraciones, o incluso en una primera iteración mayor que las otras. En fases más avanzadas del proyecto, es difícil justificar tareas no funcionales, cómo la refactorización de módulos, instalación de servidores de pruebas, etc. Ya que el cliente querrá priorizar aquellas historias que le aporten valor. En este caso lo ideal es intentar que el cliente comprenda la importancia de las tareas a realizar, o si eso no es posible utilizar otras técnicas, cómo introducirlas dentro de alguna de las historias de usuario, o mantener una lista separada de historias técnicas con un porcentaje de tiempo no negociable con el dueño de producto. Cómo hemos visto el proceso de definir historias de usuario es tan simple (o tan complicado) cómo realizar un análisis de requerimientos, proceso para el cual no hay ningún truco infalible y dependerá en gran medida de la experiencia y pericia del analista o analistas que se encarguen de él, y expresar las funcionalidades resultantes del análisis en un lenguaje que pueda ser fácilmente entendido por el cliente de nuestro proyecto. Por si queréis ampliar información os dejo algunos links interesantes sobre Historias de Usuario i Scrum (o Agile en general). Esperamos vuestros comentarios!