TEMA 5: INTRODUCCIÓN A LA INGENIERÍA DEL SOFTWARE.

15
TEMA 5: INTRODUCCIÓN A LA INGENIERÍA DEL SOFTWARE

Transcript of TEMA 5: INTRODUCCIÓN A LA INGENIERÍA DEL SOFTWARE.

Page 1: TEMA 5: INTRODUCCIÓN A LA INGENIERÍA DEL SOFTWARE.

TEMA 5:

INTRODUCCIÓN A LA INGENIERÍA DEL SOFTWARE

Page 2: TEMA 5: INTRODUCCIÓN A LA INGENIERÍA DEL SOFTWARE.

Ingeniería del Software

Definición de Ingeniería del Software

“Estudio de los principios y metodologías para el desarrollo y mantenimiento de sistemas software [Zelkovitz, 1978]”.

“Aplicación práctica del conocimiento científico en el diseño y construcción de programas de computadora y la documentación asociada requerida para desarrollar, operar (funcionar) y mantenerlos. Se conoce también como desarrollo de software o producción de software [Bohem, 1976]”.

El IEEE 1993 ha desarrollado una definición más completa: “La aplicación de un enfoque sistemático, disciplinado, cuantificable al desarrollo, operación (funcionamiento) y mantenimiento del software, es decir, la aplicación de ingeniería al software”.

Page 3: TEMA 5: INTRODUCCIÓN A LA INGENIERÍA DEL SOFTWARE.

Ingeniería del Software

Proceso de Desarrollo de Software

“Es aquel en que las necesidades del usuario son traducidas en requerimientos de software, estos requerimientos transformados en diseño y el diseño implementado en código, el código es probado, documentado y certificado para su uso operativo. Concretamente "define quién está haciendo qué, cuándo hacerlo y cómo alcanzar un cierto objetivo“.

Page 4: TEMA 5: INTRODUCCIÓN A LA INGENIERÍA DEL SOFTWARE.

Ingeniería del Software

Proceso de Desarrollo de Software

El conjunto de actividades fundamentales que se encuentran presentes en los procesos de desarrollo de software son:

Especificación de software: Define la funcionalidad y restricciones operacionales que debe cumplir el software.

Diseño e Implementación: Se diseña y construye el software de acuerdo a la especificación.

Validación: El software debe validarse, para asegurar que cumpla con lo que quiere el cliente.

Evolución: El software debe evolucionar, para adaptarse a las necesidades del cliente.

Page 5: TEMA 5: INTRODUCCIÓN A LA INGENIERÍA DEL SOFTWARE.

Ingeniería del Software

Métodos de Proceso de Software

Todo el desarrollo del software se puede caracterizar como un bucle de resolución de problemas en el que se encuentran cuatro etapas distintas: definición de problemas, desarrollo técnico, status quo e integración de soluciones.

Page 6: TEMA 5: INTRODUCCIÓN A LA INGENIERÍA DEL SOFTWARE.

Ingeniería del Software

Ciclos de vida del software

El desarrollo de software va unido a un ciclo de vida compuesto por una serie de etapas que comprenden todas las actividades, desde el momento en que surge la idea de crear un nuevo producto software, hasta aquel en que el producto deja definitivamente de ser utilizado por el último de sus usuarios.

Las principales etapas a realizar en cualquier ciclo de vida son: Análisis: Construye un modelo de los requisitos. Diseño: A partir del modelo de análisis se deducen las

estructuras de datos, la estructura en la que descompone el sistema y la interfaz de usuario.

Codificación: Construye el sistema. La salida de esta fase es código ejecutable.

Pruebas: Se comprueba que se cumplen criterios de corrección y calidad.

Mantenimiento: En esta fase, que tiene lugar después de la entrega se asegura que el sistema siga funcionando y adaptándose a nuevos requisitos.

Page 7: TEMA 5: INTRODUCCIÓN A LA INGENIERÍA DEL SOFTWARE.

Ingeniería del Software

Ciclo de vida clásico

El modelo lineal secuencial llamado algunas veces “Ciclo de vida clásico” o “Modelo en Cascada” comienza en un nivel de sistemas y progresa con el análisis, diseño, codificación, pruebas y mantenimiento.

Page 8: TEMA 5: INTRODUCCIÓN A LA INGENIERÍA DEL SOFTWARE.

Ingeniería del Software

Ciclo de vida clásico

Es un ciclo de vida que admite iteraciones, ya que después de cada etapa se realiza una o varias revisiones para comprobar si se puede pasar a la siguiente. Es un modelo rígido, poco flexible y con muchas restricciones, y sirvió de base para el resto de los modelos de ciclo de vida.

