El Ciclo de Vida del Software - Departamento de Lenguajes y

Anuncio
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
Descargar