Ciclo de Ingeniería de Software
Desarrollo Iterativo de Software
Aplicaciones Cliente Servidor
Aplicaciones OO
Universidad FASTA
2008
Desarrollo Iterativo de Software
●
Contenido
– Introducción
– Conceptos
– Planificación
– Calidad del Software
– Caso real, RUP
– Caso real, XP
Desarrollo Iterativo de Software
Introducción
Ingeniería de Software
“Establecer y usar sólidos principios de ingeniería y
buenas prácticas de gestión, así como la evolución
de herramientas y métodos aplicables y su uso cuando sea apropiado para obtener, con los recursos
existente, software de calidad en un sentido
Desarrollo Iterativo de Software
Introducción
Definición de Proceso (general)
Un proceso se define como un conjunto de tareas, actividades o acciones interrelacionadas entre sí que, a partir de una o varias entradas, dan lugar a una o varias salidas (producto o servicio) con un valor agregado.
Desarrollo Iterativo de Software
Introducción
Definición de Proceso en IS (ciclo de vida del software) Los procesos del ciclo de vida del software son un
conjunto de métodos y estándares para mejorar y manejar los procesos de desarrollo de software, y que a la vez permiten soportarlo y administrarlo a través de todo el ciclo de vida.
● Hay varios procesos en la IS. Adquisición, provisión,
Desarrollo Iterativo de Software
Introducción
Definición de Proceso de Desarrollo de Software
Un proceso en el contexto del desarrollo de software es entonces, el conjunto de actividades definidas explícitamente y organizadas de una determinada manera, para llevar adelante la construcción de software (producto o servicio).
● Se puede desarrollar software sin procesos, SI
Desarrollo Iterativo de Software
● Análisis del dominio. Entender,
investigar.
● Análisis del software. No debe ser
incompleto, ni haber ambiguedades o contradicciones. ● Especificación. ● Arquitectura de software. ● Construcción. ● Testing. ● Deploy. ● Documentación. ● Capacitación. ● Soporte. ● Mantenimiento.
Introducción
Desarrollo Iterativo de Software
Introducción
Procesos de Desarrollo de Software, hay para elegir.
Cascada Espiral MDD UP XP FDD Prototype ATAM SCRUM
Desarrollo Iterativo de Software
Introducción
Procesos de Desarrollo de Software, hay para elegir.
Desarrollo Iterativo de Software
Introducción
Procesos de Desarrollo de Software, hay para elegir.
Cuál elegir? Cascada Espiral UP XP FDD Prototype ATAM SCRUM MDD EL MAS CONVENIENTE
Desarrollo Iterativo de Software
Introducción
Procesos de desarrollo VS. Patrones de desarrollo
● Se incoporan los principios de patrones
– Claramente identificados
– Se aplican en diferentes contextos
–
Reusabilidad de conocimiento y
Desarrollo Iterativo de Software
Introducción
Metaprocesos
● ISO 12207
– Aplicable a nivel ciclo de vida, no solo desarrollo
● CMMI-DEV v1.2 (SEI)
– Concentrado en el proceso de desarrollo de productos y servicios.
● ISO 15504 (SPICE)
● SixSigma
– DMAIC: para mejorar procesos
Desarrollo Iterativo de Software
Introducción
Historia del IID
● 1970 primeras definiciones y en 1972 el primer proyecto real con el modelo
IID.
● 1975 Vic Vasili y Joe Turner primer paper.
● 1976 Tom Gilb publicó el primer libro en el que se expone la idea del IID
(“Evolutionary Project Management”)
● Entre 80s y 90s se desarrolló RUP.
● En 1988 Barry Bohem presenta un artículo donde se discute el desarrollo
iterativo (“A Spiral Model of Software Development and Enhancement”).
● En 1999 se publica el primer libro de UP (“The Unified Software
Development Process”, ISBN: 0-201-57169-2) por Jacobson, Booch y Rumbaugh.
Desarrollo Iterativo de Software
Introducción
Problemas de la Ingeniería de Software
Fuente: Standish Group www.standishgroup.com
1995
●16% en tiempo y
forma
●52% sobrepasados
●32% fallidos
(U$S 81b)2003
●34% en tiempo y
forma
●51% sobrepasados
●15% fallidos
Desarrollo Iterativo de Software
Introducción
No Iterativo. Desarrollo en Cascada ● El desarrollo de software es un
proceso complejo, contínuo y repetitivo. Este modelo no se adapta a todas ellas.
● El valor de negocio se obtiene
muy al final del proyecto.
● Es la causa en el 82% de
Desarrollo Iterativo de Software
Fuente: VersionOne.com
Introducción
Desarrollo Iterativo de Software
Introducción
Modelos Iterativos RUP (1999) SCRUM (1986) ESPIRAL (1988) XP (1999)Desarrollo Iterativo de Software
Introducción
Hay Beneficios con IID
● Disminuye el time to market.
● Aumenta la productividad.
● Reduce los defectos del software.
● Reduce los costos.
● Simplicidad para modificar prioridades.
● Mejora la relación de IT con los objetivos de negocio.
● Satisfacción de los equipos de trabajo.
● Proyectos con menores riesgos
Desarrollo Iterativo de Software
Conceptos
● Adaptable, no predictivo.
● Iteración ● Iterativo
● Estado de aceptación de un software ● Incremental
Desarrollo Iterativo de Software
Conceptos
● Adaptable, no predictivo.
● Iteración
● Iterativo
● Estado de aceptación de un software ● Incremental
Desarrollo Iterativo de Software
Conceptos
● Adaptable, no predictivo. ● Iteración
● Iterativo
● Estado de aceptación de un software ● Incremental
Desarrollo Iterativo de Software
Conceptos
● Adaptable, no predictivo. ● Iteración
● Iterativo
● Estado de aceptación de un software
● Incremental
Desarrollo Iterativo de Software
Conceptos
● Adaptable, no predictivo. ● Iteración
● Iterativo
● Estado de aceptación de un software
● Incremental
Desarrollo Iterativo de Software
Conceptos
● Adaptable, no predictivo. ● Iteración
● Iterativo
● Estado de aceptación de un software ● Incremental
Desarrollo Iterativo de Software
Planificación
● Consideraciones
– Implica más trabajo, pero más simple.
– Número de iteraciones
– Duración de las iteraciones
● Ej: Rational con 700 personas manejan iteraciones de 5 a 8 semanas.
– Factores
● Experiencia en el modelo ● Maduración del equipo
● Automatización y herramientas ● Bases de conocimiento
Desarrollo Iterativo de Software
Calidad del Software
● Desarrollo orientado al test
– Ej: JUnit
● Feedback temprano del usuario
● Diferentes test en cada iteración
– Desventaja, genera alto costo
● Calidad para el usuario
– Util, aprovechable, confiable, etc.
● Calidad para la IS
Desarrollo Iterativo de Software
RUP: Proceso Unificado de Rational
● Basado en UP: Iterativo e incremental
● Dirigido por casos de uso
● Centrado en la arquitectura
Desarrollo Iterativo de Software
Desarrollo Iterativo de Software
Planificación en RUP
● Plan de Fase
– Uno por proyecto.
– Orientado a algunos stakeholders (PMs y externos)
– “Vista gorda” del plan general del proyecto. Centrado en hitos
más relevantes.
– Recordar: el plan correcto no será el primero. Ajuste. – Ejemplo de fechas de hitos en UP:
● LCO (Lifecycle Objective). Incepción.
● LCA (Lifecycle Architecture). Elaboración.
● IOC (Initial Operational Capability). Construcción. Beta.
Desarrollo Iterativo de Software
RUP: Proceso Unificado de Rational
● Tips
– Si el proyecto es riesgoso, o con gente nueva,
nuevas herramienats y tecnologías, la fase de Elaboración deberá más larga.
– La duración de las iteraciones o la velocidad en la
que puede iterar depende del tamaño del equipo.
– Cuidado con iteraciones largas, puede perder el
ritmo del proyecto.
– Iteraciones cortas de un mes o menos son mas
Desarrollo Iterativo de Software
RUP: Proceso Unificado de Rational
● Tips
– En proyectos normales puede llevar de 6 a 8
iteraciones [1, 2, 2, 1] o [1, 3, 3, 1].
– Si el dominio es desconocido extienda la fase de
Incepción.
– Si la arquitectura es un desafío incorpore de 2 a 3
iteraciones en la Elaboración.
– Si el desarrollo implica un período largo agregue
iteraciones a la Construcción.
Desarrollo Iterativo de Software
Planificación en RUP
● Plan de Iteración
– Uno por iteración.
– Orientado a stakeholders internos.
– “Vista fina” de las tareas en cada iteración.
– Se establecen con un tiempo fijo dentro de cada
fase.
– El PM siempre tiene presente una iteración activa y
Desarrollo Iterativo de Software
XP: Programación Extrema
● Fundado con 4 valores
– Comunicación
– Simplicidad
– Feedback
Desarrollo Iterativo de Software
XP: Programación Extrema
● Fundado sobre 12 prácticas
– Intengración contínua
– No hay dueños de código
– Estándares de codificación
– Metáforas
– 40 Hs
– Planning game
– Versiones pequeñas
– Testeos de aceptación de usuario – Diseño simple
– Programación de a pares
– Desarrollo orientado al testing –
TDD
Desarrollo Iterativo de Software
Desarrollo Iterativo de Software
Desarrollo Iterativo de Software
XP: Programación Extrema
● Planning Game. Plan de Release
– Se basa en las historias de usuario.
– Definido en “Planning Meeting” junto al cliente.
– Cada release incluye 80 (+ - 20) historias de usuario.
– El cliente establece la prioridad de cada historia de usuario.
– El equipo de desarrollo estima la duración de cada historia de usuario.
– En todo momento se aplica la “velocidad del proyecto”.
– Cada historia de usuario se traduce a tareas implementables.
– Cada historia de usuario se traduce en test de aceptación.
– Siempre que haya desvíos se vuelve a la “Planning meeting”. Es normal
Desarrollo Iterativo de Software
XP: Programación Extrema
● Planning Game. Plan de Iteración
– Iteraciones de 1 a 3 semanas de duración.
– 12 iteraciones aprox. por release plan.
– Iteraciones de duración fija.
– No se realiza ninguna tarea no programada para la iteración.
– Keep it simple. La refactorización lo soluciona.
– El plan de iteración se compone de las historias de usuario definidas en
el pan de release, más los test de aceptación previos que fallaron.
– Cada tarea se estima de 1 a 3 días.
– El desarrollador que implementa es el que estima
Desarrollo Iterativo de Software
XP: Programación Extrema
● Planning Game. Plan de Iteración
– Al inicio de cada iteración se realiza la “iteration planning meeting”.
– El cliente selecciona la historia de usuario y/o testeos de aceptación
fallidos a incluir, teniendo en cuenta la “velocidad del proyecto”.
– Se definen las tareas a realizar.
– Cada programador toma la/s tareas a realizar, y estima el tiempo.
– Se contraponen estos tiempos con la “velocidad del proyecto”.
– Según el resultado de los tiempos el cliente puede cambiar su elección
Desarrollo Iterativo de Software
XP: Programación Extrema
● Video 1. Planning game.