Transcript CiclosVida

Modelos de desarrollo de Software

1

El Proceso de Software

 Conjunto estructurado de actividades requeridas para desarrollar un sistema de software.

– Especificación – Diseño – Validación – Evolución  Las actividades varían dependiendo de la organización y del tipo de sistema a desarrollarse.

2

Componentes del Proceso

  Especificación - establecer los requerimientos y restricciones del sistema Diseño - Producir un modelo del sistema.

 Manufactura - construir el sistema.

  Prueba - verificar que el sistema cumpla con las especificaciones requeridas Instalación - entregar el sistema al usuario y asegurar su operación  Mantenimiento - reparar fallas del sistema cuando sean descubiertas 3

Modelos Genéricos de Desarrollo de Software

 Modelo de Cascada  Separar en distintas fases de especificación y desarrollo .

 Desarrollo Incremental y Evolutivo  La especificación y el desarrollo están intercalados.

   Prototipado  Un modelo sirve de prototipo para la construcción del sistema final.

Transformación Formal  Un modelo matemático del sistema se transforma formalmente en la implementación.

Desarrollo basado en Reutilización  El sistema es ensamblado a partir de componentes existentes.

4

Modelo de Cascada

Definición de Requerimientos Diseño del Software y del Sistema Implementación y Prueba de unidades Integración y Prueba del Sistema Operación y Mantenimiento

5

Fases del Modelo de Cascada

 Análisis de requerimientos y definición El proceso de reunión de requisitos se intensifica y se centra especialmente en el software. Para comprender la naturaleza del programa a construirse, el ingeniero o analista del software debe comprender el domino de información del software así como la función requerida, comportamiento, rendimiento e interconexión.

6

Fases del Modelo de Cascada

 Diseño del sistema y del software El diseño del software es realmente un proceso de muchos pasos que se centra en cuatro atributos distintos de programa: Estructura de Datos, Arquitectura de Software, Representación de la Interfaz y Detalle Procedimental (Algoritmo) 7

Fases del Modelo de Cascada

 Implementación y prueba de unidades El diseño se debe traducir en forma legible por la máquina. El paso de generación de código o implementación lleva a cabo esta tarea. Si se lleva a cabo el diseño de una forma detallada, la implementación se realiza mecánicamente.

8

Fases del Modelo de Cascada

 Integración y prueba del sistema El proceso de pruebas se centra en los procesos lógicos internos del software, y los procesos externos funcionales: realizar las pruebas para la detección de errores y asegurar que la entrada definida produce resultados reales de acuerdo con los resultados requeridos.

9

Fases del Modelo de Cascada

 Operación y mantenimiento El software indudablemente sufrirá cambios después de ser entregado al cliente, porque debe adaptarse a los cambios de su entorno externo.

10

Documentos del Modelo de Cascada

Actividad

Análisis de Requerimientos Definición de Requerimientos Especificación del Sistema.

Diseño Arquitectural Diseño de Interfaces Diseño Detallado Codificación Prueba de Unidades Prueba de Módulos Prueba de Integración Prueba del Sistema Prueba de Aceptación

Documentos Producidos

Documento de Requerimientos Documento de Requerimientos.

Especificación Funcional, Plan de Pruebas de Aceptación.

Especificación de la Arquitectura, y Plan de Pruebas del Sistema Especificación de la Interfaces y Plan de pruebas de Integración.

Especificación del diseño y Plan de prueba de Unidades.

Código de Programa Reporte de prueba de unidades Reporte de prueba de módulos Reporte de prueba de integración y Manual de usuario final Reporte de prueba del sistema Sistema final mas la documentación.

11

Modelo de Cascada

El modelo de ciclo de vida cascada, captura algunos principios básicos:  Planear un proyecto antes de embarcarse en él.  Definir el comportamiento externo deseado del sistema antes de diseñar su arquitectura interna.    Documentar los resultados de cada actividad. Diseñar un sistema antes de codificarlo. Testear un sistema después de construirlo.

12

¿Por qué falla este modelo?

 Los proyectos reales raras veces siguen este modelo. Aunque permite interacciones, lo hace indirectamente. Como resultado, los cambios pueden causar confusión cuando el equipo del proyecto ha comenzado.

  A menudo es difícil que el cliente exponga explícitamente todos los requisitos. Este modelo lo requiere.

El cliente debe tener paciencia. Una versión operativa no está disponible hasta que el proyecto esta muy avanzado. Un grave error puede ser desastroso si no se detecta hasta que se revisa el programa.

13

