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
El diseño es la
primera de tres actividades técnicas
Diseño
Codificacion
Pruebas
El diseño es la parte central del diseño de software
El diseño da como resultado representaciones cuya
calidad puede ser evaluada
Mediante algunas metodologías, se realizan
El diseño de datos
transforma el modelo de campo de información en las estructuras de datos que se van a requerir para implementar el software
El diseño arquitectónico
define las relaciones entre los principales
elementos estructurales del programa
El diseño procedimental
transforma los elementos estructurales en
una descripción procedimental del software
El diseño es la única forma con la que podemos interpretar con precisión los requisitos que esta pidiendo el cliente
El diseño es la base de las partes posteriores del desarrollo
Sin diseño nos arriesgamos a construir un sistema inestable y probablemente ineficiente
El proceso de diseño
El diseño de software se realiza en dos etapas, según el punto de vista de gestión del proyecto
El diseño preliminar
se centra en la transformación de los requisitos
en los datos y la arquitectura del software
El diseño detallado
se ocupa del refinamiento y de la representación
arquitectónica
Ademas de esto, hay muchas aplicaciones que requieren de un diseño de la interfaz
Diseño y calidad del software
la calidad del diseño se evalúa mediante una
serie de revisiones técnicas formales (RTF)
Los objetivos son
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
Lista que evalúa la calidad del software
Un diseño debe tener una organización jerárquica
Un diseño debe ser modular, es decir, el software debe estar dividido en elementos que realicen funciones específicas
Un diseño debe tener representaciones distintas y separadas de los datos y de los procedimientos
Un diseño debe llevar a módulos que exhiban características
funcionales independientes
Un diseño debe conducir a interfaces que reduzcan la complejidad de as conexiones entre los módulos y el exterior
Un diseño debe obtenerse mediante un método que sea reproducible y que esté dirigido por la información obtenida durante el análisis de requerimientos
Características comunes de las metodologías de diseño
Sin importar las metodologías usadas, todas tienen características en común
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
Los fundamentos del diseño ayudan al desarrollador de software a responder a estas 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?
Abstracción
Cada paso de los procesos de la ingeniería del software es un refinamiento del nivel de abstracción de la solución software
abstracción de datos es un conjunto de datos que describen un objeto
Una abstracción procedimental es una determinada secuencia de
instrucciones que tienen una función limitada y específica
Estas abstracciones permiten al diseñador representar un objeto a diferentes niveles de detalle
Refinamiento
El refinamiento sucesivo es una primera estrategia de diseño
La arquitectura de un programa se desarrolla en
niveles sucesivos de refinamiento
Modularidad
El software se divide en componentes con nombres y ubicaciones estos son denominados como módulos
Se fragmentan las partes del software para que sea entendible y re-utilizable a largo plazo
un software monolítico(claro ejemplo de una modularidad baja) es complicado de entender, se vuelve tedioso a la hora de estudiarlo
Arquitectura de software
se refiere a dos características importantes
La estructura jerárquica de los módulos del software
La estructura de los datos
se obtiene mediante un proceso de partición, que
relaciona los problemas del mundo real
Jerarquía de control
representa la organización jerárquica de los módulos de un programa
La representación de jerarquía se suele representar con diagramas de árbol
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
Procedimientos del software
El procedimiento del software se centra en los detalles de procesamiento de cada módulo individual
El procedimiento debe proporcionar una especificación precisa del procesamiento valga la redundancia
El procesamiento de un módulo puede suponer la llamada a otros módulos
A esto se le conoce como representación procedimental del software por capas
Ocultamiento de información
El principio de ocultamiento de la información nos dice que los módulos deben especificarse, de tal manera, que un modulo que no necesite su información no pueda tener acceso a ella
Se trata de definir una serie de módulos independientes que se
comuniquen sólo a través de la información necesaria si es que la necesitan
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 modulos
Para esto 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
El historial de incorporación
se refiere al momento en que se incluye
el módulo en la descripción del software
El mecanismo de activación
se refiere a la forma en que se invoca a
un módulo
El camino de control
describe la forma en que se
ejecuta internamente
Módulos secuenciales
Se ejecutan sin interrupción aparente por parte del software de la aplicación
Módulos incrementales
También se les conoce como corrutinas
pueden ser interrumpidos antes de
que terminen por el software
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 es una derivación directa de la modularidad, de la abstracción y del ocultamiento de información
La independencia funcional se adquiere desarrollando módulos con una función clara y con pocas relaciones con otros módulos
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
se mide con dos criterios cualitativos
la cohesión
el acoplamiento
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
requiere poca interacción con procedimientos que ejecutan otras partes de un programa
La idea es que un módulo cohesivo sólo haga una cosa
Lo importante es intentar conseguir una cohesión alta
Acoplamiento
El acoplamiento es una medida de la interconexión entre los módulos
El acoplamiento depende de la complejidad de las interfaces entre los módulos y de los datos
buscamos el acoplamiento más bajo posible