Está en la página 1de 48

Cursos de Programación de Sistemas

Embebidos de ACSE y CADIEEL


Nivel 1 - Ingeniería de Software
Clase 1
Introducción
Procesos de Desarrollo
Ciclos de Vida

Ing. Alejandro Permingeat


Ing. Paola Pezoimburu
Í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

3
¿Qué es ingeniería de software?
( Ref. IEEE93a)

Aplicación de enfoque

Sistemático Disciplinado Cuantificable

sobre

Desarrollo Operación Mantenimiento


del software del software del software
Ciclo de vida del software
4
Software
1) instrucciones (programas de cómputo) que cuando
se ejecutan proporcionan las características, función y
desempeño buscados;

2) estructuras de datos que permiten que los


programas manipulen en forma adecuada la
información, y

3) información descriptiva tanto en papel como en


formas virtuales que describen la operación y uso de
los programas.
5
Software
El software es elemento de El software NO es un
un sistema lógico elemento sistema
físico

El software no se desgasta pero


si se deteriora 6
Dominios de aplicación del
software
● Software de sistemas
● Software de aplicación
● Software de ingeniería y ciencias
● Software embebido
● Aplicaciones web
● Software de inteligencia artificial

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

Causada por una gran corrección


debido a la desviación actitud

Causada por datos erróneos que


se enviaban al On Board
Computer

Causada por una excepción


software en el Sistema de
Referencia Inercial después de 36
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

Reuso de Sistema de Referencia


Inercial Ariane 4

Etapa temprana en trayectoria de


Ariane 4 distinta de Ariane 5

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.

¿Por qué aplicar ingeniería de


software?

15
Beneficios de la ingeniería de
software
Menor costo

(Source: IBM Systems Sciences Institute)


16
Beneficios de la ingeniería de
software
Mejor estimación

Tiempo Costo

Mejor uso Mayor satisfacción


de recursos cliente

17
Ingeniería de software

No hay balas de plata


(No silver bullet)
No hay balas de plata: Lo esencial y lo accidental en la Ingeniería del Software
by Frederick P. Brooks, Jr.
(http://barrapunto.com/~pacoescriba/journal/29784)

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)

● Debe ser una guía legible y comprensible para quienes


generan el código y para los que lo prueban y dan el
apoyo posterior.
23
Proceso de desarrollo básico
Implementación

● Convertir el diseño en código fuente:


C, C++, java, Phyton, etc
● Control de versiones (SVN, GIT, Mercurial)
● Doxygen
● Test Unitarios

24
Proceso de desarrollo básico
Integración

● Integración con otros módulos de software


● Integración con el hardware
● Servidores de integración continua (Hudson,
Jenkins)

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

Ciclo de vida del Manejo de riesgos Verificación y


software validación
29
Ciclo de vida - Proyectos
● El ciclo de vida de un proyecto especifica el enfoque
general del desarrollo, indicando:
○ los procesos,
○ actividades y
○ tareas que se van a realizar

● En qué orden se realizarán


● Los productos que:
○ se van a generar,
○ se van a entregar al cliente y
○ en qué orden se van a entregar

30
Ciclo de vida – Software
(ISO 12207)

Un marco de referencia que contiene

Procesos Tareas
Actividades

Involucradas en:

Desarrollo Mantenimiento
Explotación

abarcando la vida del sistema

Desde la definición del Hasta finalización de su


software uso

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

Diseño detallado Once-through

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

● Aunque el modelo lineal puede tener realimentación (y/o iteración), lo hace


indirectamente

Es difícil que el cliente exponga explícitamente todos los requisitos

● El modelo lineal secuencial lo requiere y tiene dificultades a la hora de acomodar


la incertidumbre natural al comienzo de muchos proyectos

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

Diseño e Diseño e Diseño e


implementación 1 implementación 2 implementación n

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

✓Si bien el modelo V sugiere un procedimiento


donde las fases de pruebas son ejecutadas
después de las fases de construcción, la
preparación de cada fase de prueba debería
comenzar tan pronto como sea posible, es decir,
en paralelo con la correspondiente fase de
construcción
✓Esto permite una realimentación temprana
respecto a la fase de pruebas

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

También podría gustarte