Tiempo: 45m El Ciclo de Vida del Software Departamento de Lenguajes y Sistemas Informá Informáticos Versión original: Amador Durán Toro (septiembre 2004) Última revisión: Amador Durán Toro (febrero 2006); correcciones no significativas. escuela técnica superior de ingeniería informática Grupo de Ingenierí Ingeniería del Software Febrero 2006 [Ángel US V7] Diseño: Amador Durán Toro (2003-2006) [Ángel US V7] Diseño: Amador Durán Toro (2003-2006) El Ciclo de Vida del Software • Ciclo de vida del software Escuela Técnica Superior de Ingeniería Informática Departamento de Lenguajes y Sistemas Informáticos 1. Concepto de ciclo de vida 2. Ciclo de vida clá clásico 3. Ciclos de vida evolutivos 3.1 CV incremental 3.2 CV iterativo 3.3 Prototipos 4. Componentes software 5. Ciclo de vida del Proceso Unificado 6. Ciclo de vida en Métrica 3 7. Ingenierí Ingeniería inversa y reingenierí reingeniería Sevilla, febrero de 2006 Grupo de Ingeniería del Software – Un marco de referencia que contiene los procesos, las actividades y las tareas involucradas en el desarrollo, la explotación y el mantenimiento de un producto software, abarcando la vida del sistema desde la definición hasta la finalización de su uso (ISO 12207). – El ciclo de vida de un proyecto especifica el enfoque general del desarrollo, indicando los procesos, actividades y tareas que se van a realizar y en qué orden, y los productos que se van a generar, los que se van a entregar al cliente y en qué orden se van a entregar. 1 1 [Ángel US V7] Diseño: Amador Durán Toro (2003-2006) El Ciclo de Vida del Software • Ciclo de vida clá clásico (en cascada) Escuela Técnica Superior de Ingeniería Informática Departamento de Lenguajes y Sistemas Informáticos 1. Concepto de ciclo de vida – Cada proceso comienza cuando termina el anterior. – Los desarrollos reales presentan iteraciones. – Es difícil obtener todos los requisitos al comienzo. 2. Ciclo de vida clá clásico – Se tarda mucho en disponer del software. 3. Ciclos de vida evolutivos – Es mejor que no seguir ningún ciclo de vida. 3.1 CV incremental 3.2 CV iterativo – Es el más fácil de planificar, es el ciclo ideal. 3.3 Prototipos 4. Componentes software 5. Ciclo de vida del Proceso Unificado De Análisis Análisis 6. Ciclo de vida en Métrica 3 sa rr ol lo Diseño Diseño 7. Ingenierí Ingeniería inversa y reingenierí reingeniería Codificación Codificación Pruebas Pruebas Mantenimiento Mantenimiento [Ángel US V7] Diseño: Amador Durán Toro (2003-2006) Sevilla, febrero de 2006 Grupo de Ingeniería del Software 2 El Ciclo de Vida del Software • Ciclo de vida clá clásico (en cascada) Escuela Técnica Superior de Ingeniería Informática Departamento de Lenguajes y Sistemas Informáticos 1. Concepto de ciclo de vida 2. Ciclo de vida clá clásico 3. Ciclos de vida evolutivos 3.1 CV incremental 3.2 CV iterativo – En el caso del desarrollo de sistemas, el ciclo de vida tiene dos niveles: sistema y hardware/software. – El diseño se suele dividir en diseño de la arquitectura y en diseño detallado Análisis Análisis del delsistema sistema 3.3 Prototipos 4. Componentes software 5. Ciclo de vida del Proceso Unificado 6. Ciclo de vida en Métrica 3 7. Ingenierí Ingeniería inversa y reingenierí reingeniería Diseño Diseño del delsistema sistema Análisis Análisis del delsoftware software Análisis Análisis del software del software Diseño Diseño del delsoftware software Diseño Diseño del delsoftware software Codificación Codificación Codificación Codificación Pruebas Pruebas del delsoftware software Pruebas Pruebas Subsistema Software 11 del software Subsistema Software del software Integración Integración de desubsistemas subsistemas Subsistema SubsistemaSoftware Software22 Subsistema SubsistemaHardware Hardware11 Sevilla, febrero de 2006 Grupo de Ingeniería del Software Pruebas Pruebas del delsistema sistema 3 2 [Ángel US V7] Diseño: Amador Durán Toro (2003-2006) El Ciclo de Vida del Software • Ciclos de vida evolutivos Escuela Técnica Superior de Ingeniería Informática Departamento de Lenguajes y Sistemas Informáticos 1. Concepto de ciclo de vida 2. Ciclo de vida clá clásico 3. Ciclos de vida evolutivos 3.1 CV incremental 3.2 CV iterativo 3.3 Prototipos 4. Componentes software 5. Ciclo de vida del Proceso Unificado 6. Ciclo de vida en Métrica 3 7. Ingenierí Ingeniería inversa y reingenierí reingeniería – Cuanto mayor es un proyecto, menor es su probabilidad de éxito (Informes CHAOS). – Conseguir obtener todos los requisitos al comienzo del proyecto es prácticamente imposible. – Las necesidades de clientes y usuarios evolucionan durante el desarrollo y surgen nuevos requisitos. – Los ciclos de vida evolutivos afrontan estos problemas mediante ciclos requisitos-desarrollo-evaluación. – El resultado de la evaluación permite evolucionar hacia la siguiente versión. Requisitos Desarrollo Versiones [Ángel US V7] Diseño: Amador Durán Toro (2003-2006) Sevilla, febrero de 2006 Grupo de Ingeniería del Software Evaluación 4 El Ciclo de Vida del Software • Ciclo de vida incremental Escuela Técnica Superior de Ingeniería Informática Departamento de Lenguajes y Sistemas Informáticos 1. Concepto de ciclo de vida 2. Ciclo de vida clá clásico 3. Ciclos de vida evolutivos 3.1 CV incremental 3.2 CV iterativo 3.3 Prototipos 4. Componentes software 5. Ciclo de vida del Proceso Unificado 6. Ciclo de vida en Métrica 3 7. Ingenierí Ingeniería inversa y reingenierí reingeniería – Es una repetición de varios ciclos de vida en cascada. – Al final de cada ciclo se entrega una versión parcial del software incrementada con cierta funcionalidad nueva respecto a las entregas anteriores. – Los ciclos se repiten hasta obtener un producto completo. – Los usuarios disponen antes del software, aunque no sea completo, por lo que pueden sugerir mejoras. – Se suele aplicar a desarrollos de gran tamaño. Análisis Análisis Análisis Análisis Análisis Análisis Versión 1 Funcionalidad 1 Pruebas Pruebas Pruebas Pruebas Pruebas Pruebas 1 1 Codificación Codificación Codificación Codificación Codificación Codificación Sevilla, febrero de 2006 Grupo de Ingeniería del Software Diseño Diseño Diseño Diseño Diseño Diseño 1 1 2 2 Versión 2 + Funcionalidad 2 1 1 2 2 3 3 Versión 3 + Funcionalidad 3 5 3 [Ángel US V7] Diseño: Amador Durán Toro (2003-2006) El Ciclo de Vida del Software • Ciclo de vida iterativo Escuela Técnica Superior de Ingeniería Informática Departamento de Lenguajes y Sistemas Informáticos 1. Concepto de ciclo de vida 2. Ciclo de vida clá clásico 3. Ciclos de vida evolutivos 3.1 CV incremental 3.2 CV iterativo 3.3 Prototipos 4. Componentes software 5. Ciclo de vida del Proceso Unificado 6. Ciclo de vida en Métrica 3 7. Ingenierí Ingeniería inversa y reingenierí reingeniería – Es también una repetición de varios ciclos de vida en cascada. – Al final de cada ciclo se entrega una versión completa del software mejorada respecto a la anterior. – Los ciclos se repiten hasta obtener un producto satisfactorio. – Los usuarios deben evaluar el producto en cada iteración y proponer mejoras. – Se suele aplicar en desarrollos en los que los requisitos no están claros, las primeras versiones pueden ser prototipos que se desechan posteriormente. Codificación Codificación Pruebas Pruebas [Ángel US V7] Diseño: Amador Durán Toro (2003-2006) Diseño Diseño Diseño Diseño Diseño Diseño Codificación Codificación Sevilla, febrero de 2006 Grupo de Ingeniería del Software Análisis Análisis Análisis Análisis Análisis Análisis Codificación Codificación Pruebas Pruebas Pruebas Pruebas Versión Versión 1 1 Versión Versión 2 2 Versión Versión 3 3 Iteración 1 Iteración 2 Iteración 3 6 El Ciclo de Vida del Software • Prototipos Escuela Técnica Superior de Ingeniería Informática Departamento de Lenguajes y Sistemas Informáticos 1. Concepto de ciclo de vida 2. Ciclo de vida clá clásico 3. Ciclos de vida evolutivos 3.1 CV incremental 3.2 CV iterativo – El uso de prototipos no es exclusivo del ciclo de vida iterativo. – Los prototipos se pueden usar como una herramienta para obtener y validar los requisitos de clientes y usuarios en cualquier ciclo de vida. – Lo habitual es usar prototipos de interfaz de usuario, que pueden reutilizarse (ejecutables) o desecharse (papel). 4. Componentes software – Siempre se debe evaluar si el esfuerzo de desarrollo del prototipo merece la pena (coste de errores). 5. Ciclo de vida del Proceso Unificado – Es fundamental la implicación de los usuarios. 6. Ciclo de vida en Métrica 3 – Otro tipo de prototipos pueden utilizarse para evaluar diferentes algoritmos antes de tomar decisiones de diseño. 3.3 Prototipos 7. Ingenierí Ingeniería inversa y reingenierí reingeniería – Siempre se debe tener en cuenta que el prototipo no es el producto final, ya que su calidad no suele ser la necesaria. Sevilla, febrero de 2006 Grupo de Ingeniería del Software 7 4 [Ángel US V7] Diseño: Amador Durán Toro (2003-2006) El Ciclo de Vida del Software • Componentes software Escuela Técnica Superior de Ingeniería Informática Departamento de Lenguajes y Sistemas Informáticos 1. Concepto de ciclo de vida 2. Ciclo de vida clá clásico 3. Ciclos de vida evolutivos – Cada vez es más frecuente el ensamblaje de componentes software desarrollados por terceros en la construcción de nuevos sistemas software. – El uso de componentes tiene implicaciones en todas las actividades del desarrollo desde los requisitos hasta el mantenimiento. 3.1 CV incremental 3.2 CV iterativo 3.3 Prototipos 4. Componentes software 5. Ciclo de vida del Proceso Unificado 6. Ciclo de vida en Métrica 3 7. Ingenierí Ingeniería inversa y reingenierí reingeniería Identificar Identificarcomponente componentenecesario necesario Seleccionar proveedor componente Seleccionar proveedor componente existe Comprar Comprarcomponente componente no existe Desarrollar Desarrollarcomponente componente Catalogar Catalogarcomponente componente Integrar Integrarcomponente componente [Ángel US V7] Diseño: Amador Durán Toro (2003-2006) Sevilla, febrero de 2006 Grupo de Ingeniería del Software 8 El Ciclo de Vida del Software • Ciclo de vida del Proceso Unificado Escuela Técnica Superior de Ingeniería Informática Departamento de Lenguajes y Sistemas Informáticos 1. Concepto de ciclo de vida 2. Ciclo de vida clá clásico 3. Ciclos de vida evolutivos – Es un ciclo de vida incremental e iterativo propuesto por los creadores de UML (Unified Modeling Language). – Distingue 6 fases: inicio, elaboración, construcción, transición, producción y retirada. – En cada fase (hasta la de transición) se producen una o más iteraciones y se obtiene una versión del software. 3.1 CV incremental 3.2 CV iterativo 3.3 Prototipos 4. Componentes software 5. Ciclo de vida del Proceso Unificado 6. Ciclo de vida en Métrica 3 7. Ingenierí Ingeniería inversa y reingenierí reingeniería Sevilla, febrero de 2006 Grupo de Ingeniería del Software 9 5 [Ángel US V7] Diseño: Amador Durán Toro (2003-2006) El Ciclo de Vida del Software • Ciclo de vida en Mé Métrica 3 Escuela Técnica Superior de Ingeniería Informática Departamento de Lenguajes y Sistemas Informáticos 1. Concepto de ciclo de vida 2. Ciclo de vida clá clásico 3. Ciclos de vida evolutivos 3.1 CV incremental 3.2 CV iterativo 3.3 Prototipos – Métrica 3 permite aplicar diferentes ciclos de vida – Sus procesos básicos son: • Plan de Sistemas de Información (PSI) • Desarrollo de Sistemas de Información – Estudio de Viabilidad del Sistema (EVS) – Análisis del Sistema de Información (ASI) 4. Componentes software – Diseño del Sistema de Información (DSI) 5. Ciclo de vida del Proceso Unificado – Construcción del Sistema de Información (CSI) 6. Ciclo de vida en Métrica 3 7. Ingenierí Ingeniería inversa y reingenierí reingeniería – Implantación y Aceptación del Sistema (IAS) • Mantenimiento de Sistemas de Información (MSI) – También incluye interfaces con procesos de apoyo • Gestión de proyectos • Seguridad • Gestión de la Configuración • Aseguramiento de la Calidad [Ángel US V7] Diseño: Amador Durán Toro (2003-2006) Sevilla, febrero de 2006 Grupo de Ingeniería del Software 10 El Ciclo de Vida del Software • Ingenierí Ingeniería inversa Escuela Técnica Superior de Ingeniería Informática Departamento de Lenguajes y Sistemas Informáticos 1. Concepto de ciclo de vida 2. Ciclo de vida clá clásico 3. Ciclos de vida evolutivos 3.1 CV incremental 3.2 CV iterativo 3.3 Prototipos 4. Componentes software 5. Ciclo de vida del Proceso Unificado 6. Ciclo de vida en Métrica 3 7. Ingenierí Ingeniería inversa y reingenierí reingeniería – A veces es necesario mantener sistemas heredados (legacy systems) que fueron desarrollados sin documentación. – La ingeniería inversa consiste en analizar el resultado de una etapa de software para obtener el resultado de la anterior; normalmente analizar el código para obtener el diseño. • Reingenierí Reingeniería – La reingeniería utiliza la información obtenida por la ingeniería inversa para aplicar cualquier tipo de mantenimiento (perfectivo, adaptativo, correctivo o preventivo). – El mantenimiento preventivo del efecto 2000 ha sido el mayor esfuerzo de ingeniería inversa, reingeniería y mantenimiento en la historia de la Ingeniería del Software. Sevilla, febrero de 2006 Grupo de Ingeniería del Software 11 6