El desarrollo ágil de software son métodos de ingeniería del software basados en el desarrollo iterativo e incremental, donde los requerimientos y soluciones evolucionan mediante la colaboración de grupos auto organizados y multidisciplinarios.
Sesión IV: Desarrollo ágil
Ing. Luis Alfredo Fernández Vizcarra
lfernandez@speedy.com.pe
lfernandez@coesi.com.pe
Vistazo rápido: Desarrollo ágil
¿Qué es?
•Combina una filosofía y un conjunto de
directrices de desarrollo.
•La filosofía busca satisfacción del cliente
y cumplir con el tiempo de entrega.
•Las direcciones de desarrollo resaltan la
entrega del software y la comunicación
activa y continua entre los
desarrolladores y los clientes.
¿Quién lo hace?
•Los ingenieros de software y otros
participantes del proyecto trabajan
juntos en un equipo ágil: un equipo
con organización propia y que controla
su propio destino.
¿Por qué es importante?
•Representa una opción razonable a la
ingeniería convencional para ciertas
clases de software y ciertos tipos de
proyectos de software.
¿Cuáles son los pasos?
•Las actividades básicas del marco de
trabajo se conservan, pero éstas se
conforman como un conjunto mínimo
de tareas que empuja al equipo de
proyecto hacia la construcción y la
entrega.
¿Cuál es el producto obtenido?
•Es un “incremento de software en
funcionamiento”, el cual se entrega al
cliente en una fecha prometida.
¿Cómo puedo estar seguro de
que lo he hecho
correctamente?
•Si el equipo está de acuerdo en que el
proceso funciona y producen
incrementos de software entregables
que satisfacen al cliente.
Manifiesto del Desarrollo Ágil
Los individuos y
sus
interacciones, sob
re los procesos y
las herramientas
El software que
funciona, más
que la
documentación
exhaustiva
La colaboración
con el cliente, y
no tanto la
negociación del
contrato
Responder al
cambio, mejor
que apegarse a
un plan
¿QUÉ ES LA AGILIDAD?
CARACTERÍSTICAS
Es más que una respuesta efectiva al
cambio.
Estimula las estructuras y actitudes de los
equipos para la comunicación sea más fácil.
Resalta la entrega rápida del software
operativo y le resta importancia a los
productos de trabajo intermedio.
Incorpora al cliente una parte del equipo de
desarrollo.
Principios de agilidad
Satisfacción al cliente
Adaptación a los cambios
Entregas de software
Trabajo en equipo
Motivación en el trabajo
Diálogo
Software funcional
Desarrollo sostenible
Atención continua
Simplicidad
Organización
Efectividad
¿QUÉ ES UN PROCESO ÁGIL?
Un proceso ágil
debe ser adaptable
en forma
incremental a un
proyecto y a
condiciones técnicas
que cambian con
rapidez.
Incluye una
estrategia
incremental de
desarrollo.
Los incrementos de
software deben
entregarse en cortos
periodos para que la
adaptación mantenga un
buen ritmo con el
cambio.
Permite al cliente
evaluar el incremento
de software de manera
regular, proporcionar
la retroalimentación al
equipo, e influir sobre
las adaptaciones del
proceso para adecuar
la retroalimentación
POLÍTICAS DEL DESARROLLO ÁGIL
Existe un debate considerable sobre los beneficios
y la aplicabilidad del desarrollo ágil del software
como alternativa a procesos de ingeniería del
software más convencionales.
Existen varios modelos de proceso, cada uno con
un enfoque sutilmente diferente.
Dentro de cada modelo hay un conjunto de
“ideas” (tareas de trabajo).Muchos conceptos de
agilidad son tan sólo adaptaciones de buenos
conceptos de la ingeniería del software.
“Hay mucho que ganar si se considera lo mejor de
ambas escuelas, y nada que ganar si se denigra
alguno de los dos enfoques”
FACTORES HUMANOS
El desarrollo ágil se centra en los talentos y las habilidades de los individuos, puesto que el proceso se ajusta
a personas y equipos específicos.
RASGOS CLAVES
ENTRE LA GENTE DE
UN EQUIPO Y EL
EQUIPO MISMO:
- Competencia
- Enfoque común
- Colaboración
- Habilidad para la toma de decisiones
- Capacidad de resolución de problemas confusos
- Confianza y respeto mutuo
- Organización propia
MODELOS ÁGILES DEL PROCESO:
Programación Extrema (PE)
PROGRAMACIÓN
EXTREMA (PE)
Características
Sugiere algunas técnicas
innovadores y poderosas que
permiten a un equipo ágil crear
frecuentes lanzamientos de
software al entregar
características y funcionalidad que
describe y después prioriza el
cliente.
Organizada
como cuatro
actividades del
marco de
trabajo:
Enfoque
orientado
a objetos
Planeación
Diseño
Codificación
Pruebas
Programación Extrema (PE)
Planeación Diseño
Prueba
Incremento del
Software
Velocidad calculada
del proyecto
Codificación
Historias de usuario
Valores
Criterios de las pruebas
de iteración
Plan de iteración
Diseño simple
Cartas CRC
Programación en
parejas
Prueba unitaria
Pruebas de
aceptación
Soluciones pico
Prototipos
Lanzamiento
refabricación
Integración
continua
DESARROLLO ADAPTATIVO DE SOFTWARE
(DAS)
CARACTERÍSTICAS
Destaca la colaboración
humana y la organización
propia del equipo
Utiliza un proceso iterativo
que incorpora :
La planeación del ciclo
adaptativo
Métodos de recopilación
de requisitos
relativamente rigurosos
Un ciclo iterativo de
desarrollo:
Grupos enfocados en el cliente
Revisiones técnicas formales como
mecanismos de retroalimentación
en tiempo real.
Organizado con tres actividades del
marco de trabajo:
Especulación
Colaboración
Aprendizaje
Desarrollo adaptativo de software (DAS)
Especulación
Colaboración
Incremento del Software
Ajuste para ciclos
subsecuentes
Aprendizaje
Planeación del ciclo adaptativo
Enunciado de la misión
Restricciones del proyecto
Requisitos básicos
Plan de lanzamiento en el tiempo
Recopilación de requisitos
JAD
Especificaciones mínimas
Lanzamiento
Componentes implementados / probados
Grupos de enfoque para retroalimentación
Revisiones técnicas formales
Post mortem
Método de Desarrollo de Sistemas Dinámicos
(MDSD)
Define tres
diferentes ciclos
iterativos:
Precedidos por
dos actividades
del ciclo de vida
adicionales:
Aboga por el uso de programas y sugiere que solo se
requiere el trabajo suficiente para cada incremento
de software y así facilitar el movimiento hacia el
incremento próximo.
CARACTERÍSTICAS
Iteración funcional del modelo
Iteración de diseño
Construcción e implementación
Estudio de factibilidad
Estudio de negocios
LA MELÉ
CARACTERÍSTICAS
- Uso de un conjunto de patrones de proceso de
software efectivos en proyectos con límites de
tiempo muy ajustados, requisitos cambiantes y
que son críticos para el negocio.
- Cada patrón de proceso define un conjunto de
tareas de desarrollo y permite al equipo de melé
construir un proceso que se adapte a las
necesidades del proyecto.
CRISTAL
CARACTERÍSTICAS
- Conjunto de modelos ágiles de proceso que
pueden adaptarse a las características específicas
de un proyecto.
- Adopta una estrategia iterativa, pero se ajusta al
rigor del proceso para incluir proyectos de
tamaños y complejidades diferentes.
DESARROLLO CONDUCIDO POR
CARACTERÍSTICAS (DCC)
CARACTERÍSTICAS
- Es algo más “formal” que otros métodos
ágiles.
- Concede una mayor importancia al
proyecto y a su gestión que otros enfoques
ágiles.
Desarrollo conducido por características
Más forma
que
contenido
Desarrollar un
modelo
general
Una lista de
características
agrupadas en
conjuntos y
áreas de
contenido
Elaborar una
lista de
características
Un plan de
desarrollo
Propietarios
de clase
Propietarios
del conjunto
de
características
Plan por
características
Un paquete
de diseño
(secuencias)
Diseño por
característica
Función
cliente –
valor
completado
Construcción
por
característica
MODELADO ÁGIL (MA)
CARACTERÍSTICAS
- El modelado es esencial para todos los
sistemas, pero que la complejidad, tipo y tamaño
del modelo debe ajustarse al software que será
construido.
- Proporciona una guía útil para los profesionales
durante las tareas de análisis y diseño.
Bruegge, B., Dutoit, A.H., Ingeniería del Software Orientado a Objetos, cap. 1
Jacobson, I., Booch, G., Rumbaugh, J., El Proceso Unificado de Desarrollo de
Software, cap. 1
Pressman, R.S., Ingeniería del Software. Un enfoque práctico, cap. 1 y 2
Sommerville, I., Ingeniería de Software, cap. 1, 2 y 3
Referencias