DESARROLLO ÁGIL
RESUMEN DEL CAPITULO 4
INGENIERÍA DE SOFTWARE –
UNIVERSIDAD LA SALLE
María Inés Cahuana Lázaro
- 2015
RESUMEN DEL CAPITULO 4
DESARROLLO ÁGIL
Se desarrollan por un intento de superar las debilidades en ingeniería de software convencional. Proporciona
beneficios importantes pero imposible aplicarlo a todos los proyectos, productos, etc.
Una ingeniería de software ágil combina una filosofía que busca la satisfacción del cliente y entrega
temprana de software, con las directrices que hacen referencias al Análisis y Diseño. Un desarrollo ágil
puede ser una ingeniería de software ligera.
1.- ¿Qué es la agilidad?
Para Ivar Jacobson la agilidad es la palabra para describir un proceso del software moderno, un equipo ágil
es diestro y capaz al poder responder apropiadamente a los cambios. Se debe introducir cambios en todo lo
que se haga en el software, un equipo ágil trabaja en equipo y su capacidad, colaboración es el fundamento
para el éxito del proyecto.
Así el cambio es el motor principal de la agilidad, debe ver comunicación entre los miembros del equipo,
tecnólogos y gente de negocios, el cliente también es parte del equipo, un plan de proyecto debe ser
flexible.
La agilidad puede aplicarse a cualquier proceso del software, es esencial que este se diseñe de manera que
permita al equipo del proyecto adaptar las tareas y hacerlas directas, dar énfasis a las entregas
incrementales para dar funcionalidad al software tan rápido como sea posible.
2. ¿Qué es un proceso ágil?
Están son las suposiciones clave que aborda un proceso ágil:
- No se sabe que requerimientos de software persistirán y cuales cambiaran, no se sabe si las
prioridades del cliente cambiaran.
- El diseño y la construcción están encadenados para ejecutarse simultáneamente.
- Análisis, diseño, construcción y pruebas no son tan predecibles desde la perspectiva de la
planeación.
Para alcanzar la agilidad en equipo se define 12 principios:
1. La mayor prioridad es satisfacer al cliente con la entrega temprana del software.
2. Bienvenidos los requisitos cambiantes, incluso en fases tardías del desarrollo;
3. Entregar software en funcionamiento, con escala de tiempo lo más corta posible;
4. La gente de negocios y los desarrolladores deben trabajar juntos a diario;
5. Construir proyectos alrededor de individuos motivados;
6. Incentivar la conversación cara a cara;
7. El software en funcionamiento es la medida primaria de progreso;
8. Los procesos ágiles promueven el desarrollo sustentable;
9. La atención continua a la excelencia técnica y al buen diseño mejora la agilidad;
10. La simplicidad es esencial
11. Las mejores arquitecturas, requisitos y diseños emergen de equipos auto organizados;
12. Los equipos se vuelven más efectivos a intervalos regulares.
Factores humanos
El desarrollo ágil, según Cockburn y Highsmith, se centra en los talentos y las habilidades de los individuos,
puesto que el proceso se ajusta a personas y equipos específicos.
Si los miembros del equipo de software van a manejar las características del proceso que se aplica para
construirlo, deben existir rasgos clave “ágiles” y los demás miembros del equipo.
Los rasgos son los siguientes:
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.
3. Modelos ágiles de proceso
Estos modelos se ajustan al manifiesto para el desarrollo de software y a los 12 principios.
Programación Extrema (XP)
Es una metodología para el desarrollo de proyectos de software trata de dar solución a los problemas de
ingeniería de software, define un enfoque radical, lleva al extremo las metodologías tradicionales, así:
“si diseñar es bueno, diseñemos todo el tiempo”.
“Si las pruebas son buenas, probemos todo el tiempo”
El proceso XP
XP utiliza un enfoque orientado a objetos, abarca un conjunto de reglas y prácticas que ocurren en 4
actividades del marco de trabajo:
Planeación.- comienza escuchando para entender el contexto del negocio, así se intenta describir la
salida necesaria, características y funcionalidad del software.
Diseño.- sigue el principio MS (mantenlo sencillo), si el cliente cambia sus prioridades continuamente
para que hacer un diseño sofisticado, es mejor proporcionar cuanto antes un prototipo.
Codificación.- antes se desarrollan una serie de pruebas unitarias para las historias de usuario, ya
creada la prueba unitaria se pasa a la programación en parejas, comparten un ordenador y
colaboran para escribir el código.
Prueba.- es la única forma de tener confianza en el código ya que se pone a prueba el software y se
verifican posibles errores.
Refactorización.- es un proceso disciplinado por el cual se modifica el diseño de un módulo sin
afectar a su comportamiento externo. El coraje para refactorizar proviene de la disponibilidad de
pruebas automáticas.
Otros modelos ágiles de proceso
Desarrollo adaptativo del software (DAS).- Lo propuso Highsmith, como una técnica para construir software
y sistemas complejos. Los apoyos filosóficos del DAS se enfocan en la colaboración humana y la organización
propia del equipo.
Argumenta que un enfoque de desarrollo ágil y adaptativo basado en la colaboración es “tanto como una
fuente de orden en las complejas interacciones entre disciplina e ingeniería”.
SCRUM.- Es un modelo (propuesto por Schwaber y Beedle) ágil de proceso. Los principios de la melé son
consistentes con el manifiesto ágil:
Los equipos de trabajo pequeños están organizados para “maximizar la comunicación, minimizar los
gastos generales y maximizar el hecho de compartir conocimiento tácito e informal”.
El proceso debe adaptarse a los cambios técnicos y de negocios “para asegurar que se produzca el
mejor producto posible”.
El proceso produce incrementos frecuentes de software “los cuales se pueden inspeccionar, ajustar,
probar, documentar y construir”.
El trabajo de desarrollo y la gente que lo realiza están divididos en “particiones o paquetes de bajo
acoplamiento”.
Método de desarrollo de sistemas dinámicos (MDSD).- Es un enfoque de desarrollo de software ágil que
“proporciona un marco de trabajo para construir y mantener sistemas con restricciones de tiempo muy
estrechas mediante el empleo de la construcción de prototipos incrementales en un ambiente de proyecto
controlado”.
Este método define 3 ciclos iterativos diferentes, a los cuales preceden 2 actividades del ciclo de vida
adicionales:
Estudio de factibilidad
Estudio de factibilidad
Iteración del modelo funcional
Iteración de construcción y diseño
Implementación