Publicado el 18 de Diciembre del 2018
832 visualizaciones desde el 18 de Diciembre del 2018
445,8 KB
16 paginas
Creado hace 8a (29/09/2015)
Introducción a la Ingeniería del Software
Ingeniería del Software
Juan Pavón Mestras
Dep. Ingeniería del Software e Inteligencia Artificial
Facultad de Informática
Universidad Complutense Madrid
Ingeniería del Software
¿Qué es la Ingeniería del Software?
¿En qué se diferencia un Programador de un Ingeniero de
Software?
¿Cuál es la diferencia entre un Ingeniero de Software y un
Ingeniero de Sistemas?
¿Qué diferencia la Ingeniería del Software de la Ciencia de la
Computación?
¿Qué es el software?
¿Qué es un proceso de software?
¿Qué es la arquitectura del software?
Juan Pavón - UCM 2011-12
Ingeniería del Software
2
Mitos del software
Te explico un poco como va y ya concretaremos luego
Es fácil modificar el software
Como es complejo, el software puede fallar
Una vez que el programa funciona, hemos terminado
Hasta que empiece a funcionar no sabré si está bien
Al cliente basta con darle un código que funcione
El programa no falla, es el cliente que no sabe utilizarlo
Con pruebas y verificación formal se pueden eliminar todos los
errores
Cuanto más voluminosa sea la documentación de un producto,
mejor será
Siempre podemos añadir más programadores
Si una característica de la aplicación no es necesaria para el
80% de los usuarios, al 20% restante realmente no le hará falta
Si un error ha sobrevivido a dos revisiones, no es un error, sino
comportamiento normal del sistema
Juan Pavón - UCM 2011-12
Ingeniería del Software
Desastres causados por fallos del software
Explosión del Ariane 5, 1996
Motivo: conversión de datos de un número demasiado grande
Pérdida del Mars Climate Observer, 1999
Motivo: mezcla de kilos y libras. El satélite acabó pegándosela en
Marte
Airbus 320 derribado por un misil lanzado desde el USS Vicennes
durante la guerra Irán-Irak, 1988
Fallo en el software de reconocimiento de patrones, que confundió a
un avión civil con un F-14 iraní: 290 pasajeros muertos
Muertes de pacientes de cáncer por sobredosis de radiación del
equipo Therac-25, 1986
Fallo de control de condiciones de carrera
Redondeo en la conversión del Euro a DM
1 EURO = 1.95583 DM
0.01 DM = 0.01 Euro y 0.01 Euro = 0.02 DM
Virus y gusanos
Juan Pavón - UCM 2011-12
Ingeniería del Software
3
4
¿Qué es el software?
Pressman:
1. Instrucciones (programas de computadora) que cuando se
ejecutan proporcionan la función y el rendimiento deseados
2. Estructuras de datos que permiten a los programas
manipular adecuadamente la información, y
3. Documentos que describen la construcción y uso de
programas
Sommerville:
Programas de ordenador y documentación asociada
Los productos de software pueden ser
• Genéricos: desarrollados para clientes muy diversos
• Hecho a medida: para un cliente particular de acuerdo a
su especificación
Juan Pavón - UCM 2011-12
Ingeniería del Software
¿Qué es la Ingeniería del Software?
La Ingeniería de Software (IS) es
una disciplina de ingeniería
• Aplicación de teorías, métodos, herramientas para hacer
cosas que funcionen:
• Software que sea fiable y trabaje en máquinas reales
• Teniendo en cuenta restricciones financieras,
organizacionales y técnicas
que comprende todos los aspectos de la producción de
software
• Desde la especificación inicial al mantenimiento del sistema
• Administración y gestión del proceso de producción
• Principios y metodologías para desarrollo y mantenimiento de
sistemas de software
IEEE 610-12 (Software Engineering)
Aplicación de un enfoque sistemático, disciplinado y
cuantificable al desarrollo, operación (funcionamiento) y
mantenimiento del software
Juan Pavón - UCM 2011-12
Ingeniería del Software
5
6
¿Qué es la Ingeniería del Software?
La IS es aplicar el sentido común al desarrollo de sistemas
software [Navarro, UCM]
¿Qué es el sentido común?
• Planificar antes de desarrollar
• Diseñar antes de programar
• Reutilizar diseños que funcionan y son mantenibles
... utilizando las herramientas apropiadas [Pavón, UCM]
Juan Pavón - UCM 2011-12
Ingeniería del Software
Herramientas CASE
Computer-Aided Software Engineering (CASE)
Software que facilita la realización de actividades del proceso
de desarrollo de software
• Edición de diagramas
• Comprobar la consistencia de los diagramas
• Generación de documentación
• Seguimiento de actividades del proyecto
Upper-CASE
Herramientas que ayudan en las actividades de captura de
requisitos, análisis y diseño
Lower-CASE
Herramientas para la programación, depuración y pruebas
Juan Pavón - UCM 2011-12
Ingeniería del Software
7
8
Ingeniería del Software e Ingeniería de Sistemas
La Ingeniería de Sistemas se refiere a todos los
aspectos del desarrollo de sistemas basados en
computadora, tanto del hardware como del software y los
procesos de diseño y distribución de sistemas
La Ingeniería del Software es solo parte de este proceso
Los ingenieros de sistemas se encargan de especificar el
sistema, definir su arquitectura, integrar sus partes
• Están menos relacionados con la ingeniería de los
componentes del sistema (HW y SW)
Al ser el software muchas veces la parte más importante
del sistema, las técnicas de ingeniería del software se
aplican en el proceso de ingeniería de sistemas
Juan Pavón - UCM 2011-12
Ingeniería del Software
9
Ingeniería de Software y Ciencia de la Computación
La Ciencia de la Computación se refiere a las teorías y los
fundamentos subyacentes en los sistemas de computación
La Ingeniería del Software trata los problemas prácticos
del desarrollo de software
Con las teorías de la ciencia de la computación no es
suficiente para desarrollar software (al menos cuando el
sistema tiene suficiente envergadura)
Juan Pavón - UCM 2011-12
Ingeniería del Software
10
Relevancia de la IS
Las economías de TODOS los países desarrollados
dependen en gran medida del software
Cada vez más sistemas son controlados por software
Comunicaciones
Seguridad
Administración
Fábricas
Comercio
Agricultura
Etc.
El gasto en la Ingeniería de Software, representa un alto
porcentaje del PIB de los países desarrollados
Juan Pavón - UCM 2011-12
Ingeniería del Software
11
Costes del software
Los gastos del software dominan sobre los de sistema
El HW es cada vez más barato
Cuesta más el software que hay en un PC que el PC
Cuesta más mantener el software que desarrollarlo
En sistemas con una larga vida, los costes de mantenimiento
llegan a multiplicar varias veces los costes de desarrollo
Lo más caro en un proyecto son los desarrolladores
La IS trata de mejorar el coste del desarrollo de software
Juan Pavón - UCM 2011-12
Ingeniería del Software
12
¿Cuáles son los costes de la IS?
Coste del software
Gastos de desarrollo
Gastos de mantenimiento y evolución
El coste varía dependiendo de:
Tipo de sistema que se desarrolle y los requisitos de atributos
del sistema como eficiencia y fiabilidad
Modelo de desarrollo
Generalmente, para el desarrollo del software
60% en desarrollo
40% en pruebas
En software hecho a medida los gastos de evolución
suelen ser mayores que los de desarrollo
En software genérico muchas veces no se considera la
evolución sino que cada nueva versión se trata como un
nuevo producto (razones mercantiles)
Juan Pavón - UCM 2011-12
Ingeniería del Software
13
Retos de la IS
Sistemas heredados (legacy systems)
Mantenimiento, actualización, integración
Heterogeneidad (SW y HW) de sistemas distribuidos
Integración y evolución
Tiempos de desarrollo cada vez más cortos
Y con menos recursos
Proyectos web: 3 meses–3 personas–3 kilos
Modas
Métodos, lenguajes, ...
Cultura de ingeniería
Formalidad
Existe una gran demanda de que exista formalidad en el
proceso de desarrollo de software
Juan Pavón - UCM 2011-12
Ingeniería del Software
14
IS: las 3 P
Personas
Producto
Proceso
Juan Pavón - UCM 2011-12
Ingeniería del Software
15
Producto: el software
El software cada día es más caro, más grande, menos
eficiente, menos robusto, …
El hardware cada día es más barato, más pequeño, más
eficiente, más robusto, …
El software hoy:
Distribuido: web, nube, …
Multi-componente
Multi-plataforma
Ubicuidad
Interfaces multi-modales
Múltiples versiones
Inteligente
Juan Pavón - UCM 2011-12
Ingeniería del Software
16
Características del software
El software se desarrolla, no se fabrica
Los costes se centran en ingeniería, no en fabricación
Los proyectos software no se pueden gestionar como procesos
de fabricación
El software no se estropea
Pero hay que mantenerlo
Juan Pavón - UCM 2011-12
Ingeniería del Software
17
Características del software
Curva de fallos del hardware
Curva de fallos del software
Juan Pavón - UCM 2011-12
Ingeniería del Software
18
Características del software
Reparación del software
El software deteriorado no se puede reparar
• ¿revisar miles de líneas de código?
• ¿cambia una versión con el tiempo?
Muchas veces las reparaciones dañan más al software
El software debe estar bien diseñado para facilitar su
evolución
Juan Pavón - UCM 2011-12
Ingeniería del Software
19
Software bien diseñado
Atributos del software bien diseñado
Mantenible
• Capaz de evolucionar según las necesidades de cambio de los clientes
Seguro
• Robusto, que no produce daños incluso bajo un fallo del sistema
Eficiente
• No desperdicia los recursos del sistema (memoria, procesador, disco)
Amistoso
• Buena interfaz
Bien documentado
Atributos en tensión: su importancia depende del sistema y del
entorno en el que será utilizado
El coste tiende a ser alto si se exige un alto nivel de alguna característica
Juan Pavón - UCM 2011-12
Ingeniería del Software
20
Características del software
Coste de la eficiencia del software
Comentarios de: Introducción a la Ingeniería del Software (0)
No hay comentarios