Please enable JavaScript.
Coggle requires JavaScript to display documents.
Fundamentos del diseño de software - Coggle Diagram
Fundamentos del diseño de software
Diseño de software
Aparecen nuevos métodos frecuentemente
Mejora en el análisis/Ampliar conocimientos
Primera etapa en el desarrollo de software
Única forma que se pueden traducir con precisión los requisitos del cliente en un producto o sistema acabado
Da como resultado representaciones cuya calidad puede ser evaluada
Necesario para crear un sistema estable y robusto
Ingeniería del software
Metodologías de diseño
Diseño de datos
Modelo de campo de información --> estructuras de datos para implementar software
Diseño arquitectónico
Define relaciones entre principales elementos estructurales del programa
Diseño procedimental
Transforma elementos estructurales en una descripción procedimental del software
Proceso de diseño
Diseño preliminar
Transformacion de requisitos en los datos y la arquitectura del software
Diseño detallado
Lleva a una estructura de datos refinada y a las representaciones algorítmicas del software
Calidad del software
Revision de calidad del diseño mediante revisiones tecnicas formales(RTF)
Descubrir errores, verificar cumplimiento de requisitos, garantizar estándares establecidos, proyectos manejables y software uniforme
Criterios de calidad
Organización jerárquica
Diseño modular de software
Diseño distinto y separado de los datos y procedimientos
Características funcionales independientes en los módulos
Un diseño debe conducir a interfaces que reduzcan la complejidad de
las conexiones entre los módulos y el exterior.
Diseño coherente y reproducible con la información obtenida en el análisis de requerimientos
Fundamentos del diseño
¿Qué criterios puedo utilizar para dividir el
software en componentes individuales?
¿Cómo se separan los detalles de una función o de la estructura de
los datos de la representación conceptual del software?
¿Existen criterios uniformes que definan la calidad técnica de un diseño de software?
Abstracción
Abstracción de datos
Describen un objeto
Abstracción procedimental
Describen una secuencia de instrucciones
Refinamiento
Se desarrolla una jerarquía descomponiendo una función de forma sucesiva hasta que se llega a las sentencias del lenguaje de programación
Modularidad
Divide y vencerás
Permite facilidad de estudio reduciendo la complejidad global
Arquitectura del software
De datos
De módulos del software
Jerarquía de control/Estructura del programa
Organización jerárquica de los módulos del programa
Profundidad: Número de niveles de control
Anchura: Amplitud global del control
Grado de salida: Número de módulos que controla un módulo
Grado de entrada: Número de módulos que controlan a un módulo
Visibilidad: Conjunto de componentes del programa que pueden ser invocados por un módulo (Herencia en entornos de POO). Todos los objetos serían visibles para el módulo
Conectividad: Conjunto de componentes a los que se invoca directamente o se utilizan sus datos. (La ejecución de un módulo puede suponer la ejecución de otro módulo)
Estructura de datos
La estructura de datos dicta la organización, los métodos de acceso, el grado
de asociatividad y las alternativas para el tratamiento de la información
Procedimientos del software
Procedimiento dentro de un modulo
Proporciona una especificación precisa del procesamiento, incluyendo la secuencia de sucesos, los puntos concretos de decisiones, la repetición de operaciones e incluso la organización/estructura de los datos.
Procedimiento dentro de un modulo
Existe una relación entre la estructura y el procedimiento
El procesamiento de un modulo puede suponer la llamada a otros módulos. Se le conoce como representación procedimental del software
Define la jerarquía de control
Ocultamiento de informacion
Facilitara las modificaciones de prueba y mantenimiento del software
Hace menos probable la introducción de errores y previene la propagación de estos.
Diseño modular efectivo
Reduce la complejidad
Facilita los cambios
Implementación mas sencilla
Permite el desarrollo paralelo de partes diferentes de un sistema
Tipos de módulos
Modulos secuenciales: Se ejecutan sin interrupción aparente por parte del software de la aplicación, es decir ejecutan secuencialmente una tarea.
Módulos incrementales/Corrutinas: Pueden ser interrumpidos antes que terminen por el software de la aplicación, y restablecerse posteriormente su ejecución en el punto en que se interrumpió.
Módulos paralelos: Se ejecutan a la vez que otro modulo en entornos multiprocesadores
Independencia Funcional
Módulos independientes faciles de desarrollar
Creación de interfaces sencillas
Facilidad para la prueba y mantenimiento
Se reduce la propagación de errores
Se fomenta la reutilización de módulos
Cohesión
Extensión del concepto de ocultamiento de información
Un modulo cohesivo solo hace idealmente una cosa
El diseñador debe buscar una alta cohesión
Acoplamiento
Medida de interconexión entre los módulos de una estructura de programa
Depende de la complejidad de interfaces entre los módulos y de los datos que pasan a través de la interfaz
Se busca el acoplamiento mas bajo posible