¿Cómo funciona la gestión de requisitos a largo plazo con los proyectos ágiles?


14

La gestión de requisitos a corto plazo para proyectos ágiles me parece un problema resuelto.

Desde el ángulo de Scrum, los nuevos requisitos o cambios en los requisitos existentes se entregan a través de User Stories. Y las historias de usuario agrupadas bajo una épica o característica facilitan la entrega de requisitos más grandes y complejos.

Por supuesto, una historia de usuario no es técnicamente un documento de requisitos. Es una agrupación de trabajo manejable que se asigna a lo que a menudo se llama una rebanada vertical de funcionalidad. Y el alcance de estas historias se puede definir inequívocamente mediante el uso de los Criterios de aceptación (AC).

Entonces, aunque las Historias de usuarios no son requisitos formales, navegar a través de ellas puede darle una idea bastante clara de sus requisitos subyacentes. A corto plazo.

Digo a corto plazo porque, a medida que avanza un proyecto, aumenta el número de Historias de usuarios. Por lo tanto, navegar a través de una lista cada vez mayor de Historias para encontrar un Requisito se vuelve cada vez menos eficiente con el tiempo.

Este problema se agrava cuando considera Historias de usuarios que se expanden, reemplazan o incluso niegan Historias anteriores.

Ahora, imagine una brecha de 2 años entre las iteraciones de desarrollo en un proyecto (estable en producción). El equipo original se fue y también todos sus conocimientos.

Si el equipo original sabía que esto iba a suceder (por ejemplo, es la naturaleza del negocio), ¿qué medidas podrían tomar para ayudar a los equipos posteriores?

Claro, el trabajo atrasado proporcionará cierta información, pero difícilmente se puede navegar fácilmente.

Entonces, ¿qué se puede hacer para ayudar a los equipos posteriores a comprender el estado del proyecto, incluido por qué y cómo llegó allí?

En mi experiencia, las siguientes cosas no funcionan:

  • Acumulación de trabajos pendientes para eliminar o actualizar Historias de usuarios anteriores para que el Trabajo pendiente pueda leerse como un documento de requisitos.
  • Sprints de documentación donde los miembros del equipo tienen la tarea de documentar el estado actual del sistema.
  • Documentación a través de pruebas de comportamiento . Este enfoque es el único que he visto acercarse a trabajar. Desafortunadamente, las pruebas de comportamiento codificadas son víctimas del problema de nomenclatura. Aunque las pruebas pueden documentar correctamente el sistema, es casi imposible lograr que un equipo fluctuante de desarrolladores escriba sus pruebas siguiendo la misma terminología, redacción y estilo del dominio.

Entonces, para reiterar:

¿Cómo se gestionan los requisitos del proyecto ágil a largo plazo?


¿Cuál es el propósito de recopilar los requisitos implementados? Si crees que es un error, entonces levanta un error. ¿Por qué necesita hacer referencia a los requisitos? Los requisitos solo existen mientras exista el elemento de la cartera de pedidos. Esto parece estar en contra, "Software de trabajo sobre documentación completa". No entiendo su problema con las pruebas, tal vez esa es una pregunta separada.
Dave Hillier

1
Toda la idea de un sistema de autodocumentación y la documentación acumulada funciona muy bien a corto plazo con un equipo bastante estático. Me preocupa más cómo administrar un proyecto ágil durante un período prolongado de tiempo. En este caso, un sistema de autodocumentación puede ayudar, pero un nuevo equipo obtendrá muy poco valor al leer el atraso pasado. Supongo que se podría decir que estoy viendo esto desde la perspectiva de "Cómo no fastidiar a los próximos equipos que trabajarán en su proyecto Agile".
MetaFight

1
Agile no se trata de proyectos, sino de desarrollar productos . Por lo tanto, los proyectos a largo plazo realmente no existen en Agile. Cada pieza de desarrollo debe ser autónoma.
Dave Hillier el

1
Por proyectos a largo plazo me refiero a proyectos (o productos, si se quiere) donde puede haber una rotación del 100% en el equipo. Imagine un hermoso producto X que se ha desarrollado siguiendo las mejores prácticas ágiles. Entra en producción y funciona perfectamente durante años. Entonces, un día alguien quiere continuar desarrollando ese producto. Desafortunadamente, no queda una sola persona del proyecto original. Esto hace que la puesta en marcha sea muy difícil. Ese es un ejemplo de un problema que creo que es muy real y me gustaría saber cómo mitigarlo.
MetaFight

