En el contexto de una metodología ágil, popularmente se asocia el concepto “historia de usuario” con el de “requisito funcional”. Se habla de que las metodologías ágiles usan la “historia de usuario” y las tradicionales el “requisito funcional”. Aunque detrás del concepto historia de usuario hay muchos aspectos particulares que la hacen sustancialmente diferente de lo que es un requisito, diferencias que muchas veces son poco conocidas y que llevan a muchos equipos a muchas dudas y confusiones.

Una historia de usuario describe funcionalidad que será útil para el usuario, o comprador, de un sistema software. Y aunque normalmente las historias de usuario, asociadas a las metodologías ágiles, suelen escribirse en post-it o tarjetas, son mucho más que eso. Ron Jeffries comentaba que una historia no es sólo una descripción de una funcionalidad, normalmente en un post-it, una historia de usuario además está formada por otras dos partes más:

  • La conversación que conllevan, ya que son una herramienta para interactuar.
  • El cómo se confirma su implementación, las pruebas y verificación de la misma.

Las historias de usuario, frente a mostrar un “cómo”, sólo dicen el “qué”.  Es decir, muestran funcionalidad que será desarrollada, pero no cómo se desarrollará. Por ello, cosas como que “el software se escribirá en C++” no es una buena historia de usuario.

Una historia de usuario no es la especificación de un requisito software

Como decía al principio, con mucha frecuencia se equiparan a las historias de usuario con los requisitos. Pero por definición, las historias de usuario no suelen, ni deben, tener el nivel de detalle que suele tener la especificación de un requisito. Si una historia de usuario tiene demasiada información, o incluso ocupa varios folios… no es una historia de usuario. Por ello se recomienda que las historias de usuario se escriban en un espacio reducido, y que el soporte físico, el post-it o la tarjeta, tenga apenas una frase.

Una historia de usuario debería ser pequeña, memorizable, y que pudiera ser desarrollada por un par de programadores en una semana. Pero claro, al tener una única frase, es imposible que una historia de usuario contenga toda la información necesaria para desarrollar. En tan reducido espacio no pueden contener el diseño, las pruebas, normativa, etc. Ni tampoco detalles para codificar.

Todo lo anterior presenta uno de los principales problemas que suelen encontrar los equipos de desarrollo a la hora de trabajar con metodologías ágiles. Por un lado se ven seducidos por la idea ágil, pero a la hora de ponerla en práctica encuentran problemas como que hay un montón de información (especificaciones, necesidades, normativas, no funcionalidades, criterios de interfaz, etc.) que típicamente estaban en la especificación de requisitos y que los equipos asocian que ahora deben estar en las historias de usuario. Pero la teoría dice que no debe ser así, que una historia de usuario es normalmente un post-it, y en un post-it no entra tal cantidad de información, con lo que muchos equipos acaban dividiendo en trozos de unos cuantos folios las tradicionales especificaciones de requisitos, llamando a cada una de esas divisiones historia de usuario. Pero esas divisiones, no son historias de usuario.

Para resolver el anterior problema hay que entender que las historias de usuario son lo que son porque su objetivo es, entre otros, lograr la interacción con el equipo y con el usuario, por encima de documentar (manifiesto ágil). Aunque la realidad de los proyectos y de los negocios hace que la teoría se deba ajustar a la práctica, para lo cual hay quien necesariamente relaja la agilidad usando los tradicionales requisitos en ciclos de vida ágil, hay quién usa casos de uso en vez de la historia de usuario o hay quien utiliza técnicas de trazabilidad para relacionar la historia de usuario con otros documentos, como normativa del cliente, diseños, etc. Constatando, como solemos comentar, que la teoría ágil se debe adaptar a cada caso en particular, muchas veces relajando la agilidad, obteniendo la verdadera riqueza y productividad de las múltiples soluciones que ofrece la ingeniería del software.

Referencias sobre el concepto historia de usuario

Parte de la información de este post está extraída del libro “User Stories Applied to Software Development”, el cual recomiendo para todo aquel interesado en este tema.


Otras entradas relacionadas con esta:

  1. Soporte ágil: ¿Aplican las metodologías agiles a un departamento de soporte a incidencias?
  2. Metodologías ágiles
  3. Una guía con lo más destacado sobre metodologías ágiles
  4. Experiencia en la implantación de CMMI-DEV v1.2 en una micropyme con metodologías ágiles y software libre
  5. Resumen de la semana: del 19 al 25 de Diciembre de 2011