Por el bien de esta discusión, requisitos = historias de usuarios (ya que no estoy diferenciando ningún proceso per se y me gustaría deshacerme de cualquier ambigüedad).
Es bastante común tener un conjunto de alrededor de 100-500 requisitos para sistemas pequeños y medianos. Es natural que a uno le lleve un tiempo darse cuenta de qué requisitos están en conflicto (más aún cuando hay más de 1 parte interesada involucrada). O se capturan usando Excel o fichas/post-its o tal vez en alguna herramienta de gestión de proyectos.
Entonces, ¿cómo se aborda la identificación de conflictos dentro de los requisitos? ¿Cuáles son las prácticas que ha empleado y encontrado útiles (tiempo/esfuerzo invertido y conflictos identificados)?
¿Merece la pena siquiera identificar el conflicto o es preferible resolverlo 'cuando llegues' ya que podría llevar a una mala gestión de expectativas si se resuelve más tarde?
NO estoy hablando de conflictos de -ilidad. Esos son pero obvios y deben aclararse antes de la OMI. Estoy hablando de conflictos entre varios requisitos funcionales junto con enfrentamientos funcionales frente a no funcionales.
Algunos ejemplos son:
El último (directo) puede o no ser negociable, pero identificarlo desde el principio valdrá la pena, en mi opinión.
Es bastante engorroso revisar cada requisito a la vez para identificar conflictos. Lo mejor es dividir el esfuerzo y acelerarlo. Otra estrategia es analizar los requisitos jerárquicamente, pero eso puede ocultar ciertos conflictos que ocurrirían en los 'nodos' inferiores (y esos son los que vienen a morderte más tarde en mi humilde opinión :)
No tengo conocimiento de ninguna herramienta/técnica/mejores prácticas que ayuden a identificar conflictos con una sobrecarga mínima de tiempo/esfuerzo y, por lo tanto, la pregunta. El paso manual anterior es el mejor que conozco. Sí, en un mundo ideal, sería genial que la herramienta arrojara posibles conflictos, pero no sé si alguna herramienta lo hace (o incluso un trabajo razonablemente bueno. ¿Ayuda?)
Entonces, en un mundo ideal (sin máquinas con capacidad de lenguaje natural :), ¿cuál es la mejor técnica para aplicar para la identificación de conflictos (suponiendo que sea intensiva en humanos) y cuál ha sido su experiencia al hacerlo? Si no vale la pena, explíquelo también.
Los requisitos conflictivos o incoherentes no son solo parte de un proyecto de TI, sino que abarcan todo tipo de proyectos. Puede estar seguro, sin importar cuánto se esfuerce por no hacerlo, de que creará una línea de base de requisitos con una serie de requisitos inconsistentes o contradictorios. Además de eso, la solución derivada para cumplir con un requisito podría romper otra solución para otro requisito o hacer que un tercer requisito sea imposible.
No encuentro valor, es decir, dinero mal gastado, para intentar minimizar o eliminar este fenómeno. ¿La razón? Porque a medida que resuelve un conjunto de requisitos, está introduciendo otros conflictos o incoherencias en otro conjunto de categorías y clases de requisitos.
Los conflictos de requisitos son ciertos, y también lo es el cambio. Es por eso que cada proyecto debe tener un proceso de gestión de cambios, de modo que cuando surjan conflictos y el equipo se vuelva más inteligente, se pueda procesar y aprobar un cambio. Por lo tanto, a través de iteraciones y planificación progresiva, los requisitos se solucionan, se hacen consistentes o se eliminan y reemplazan.
Entonces, en lugar de tratar de desarrollar una capacidad para evitar estos conflictos, desarrolle una capacidad poderosa para lidiar con ellos cuando se materialicen.
Puedes abordar este tipo de situaciones de la siguiente manera:
Conflictos relacionados con procesos como la capacidad de realizar una acción en el sistema. Necesitas estructurar y agrupar tus requisitos o historias de forma lógica.
=> Puede estructurar sus historias en varios niveles: por ejemplo, por área funcional (p. ej., funcionalidad de calendario) y área de proceso (p. ej., creación de citas y reuniones). Esto le permite cortar y trocear sus historias para identificar conflictos.
=> También debe mapear sus procesos, ya que esto le permite recorrer su historia de principio a fin: de esta manera puede identificar conflictos pero también refinar/aclarar historias. En su ejemplo, " los intervalos de tiempo de los participantes serán privados " podría ser " mi tiempo se mostrará solo como disponible o no disponible para otros, con detalles de mis citas y reuniones privadas ", y para " el organizador de la reunión debería poder ver el la hora de la reunión de todos los participantes antes de decidir el horario de la reunión "podría ser en su lugar" como organizador de la reunión, puedo ver la "disponibilidad " de los participantes). Esto también ayudará a facilitar las decisiones sobre reglas comerciales cuando surjan tales conflictos (aquí, ¿la disponibilidad de las personas es pública o no?).
Doctor
Adán Wuerl