1
"equipo fluctuante de desarrolladores" Este parece ser el verdadero problema aquí. ¿Qué tan malo es en tu caso?
Eufórico

Respuestas:


10

Esto me parece ser el elefante tácito en la sala con proyectos ágiles: ¿cómo evitas que evolucionen hacia el caos?

Veamos el Manifiesto Ágil por un momento. Deseos ágiles:

  1. Entrega temprana y continua
  2. Abrazando los requisitos cambiantes
  3. Entrega de software de trabajo con frecuencia
  4. Desarrolladores y partes interesadas de negocios que trabajan juntos todos los días.
  5. Desarrollar proyectos en torno a individuos motivados, brindarles el entorno y el apoyo que necesitan, y confiar en ellos para hacer el trabajo
  6. La conversación cara a cara como el principal modo de comunicación.
  7. El software de trabajo como medida principal de progreso
  8. Desarrollo sostenible
  9. Atención continua a la excelencia técnica y buen diseño.
  10. Simplicidad: maximizar el trabajo que no tiene que hacer
  11. A intervalos regulares, el equipo reflexiona sobre cómo ser más efectivo, luego ajusta y ajusta su comportamiento en consecuencia

He destacado los últimos cuatro. ¿Por qué? Porque son los que evitarán que el proyecto se derrumbe bajo su propio peso.

El desarrollo sostenible significa que usted (con suerte) tiene a alguien que supervisa el proceso de desarrollo general, alguien que puede dirigir el barco más allá del crecimiento del software un poco a la vez, alguien que tiene una visión global de todo el proyecto, alguien con un gran conocimiento de arquitectura de software, diseño de sistemas, principios de lógica de negocios y ergonomía de la interfaz de usuario. Un arquitecto, en otras palabras.

El arquitecto es el que dice "Sé que pediste esto, pero si construimos esta otra cosa, podemos evitar estas otras tres características que son confusas y centrarnos en el requisito central". Él es quien le da tiempo al equipo para reducir la deuda técnica. Él es el que aporta una estructura y organización general al proyecto. Él es el que convoca reuniones donde el equipo se reúne y pregunta "¿Cómo podemos hacer las cosas mejor?"

Y él es el que mantiene el documento maestro de requisitos.

En el libro Dominar el proceso de requisitos , los autores sostienen que hay tres tipos de clientes, tres tipos de proyectos de software: conejos, caballos y elefantes.Los conejos son pequeños proyectos de software que solo necesitan requisitos informales; trabajas directamente con el cliente en pequeños sprints, el alcance del proyecto está razonablemente limitado y el software se realiza en un período de tiempo relativamente corto. Los elefantes son esos proyectos gigantescos que requieren mucha planificación inicial, una gran cantidad de documentación y un horizonte de tiempo largo. Podría decirse que no son ágiles, aunque puede dividirlos en proyectos más pequeños que se pueden construir usando ágil.

Son los proyectos Horse los que son algo confusos desde una perspectiva ágil. Todavía se pueden construir de forma iterativa, aún puede usar sprints cortos, pero sin cierta disciplina en los procesos de recopilación y planificación de requisitos, pueden salirse fácilmente de los rieles. Estos son los proyectos que pueden beneficiarse de un proceso disciplinado de recopilación de requisitos, y luego una cuidadosa adaptación y modificación de esos requisitos a medida que el proyecto crece, mientras se mantiene una visión general de todo el proyecto.


Desde una perspectiva personal, trabajo con un pequeño equipo de aproximadamente una docena de desarrolladores. En cualquier momento, podríamos estar trabajando en tres proyectos de software al mismo tiempo, desde unos pocos miles de líneas de código hasta más de 100,000. Nuestro cliente piensa que son un conejo, pero realmente son un caballo. El cliente está comprometido, pero no a diario.

Con mucho, nuestra área más débil es reunir requisitos específicos, comprobables y medibles y gestionar las expectativas del cliente en relación con el alcance del proyecto. Pero estamos trabajando en eso.


1
Los elefantes son mamuts? Lol :)
Dave Hillier

1
Bah. Solo puedes bromear si también votas a favor. :)
Robert Harvey

1
"Los elefantes son esos proyectos gigantes que requieren mucha planificación inicial, una gran cantidad de documentación y un horizonte de tiempo largo". Interesante: por algún tiempo tuve la impresión de que este tipo de proyectos ya no se consideran porque no encajan en la visión ágil de las cosas.
Giorgio

