8/20/2019 S1-Modelos de Procesos.pdf
1/24
Tema 1:
Introducción a la Ingenieríadel Software
Este Trabajo está licenciado con Creative Commons License
http://creativecommons.org/licenses/by-nc/2.0/
http://wwwdi.ujaen.es/~magchttp://wwwdi.ujaen.es/asignaturas/ingprog
Versión 2.0.0
8/20/2019 S1-Modelos de Procesos.pdf
2/24
Tema 1: Introducción a la Ingeniería del Software
v 2.0.0 - 2
Objetivos Específicos
• Resumir conceptos generales asociados a la Ingeniería delSoftware y al desarrollo de aplicaciones.
• Describir qué es el Software y sus características generales.
• Mostrar las etapas de evolución del Software.
• Revisar el concepto de Ingeniería del Software y algunasherramientas.
• Estudiar las fases de la Ingeniería.
• Revisar Modelos de Proceso o Desarrollo de Software.
8/20/2019 S1-Modelos de Procesos.pdf
3/24
Tema 1: Introducción a la Ingeniería del Software
v 2.0.0 - 3
Conceptos GeneralesProgramación:
Creación de un programa (un conjunto de instrucciones que unacomputadora puede ejecutar).
Programa:Secuencia no ambigua, finita y ordenada de instrucciones queresuelven un problema.
Lenguajes de programación vs. Lenguaje máquina
Tres objetivos:
– Corrección: si hace lo que tiene que hacer.
– Eficiencia: consumir la menor cantidad de recursos posibles(tiempo, memoria, CPU).
– Claridad : lo más claro posible para facilitar el futuromantenimiento.
8/20/2019 S1-Modelos de Procesos.pdf
4/24
Tema 1: Introducción a la Ingeniería del Software
v 2.0.0 - 4
El Software (I)Características
– Producto lógico, no físico– Se desarrolla, no se fabrica
– No se deteriora.
– Construcción a medida.
– Mantenimiento complicado
Aplicaciones del Software– Software de sistemas– Software de tiempo real
– Software de gestión
– Software de ingeniería y científico
– Software empotrado
– Software de computadoras personales
– Software de inteligencia artificial
8/20/2019 S1-Modelos de Procesos.pdf
5/24
Tema 1: Introducción a la Ingeniería del Software
v 2.0.0 - 5
El Software (II)
Í
n d i c e
d e
f a l l o
s
Tiempo de uso
Software
Hardware
Í n d i c e
d e
f a l l o s
S o f t w
a r e
Tiempo de uso
Ideal
Cambio Real
8/20/2019 S1-Modelos de Procesos.pdf
6/24
Tema 1: Introducción a la Ingeniería del Software
v 2.0.0 - 6
Evolución del Software
Veamos algo de Historia reciente...
No os durmáis …
8/20/2019 S1-Modelos de Procesos.pdf
7/24
Tema 1: Introducción a la Ingeniería del Software
v 2.0.0 - 7
Evolución del Software1ª Época (1950)
– La programación de las computadores era un arte– No se disponía de métodos sistemáticos para desarrollar software
– No había planificación
2ª Época (60-70)
– El software como producto de distribución genérica– Aparece el concepto de mantenimiento del software
– Aumento de la complejidad del código
3ª Época (72-85)– Sistemas multiusuario
– Sistemas en tiempo real
– Bases de datos
– Producto de software
8/20/2019 S1-Modelos de Procesos.pdf
8/24
Tema 1: Introducción a la Ingeniería del Software
v 2.0.0 - 8
Evolución del SoftwareMitos del Software4ª Época (85-)
– Sistemas personales potentes– Tecnologías orientadas a objetos
– Sistemas expertos
– Redes neuronales
– Computación en paralelo
– Redes de computadoras
Mitos del Software– ¿Por qué lleva tanto tiempo terminar los programas?
– ¿Por qué es el coste de desarrollo tan elevado?
– ¿Por qué no podemos construir un software sin errores?
– ¿Por qué existe dificultad en la medición del trabajo y del proceso de desarrollo?
– ¿Por qué el programa no hace lo que se esperaba?
– ¿Por qué es difícil modificar los programas?
– ¿Por qué un aumento del número de personal no ayuda?
8/20/2019 S1-Modelos de Procesos.pdf
9/24
Tema 1: Introducción a la Ingeniería del Software
v 2.0.0 - 9
Ingeniería del Software
Uno de los objetivos más perseguidos desde los inicios de la informática ha sido la búsquedade técnicas que mejorasen la calidad y permitiesen reducir los costes de las solucionesde software.
A mediados de los 60, la creación de un producto software se convirtió en una tareaangustiosa (crisis del software), y se hizo por tanto necesario introducir una serie deherramientas y procedimientos que facilitaran por un lado, la labor de creación de nuevosoftware y por otro, la comprensión y el manejo del mismo. Estos fueron los inicios dela ingeniería del software.
Definición:
Según Bauer (1969), entendemos por ingeniería del software “el establecimiento y uso
de principios de ingeniería robustos, orientados a obtener software económico, quesea fiable y funcione eficientemente sobre máquinas reales.”
8/20/2019 S1-Modelos de Procesos.pdf
10/24
Tema 1: Introducción a la Ingeniería del Software
v 2.0.0 - 10
Elementos de laIngeniería del Software1. Herramientas: proporcionan un soporte automático o semiautomático para la
aplicación de los procedimientos y los métodos.
2. Métodos: Indican cómo construir técnicamente el software. Abarcan una grancantidad de tareas.
3. Procedimientos: Un procedimiento software se puede caracterizar por un conjuntode actividades que se pueden aplicar en el desarrollo de cualquier proyecto softwareasí como la forma de abarcarlas durante el desarrollo del mismo.
Herramientas CASE (Computer-Aided Software Engineering)Conjunto de herramientas para soportar las tareas de Ingeniería del software y diseñadas de
manera que la información generada por una de ellas sirva de entrada a otras.
Metodologías de Diseño– Diseño funcional descendente. El sistema se observa en términos de las
funciones que suministra.
– Diseño orientado a objetos. El sistema se observa como una sociedad deobjetos, donde cada elemento del sistema (objeto) encapsula datos yoperaciones.
8/20/2019 S1-Modelos de Procesos.pdf
11/24
Tema 1: Introducción a la Ingeniería del Software
v 2.0.0 - 11
Fases de laIngeniería del SoftwareDefinición o Análisis:
– Se centra en el QUÉ.
– Se intenta identificar qué información ha de ser procesada, qué función yrendimiento se desea, qué comportamiento del sistema, qué interfaces van a serestablecidas, qué restricciones de diseño existen y qué criterios de validación senecesitan para definir un sistema correcto.
Desarrollo:– Se centra en el CÓMO.
– Se definen cómo han de diseñarse las estructuras de datos.– Cómo ha de implementarse la funcionalidad como una arquitectura del
software.
– Cómo han de implementarse los detalles de los procedimientos..
– Cómo traducir el diseño a un lenguaje de programación.
– Cómo realizar las pruebas sobre el software resultante.
Mantenimiento:– Se centra en el cambio que va asociado a la corrección de errores.
– Adaptaciones requeridas a medida que evoluciona el entorno.
– Cambios debidos a mejoras producidas por los requerimientos del cliente.
8/20/2019 S1-Modelos de Procesos.pdf
12/24
Tema 1: Introducción a la Ingeniería del Software
v 2.0.0 - 12
Pregunta Trivial
• ¿La fase de Definición se centra en?
• ¿La fase de Desarrollo se centra en?
8/20/2019 S1-Modelos de Procesos.pdf
13/24
Tema 1: Introducción a la Ingeniería del Software
v 2.0.0 - 13
Respuesta Trivial
• Definición: QUÉ
• Desarrollo: CÓMO
8/20/2019 S1-Modelos de Procesos.pdf
14/24
Tema 1: Introducción a la Ingeniería del Software
v 2.0.0 - 14
Análisis del Sistema - Ejemplo
Visión Funcional
8/20/2019 S1-Modelos de Procesos.pdf
15/24
Tema 1: Introducción a la Ingeniería del Software
v 2.0.0 - 15
Análisis del Sistema - Ejemplo
8/20/2019 S1-Modelos de Procesos.pdf
16/24
Tema 1: Introducción a la Ingeniería del Software
v 2.0.0 - 16
Diseño del Sistema - Ejemplo
Diagrama de Estructura
8/20/2019 S1-Modelos de Procesos.pdf
17/24
Tema 1: Introducción a la Ingeniería del Software
v 2.0.0 - 17
Diseño del Sistema - Ejemplo
8/20/2019 S1-Modelos de Procesos.pdf
18/24
Tema 1: Introducción a la Ingeniería del Software
v 2.0.0 - 18
Análisis y Diseño del Sistema
8/20/2019 S1-Modelos de Procesos.pdf
19/24
Tema 1: Introducción a la Ingeniería del Software
v 2.0.0 - 19
Modelos de Proceso del Software (I)Modelo lineal secuencial (Ciclo de vida clásico)Enfoque sistemático y secuencial del desarrollo del software que comienza en un nivel de
sistemas y progresa con el análisis, diseño, codificación, pruebas y mantenimiento.
Actividades:
1.- Ingeniería y modelado de Sistemas/Información
– Ubicación del software en el ámbito donde va a funcionar.
2.- Análisis de los requisitos del software
– Se deben conocer los aspectos relacionados con la información a tratar, lafunción requerida, comportamiento, rendimiento, etc del software.
– El cliente debe dar el visto bueno
3.- Diseño– Estructura del programa y arquitectura del software
– Representaciones de la Interfaz
– Detalle Procedimental (algoritmo)
Análisis Diseño Código Prueba Mantenimiento
8/20/2019 S1-Modelos de Procesos.pdf
20/24
Tema 1: Introducción a la Ingeniería del Software
v 2.0.0 - 20
Modelos de Proceso del Software (II)
4.- Generación de código o Implementación– Puede automatizarse si el diseño está bien detallado.
5.- Pruebas
– De Caja Blanca: Análisis de los distintos caminos de ejecución de los algoritmos.
– De Caja Negra: Análisis de los procesos externos funcionales.
6.- Mantenimiento
Gestión de cambios en el software debidos a:
– Errores durante el desarrollo.
– Adaptación a nuevos entornos. Ej. Sistema Operativo
– Mejoras funcionales o de Rendimiento.
8/20/2019 S1-Modelos de Procesos.pdf
21/24
Tema 1: Introducción a la Ingeniería del Software
v 2.0.0 - 21
Modelos de Proceso del Software (III)
Escuchar
al ClienteConstruir
prototipo
Probar el
prototipo
Modelo de construcción de prototipos
Se dan un conjunto de objetivos generales de entrada, procesamiento y salida.Con ellos se desarrolla un prototipo inicial que sirve para detallar objetivos (requisitos) másconcretos del producto final.
El prototipo se suele desechar.
8/20/2019 S1-Modelos de Procesos.pdf
22/24
Tema 1: Introducción a la Ingeniería del Software
v 2.0.0 - 22
Modelos de Proceso del Software (IV)Desarrollo Rápido de Aplicaciones (DRA)Es una adaptación a “alta velocidad ” del modelo lineal secuencial en el que se logra el
desarrollo rápido utilizando un enfoque de construcción basado en componentes.Puede permitir el desarrollo de un sistema completamente funcional en periodos cortos de
tiempo (de 60 a 90 días).
Los componentes que se desarrollen se pueden reutilizar en posteriores proyectosRepositorio de componentes.
El sistema se descompone en un conjunto de bloques que se pueden desarrollar de manera
independiente por distintos equipos de desarrollo.Sólo puede aplicarse cuando se cumplen una serie de condiciones:
– Se comprenden muy bien los requisitos del sistema a desarrollar. Ya sea porque los conoce elpropio desarrollador o porque se tiene una experiencia previa en un sistema similar.
– Se delimita muy bien el ámbito del problema.
– La interacción del software con el nuevo sistema no es complicada o se utilizan nuevas
tecnologías que no son dominadas por el equipo de desarrollo.Inconvenientes:– Debe haber un compromiso por parte del equipo de desarrollo y del cliente en el desarrollo
rápido de actividades.
– Requiere recursos suficientes para crear el número de equipos necesarios.
8/20/2019 S1-Modelos de Procesos.pdf
23/24
Tema 1: Introducción a la Ingeniería del Software
v 2.0.0 - 23
Modelos de Proceso del Software (V)Modelos Evolutivos Necesidad : El software, al igual que el resto de sistemas evoluciona con el tiempo.
Necesidad de procedimientos que permitan una evolución del software.Modelo Incremental.
– Combina elementos del modelo lineal secuencial con la filosofía interactiva de construcciónde prototipos.
– Entrega por incrementos
– Fácil adaptación a requerimientos temporales de entrega.
Análisis Diseño Código Prueba MantenimientoIncremento
1
Análisis Diseño Código Prueba MantenimientoIncremento
2
Análisis Diseño Código Prueba MantenimientoIncremento
3
Entrega de
incremento
1
Entrega de
incremento
2
Entrega de
incremento3
Tiempo
8/20/2019 S1-Modelos de Procesos.pdf
24/24
Tema 1: Introducción a la Ingeniería del Software
v 2.0.0 - 24
Modelos de Proceso del Software (VI)
Comunicación
con el Cliente
Planificación Análisis de
Riesgos
Ingeniería
Construcción
y adaptaciónEvaluación
del Cliente
Modelos Evolutivos
Modelo en Espiral.– Combina el modelo lineal secuencial y el de construcción de prototipos aparte de
proporcionar el potencial para el desarrollo rápido de versiones incrementales del software.
– Se debe establecer el número de interacciones.