Unidad 2: Modelo de Desarrollo de Programas a) Modelo de desarrollo: – Es una filosofía para obtener un software de unas características determinadas b) Metodología de desarrollo: – Es un proceso concreto que implementa el modelo de desarrollo • Aquí veremos: 1. Modelo orientado a procedimientos y datos • Metodología orientada al flujo de datos 2. Modelo orientado a objetos • Metodología básica de desarrollo orientado a objetos (RUP - Proceso Unificado de Rational) 1) Modelo Estructurado Ciclo de Vida Clásico Objetivo : análisis global, viabilidad .Hay tareas manuales. Productos: – Especificación del Sistema:: Objetivos, Requisitos de cada elemento, Análisis Técnico, Análisis Económico, Viabilidad, Arquitectura, Pruebas globales – Plan software: Objetivos, Requisitos Software, Requisitos. BD, Arquitectura. Ingeniería del Sist. Planificación Análisis Requisitos Software Proceso de descubrimiento, refinado, modelado y especificación •Producto: – Especificación de Requisitos Software: 1. Descripción de la Información 2. Descripción Funcional 3. Descripción del Comportamiento 4. Criterios de Validación (del software) • Objetivo : obtener un modelo detallado de la implementación • Parte central del desarrollo • Diseño preliminar: – Estructura de datos + estructura modular + interfaz – Producto: Doc de Diseño General Diseño de datos, Diseño arquitectónico (módulos), Diseño de la interfaz hombremáquina, Pruebas de integración •Diseño Detallado: –Detalles de módulos + refinamiento –Producto: Doc. De Diseño Detallado (o final) Diseño detallado de los datos, Diseño arquitectónico, Diseño de interfaz hombremáquina, Diseño procedimental de cada módulo, Pruebas para cada módulo. Diseño Desarrollo Codificación Pruebas • Objetivo: –Creación de programas –Aplicando un paradigma –Utilizando lenguaje de programación • Producto: –Código fuente: •Comprensible •Bien comentado y documentado •Siguiendo convenciones de la organización •Objetivo: descubrir errores en el software Elemento crítico para la calidad del software •Tipos por ámbito: a)Sistema, b) Validación, c) Integración, d) Unidad •Tipos por diseño: a) Caja negra (funcionales) b) Caja blanca (estructurales) Mantenimiento •Objetivo: efectuar revisiones e implica una realización de cambios en el software Mantenimiento •Motivos: –Errores encontrados –Cambios en el entorno –Ampliaciones o mejoras Correctivo Adaptativo Perfectivo 1.1) Metodología orientada al flujo de datos 1 Examen (survey) 2 Análisis Estructurado A Modelo ambiental B Modelo de comportamiento C Modelo de implantación del usuario •Implica un estudio inicial del sistema que determina su viabilidad •No se aplica en programas pequeños Objetivos: –Identificar usuarios responsables y definir la actividad del sistema –Identificar las deficiencias actuales –Establecer metas y objetivos del nuevo sistema –Determinar si es factible automatizar –Preparar el esquema del proyecto Modela una especificación estructurada del sistema Está dividido en: A Modelo Ambiental: Modela el exterior del sistema •Establece interfaces del sistema con el exterior •Determina qué forma parte del sistema y qué no A.1 Declaración de objetivos Declaración textual del propósito del sistema desde el punto de vista del usuario EJEMPLO: Agenda personal A.2 Diagrama de contexto • Define las fronteras del sistema • Describe entidades, flujos de datos y almacenes externos • Notación: DFD A.3 Lista de Sucesos •Sucesos (eventos) externos a los cuales debe responder el sistema •Consistente con el Diagrama de .Contexto. B Modelo de comportamiento Modela el comportamiento interno del sistema de acuerdo con el modelo ambiental B.1Modelo de proceso Desarrolla: • DFD:Grafos de flujo de datos • Especificaciones de proceso: describen cada uno de los procesos finales de los DFD. •Diccionario de datos: describe los flujos y almacenes B.2 Modelo de datos • Desarrolla el Diagrama E-R para describir los datos almacenados en el sistema y la relación existente entre ellos. B.3 Diagrama de transición de estados •Modela el comportamiento en tiempo real: reacción ante sucesos •Relaciona sucesos y estados: cambios de estado al al recibir eventos (transiciones) C Modelo de Implantación del usuario Modela características del sistema adaptadas a las características específicas del usuario C.1 Establecer límite Hombre – Máquina Indicar qué procesos reciben tratamiento manual y cuáles no C.2 Definir la interfaz de usuario • Dispositivos E/S utilizados • Formularios de E/S • Diseño de pantallas (gráficas o texto) • Secuencia de navegación C.3 Actividades adicionales manuales •Normas de verificación de datos y resultados •Normas para salvaguarda de datos C.4 Restricciones operativas •Tiempos de respuesta •Restricciones de configuración, ambientales, tamaños, ... •Fiabilidad (MTBF) •Mantenibilidad (MTTR) •Disponibilidad (MTBF/(MTBF+MTTR)) •Seguridad 3 Diseño estructurado A Modelo de implantación del sistema. B Modelo de implantación de programas. A Modelo de Implantación del sistema A.1 Modelo de procesador •Asigna el modelo esencial entre los distintos procesadores asignados al sistema A.2 Modelo de tareas Asigna funcionalidad a las diferentes tareas de un procesador B Modelo de implantación de programas •Diseñar el diagrama de estructura, refinarlo, diseñar módulos, bases de datos y empaquetar el diseño B.1 Diseñar el diagrama de estructura •Aplicar el análisis de transformaciones y de transacciones Análisis de Transformaciones • Estrategia descendente •Modular •Basada en morfología centrada en transformaciones - Constantine - Equilibrio entre ramas aferentes y eferentes • Produce diagramas de estructura equilibrados, modulares y bien dimensionados. 1.DFD con procesos finales 2. Identificar ramas aferentes y eferentes 3.Factorización de primer nivel: •Módulo principal • Un módulo por cada rama aferente • Un módulo por cada rama eferente • Un módulo para cada transformación 4. Factorizar ramas aferentes, eferentes y de transformación Análisis de Transacciones 1 .DFD con procesos finales 2. Identificar ramas aferentes y aferentes 3. Factorización de primer nivel 4. Si se detectan transacciones, definir el centro de transacciones 5. Factorizar ramas aferentes, eferentes y de transformación B.2 Refinarlo Utilizar heurísticas de diseño Heurísticas Diseño • Bajo Acoplamiento –Entre módulos – Tipo de conexión (de peor a mejor) •Entorno común: variables globales •Contenido: código anidado •Contro:paso de elementos de control •Datos: paso de parámetros – Complejidad de la interfaz: • Número de argumentos y su complejidad Heurísticas Diseño • Alta Cohesión – De cada módulo (de peor a mejor) – Tipos: • Coincidental: sin relación • Lógica: funciones similares • Temporal: periodo de tiempo • Procedura: parte de un algoritmo • Comunicacional: tratan flujo datos •Secuencia: serie de acciones •Funcional: una función B.3 Diseñar los módulos Debe detallarse el comportamiento de cada módulo: diseño detallado procedimental Utilizar diagramas estructurados arborescentes o de chapin B.4 Diseñar las bases de datos o los ficheros Diseñar físicamente las bases de datos, los ficheros y tipos de datos Partiendo de modelo de datos B.5 Empaquetar el diseño Descomponer el diagrama de estructura en módulos físicos ejecutables 4 Implementación estructurada Implementación •Seleccionar el módulo a implementar •Codificarlo •Integrarlo en el sistema •Estrategias: –Descendente ( top-down) - Ascendente ( bottom-up) –Mixta Descendente •Se empieza la codificación y pruebas por los módulos superiores •Para pruebas de unidad e integración se tienen que codificar unos módulos que simulan los inferiores •Estas simulaciones de denominan stubs •Produce un sistema integral de forma progresiva e incremental Ascendente • •Se empieza la codificación y pruebas por los módulos inferiores •Para las pruebas de unidad e integración se tienen que codificar unos módulos ficticios que coordinan la ejecución de los de abajo •Estos módulos son llamados drivers (monitores de prueba) •Se prueba todo el sistema al final Mixta Estrategia ascendente ( bottom-up) sobre las ramas aferentes Estrategia descendente ( • top-down) para las ramas eferentes y de transformación • Produce un sistema integral • El costo de programación (de stubs y drivers) es inferior