Please enable JavaScript.
Coggle requires JavaScript to display documents.
Fundamentos del diseño de software - Coggle Diagram
Fundamentos del diseño de software
Ingeniería del software y diseño del software
Una vez que se han establecido los requisitos del software, el diseño es la primera de tres actividades técnicas
Diseño
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.
El diseño es la única forma mediante la que podemos traducir con precisión los
requisitos del cliente en un producto o sistema acabado
El proceso de diseño
Proceso mediante el que se traducen los requisitos en una representación del software, que se acerca mucho al código fuente.
Diseño preliminar
Diseño detallado
Además del diseño de datos, del diseño arquitectónico y del desarrollo procedimental, muchas aplicaciones modernas requieren un diseño de la interfaz.
DISEÑO Y CALIDAD DEL SOFTWARE
Revisiones Técnicas Formales (RTF)
Descubrir los errores en la función, la lógica o la implementación de cualquier representación del 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
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 para la valoración de la calidad.
Fundamentos del diseño
Ayuda a responder las siguientes preguntas
¿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?
REFINAMIENTO
La arquitectura de un programa se desarrolla en
niveles sucesivos de refinamiento de los detalles procedimentales.
MODULARIDAD
El software se divide en componentes con nombres y ubicaciones determinados, que se denominan módulos y que se integran para satisfacer los requisitos del proveedor.
Divide y vencerás
La modularidad del software facilita el desarrollo del mismo, pero hasta un cierto límite
ARQUITECTURA DEL SOFTWARE
La estructura jerárquica de los módulos del software
La estructura de los datos
La arquitectura del software se obtiene mediante un proceso de partición, que relaciona los problemas del mundo real con las soluciones software para resolver los problemas software.
ABSTRACCIÓN
En los niveles inferiores de abstracción se utiliza una orientación más procedimental. Por último, en el nivel más bajo de abstracción, se establece una solución, de forma que pueda implementarse directamente.
Tipos
Una abstracción de datos es un conjunto de datos que describen un objeto, como puede ser el DNI de una persona, que está compuesta por conjunto de partes de información
Una abstracción procedimental es una determinada secuencia de
instrucciones que tienen una función limitada y específica
JERARQUÍA DE CONTROL
Representa la organización jerárquica de los módulos de un programa e implica una jerarquía de control.
Se suele representar con diagramas de árbol,
aunque también se pueden utilizar otros tipos de notaciones.
ESTRUCTURA DE DATOS
La estructura de datos es una representación de la lógica que existe entre los
elementos individuales de información.
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.
Las estructuras de datos clásicas son los elementos escalares, los arrays, las
listas y los árboles.
PROCEDIMIENTOS DEL SOFTWARE
La estructura del programa define la jerarquía de control, independientemente
de las decisiones y secuencias de procesamiento.
El procedimiento debe proporcionar 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.
OCULTAMIENTO DE INFORMACIÓN
El principio de ocultamiento de la información sugiere que los módulos 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.
El uso de ocultamiento de información en el diseño facilitará las modificaciones,
prueba y mantenimiento del software
Diseño modular efectivo
Un diseño modular
Reduce la complejidad
Facilita los cambios
Implementación más sencilla
Permite el desarrollo paralelo de partes diferentes de un sistema
TIPOS DE MÓDULOS
El historial de incorporación se refiere al momento en que se incluye
el módulo en la descripción del software en lenguaje fuente.
El mecanismo de activación se refiere a la forma en que se invoca a un módulo, que puede ser de referencia o de interrupción
El camino de control de un módulo describe la forma en que se
ejecuta internamente, y son los que se describen a continuación.
Módulos secuenciales
Se ejecutan sin interrupción aparente por parte del software de la aplicación, es
decir ejecutan secuencialmente una tarea.
Módulos incrementales
También se les conoce como corrutinas, y pueden ser interrumpidos antes de 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
Un módulo paralelo se ejecuta a la vez que otro módulo en entornos
multiprocesadores.
INDEPENDENCIA FUNCIONAL
La independencia funcional se adquiere desarrollando módulos con una función
clara y con pocas relaciones con otros módulos
Cohesión
Un módulo cohesivo sólo hace (idealmente) una cosa.
Un modulo cohesivo ejecuta una tarea sencilla de un procedimiento de software y requiere poca interacción con procedimientos que ejecutan otras partes de un programa.
Acoplamiento
El acoplamiento depende de la complejidad de las interfaces entre los módulos
y de los datos que pasan a través de la interfaz.
En el diseño de software buscamos el acoplamiento más bajo posible. Una conectividad sencilla entre módulos da como resultado un software más fácil de comprender y menos propenso al efecto onda