Post on 30-Jun-2015
description
Sesión IV: Desarrollo ágil
Ing. Luis Alfredo Fernández Vizcarralfernandez@speedy.com.pelfernandez@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,
sobre 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?CA
RACT
ERÍS
TICA
S
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 agilidadSatisfacción al cliente
Adaptación a los cambiosEntregas de software
Trabajo en equipo
Motivación en el trabajoDiálogo
Software funcionalDesarrollo sostenible
Atención continuaSimplicidad
OrganizaciónEfectividad
¿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 ÁGILExiste 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 usuarioValoresCriterios de las pruebas de iteración
Plan de iteración
Diseño simpleCartas 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)CA
RACT
ERÍS
TICA
S
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 SoftwareAjuste para ciclos subsecuentes
Aprendizaje
Planeación del ciclo adaptativoEnunciado de la misiónRestricciones del proyectoRequisitos básicos
Plan de lanzamiento en el tiempo
Recopilación de requisitosJADEspecificaciones mínimas
Lanzamiento
Componentes implementados / probadosGrupos de enfoque para retroalimentaciónRevisiones técnicas formalesPost 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.
Flujo de Proceso de la Melé
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 clasePropietarios 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