ACSE&CADIEEL IngSoftware Clase1 vs1
ACSE&CADIEEL IngSoftware Clase1 vs1
ACSE&CADIEEL IngSoftware Clase1 vs1
3
¿Qué es ingeniería de software?
( Ref. IEEE93a)
Aplicación de enfoque
sobre
7
Índice
● Introducción a la ingeniería de software
○ Importancia de ingeniería de software en sistemas
embebidos
● Proceso de desarrollo de software
○ Etapas
● Ciclos de vida de software
○ Cascada
○ Incremental
○ Evolutivo
○ Espiral
○ Modelo en V
8
¿Ingeniería de software
en sistemas embebidos?
9
ARIANE Flight 501
Lanzamiento:
Kourou en Guiana
Francesa el 4 Junio de
1996
10
ARIANE Flight 501
11
ARIANE Flight 501
Desintegración luego de 39 seg
12
ARIANE Flight 501
Overflow en la conversión de
variables de punto flotante de 64
bits a 16 bits con signo entero
De 7 conversiones de riesgo, 4
fueron protegidos; las otras no
13
ARIANE Flight 501
Posibles explicaciones
Pruebas inadecuadas
Reutilización en forma
incorrecta
Filosofía de diseño
incorrecta
Sistema de Referencia Inercial
http://esamultimedia.esa.int/docs/esa-x-1819eng.pdf
14
OK, en mi empresa no hacemos
software aeroespacial.
15
Beneficios de la ingeniería de
software
Menor costo
Tiempo Costo
17
Ingeniería de software
18
Índice
● Introducción a la ingeniería de software
○ Importancia de ingeniería de software en sistemas
embebidos
● Proceso de desarrollo de software
○ Etapas
● Ciclos de vida de software
○ Cascada
○ Incremental
○ Evolutivo
○ Espiral
○ Modelo en V
19
Proceso de desarrollo básico
● Análisis → ¿qué debe hacer el software?
● Arquitectura → ¿cómo lo va a hacer? (alto nivel)
● Diseño → ¿cómo lo va a hacer? (en detalle)
● Implementación → Se construye (codificación)
● Integración → con Hardware y módulos de software
● Verificación → ¿Funciona como debe?
● Validación → ¿Funciona como se pidió?
● Mantenimiento → Correcciones
20
Proceso de desarrollo básico
Análisis
● ¿Qué se va a construir?
● Especificación de requerimientos
○ Funcionales
○ No Funcionales (QoS: Quality of Service)
● Casos de uso
● IEEE Std. 830-1998 - IEEE Recommended Practice for
Software Requirements Specifications
21
Proceso de desarrollo básico
Arquitectura
● ¿Cómo se va a construir (alto nivel)?
● Define y detalla las estructuras de software más
grandes (subsistemas, componentes y tareas)
● Tipos fundamentales de arquitecturas
○ Lógicas → Design time → types and clases
○ Físicas → Run time → subsystems, componente, tasks, objects
● Patrones
22
Proceso de desarrollo básico
Diseño
● ¿Cómo se va a construir (nivel de detalle)?
● Para cada componente de la arquitectura:
○ Detalla su algoritmia
○ Detalla los datos (tipos, rangos, estructuras)
24
Proceso de desarrollo básico
Integración
25
Proceso de desarrollo básico
V&V
● Propósito:
○ Demostrar al desarrollador y al cliente que el software cumple
con los requerimientos.
○ Encontrar situaciones donde el comportamiento del software sea
incorrecto, indeseable o no esté de acuerdo con su especificación
● V&V (Verificación y Validación)
○ “Validación: ¿construimos el producto correcto?”.
○ “Verificación: ¿construimos bien el producto?”.
26
Proceso de desarrollo básico
Mantenimiento
El cambio es inevitable si los sistemas de software
deben mantener su utilidad
27
Índice
● Introducción a la ingeniería de software
○ Importancia de ingeniería de software en sistemas
embebidos
● Proceso de desarrollo de software
○ Etapas
● Ciclos de vida de software
○ Cascada
○ Incremental
○ Evolutivo
○ Espiral
○ Modelo en V
28
Calidad en los dispositivos programables
En dispositivos que incorporan software, o si el software en sí mismo es
una aplicación, el software deberá ser validado de acuerdo con las más
altas prácticas de calidad
30
Ciclo de vida – Software
(ISO 12207)
Procesos Tareas
Actividades
Involucradas en:
Desarrollo Mantenimiento
Explotación
31
Ciclo de vida - Proyectos
Necesidades Revisión de
del usuario diseño
Entrada de
diseño
Proceso de
diseño
Salida de
Verificación diseño
Dispositivo
Validación
final
32
Ciclo de vida - Cascada
Análisis y
definición de
requerimientos
Diseño de la
arquitectura del
sistema
Implementación
Integración y
verificación
Instalación,
operación y
mantenimiento
33
Ciclo de vida – Cascada
¿Por qué falla este modelo?
Proyectos reales raras veces siguen el modelo secuencial que propone el modelo
Una versión funcionando no estará disponible hasta que el proyecto esté muy
avanzado
● Un error puede ser muy grave si no se detecta hasta que se revisa el programa y
el prototipo del hardware
34
Ciclo de vida - Incremental
Análisis
t
35
Ciclo de vida - Incremental
● El proceso de ejecución del proyecto se realiza por
subconjuntos de requisitos o necesidades
previamente identificadas
● Se analizan todos los procesos y luego se procede
al diseño e implementación por subconjuntos
● Se utiliza cuando:
○ No se disponen de todos los recursos a la vez
○ Existen prioridades establecidas por el cliente
○ Proyectos grandes que tienen implícito un riesgo por el
tamaño y complejidad del esfuerzo (se reduce la
incertidumbre al trabajar en una sola parte a la vez)
36
Ciclo de vida - Incremental
Release 1.0
Release 1.1
Release 1.2
Release 2.0
37
Ciclo de vida - Evolutivo
Análisis Nuevos
requisitos requisitos
Diseño e Diseño e
implementación 1 implementación 2
t
38
Ciclo de vida - Evolutivo
● Es un proceso por el cual se van obteniendo
versiones más grandes y sofisticadas de un
proceso o sistema
● No se conocen todos los requisitos desde el inicio,
sino que se van obteniendo a medida que avanza el
desarrollo
● Utilizado en:
○ Proceso que involucra aprendizaje del equipo
○ Proyectos en los que no se tienen dominio de la
tecnología o la experiencia es escasa
39
Ciclo de vida - Espiral
▪El esfuerzo de desarrollo es de tipo iterativo
▪Cada vez que se cierra un ciclo, se inicia otro
▪En cada iteración se crea un “prototipo”, cuya complejidad crece con cada
ciclo
40
Ciclo de vida - Espiral
41
Ciclo de vida - Espiral
42
Ciclo de vida – Modelo en V
43
Ciclo de vida – Modelo en V
44
Ciclo de vida – Modelo en V
45
Ciclo de vida – Modelo en V
46
● Los métodos ágiles son métodos de
desarrollo incremental que se enfocan en:
○ Diseño rápido
○ Liberaciones frecuentes del software
○ Reducción de gastos en el proceso
○ Producción de código de alta calidad
● Requieren que el cliente intervenga
directamente en el proceso de desarrollo
47
Referencias
● Ingeniería de software Un enfoque práctico. Séptima
edición. Autor: Roger S. Pressman. Año 2010
● Ingeniería Del Software. Novena Edición. Autor:
Sommerville. Editorial Pearson. Año 2011.
● Software Engineering: Principles and Practice, 3rd edition.
Autor: Hans van Vliet. Año 2008
● Software Engineering for Embedded Systems: Methods,
Practical Techniques, and Applications (Expert Guide).
Autor: Robert Oshana, Mark Kraeling. Año 2013
48