Publicado el 1 de Junio del 2017
1.503 visualizaciones desde el 1 de Junio del 2017
757,3 KB
62 paginas
Creado hace 11a (07/09/2012)
Introducción a la
Ingeniería del Software
Autores:
Simon Pickin
Marisol García Valls
Address: Departamento de Ingeniería Telemática
Universidad Carlos III de Madrid
Version:
1.0
Software de
Comunicaciones
2012-2013
© UC3M
1
Índice
1. Visión General / Definición de términos
2. Modelos de ciclo de vida
3. Captura, análisis y especificación de requisitos
4. Diseño del software
5. Prueba del software
6. Temas transversales
– el modelado
– la calidad del software
– métodos formales
Software de
Comunicaciones
2012-2013
© UC3M
– algunos acontecimientos recientes
2
1. Visión general / definición de términos
Software de
Comunicaciones
2012-2013
© UC3M
3
¿Qué es la ingeniería del software? (1/4)
• El establecimiento y uso de principios de
ingeniería robustos, orientados a obtener
económicamente software que sea fiable y
funcione eficientemente sobre máquinas
reales.
F.L. Bauer. Software Engineering.
Information Processing 71., 1972
Software de
Comunicaciones
2012-2013
© UC3M
4
¿Qué es la ingeniería del software? (2/4)
• La disciplina tecnológica y de gestión que
concierne a la producción y el mantenimiento
sistemático de productos software
desarrollados y modificados dentro de unos
plazos estipulados y costes estimados.
R. Fairley. Software Engineering Concepts.
New York: McGraw-Hill, 1985.
Software de
Comunicaciones
2012-2013
© UC3M
5
¿Qué es la ingeniería del software? (3/4)
• Ingeniería del software. (1) La aplicación de
un enfoque sistemático, disciplinado y
cuantificable del desarrollo, la operación y
el mantenimiento del software; esto es, la
aplicación de la ingeniería al software. (2)
El estudio de enfoques tales como (1).
IEEE Std 610-1990
Software de
Comunicaciones
2012-2013
© UC3M
6
¿Qué es la ingeniería del software? (4/4)
•
Ingeniería es la aplicación sistemática de
conocimiento científico en la creación y construcción
de soluciones, que satisfacen una buena relación
efectividad/precio, de problemas prácticos al servicio
de la humanidad. La ingeniería del software es la
forma de ingeniería que aplica los principios de las
ciencias de la computación y las matemáticas en la
obtención de soluciones de los problemas del
software que satisfacen una buena relación
efectividad/precio.
SEI Report on Undergraduate Software Engineering
Education, 1990.
Software de
Comunicaciones
2012-2013
© UC3M
7
¿Qué no es la ingeniería del software? (1/2)
• Las ciencias de la computación
– atañe a la teoría y a los aspectos fundamentales
– la ingeniería del software atañe a los aspectos
prácticos del desarrollo y entrega de software útil.
– aún son insuficientes para actuar como
apuntalamiento de la ingeniería del software (al
contrario, p.e., de la física y la ingeniería eléctrica)
Software Engineering,
Sommerville
8
Software de
Comunicaciones
2012-2013
© UC3M
¿Qué no es la ingeniería del software? (2/2)
• La ingeniería de sistemas
– atañe a todos los aspectos del desarrollo de
sistemas basados en ordenadores, incluyendo el
hardware, el software y la ingeniería de procesos
– la ingeniería del software es la parte de este
proceso que atañe al desarrollo de la
infrastructura software, el control, las
aplicaciones y las bases de datos del sistema.
– los ingenieros de sistema están implicados en la
especificación del sistema, el diseño
arquitectónico, la integración y el despliegue.
Software de
Comunicaciones
2012-2013
© UC3M
Software Engineering,
Sommerville
9
¿Para qué la ingeniería del software? (1/4)?
• El término “ingeniería del software” se
popularizó al final de los años 60
• Respuesta a la llamada “crisis del software”
– las prestaciones del hardware aumentaban
mucho más rápido que las del software.
– el desarrollo de sistemas de software grandes
resultaba muy insatisfactorio:
• entrega habitualmente retrasada (a veces por mucho)
• presupuesto habitualmente excedido (a veces
masivamente)
• calidad del producto final habitualmente baja: productos
poco fiables y difíciles de mantener
10
Software de
Comunicaciones
2012-2013
© UC3M
¿Para qué la ingeniería del software? (2/4)?
• Las técnicas utilizadas para software “uni-
desarrollador” no escalan
– proyectos grandes necesitan un equipo
– la calidad de comunicación entre los miembros
es un problema serio → documentación
• Deseo de beneficiarse de experiencia previa
• Necesidad de planificar para el
mantenimiento y la evolución
Software de
Comunicaciones
2012-2013
© UC3M
– Las decisiones de diseño importantes deben
documentarse
11
¿Para qué la ingeniería del software? (3/4)?
• La comunicación con el cliente/usuario es
primordial
– entender los requisitos del cliente
– p.e. Xtreme programming (programación
extrema): el cliente tiene representante en el
equipo de desarrollo
Software de
Comunicaciones
2012-2013
© UC3M
12
¿Para qué la ingeniería del software? (4/4)?
• Necesidad de estimar el dinero, tiempo y
esfuerzo requeridos
– las estimaciones se basan principalmente en el
modelado del proyecto actual y su comparación
con proyectos anteriores
– ¿Queremos el trabajo? ¿Cuánto cobramos?
– Constructive Cost Model COCOMO
Constructive Systems Engineering Cost Model
COSYSMO
Software de
Comunicaciones
2012-2013
© UC3M
– The mythical man month, Brooks, 1975:
añadir recursos humanos a un proyecto de
software atrasado lo atrasa más
13
¿Qué es un proceso de desarrollo? (1/2)
• Proceso:
Una serie de acciones u operaciones que
conducen a un fin (Websters)
conjunto de las fases sucesivas de un fenómeno
natural o de una operación artificial (RAE)
• Proceso de desarrollo de software
El conjunto de actividades, métodos y prácticas
utilizados en la producción y evolución de
software.
Software de
Comunicaciones
2012-2013
© UC3M
14
¿Qué es un proceso de desarrollo? (2/2)
• Un proceso de desarrollo de software puede incluir
– un modelo de ciclo de vida
• divide el desarrollo en fases y prescribe las actividades que
deben realizarse en cada fase
• proporciona criterios para determinar cuándo cada fase de
desarrollo ha terminado
• define los deliverables / artefactos / productos de cada fase
– consideración de herramientas y equipamiento
– consideración de personal y de su organización
– restricciones sobre las actividades, los artefactos, las
herramientas, el personal etc.
• Para muchos autores:
Software de
Comunicaciones
2012-2013
© UC3M
proceso de desarrollo de software = ciclo de vida de software
15
¿Qué es un ciclo de vida de software?
• El periodo de tiempo que comienza cuando se concibe un
software y concluye cuando el producto ya no está
disponible para su uso.
• El ciclo de vida del software típicamente incluye una fase
de requisitos, una fase de diseño, una fase de pruebas,
una fase de instalación y aceptación, una fase de
operación y mantenimiento, y, en ocasiones, una fase de
retirada.
• Un modelo de ciclo de vida es una abstracción particular
que representa un ciclo de vida de software. Un modelo
de ciclo de vida se denomina con frecuencia un ciclo de
vida de desarrollo software (SDLC, siglas inglesas).
IEEE Standard Glossary of Soft. Eng. Terminology
16
Software de
Comunicaciones
2012-2013
© UC3M
El modelado de software (& hardware)
• Perspectiva escéptica sobre modelos de software:
“burbujas y flechas, al contrario que los programas,
nunca cascan” Bertrand Meyer 1997
• El uso de modelos es tan antiguo como la ingeniería
– antes de construir el ente real, los ingenieros construyen
modelos y aprenden de ellos
• Algunas características deseables de un modelo
– abstracto
– comprensible
– preciso
– predictivo
– no muy caro de construir
Software de
Comunicaciones
2012-2013
© UC3M
17
Modelado: el propósito de modelos
• Ayudarnos a entender un problema complejo
mediante análisis y simulación
• Permitir la investigación y comparación de
soluciones alternativas
• Facilitar la comunicación de ideas sobre un
problema o sobre su solución
• Permitir la detección de errores y omisiones durante
el diseño
• Para dirigir la implementación
–
Software de
Comunicaciones
2012-2013
© UC3M
18
2. Modelos de ciclo de vida
Software de
Comunicaciones
2012-2013
© UC3M
19
El proceso de desarrollo de software
Análisis de
sistema
Desarrollo
Operación y
Mantenimiento
Requisitos
de usuario
Sistema software
Software de
Comunicaciones
2012-2013
© UC3M
20
Modelo de ciclo de vida en cascada (1/2)
Análisis de
requisitos
Diseño
Implementación
y prueba unitaria
Integración
y prueba sistema
Software de
Comunicaciones
2012-2013
© UC3M
Operación
y mantenimiento
21
Modelo de ciclo de vida en cascada (2/2)
Análisis de
requisitos
Especificación del
sistema software
Diseño
Arquitectura y diseño
de componentes
Implementación
y prueba unitaria
Componentes
implementados
Software de
Comunicaciones
2012-2013
© UC3M
Integración
y prueba sistema
Sistema
integrado
Operación
y mantenimiento
22
Modelo de ciclo de vida en V
Captura de
requisitos
Análisis de
requisitos
Diseño de
arquitectura
Diseño de
componentes
Mundo real
validación
Sistema
verificación
Subsistemas
verificación
Componentes
verifcación
Operación y
Mantenim.
Prueba de
aceptación
Integración de
sistema
Integración
de subsistemas
Codificación de
componentes
Prueba
unitaria
Software de
Comunicaciones
2012-2013
© UC
Comentarios de: Introducción a la ingeniería del software (0)
No hay comentarios