Desarrollo Incremental

   Los riesgos asociados con el desarrollo de sistemas largos y complejos son enormes. Una forma de reducir los riesgos es construir sólo una parte del sistema, reservando otros aspectos para niveles posteriores. El desarrollo incremental es el proceso de construcción siempre incrementando subconjuntos de requerimientos del sistema. 14

Desarrollo Incremental

15

Desarrollo Incremental

Modelo de Desarrollo Incremental con desarrollo en cascada de los incrementos : 16

Desarrollo Incremental

El modelo de desarrollo incremental provee algunos beneficios significativos para los proyectos:   Construir un sistema pequeño es siempre menos riesgoso que construir un sistema grande. Al ir desarrollando parte de las funcionalidades, es más fácil determinar si los requerimientos planeados para los niveles subsiguientes son correctos. 17

Desarrollo Incremental

    Si un error importante es realizado, sólo la última iteración necesita ser descartada. Reduciendo el tiempo de desarrollo de un sistema (en este caso en incremento del sistema) decrecen las probabilidades que esos requerimientos de usuarios puedan cambiar durante el desarrollo. Si un error importante es realizado, el incremento previo puede ser usado. Los errores de desarrollo realizados en un incremento, pueden ser arreglados antes del comienzo del próximo incremento.

18

Desarrollo Evolutivo

 Como el modelo de desarrollo incremental, el modelo de desarrollo evolutivo construye una serie de grandes versiones sucesivas de un producto.  Sin embargo, mientras que la aproximación incremental presupone que el conjunto completo de requerimientos es conocido al comenzar, el modelo evolutivo asume que los requerimientos no son completamente conocidos al inicio del proyecto. 19

Desarrollo Evolutivo

20

Desarrollo Evolutivo

 Los requerimientos son cuidadosamente examinados, y sólo esos que son bien comprendidos son seleccionados para el primer incremento.  Los desarrolladores construyen una implementación parcial del sistema que recibe sólo estos requerimientos.  Basada en la retroalimentación de usuarios, la especificación de requerimientos es actualizada, y una segunda versión del producto es desarrollada. El proceso se repite indefinidamente . 21

Desarrollo Evolutivo

Actividades Concurrentes Descripción del sistema Especificación Desarrollo Validación Versión Inicial Versiones Intermedias Versión Final

22

Desarrollo Evolutivo

 Consideraciones • El desarrollo de software en forma evolutiva requiere un especial cuidado en la manipulación de documentos, programas, datos de test, etc., desarrollados para distintas versiones del software. • • Cada paso debe ser registrado, la documentación debe ser recuperada con facilidad, • los cambios deben ser efectuados de una manera controlada.

23

Desarrollo Evolutivo

 Problemas  Los sistemas están pobremente especificados  Se requieren habilidades especiales  Aplicabilidad  Para sistemas interactivos pequeños o medianos.

 Para partes de sistemas grandes (p.ej. la interfaz de usuario).

 Para sistemas de corta vida.

24

Prototipado de Requerimientos

 Es la creación de una implementación parcial de un sistema para aprender/entender los requerimientos.

 Un prototipo es construido de una manera rápida tal como sea posible, para que los usuarios o clientes experimenten con él.  Estos individuos luego proveen la retroalimentación del prototipo proporcionado, para ser usada de base en el desarrollo del sistema real. 25

Prototipado de Requerimientos

 El prototipado puede ser usado como parte de la fase de requerimientos (determinar requerimientos) o justo antes de la fase de requerimientos (como predecesor de requerimientos).  En otro caso, el prototipado puede servir inmediatamente antes de alguno o todo el desarrollo incremental en modelos incremental o evolutivo. 26

Prototipado de Requerimientos

Prototipado de Requerimientos basado en el modelo Cascada 27

Prototipado de Requerimientos

Prototipado de Requerimientos basado en el modelo de desarrollo incremental 28

Problemas y Riesgos con los Modelos.

 Cascada.

  Alto riesgo en sistemas nuevos debido a problemas en las especificaciones y en el diseño.

Bajo riesgo para desarrollos bien comprendidos utilizando tecnología conocida.

 Incremental  Bajo riesgo para nuevas aplicaciones debido a que las especificaciones y el diseño se llevan a cabo paso a paso.

 Evolutivo  Alto riesgo debido a la necesidad de tecnología avanzada y habilidades del grupo desarrollador.

29

Modelos de Procesos Híbridos

 Los sistemas grandes están hechos usualmente de varios subsistemas.

 No es necesario utilizar el mismo modelo de proceso para todos los subsistemas.

 El prototipado es recomendado cuando existen especificaciones de alto riesgo.

 El modelo de cascada es utilizado en desarrollos bien comprendidos.

30

31