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 del software y diseño del software
Diseño
El diseño es técnicamente la parte central de la ingeniería del software.
Diseño Arquitectonico
Define las relaciones entre los principales
elementos estructurales del programa.
Diseño Procedimental
transforma los elementos estructurales en
una descripción procedimental del software.
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.
Prueba
Codificación
2. El proceso de diseño
Diseño Preliminar
Se centra en la transformación de los requisitos
en los datos y la arquitectura del 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ítimicas del software.
2.1 DISEÑO Y CALIDAD DEL SOFTWARE
Revisiones técnicas formales (RTF)
2) Verificar que el software alcanza sus requisitos.
3) Garantizar que el software se ha representado según los estándares
establecidos.
4) Conseguir un software desarrollado de forma uniforme.
5) Hacer que los proyectos sean manejables.
1) Descubrir los errores en la función, la lógica o la implementación de
cualquier representación del software.
2.2. CARACTERÍSTICAS COMUNES DE LAS METODOLOGÍAS DE DISEÑO
1) Mecanismo para la traducción de requisitos en una representación de
diseño.
2) Notación para representar los componentes funcionales y sus
interfaces
3) Heurísticas para el refinamiento y la partición.
4) Criterios para la valoración de la calidad.
3. Fundamentos del diseño
3.1. ABSTRACCIÓN
En el nivel superior de abstracción se establece una solución en términos
generales, en lenguaje natural.
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.
Abstracción de datos
es un conjunto de datos que describen un
objeto, como puede ser el DNI de una persona
Abstaccion procedimental
es una determinada secuencia de instrucciones que tienen una función limitada y específica, como puede ser "mover objeto".
3.2. REFINAMIENTO
Refinamiento sucesivo
es una primera estrategia de diseño descendente.
Comenzamos con una declaración de la función (o una descripción de la
información) definida a un nivel superior de abstracción. Es decir, la declaración
describe la función o la información conceptualmente, pero no proporciona
información sobre el funcionamiento interno de la función o sobre la estructura
interna de la información, sino que se va a realizando sucesivamente, dando
cada vez más detalles.
3.3. 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.
3.4. 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
3.5. JERARQUÍA DE CONTROL
También se le conoce como estructura del programa, y representa la organización jerárquica de los módulos de un programa e implica una jerarquía de control.
3.6. ESTRUCTURA DE DATOS
La estructura de datos es una representación de la lógica que existe entre los
elementos individuales de información.
Debido a que la estructura de la
información afectará de forma determinante al diseño procedimiental, la
estructura de datos es tan importante como la estructura del programa en la
representación de la arquitectura del software.
3.7. 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.
3.8. 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.
4. 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
4.1. TIPOS DE MÓDULOS
Para la definición de módulos en una arquitectura de software se utiliza la
abstracción y ocultamiento de información.
Estos atributos tienen que ser
traducidos a las características de ejecución del módulo, caracterizadas por el
historial de ejecución, el mecanismo de activación y el camino de control, y que
describimos a continuación:
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 (mediante una llamada) o de interrupción (en aplicaciones en tiempo real, ocurre un evento en
el mundo exterior)
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.
4.1.1. Módulos secuenciales
Se ejecutan sin interrupción aparente por parte del software de la aplicación, es
decir ejecutan secuencialmente una tarea.
4.1.2. 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ó.
4.1.3. Módulos paralelos
Un módulo paralelo se ejecuta a la vez que otro módulo en entornos
multiprocesadores.
4.2. INDEPENDENCIA FUNCIONAL
La independencia funcional es una derivación directa de la modularidad, de la
abstracción y del ocultamiento de información.
Esta independencia tiene varias consecuencias positivas como son:
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
La cohesión es una extensión del concepto de ocultamiento de información.
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.
Dicho de forma sencilla, un módulo cohesivo sólo hace (idealmente) una cosa.
4.2.2 Acoplamiento
El acoplamiento es una medida de la interconexión entre los módulos de una
estructura de programa.
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 (propagación de errores a lo
largo del sistema).