Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Por Dean
Leffingwell con
Pete Behrens
Resumen:
En este documento técnico, proporcionamos una descripción general sobre la derivación y aplicación
de historias de usuario, que son el mecanismo ágil principal que lleva los requisitos del cliente a través
del flujo de valor del desarrollo de software ágil. A su vez, las historias de usuario son un elemento
crítico del modelo de información de requisitos ajustables y escalables para empresas ágiles y el
panorama general de la agilidad empresarial, los cuales se pueden encontrar en el
blog.http://scalingsoftwareagility.wordpress.com/. Este documento se extrajo del próximo libro Agile
Requirements: Lean Requirements Practices for Teams, Programs and the Enterprise, programado
para su publicación en 2010. Un agradecimiento especial a Jennifer Fawcett y Don Widrig por sus
contribuciones también.
Introducción
En el desarrollo ágil, la historia del usuario es un sustituto ligero y más ágil de lo que ha sido nuestro
medio tradicional para especificar los requisitos de software: especificaciones de requisitos de software,
especificaciones de casos de uso y similares. De hecho, se puede argumentar que la historia del usuario es
el artefacto más importante en el desarrollo ágil, porque es el contenedor que principalmente lleva el flujo
de valor al usuario, y el desarrollo ágil tiene que ver con la entrega rápida de valor.
La historia del usuario también sirve como metáfora de todo nuestro enfoque de entrega de valor
incremental, es decir:
Defina una historia de valor para el usuario valiosa: impleméntela y pruébela en una breve iteración -
demostrar y/o envíelo al usuario: recopile comentarios, aprenda y repita para siempre.
He hablado brevemente de las historias de los usuarios en el contexto de mis documentos técnicos más
amplios, Un modelo de información de requisitos ajustables y escalable para empresas ágiles y El
panorama general de la agilidad empresarial1, donde, junto con los temas, las epopeyas y las
características, son los principales artefactos de requisitos que se utilizan por los equipos ágiles.
En este documento técnico, describiremos la historia del usuario con más detalle, porque es aquí donde
encontraremos una de las prácticas ágiles clave que nos ayudan a alinear nuestra solución directamente
con las necesidades específicas del usuario y, al mismo tiempo, ayudan a asegurar la calidad. .
1
www.scalingsoftwareagility.wordpress.com
2
http://xp123.com/xplor/xp0308/index.shtml
3
Sujeto al desarrollo y persistencia de pruebas de aceptación, que definen el comportamiento del sistema con detalle comprobable
por regresión.
Independien
te
norteegoí
sta
Valios
o
Estima
do
Pequeñ
o
Comprobable
El modelo INVEST es bastante ubicuo y muchos equipos ágiles evalúan sus historias con respecto a
estos atributos. Aquí está nuestra opinión sobre el valor de la INVERSIÓN del equipo.
Independiente
Independencia significa que una historia puede desarrollarse, probarse y potencialmente incluso
entregarse por sí sola. Por lo tanto, también se puede valorar de forma independiente.
Muchas historias tendrán algunas dependencias secuenciales naturales a medida que se desarrolle la
funcionalidad del producto y, sin embargo, cada pieza puede ofrecer valor de forma independiente. Por
ejemplo, un producto puede mostrar un solo registro, luego una lista, luego ordenar la lista, filtrar la lista,
preparar una lista de varias páginas, exportar la lista, editar elementos en la lista, etc.
Muchos de estos elementos tienen dependencias secuenciales, pero cada elemento proporciona un
valor independiente y el producto puede enviarse potencialmente a través de cualquier punto de
parada del desarrollo.
Sin embargo, muchas dependencias no valoradas, ya sean técnicas o funcionales, también tienden a
encontrar su camino en los atrasos y es necesario encontrarlas y eliminarlas. Por ejemplo, una
dependencia funcional no valorada podría ser:
Como administrador, puedo establecer las reglas de seguridad de contraseñas del consumidor para
que los usuarios deban crear y retener contraseñas seguras, manteniendo seguro el sistema.
Como consumidor, debo seguir las reglas de seguridad de contraseñas establecidas por el
administrador para poder mantener una alta seguridad en mi cuenta.
En este ejemplo, la historia del consumidor depende de la historia del administrador. La historia del
administrador solo se puede probar para establecer, borrar y preservar la política; pero no se puede
comprobar si se aplica al consumidor. Además, completar la historia del administrador no deja el
producto en un estado potencialmente apto para el envío.
7
Bill Wake. http://xp123.com/xplor/xp0308/index.shtml
Valioso
El objetivo de un equipo ágil es simple: ofrecer el máximo valor dadas las limitaciones de tiempo y
recursos existentes. Por lo tanto, el valor es el atributo más importante en el modelo INVEST y cada
historia de usuario debe proporcionar algún valor al usuario, cliente o parte interesada del producto. Los
trabajos pendientes se priorizan por valor y las empresas tienen éxito o fracasan en función del valor que
los equipos pueden ofrecer.
Un desafío típico que enfrentan los equipos es aprender a escribir historias de usuarios pequeñas e
incrementales que puedan generar valor de manera efectiva. Los enfoques tradicionales nos han
arraigado para crear estructuras funcionales de descomposición basadas en componentes técnicos. Este
enfoque de capas técnicas para la creación de software retrasa la entrega de valor hasta que todas las
capas se unen después de múltiples iteraciones. Wake8 ofrece su perspectiva de capas verticales, en
lugar de técnicas.
Piense en una historia completa como un pastel de varias capas, por ejemplo, una capa de red,
una capa de persistencia, una capa lógica y una capa de presentación. Cuando dividimos una
historia [horizontalmente], solo servimos una parte de ese pastel. Queremos darle al cliente la
esencia de todo el pastel, y la mejor manera es cortar verticalmente las capas. Los
desarrolladores a menudo tienen la inclinación de trabajar solo en una capa a la vez (y hacerlo
"bien"); pero una capa de base de datos completa (por ejemplo) tiene poco valor para el cliente
si no hay una capa de presentación.
La creación de historias valiosas requiere que reorientemos nuestras estructuras funcionales de ruptura de
un enfoque horizontal a uno vertical. Creamos historias que atraviesan la arquitectura para que podamos
presentar valor al usuario y buscar su retroalimentación lo antes y con la mayor frecuencia posible.
Si bien normalmente el valor se centra en la interacción del usuario con el sistema, a veces el valor se
centra más apropiadamente en un representante del cliente o una parte interesada clave. Por ejemplo,
quizás un director de marketing solicita una tasa de clics más alta en los anuncios presentados en el sitio
web. Si bien la historia podría escribirse desde la perspectiva del usuario final:
Como consumidor, puedo ver otros programas de precios de energía que me atraen para poder
inscribirme en un programa que se adapte mejor a mi estilo de vida.
8
ibídem
Articular el valor de una solución técnica como una historia de usuario ayudará a comunicar a la
empresa su importancia relativa. Por ejemplo:
Como consumidor, puedo recibir un mensaje de error claro y coherente en cualquier parte del
producto para saber cómo abordar el problema. O
Como miembro de soporte técnico, quiero que el usuario reciba un mensaje coherente y claro en
cualquier lugar de la aplicación para que pueda solucionar el problema sin llamar al soporte.
En estos últimos ejemplos, el valor es claro para el usuario, para el propietario del producto, las partes
interesadas, y para el equipo.
Estimable
Una buena historia de usuario es estimable. Si bien una historia de cualquier tamaño puede estar en la
lista de trabajos pendientes, para que se desarrolle y pruebe en una iteración, el equipo debe poder
proporcionar una estimación aproximada de su complejidad y la cantidad de trabajo requerido para
completarla. La inversión mínima en la estimación es determinar si se puede completar en una sola
iteración. La precisión adicional de la estimación aumentará la previsibilidad del equipo.
Si el equipo no puede estimar la historia de un usuario, generalmente indica que la historia es demasiado
grande o incierta. Si es demasiado grande para estimarlo, debe dividirse en historias más pequeñas. Si la
historia es demasiado incierta para estimar, entonces se puede usar una historia de picos técnicos o
funcionales para reducir la incertidumbre, de modo que resulten una o más historias de usuarios
estimables. (Cada uno de estos temas se analiza con más detalle en las siguientes secciones).
Uno de los principales beneficios de estimar historias de usuarios no es simplemente derivar un tamaño
preciso, sino más bien extraer cualquier suposición oculta, criterios de aceptación faltantes y aclarar la
comprensión compartida del equipo de la historia. Por lo tanto, la conversación en torno al proceso de
estimación es tan (o más) importante que la estimación real. La capacidad de estimar una historia de
usuario está muy influenciada por el tamaño de la historia, como veremos a continuación.
Pequeña
Las historias de usuario deben ser lo suficientemente pequeñas como para poder completarse en una
iteración; de lo contrario, no pueden proporcionar ningún valor o considerarse realizadas en ese
momento. Sin embargo, historias de usuarios aún más pequeñas brindan más agilidad y productividad.
Hay dos razones principales para esto: mayor rendimiento y menor complejidad.
Mayor rendimiento
A partir de la teoría de las colas, sabemos que los lotes más pequeños pasan por un sistema más
rápido. Este es uno de los principios primarios del flujo magro y está reflejado en la ley de Little:
En un sistema estable (donde el rendimiento, la cantidad de trabajo que se puede hacer en una unidad de
tiempo, es constante), tenemos que disminuir el trabajo en proceso (la cantidad de cosas en las que
estamos trabajando) para disminuir el tiempo de ciclo (el tiempo transcurrido entre el inicio y el final del
proceso). En nuestro caso, eso significa que menos historias más pequeñas en proceso saldrán más