Sesión 4: Desarrollo ágil del software

20
Sesión IV: Desarrollo ágil Ing. Luis Alfredo Fernández Vizcarra [email protected] [email protected]

description

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

Transcript of Sesión 4: Desarrollo ágil del software

Page 1: Sesión 4: Desarrollo ágil del software

Sesión IV: Desarrollo ágil

Ing. Luis Alfredo Fernández [email protected]@coesi.com.pe

Page 2: Sesión 4: Desarrollo ágil del software

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.

Page 3: Sesión 4: Desarrollo ágil del software

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

Page 4: Sesión 4: Desarrollo ágil del software

¿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.

Page 5: Sesión 4: Desarrollo ágil del software

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

Page 6: Sesión 4: Desarrollo ágil del software

¿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

Page 7: Sesión 4: Desarrollo ágil del software

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”

Page 8: Sesión 4: Desarrollo ágil del software

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

Page 9: Sesión 4: Desarrollo ágil del software

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

Page 10: Sesión 4: Desarrollo ágil del software

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

Page 11: Sesión 4: Desarrollo ágil del software

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

Page 12: Sesión 4: Desarrollo ágil del software

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

Page 13: Sesión 4: Desarrollo ágil del software

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

Page 14: Sesión 4: Desarrollo ágil del software

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.

Page 15: Sesión 4: Desarrollo ágil del software

Flujo de Proceso de la Melé

Page 16: Sesión 4: Desarrollo ágil del software

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.

Page 17: Sesión 4: Desarrollo ágil del software

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.

Page 18: Sesión 4: Desarrollo ágil del software

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

Page 19: Sesión 4: Desarrollo ágil del software

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.

Page 20: Sesión 4: Desarrollo ágil del software

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