Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Ingeniería en Informática
Facultad de Informática
UPV/EHU
Departamento de Lenguajes
y Sistemas Informáticos
Tema 1:
Introducción a la
Ingeniería del Software
Índice
Motivación
A las 14:21 de un 15 de enero, hora punta en el tráfico telefónico, el conmutador 4ESS
de la red telefónica de Manhattan detectó un pequeño fallo en su hardware. El 4ESS se
desconectó de la red tras, amablemente, notificar a los conmutadores vecinos su
desconexión. En pocos segundos, el conmutador volvió a funcionar, lo que notificó
también a sus vecinos. Pero éstos estaban todavía procesando el primer mensaje cuando
recibieron el segundo. Esto les confundió, se dieron cuenta de este desconcierto y se
desconectaron de la red para realizar un auto-chequeo y reinicializarse, no sin antes
notificar a todos sus vecinos su desconexión. Como una epidemia de gripe, los
mensajes se distribuyeron por todo EEEUU. Tan pronto como un conmutador se
desconectaba y se recuperaba, recibía un aluvión de mensajes de sus compañeros que le
hacían volver a fallar. En el centro de operaciones, los técnicos veían cómo las líneas de
comunicaciones del mapa se ponían rojas por todo el país partiendo de Manhattan,
mientras que los ingenieros se veían negros siguiendo todos los procedimientos
estándar para la solución de problemas, los no estándar y los improvisados. Pero nada
funcionó. Un minúsculo error en la versión de diciembre del software del conmutador
4ESS causó el caos. AT&T volvió temporalmente a la versión anterior e instaló la
versión corregida cinco días después. Pero el daño ya estaba hecho.
[Arthur, L.J. Improving Software Quality: an Insider’s Guide to TQM. John Wiley & Sons, 1993
A. Goñi, J.R. Zubizarreta, J. Iturrioz. Dpto. LSI, UPV/EHU
Motivación
El 4 de junio de 1996, la lanzadera europea Ariane 5 explotó tras 40 segundos de vuelo,
debido a un error de un fragmento de código innecesario. El software culpable
pertenecía al sistema de referencia inercial (SRI): antes del despegue, hay que hacer
ciertos cálculos para alinear el SRI, aunque estos cálculos pueden finalizar 9 segundos
antes del despegue. Pero como existe la posibilidad de que la cuenta atrás se detenga,
los ingenieros decidieron mantenerlo hasta 50 segundos después del despegue, puesto
que reiniciar el SRI llevaba varias horas. Una vez en vuelo, los cálculos del SRI son
inútiles, pero en el Ariane 5 causaron una excepción que no fue interceptada y…
¡boom! La excepción se debió a una conversión de un valor real de 64 bits (inclinación
horizontal) a un entero de 16 bits, pero, como no había un manejador por omisión de
excepciones, la excepción siguió el destino de todas las excepciones no capturadas, es
decir, abortar el software y por tanto los ordenadores de a bordo, y por tanto la misión.
¿Por qué no se controló la excepción? Los análisis habían demostrado que el overflow
no podía ocurrir nunca. Lo cual era completamente cierto para las trayectorias del
Ariane 4, para el cual había sido diseñado el SRI, no para las nuevas trayectorias del
Ariane 5, para el que se había reutilizado el código. Una reutilización que provocó que
un error trivial causara la explosión de un cohete de unos 500 millones de dólares.
[Jézéquel, Meyer:
A. Goñi, J.R. Zubizarreta, “Design
J. Iturrioz. by Contract: The Lessons of Ariane”. IEEE Computer 30 (1), 1997]
Dpto. LSI, UPV/EHU
6
1. Definición de Ingeniería del
Software
• Bauer 1972: IS trata del establecimiento de los
principios y métodos de la ingeniería a fin de obtener
software de modo rentable que sea fiable y trabaje
en máquinas reales.
• Bohem, 1976: IS es la aplicación práctica del
conocimiento científico en el diseño y construcción
de programas de computadora y la documentación
asociada requerida para desarrollar, operar y
mantenerlos. Se conoce también como desarrollo de
software o producción de software.
• Zelkovitz 1978: IS es el estudio de los principios y
metodologías para desarrollo y mantenimiento de
sistemas de software.
A. Goñi, J.R. Zubizarreta, J. Iturrioz. Dpto. LSI, UPV/EHU
8
1. Definición de Ingeniería del
Software
Ingeniería del Software es la INGENIERÍA que trata de
construir software de ALTA CALIDAD a BAJO COSTO
– INGENIERÍA (IEEE): aplicación de un método sistemático, estructurado y
cuantificable a estructuras, máquinas, productos, sistemas o procesos.
– INGENIERÍA (DRAE): conjunto de conocimientos y técnicas que permiten aplicar
el saber científico a la utilización de la materia y fuentes de energía.
Sección
A) CALIDAD: definir qué es CALIDAD del SOFTWARE 2
B) INGENIERÍA, PRODUCTO de BAJO COSTO:
definir qué es un buen PROCESO SOFTWARE
• PROCESO de INGENIERÍA del PRODUCTO (SOFTWARE):
conjunto de actividades, métodos, prácticas y transformaciones
Sección 3
utilizados para desarrollar software y los productos asociados:
planes del proyecto, documentos de análisis/diseño, codificación,
casos de prueba, manuales de usuario
Secciones
• Todo es mejorable: MEJORA del PROCESO SOFTWARE
4, 5 y 6
A. Goñi, J.R. Zubizarreta, J. Iturrioz. Dpto. LSI, UPV/EHU
2. Calidad de software
La Calidad de Software se entiende como la combinación de
una serie de factores:
– Factores Externos
⇒ Corrección ⇒ Eficiencia
⇒ Robustez ⇒ Portabilidad
⇒ Extensibilidad ⇒ Facilidad de Uso
⇒ Reusabilidad ⇒ Funcionalidad
⇒ Compatibilidad ⇒ Oportunidad
10
2. Corrección
Sistema de Aplicación
Compilador
Se supone que estos
Sistema Operativo
niveles son correctos
Hardware
A. Goñi, J.R. Zubizarreta, J. Iturrioz. Dpto. LSI, UPV/EHU
11
2. Robustez
12
2. Extensibilidad
13
2. Reutilización
14
2. Compatibilidad
• Facilidad para combinar diferentes elementos
de software entre sí
• Un sistema software generalmente necesitar
interactuar con otros sistemas.
– Suelen encontrarse muchos problemas.
• Clave: homogeneidad en el diseño y acordar
convenciones estándares de comunicación
entre programas:
– Usar formatos de archivo estándares
– Usar estructuras de datos estándares
– Usar interfaces de usuario estándares
A. Goñi, J.R. Zubizarreta, J. Iturrioz. Dpto. LSI, UPV/EHU
15
2. Eficiencia
16
2. Portabilidad
17
2. Facilidad de uso
18
2. Funcionalidad
19
2. Oportunidad
• Es la capacidad de lanzar a tiempo un sistema
software
• Un sistema software debe estar desarrollado
para cuando los usuarios lo necesitan (o antes)
• Otros factores:
– Verificabilidad: facilidad para preparar
procedimientos de prueba
– Integridad : capacidad para protegerse contra
modificaciones y accesos no autorizados
– Reparabilidad: capacidad para facilitar reparación
de defectos
– Economía : capacidad de completarse dentro de
un presupuesto
A. Goñi, J.R. Zubizarreta, J. Iturrioz. Dpto. LSI, UPV/EHU
20
2. Acerca de la documentación
21
22
23
24
PROCESO
Plantilla
Participan
PERSONAS PROYECTO
Resultado
AutomatizadoPor
PRODUCTO HERRAMIENTAS
25
26
Actividades Captura de
a realizar requisitos Análisis Diseño Implementación Pruebas
27
28
Actividades Captura de
requisitos Análisis Diseño Implementación Pruebas
a realizar
Controla y
PROCESO DE Planifica
GESTIÓN DEL
PROYECTO
A. Goñi, J.R. Zubizarreta, J. Iturrioz. Dpto. LSI, UPV/EHU
29
30
CAMBIOS CAMBIOS
A. Goñi, J.R. Zubizarreta, J. Iturrioz. Dpto. LSI, UPV/EHU
31
32
33
34
4. Proceso de Mejora del Proceso
de Ingeniería del Producto
Proceso Software
Procesos de ingeniería
Proceso de
del producto gestión del proceso
CMM
SPICE
PSP
35
36
37
5. CMM: un modelo para la
mejora de Procesos Software
38
ORGANIZACIÓN
39
5. Los 5 niveles de madurez del
proceso software
Efectividad del proceso Alto
(o Capacidad del proceso)
Proceso de 5.Optimizado
(o Madurez del proceso) mejora El objetivo principal es
continua la mejora del proceso.
Proceso 4. Gestionado
predecible Los procesos están Gestión de
Bajo
controlados y medidos cambios
Proceso
consistente y 3. Definido
estándar Los procesos están caracterizados, Calidad de
se entienden superficialmente. procesos y
2. Repetible productos
Proceso
disciplinado Se pueden repetir las tareas Proceso de
principales ya realizadas ingeniería
1. Inicial
Mal controlado y sin Gestión de
predicción proyectos básica
A. Goñi, J.R. Zubizarreta, J. Iturrioz. Dpto. LSI, UPV/EHU
40
1. Nivel:
Los procesos se
realizan. da
“Just do it” Actividad Resultados
2. Nivel:
Los procesos se Planificar
piensan antes de
realizarlos. da
Actividad Resultados
Después de
realizarlos se entrada
verifican que
están bien. Evaluar
mejora
41
3. Nivel
entrada Planificar
produce
Estándares Actividad Resultados
entrada
entrada
Evaluar
mejora
42
4. Nivel
entrada Planificar predice
produce
Estándares Actividad Resultados
entrada
entrada
Evaluar
mejora
43
5. Nivel
entrada Planificar predice
realiza
Estándares Actividad Resultados
entrada
entrada
Evaluar
mejorar
44
6. PSP
45
6. La medición en un Proceso
Definido
• Obtener datos históricos es imprescindible
para una planificación eficiente.
• Las mediciones señalan cuándo y cómo se
ejecutan las diferentes tareas del plan.
• Los datos históricos se utilizarán para
evaluar y mejorar el proceso del software.
• PSP utiliza tres tipos de medida:
– esfuerzo
– tamaño
– defectos
A. Goñi, J.R. Zubizarreta, J. Iturrioz. Dpto. LSI, UPV/EHU
46
Proceso PSP 3
Cíclico Desarrollo Cíclico
PSP 1.1
PSP 1 Planificación de Tareas
Planificación Estimación de Tamaño Planificación de Tiempos
Personal Informe de Pruebas
PSP 0.1
PSP 0 Estandares de Codificación
Medición Medidas de los Tamaños
Proceso Actual
Personal Propuesta de Mejorade Proceso
Registro de Tiempos y Defectos
6
A. Goñi, J.R. Zubizarreta, J. Iturrioz. Dpto. LSI, UPV/EHU
47
Registro deTiempos
• Registramos el
tiempo
utilizado en Student
Instructor
Date
Program #
cada fase del Date Start Stop Interruption Delta Phase Comments
PSP: Time Time
– Inicio
– Parada
– Tiempo de la
interrupción
– Fase
– Comentarios
48
Registro de Defectos
en la revisión,
compilación y Student
Instructor
Kim Orihuela
Iraj
Date
Program #
10-3- 96
3A
prueba. Date
10- 3
Number
1
Type
40
Inject
CODE
Remove
CODE
Fix Time
11
Fix Defect
introdujo (Inject) Date Number Type Inject Remove Fix Time Fix Defect
10- 3 3 20 CODE COMPILE 1
– Fase en la que se Description: Missing “ in print statement.
eliminó (Remove)
Date Number Type Inject Remove Fix Time Fix Defect
– Tiempo de 10- 3 4 10 CODE TEST 39
Description: Align/add print statements - beautify
búsqueda/fijación
– Descripción
A. Goñi, J.R. Zubizarreta, J. Iturrioz. Dpto. LSI, UPV/EHU
49
• Información de
cada defecto
encontrado en
Defect Types
la revisión, 10 Documentation 60 Checking
20 Syntax 70 Data
compilación y 30 Build, Package 80 Function
prueba. 40 Assignment 90 System
50 Interface 100 Environment
– Número
– Tipo
– Fase en la que
se introdujo
A. Goñi, J.R. Zubizarreta, J. Iturrioz. Dpto. LSI, UPV/EHU
50
actuales Test
Postmortem
25
20
25
20
20.8
16.7
Total 240 120 120 100.0
• tamaño Defects Injected Actual To Date To Date %
• tiempos Planning
Design
0
0
0
0
0
0
Code 10 10 100
• defectos Compile 0 0 0
0
Test 0 0
detectados Total Development 10 10 100
To Date %
– Datos acumulados Defects Removed
Planning
Actual
0
To Date
0 0
Design 0 0 0
de los Proyectos Code
Compile
3
5
3
5
30
50
PSP Test
Total Development
2
10
2
10
20
100
After Development 0 0 0
A. Goñi, J.R. Zubizarreta, J. Iturrioz. Dpto. LSI, UPV/EHU
51
No pasaremos del nivel
7. A modo de conclusión 1 de CMM. Hace falta
tener un Proceso de
Software maduro.
Proceso Software Llevaremos registros de
tiempos y defectos.
52
8. Bibliografía
53
Proceso unificado de desarrollo
• Basado en componentes Orientados a Objetos
• Utiliza el lenguaje unificado de modelado (UML)
• El proceso es:
• Guiado por casos de uso
• Centrado en la arquitectura
• Con un ciclo de vida iterativo e incremental
PARTE
DINÁMICA
PARTE
ESTÁTICA
A. Goñi, J.R. Zubizarreta, J. Iturrioz. Dpto. LSI, UPV/EHU
54
Persona
CASO DE USO
4: getSignatura()
elLibro
5: getCopias()
6: isCopiaPrestada()
55
Centrado en la
ARQUITECTURA
1
VISTA DEL MODELO DE CASOS DE USO VISTA DEL MODELO DEL DOMINIO /
VISTA DEL DIAGRAMA DE CLASES
: IU -1 : : : : :
1:
2:
3: G 4 2: 1:
3: G 4
r r
() ()
o o
VISTA DEL MODELO DEL ANÁLISIS
VISTA DEL MODELO DEL DISEÑO
56
Proceso unificado de desarrollo
CICLO
Flujos de
Fases DE VIDA
trabajo:
Actividades
Inicio Elaboración Construcción Transición
Requisitos
Análisis
Diseño
Implementación
Prueba
57
PLANIFICACIÓN DE EVALUACIÓN DE LA
LA ITERACIÓN ITERACIÓN
58
FASES:
• INICIACIÓN: se desarrolla una descripción del producto
final y se presenta el análisis del negocio; se identifican y
priorizan los riesgos más importantes, se planifica la
siguiente fase y se estima el proyecto de manera
aproximada
• ELABORACIÓN: se especifican en detalle la mayoría de
los casos de uso y se diseña la arquitectura del sistema;
se planifican las actividades y estiman los recursos para
terminar el proyecto
• CONSTRUCCIÓN: se desarrolla/construye el producto
• TRANSICION: se proporciona el sistema a los usuarios
finales
A. Goñi, J.R. Zubizarreta, J. Iturrioz. Dpto. LSI, UPV/EHU
59
FLUJOS DE TRABAJO:
• REQUISITOS: desarrollar un modelo del sistema que se
va a construir; identificar los requisitos de dicho sistema.
Se obtiene el Modelo de Casos de Uso (MCU) y el
Modelo del Dominio (o del Negocio)
• ANÁLISIS: tener una especificación más precisa de los
requisitos obtenidos en REQUISITOS y recogidos en el
MCU. Se obtiene el Modelo del Análisis (diagramas de
colaboración y paquetes/subpaquetes de análisis)
• DISEÑO: encontrar la forma del sistema que cumpla con
todos los requisitos (encontrar la solución). Se obtiene el
Modelo del Diseño (diagramas de secuencia, diagrama
de clases y sistemas/subsistemas de diseño)
A. Goñi, J.R. Zubizarreta, J. Iturrioz. Dpto. LSI, UPV/EHU
60
61
Unified Modelling Language (UML)
PARTE PARTE
INTERFAZ
ESTÁTICA DINÁMICA
• Para que tenga éxito, un proceso de desarrollo de
software no sólo debe ser bueno, sino que debe utilizar
además una buena notación y ofrecer herramientas
CASE (Computer Assisted Software Engineering)
• El Proceso Unificado de Desarrollo utiliza UML para
representar la parte estática y dinámica del sistema.
UML Notación
Herramientas Proceso
RATIONAL ROSE
PROCESO UNIFICADO DE
VISIO
A. Goñi, J.R. Zubizarreta, J. Iturrioz. Dpto. LSI, UPV/EHU DESARROLLO DE RATIONAL