@Giorgio: Por eso dije que podría decirse que no son ágiles. No todos los proyectos de software nuevos se crean bajo Agile, y no todos son adherentes a Agile de todos modos.
Robert Harvey

@RobertHarvey: El punto es si puedes usar ágil con un gran proyecto. Como explicó, necesita al menos un poco de planificación y visión general de la estructura general del proyecto para poder dividirlo en subproyectos que se puedan realizar de manera ágil. No creo que la diferencia sea entre lo viejo y lo nuevo, sino entre lo grande y lo pequeño.
Giorgio

3

La pregunta no está completamente clara, pero parece que le preocupa la trazabilidad de los requisitos . En mi experiencia, una idea que tiende a perderse en Agile es que los requisitos comerciales son lo que el cliente quiere que haga el sistema, mientras que las historias de usuarios son requisitos realmente funcionales que indican cómo funciona el sistema. "Como usuario, quiero poder hacer X". Pero eso se hace para satisfacer un requisito, que puede perderse en la historia del usuario.

Lo que funciona bien en mi experiencia es vincular los requisitos comerciales y las historias de usuarios en ambas direcciones. BR # 1 puede ser realizado por las historias A y B. La historia C podría cubrir las BR # 2 y # 3. Ponga esto en su rastreador de proyectos, hoja de cálculo, lo que sea que esté usando.

A largo plazo, esto ayuda a vincular lo que el cliente está pidiendo (BR) con lo que hace el sistema (historias) para lograr esos requisitos. Esto debería ser una documentación bastante mínima que no sea onerosa de mantener, teniendo en cuenta la mentalidad ágil de no producir documentación que nadie necesita y es una tarea difícil de mantener actualizada.

También proporciona una forma para que los nuevos miembros del proyecto se aceleren, ya que tienen algo que revisar para obtener el historial de por qué el software hace lo que hace.


2

De hecho, estoy trabajando en un proyecto de mantenimiento kanban de una gran tienda web donde los desarrolladores originales ya no están disponibles.

cada userstory / require / bugfix tiene un número de ticket y cada cambio de código fuente está vinculado a un número de ticket en el campo sourcecontrol-comment-field.

sourcecontrol-checkin-s (svn) actualiza atómicamente el ticket de coressponding para que en el ticket tenga un enlace a todos los conjuntos de cambios de sourceconrtol.

Si un módulo / función se implementa recientemente, también hay números de ticket en el código fuente.

En el sistema de tickets (redmine), los tickets están vinculados entre sí como (es duplicado, es un error, es un refinamiento de ...)

para que pueda seguir los tickets y ver los cambios de requisitos con el tiempo.

Ejemplo: tengo que cambiar algo en el "orderConfirmation-Web-page". En el código fuente de la página veo un comentario: 'creado para "# 4711"' para poder vincular mi nuevo ticket al antiguo ticket "4711" o uno de sus sucesores.


¿Quién se encargaría de mantener las relaciones en el sistema de tickets?
MetaFight

1

Personalmente, descarto las historias de los usuarios como fuente de documentación sobre lo que el sistema puede hacer. A menos que se hayan tomado medidas activas para crear documentación (lo que hemos hecho para algunos de nuestros clientes más tradicionales), la base de la aplicación es realmente la mejor documentación que existe.

Aunque eso no es nada nuevo.

Si está utilizando una versión más escalada de Agile (como SAFe ), tendrá otros retrasos que no son el retraso de la implementación. Básicamente se ve así:

  1. Cartera acumulada (planificación estratégica de épicas y presupuestos)
  2. Programa / Release Backlog (Características y epopeyas)
  3. Proyecto / Equipo Backlog (Historias, Picos, Errores)

No recomendaría documentar en el nivel de Backlog del equipo. Es demasiado granular y rara vez alguien quiere llegar a ese nivel de detalle. Sin mencionar que puede haber historias dentro de una versión que contradicen las historias anteriores en el trabajo atrasado del equipo.

En cambio, recomendaría trabajar en su nivel de Backlog de lanzamiento para proporcionar documentación de nivel de lanzamiento. Estas historias rara vez explotan una vez asignadas a un lanzamiento en particular, y pueden ser una forma estable y rápida de revisar lo que se está trabajando dentro de un lanzamiento dado.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.