Introducción a Metodologías Ágiles
Introducción a Metodologías Ágiles
Capítulo 7
Requisitos
Especificación y
Metodologías ágiles
*
Parte de esta sección ha sido extraída de Laplante (2006) con permiso.
179
Machine Translated by Google
Figura 7.1 Manifiesto para el desarrollo ágil de software. (Tomado de Beck, K.,
Extreme Programming Explained: Embrace Change, Longman Higher Education, Londres, 2000
Observe cómo los principios reconocen y adoptan la noción de que los requisitos cambian a lo
largo del proceso. Además, los principios ágiles enfatizan la comunicación personal frecuente (esta
característica también es beneficiosa en la ingeniería de sistemas que no son de software). Las
características destacadas de la ingeniería de requisitos en los modelos de procesos ágiles difieren de
la cascada "tradicional" y de los modelos más modernos, como el desarrollo iterativo, evolutivo o en
espiral. Estos otros modelos favorecen una gran cantidad de trabajo inicial en el proceso de ingeniería
de requisitos y la producción, a menudo, de documentos de especificaciones de requisitos voluminosos.
Los métodos ágiles son adaptativos en lugar de predictivos. Este enfoque difiere significativamente
de los modelos de proceso que enfatizan la planificación del software en gran detalle durante un largo
período de tiempo, y para los cuales los cambios significativos en la especificación de los requisitos
del software pueden ser problemáticos. Los métodos ágiles son una respuesta al problema común de
los requisitos en constante cambio que pueden atascar los enfoques de diseño iniciales más
"ceremoniales", que se centran en gran medida en la documentación al principio.
Los métodos ágiles también están orientados a las personas en lugar de a los procesos. Esto
significa que explícitamente intentan hacer que el desarrollo sea "divertido". Presumiblemente,
*
La mayoría de la gente define las metodologías ágiles como incrementales. Pero el desarrollo incremental
implica que se planifican las características y el cronograma de cada versión entregada. En algunos casos,
las metodologías ágiles tienden a generar versiones con conjuntos de funciones y fechas de entrega que
casi siempre no son las previstas.
Machine Translated by Google
esto se debe a que escribir especificaciones de requisitos de software y descripciones de diseño de software
es oneroso y, por lo tanto, debe minimizarse.
Inayat et al. realizaron una revisión sistemática de estudios de proyectos de software ágiles publicados
entre 2002 y 2012. Identificaron cinco desafíos de ingeniería de requisitos tradicionales que fueron
erradicados o minimizados por las prácticas de ingeniería de requisitos que se encuentran en las
metodologías ágiles. Estos desafíos fueron:
Señalaron que se necesitaba más investigación y evidencia empírica para fortalecer y generalizar estas
conclusiones, pero los resultados de su estudio aún apuntan fuertemente al poder de los métodos ágiles.
Las metodologías ágiles incluyen Crystal, Extreme Programming, Scrum, el método de desarrollo de
sistemas dinámicos (DSDM), el desarrollo basado en funciones y la programación adaptativa, entre otras.
Veremos más de cerca dos de las metodologías ágiles más utilizadas: XP y Scrum.
Programación extrema
Extreme Programming (XP)* es una de las metodologías ágiles más utilizadas.
XP está tradicionalmente dirigido a equipos de desarrollo más pequeños y requiere relativamente pocos
artefactos detallados. XP adopta un enfoque iterativo para sus ciclos de desarrollo. Podemos visualizar la
diferencia en el proceso entre un modelo de cascada tradicional, modelos iterativos y XP (Figura 7.2).
Mientras que un método evolutivo o iterativo aún puede tener distintas fases de análisis, diseño,
implementación y prueba de requisitos similares al método en cascada, XP trata estas actividades como
interrelacionadas y continuas.
ÿ Planificación
ÿ Codificación
ÿ Diseño
ÿ Pruebas
*
La programación extrema a veces también se escribe "Programación extrema" para resaltar el "XP".
Machine Translated by Google
Cascada Iterativo PE
Análisis
Diseño
Tiempo
Implementación
Prueba
Las prácticas de diseño incluyen buscar primero las soluciones más simples, evitar demasiada planificación
para el crecimiento futuro (generalidad especulativa) y refactorizar el código (mejorar su estructura) continuamente.
Las prácticas de prueba incluyen la creación de nuevos casos de prueba cada vez que se encuentra un error y
tener pruebas unitarias para todo el código, posiblemente utilizando marcos como XUnit.
Melé
Scrum, que lleva el nombre de un punto particularmente polémico en un partido de rugby, permite la autoorganización
de los equipos fomentando la comunicación verbal entre todos los miembros del equipo y entre todas las partes
interesadas. Un principio fundamental de Scrum es que las metodologías tradicionales de desarrollo de software
basadas en planes, como el desarrollo iterativo y en cascada, se centran demasiado en el proceso y no lo suficiente
en el software. Además, mientras que el desarrollo dirigido por planes se enfoca en artefactos que no son de
software (p. ej., documentación) y procesos (p. ej., revisiones formales), Scrum enfatiza la importancia de producir
software que funcione pronto y con frecuencia. Scrum alienta
* Las reuniones de pie duran 10 minutos o menos, donde los participantes literalmente se ponen de pie y
dan un informe oral de las actividades del día anterior y los planes para ese día.
Machine Translated by Google
autoorganización fomentando una comunicación de alta calidad entre todas las partes interesadas.
En este caso, está implícito que el problema no puede entenderse o definirse completamente (puede
ser un problema perverso). Y el enfoque en Scrum está en maximizar la capacidad del equipo para
responder de manera ágil a los desafíos emergentes.
Scrum presenta una acumulación viva de trabajo priorizado por hacer. La finalización de un
conjunto en gran parte fijo de elementos pendientes se produce en una serie de iteraciones o sprints
breves (aproximadamente 30 días). Cada día, se lleva a cabo una reunión breve (por ejemplo, de 15
minutos) o Scrum en la que se explica el progreso, se describe el trabajo próximo y se plantean los
impedimentos. Se produce una breve sesión de planificación al comienzo de cada sprint para definir
los elementos del registro atrasado que se completarán. Al final del sprint se realiza una breve revisión
post-mortem o retrospectiva de los latidos del corazón (Figura 7.3).
Un Scrum Master elimina obstáculos o impedimentos en cada sprint. El Scrum Master no es el
líder del equipo (ya que se autoorganizan), sino que actúa como un amortiguador de productividad
entre el equipo y cualquier influencia desestabilizadora. En algunas organizaciones, el rol del Scrum
Master puede causar confusión. Por ejemplo, si dos miembros de un equipo Scrum no están trabajando
bien juntos, un gerente sénior podría esperar que el Scrum Master solucione el problema. Arreglar la
disfunción del equipo no es el papel del Scrum Master. Los problemas de personal deben ser resueltos
por los gerentes de línea a los que reportan las partes involucradas. Este escenario ilustra la necesidad
de educación en toda la institución sobre metodologías ágiles cuando se van a emplear dichos
enfoques.
24
horas
Scrum : 10–15
minutos
30 diarios
pique reunión
dias
reserva
Artículos Nuevo
pendientes ampliados por la funcionalidad es
equipo demostrado
al final del
Producto
sprint.
reserva
Algunas de estas prácticas se pueden encontrar en el desarrollo no ágil (por ejemplo, desarrollo
basado en pruebas y creación de prototipos), pero estas siete prácticas fueron consistentes en
todas las organizaciones estudiadas.
Machine Translated by Google
Bajo
Dinamismo
Criticidad
Alto
Alto
Bajo Alto
Bajo
Pequeña
Caos
Largo
Pedido
Tamaño del equipo Cultura
No hay proscripciones para agregar, cambiar o eliminar requisitos de la lista en ningún momento
(lo que le da al cliente una gran libertad). Por supuesto, una vez que se construye el sistema, o
probablemente mientras se está construyendo, la pila de historias de usuario se puede convertir a una
especificación de requisitos de software convencional para el mantenimiento del sistema y otros
propósitos convencionales.
1. El Scrum Master organiza una serie de reuniones entre el equipo de desarrollo y el cliente (el
propietario de la tienda) para obtener una comprensión básica de los requisitos, restricciones y
reglas básicas del sistema. Con base en estas discusiones, el Scrum Master organiza un conjunto
de actividades de elicitación adicionales, que posiblemente incluyan entrevistas estructuradas,
clasificación de tarjetas y grupos focales con otras partes interesadas. Se utiliza un estudio QFD
como actividad de validación (ya que es probable que haya muchos otros sistemas POS que se
puedan comparar). El objetivo de estas actividades es producir un conjunto de historias de
usuarios priorizadas (digamos alrededor de 100), incluidas las estimaciones de esfuerzo para
cada una. Pero el cliente nos ha dicho que quiere un sistema de "vanguardia", por lo que sabemos
que a medida que el sistema pasa por el desarrollo, el cliente y otras partes interesadas van a
querer una funcionalidad nueva o diferente.
Se pueden realizar pruebas de aceptación adicionales, según los términos del contrato con el cliente.
Esta prueba se basaría en un conjunto de criterios desarrollados durante la negociación del contrato.
Estas pruebas de aceptación basadas en una especificación de requisitos son habituales para el
desarrollo convencional, pero atípicas para el desarrollo ágil.
Originalmente había 100 historias de usuarios, pero incluso si programamos 10 historias de usuarios
por sprint (mes), es probable que el tiempo total de desarrollo supere los 10 meses.
Esto se debe a que se están agregando nuevas historias de usuario y se están cambiando las antiguas.
Machine Translated by Google
Por supuesto, Scrum Master realiza un seguimiento de la velocidad del proyecto durante cada sprint para refinar sus
estimaciones de finalización del proyecto.
Por lo tanto, los proyectos evaluados en el círculo más interno son candidatos probables para enfoques ágiles,
los del segundo círculo (pero no en el círculo interno) son marginales y los que están fuera del segundo círculo no son
buenos candidatos para enfoques ágiles.
ÿ Trazabilidad de preguntas
fi Explicar las técnicas
fi Adoptar la terminología de las partes interesadas
ÿ Hazlo divertido
ÿ Obtener apoyo administrativo
ÿ Convierta a las partes interesadas en desarrolladores
Ambler también sugiere el uso de artefactos como CRC, pruebas de aceptación, definiciones de
reglas comerciales, casos de cambio, diagramas de flujo de datos, interfaces de usuario, casos de uso,
prototipos, características y escenarios, diagramas de casos de uso e historias de usuarios para modelar
los requisitos (Ambler 2007). ). Estos elementos se pueden agregar al documento de especificación de
requisitos de software junto con las historias de usuario.
Para la elicitación de requisitos, sugiere utilizar entrevistas (tanto en persona como electrónicas),
grupos focales, JAD, análisis de código heredado, observación etnográfica, análisis de dominio y tener al
cliente en el sitio en todo momento (Ambler 2007). En el resto de este capítulo, nuestra discusión se
centra en el uso de historias de usuarios para modelar los requisitos.
Ingeniería de requisitos en XP
La ingeniería de requisitos en XP sigue el modelo que se muestra en la Figura 7.5, donde la pila de
requisitos en el modelo de Ambler se refiere a historias de usuarios. Y en XP, las historias de usuario se
administran e implementan como código a través del “juego de planificación”.
El juego de planificación en XP toma dos formas: lanzamiento y planificación de iteraciones.
La planificación del lanzamiento se lleva a cabo después de que se haya escrito un conjunto inicial de historias de usuario.
Este conjunto de historias se utiliza para desarrollar el plan general del proyecto y el plan de iteraciones.
El conjunto también se usa para decidir el cronograma aproximado para cada historia de usuario y
proyecto general.
La planificación de iteraciones es un período de tiempo en el que se implementan un conjunto de
historias de usuarios y correcciones de pruebas fallidas de iteraciones anteriores. Cada iteración tiene una
duración de 1 a 3 semanas. El seguimiento de la tasa de implementación de historias de usuarios de
iteraciones anteriores (lo que se denomina velocidad del proyecto) ayuda a refinar el programa de desarrollo.
Debido a que los requisitos evolucionan constantemente durante estos procesos, el creador de XP,
Kent Beck, dice que "en XP, los requisitos son un diálogo, no un documento" (Beck et al. 2001), aunque
es típico convertir la pila de historias de usuario en un software. especificación de requisitos.
Machine Translated by Google
Usuario
Más Alto cuentos
Comience a implementar
requisitos desde aquí
Detalle Prioridad
Menos Bajo
Producto
Liberación pique
Liberación pique
pique
ÿ Título: este es un identificador corto para la historia. Un verbo en tiempo presente en voz activa es
deseable en el título.
fi Prueba de aceptación: este es un identificador único que será el nombre de un método para probar la
historia.
fi Prioridad—esto se basa en el esquema de priorización adoptado. La prioridad se puede asignar en
función de la priorización "tradicional" de la importancia o del nivel de detalle (la mayor prioridad se
asigna al mayor detalle).
ÿ Puntos de historia: este es el tiempo estimado para implementar la historia de usuario. Este aspecto
hace que las historias de usuario sean útiles para la estimación de esfuerzos y costos.
fi Descripción: esta es de una a tres oraciones que describen la historia.
En la Tabla 7.1 se muestra un diseño de muestra para estos elementos en una ficha.
Las historias iniciales de los usuarios generalmente se recopilan en pequeñas reuniones fuera del sitio.
Las historias se pueden generar a través de enfoques orientados a objetivos (p. ej., “discutamos cómo un
cliente hace una compra”) oa través de enfoques interactivos (flujo de conciencia).
El desarrollo de historias de usuario es un proceso "iterativo e interactivo". El equipo de desarrollo también
administra el tamaño de las historias para lograr uniformidad (p. ej., demasiado grande, dividir, demasiado
pequeño, combinar).
Machine Translated by Google
Una historia de usuario de ejemplo para un cliente que devuelve artículos en el sistema POS de la tienda de mascotas
tem se muestra en la Tabla 7.2.
Las historias de usuario deben ser comprensibles para los clientes y cada historia debe agregar valor.
Los desarrolladores no escriben historias de usuarios, lo hacen los usuarios. Pero las historias deben ser lo
suficientemente pequeñas como para que se puedan completar varias por iteración. Las historias deben ser independientes
(tanto como sea posible); es decir, una historia no debe hacer referencia de ida y vuelta a otras historias.
Finalmente, las historias deben ser comprobables, como cualquier requisito, si no se puede probar, no es un requisito. El
La Tabla 7.3 muestra otra historia de usuario de ejemplo que describe la detección de una amenaza a la seguridad en
Finalmente, vale la pena señalar que existe una diferencia significativa entre los casos de uso y las historias de usuario.
Las historias de usuarios provienen de la perspectiva del cliente y son simples, y evitan los detalles de implementación. Los
casos de uso son más complejos y pueden incluir detalles de implementación (por ejemplo, objetos fabricados). Los clientes
no suelen escribir casos de uso (y si lo hacen, ojo, porque ahora el cliente se dedica a la “ingeniería de software”). Finalmente,
es difícil decir cuál es la equivalencia para el número de casos de uso por historia de usuario. Una historia de usuario podría
Título
Descripción
Cuando un cliente devuelve un artículo, su compra debe ser autenticada. Si la compra fue auténtica, entonces
se debe acreditar la cuenta del cliente o devolver el monto de la compra. El inventario debe actualizarse en
consecuencia.
Cuando se determina que una bolsa escaneada contiene una instancia de un artículo prohibido, la bolsa se
desviará al transportador del punto de control de seguridad. Al responsable de seguridad se le enviará un correo
electrónico indicando que se ha detectado una amenaza potencial.
Machine Translated by Google
Por ejemplo, para la historia de usuario de devolución del cliente en la Tabla 7.2, puede imaginar que se
necesitarán muchos más casos de uso para lidiar con las diversas situaciones que pueden surgir en la
devolución de un cliente. En las metodologías ágiles, las historias de usuario son mucho más preferidas que los casos de uso.
El Apéndice D incluye una discusión adicional de las historias de usuarios tanto en entornos ágiles como
no ágiles.
En los últimos años se han introducido varios enfoques de ingeniería de requisitos ágiles, muchos de los
cuales no son mucho más que una ingeniería de requisitos descuidada. Pero parte del trabajo reciente en esta
área también ha sido bueno. Sin embargo, para cualquier metodología de ingeniería de requisitos ágiles
"legítima" que pueda encontrar, la mayoría de las prácticas se pueden rastrear hasta el Manifiesto Ágil. Por
ejemplo, Vlaanderen et al. (2011) mostró cómo ciertas prácticas de ingeniería de requisitos de Scrum también
podrían ser para la gestión de productos de software (después de la entrega). En particular, identificaron los
ciclos de sprint, la administración de la acumulación, las reuniones diarias y la colaboración temprana y
frecuente como prácticas necesarias.
Dentro de
Procesamiento de salarios
Calcular
9,9,9,9,9 9 45 0
9,7 9 dieciséis 0
9,0 9 9 0
0 9 0 0
11,7 9 dieciséis 2
9,9,9,9,9 8 40 5
10,11,12,13,14 9 45 15
Figura 7.7 Uso de una prueba de historia para mostrar cómo una empresa calcula el pago
de horas ordinarias y horas extra. (Tomado de Mugridge, R., Software, 25: 68–75, 2008.)
cero horas en el pago de horas extras adeudadas. Si un trabajador trabaja 10, 11, 12,
13 y 14 horas al día en una semana, tiene derecho a 45 horas regulares y 15 horas
extra. Pero el marco de ajuste es una especificación interactiva: si ingresa diferentes
valores en la tabla que son incorrectos, se mostrarán como no válidos (consulte el Capítulo 8).
Se considera que el desarrollo SDD es complementario al desarrollo basado en
pruebas (TDD) en el sentido de que el primero se aplica al desarrollo general del sistema
(Mugridge 2008).
Williams sugiere enfrentar este desafío aumentando las historias de usuario con técnicas apropiadas
de descubrimiento de requisitos no funcionales, como el análisis competitivo.
Otra deficiencia es que con metodologías ágiles, la interacción con el cliente es sólida, pero
principalmente a través de la creación de prototipos. Como hemos visto, hay otras formas de obtener
requisitos matizados y comprender las necesidades de las partes interesadas, por ejemplo, sería
deseable utilizar varias técnicas de entrevista.
Además, con metodologías ágiles, la validación es fuerte a través de pruebas y prototipos, pero
la verificación no es tan fuerte. Williams (2004) sugiere que el uso de métodos formales podría
fortalecer la ingeniería de requisitos ágiles (2004).
Rubin y Rubin (2011) identificaron construcciones de documentación que a menudo se pasan
por alto en el desarrollo ágil de software y sugirieron formas de aliviar este problema. En particular,
señalaron que el conocimiento del dominio y la arquitectura y el diseño del sistema emergente no
se capturan adecuadamente en las prácticas tradicionales de requisitos ágiles. Sus hallazgos
implican que los documentos de requisitos ágiles deben anotarse con el conocimiento de dominio
apropiado, y los documentos de diseño y arquitectura ágil correspondientes deben anotarse con la
arquitectura y el diseño del sistema final, respectivamente.
La gestión de requisitos está integrada en el proceso (por ejemplo, XP y Scrum), pero se centra
principalmente en el nivel de código. Williams sugiere que la gestión de requisitos podría fortalecerse
agregando más prácticas de gestión de configuración estándar.
VIÑETA 7.1 Sitio web de la Ley del Cuidado de Salud a Bajo Precio
Ejercicios
7.3 ¿Por qué las metodologías ágiles generalmente no son adecuadas para proyectos basados en
hardware a diferencia de los proyectos de software?
7.4 ¿Por qué puede ser difícil que las metodologías ágiles cubran requisitos no funcionales?
7.5 ¿Hay algún problema al encapsular los requisitos en las historias de los usuarios?
7.6 Para el sistema POS de la tienda de mascotas, genere una historia de usuario para las compras de los clientes.
7.7 Para el sistema POS de la tienda de mascotas, genere casos de uso para varios clientes
compras
Machine Translated by Google
7.8 Para el sistema de manejo de equipaje del aeropuerto, genere una historia de usuario para tratar
con equipaje que va a ser desviado a otro vuelo.
7.9 Para el sistema de manejo de equipaje del aeropuerto, genere casos de uso para tratar una pieza
de equipaje perdida.
7.10 Para el sistema de manejo de equipaje del aeropuerto, generar casos de uso para manejar el
equipaje que se desviará a otro vuelo.
7.11 Para los siguientes sistemas, discuta las ventajas y desventajas de usar un enfoque ágil (para los
componentes de software):
7.11.1 Sistema POS de tienda de mascotas
Referencias
Ambler, S. (2007). Gestión ágil del cambio de requisitos. http://www.modeladoagile.
com/essays/changeManagement.htm (consultado en enero de 2017).
Anthopoulos, L., Reddickb, CG y Giannakidou, I. (2016). ¿Por qué fracasan los proyectos de gobierno
electrónico? Un análisis de la Sanidad. Gov. Government Information Quarterly 33(1): 161–173.
Schwaber, K. y Beedle, M. (2001). Desarrollo Ágil de Software con SCRUM. Prentice Hall.
Upper Saddle River, Nueva Jersey.
Sillitti, A. y Succi, G. (2006). Ingeniería de requisitos para métodos ágiles, en A. Aurum y C. Wohlin
(Eds.), Requisitos de ingeniería y gestión de software, págs. 309–326.
Saltador. Nueva York, NY.
Venkatesh, V., Hoehle, H. y Aljafari, R. (2014). Una evaluación de usabilidad del sitio web de Obamacare.
Información Gubernamental Trimestral, 31(4): 669–680.
Vlaanderen, K., Jansen, S., Brinkkemper, S. y Jaspers, E. (2011). La refinería de requisitos ágil: aplicación
de los principios SCRUM a la gestión de productos de software. Tecnología de la información y el
software, 53(1): 58–70.
West, D., Grant, T., Gerush, M. y D'Silva, D. (2010). Desarrollo ágil: la adopción generalizada ha
cambiado la agilidad. Investigaciones Forrester. Cambridge, MA.
Williams, L. (2004). Elicitación ágil de requisitos. http://agile.csc.ncsu.edu/SEMaterials/
AgileRE.pdf (consultado en enero de 2017).