Es un ciclo adecuado para los proyectos en los que se dispone de todos los requerimientos al comienzo, para el desarrollo de un producto con funcionalidades conocidas o para proyectos, o para proyectos, que aún siendo muy complejos se entienden perfectamente desde el principio.

Es un modelo puramente teórico, ya que el usuario rara vez mantiene los requerimientos iniciales y existen muchas posibilidades de que se debamos retomar alguna etapa anterior. Pero es mejor que no seguir ningún ciclo de vida en el diseño de software.

Page 9: TEMA 5: INTRODUCCIÓN A LA INGENIERÍA DEL SOFTWARE.

Ingeniería del Software

Ciclo de Vida en V

Page 10: TEMA 5: INTRODUCCIÓN A LA INGENIERÍA DEL SOFTWARE.

Ingeniería del Software

Ciclo de Vida en V

Las características de este modelo son las mismas que las del ciclo de vida en cascada, con el agregado de los controles cruzados entre etapas para lograr una mayor corrección.

Proviene del principio que establece que los procedimientos utilizados para probar si la aplicación cumple las especificaciones ya deben haberse creado en la fase de diseño.

Una fase además de utilizarse como entrada para la siguiente, sirve para validar o verificar otras fases posteriores.

Page 11: TEMA 5: INTRODUCCIÓN A LA INGENIERÍA DEL SOFTWARE.

Ingeniería del Software

Modelo del Ciclo de Vida en Espiral

Page 12: TEMA 5: INTRODUCCIÓN A LA INGENIERÍA DEL SOFTWARE.

Ingeniería del Software

Modelo del Ciclo de Vida en Espiral

Consiste en una serie de ciclos que se repiten. Cada uno tiene las mismas fases y cuando termina da un producto ampliado con respecto al ciclo anterior.

En este sentido es parecido al modelo incremental, la diferencia importante es que tiene en cuenta el concepto de riesgo. Un riesgo puede ser muchas cosas: requisitos no comprendidos, mal diseño, errores en la implementación, etc.

Al terminar una iteración se comprueba que lo que se ha hecho efectivamente cumple con los requisitos establecidos, también se verifica que funciona correctamente. El propio cliente evalúa el producto. No existe una diferencia muy clara entre cuando termina el proyecto y cuando empieza la fase de mantenimiento. Cuando hay que hacer un cambio, este puede consistir en un nuevo ciclo.

Dónde es adecuado? Sistemas de gran tamaño. Proyectos donde sea importante el factor riesgo. Cuando no sea posible definir al principio todos los requisitos.

Page 13: TEMA 5: INTRODUCCIÓN A LA INGENIERÍA DEL SOFTWARE.

Ingeniería del Software

Análisis de Requisitos Software (¿Qué quiere el usuario?)

El análisis de requisitos permite al ingeniero de sistemas:

Especificar la función y el rendimiento del software. Indicar la interfaz del sistema. Establecer las restricciones que debe cumplir el software. Refinar la definición del software. Construir modelos de los dominios de datos, funcional y de

comportamiento que van a ser tratados en el software. Proporciona modelos que pueden traducirse en el diseño

arquitectónico, de datos, de interfaz y procedimental.

El enfoque primario del analista está en el “qué” y no el “cómo”, es decir, ¿Qué datos produce y consume el sistema, qué funciones debe realizar el sistema, qué interfaces se definirán y qué restricciones son aplicables?

Page 14: TEMA 5: INTRODUCCIÓN A LA INGENIERÍA DEL SOFTWARE.

Ingeniería del Software

Especificación de los Requisitos del Software (ERS)

El objetivo del ERS es el establecimiento de un acuerdo entre el usuario y los analistas sobre QUÉ debe hacer el software. Debe prepararse de forma conjunta por los usuarios y por los analistas. La especificación de los requisitos del software se produce en la culminación de la tarea de análisis.

Page 15: TEMA 5: INTRODUCCIÓN A LA INGENIERÍA DEL SOFTWARE.

Ingeniería del Software

Modelado de Análisis (¿Qué vamos hacer?)

Es un conjunto de modelos, es la primera representación técnica de un sistema. Con los años se han propuesto muchos métodos para el modelado del análisis, sin embargo, hay dos tendencias que dominan:

Análisis Estructurado: Orientación hacia los procesos que

intervienen en el sistema a desarrollar. Dividir los módulos en partes más

pequeñas Análisis Orientado a Objetos (AOO):

Módulos basados en componentes, es decir cada módulo es independiente del otro.

Permite que el código sea reutilizable. Más fácil de mantener porque los cambios

son localizables.