Please enable JavaScript.
Coggle requires JavaScript to display documents.
Fundamentos del diseño de software - Coggle Diagram
Fundamentos del diseño de software
1. Ingeniería de software
Requisitos
Diseño
Se desarrollan, revisan y se documentan los refinamientos progresivos de las estructuras de datos, de la estructura del programa y de los detalles procedimentales.
Metodologías
Diseño de datos
Transforma el modelo de campo de información creado durante el análisis, en las estructuras de datos que se van a requerir para implementar el software
Diseño arquitectónico
Define las relaciones entre los principales elementos estructurales del programa
Diseño procedimental
Transforma los elementos estructurales en una descripción procedimental del software
Codificación
Prueba
2. Proceso de diseño
Etapas
Diseño preliminar
Se centra en la transformación de los requisitos en los datos y la arquitectura de software
Diseño detallado
Se ocupa del refinamiento y de la representación arquitectónica que lleva a una estructura de datos refinada y a las representaciones algorítmicas del software
Diseño de la interfaz
2.1 Diseño y calidad del software
Se evalúa mediante una serie de revisiones técnicas formales
Objetivos
Descubrir los errores en la función, lógica o implementación de cualquier representación de software
Verificar que el software alcanza sus requisitos
Garantizar que el software se ha representado según los estándares establecidos
Conseguir un software desarrollado de forma uniforme
Hacer que los proyectos sean manejables
Criterios de calidad
Debe tener una organización jerárquica
Debe ser modular
Debe tener representaciones distintas y separadas de los datos y de los procedimientos
Debe llevar a módulos que exhiban características funcionales independientes
Debe conducir a interfaces que reproduzcan la complejidad de las conexiones entre los módulos y el exterior
Debe obtenerse mediante un método que sea reproducible y que esté dirigido por la información obtenida durante el análisis de requerimientos
2.2 Características comunes de las metodologías de diseño
Mecanismo para la traducción de requisitos en una representación de diseño
Notación para representar los componentes funcionales y sus interfaces
Heurísticas para el refinamiento y la partición
Criterios par ala valoración de la calidad
3. Fundamentos del diseño
3.1 Abstracción
Niveles
Superior
Establece una solución en términos generales, en lenguaje natural
Bajo
Establece una solución de forma que pueda implementarse directamente
Abstracción de datos
Conjunto de datos que describen un objeto
Abstracción procedimental
Determinada secuencia de instrucciones que tienen una función limitada y especifica
3.2 Refinamiento
Estrategia de diseño descendente
Se desarrolla una jerarquía descomponiendo una función de forma sucesiva hasta que se llega a las sentencias del lenguaje de programación
3.3 Modularidad
El software se divide en componentes con nombres y ubicaciones determinados que se denominan módulos los cuales se integran para satisfacer los requisitos del proveedor.
Mala practica
Software monolítico (un módulo)
Difícil de estudiar
3.4 Arquitectura del software
Estructura jerárquica de los módulos del software
Estructura de datos
3.5 Jerarquía de control
Estructura del programa
Representa la organización jerárquica del os módulos de un programa
Se suele representar con diagramas de árbol
3.6 Estructura de datos
Representación lógica que existe entre los elementos individuales de la información.
Dicta la organización, los métodos de acceso, grado de asociatividad y las alternativas para el tratamiento de la información.
Estructuras de datos clásicas
Elementos escalares
Arrays
Listas
Árboles
3.7 Procedimientos del software
Jerarquía de control, independiente de las decisiones y secuencias de procesamiento
Relación entre la estructura y procedimiento
Representación procedimental del software por capas
3.8 Ocultamiento de información
El principio sugiere que los modules deben especificarse de forma que la información (procedimientos y datos) contenida dentro de un módulo sea inaccesible a otros módulos que no necesiten tal información.
Facilita las modificaciones, prueba y mantenimiento del software.
4. Diseño modular efectivo
Beneficios
Reduce la complejidad
Facilita los cambios
Implementación más sencilla
Permite el desarrollo paralelo de partes diferentes de un sistema
4.1 Tipos de módulos
Historial de incorporación
Momento en que se incluye el módulo en la descripción del software en lenguaje fuente
Mecanismo de activación
Forma en que se invoca a un módulo, puede ser una referencia o interrupción
Camino de control
Describe la forma en que se ejecuta internamente un módulo
4.1.1 Módulos secuenciales
Se ejecutan sin interrupción aparente por el software de la aplicación, es decir, ejecutan secuencialmente una tarea
4.1.2 Modules incrementales
Conocidos como corrutinas
Pueden ser interrumpidos antes que terminen por el software de la aplicación y restablecerse posteriormente su ejecución en el punto que se interrumpió
4.1.3 Módulos paralelos
Se ejecuta a la vez que otro módulo en entornos multiprocesadores
4.2 Independencia funcional
Se adquiere desarrollando módulos con una función clara y con pocas relaciones con otros módulos.
Consecuencias positivas:
Módulos independientes fáciles de desarrollar
Creación de interfaces sencillas
Facilidad para la prueba y el mantenimiento
Se reduce la propagación de errores
Se fomenta la reutilización de módulos
4.2.1 Cohesión
Un módulo cohesivo sólo hace (idealmente) una cosa
El diseñador debe comprender lo que es la cohesión y evitar la baja cohesión el diseño de módulos
4.2.2 Acoplamiento
Medida de interconexión entre los módulos de una estructura del programa
Depende de la complejidad de las interfaces entre los módulos y de los datos que pasan a través de la interfaz
Al diseñar software se busca tener el acoplamiento más bajo posible.