Diseño de Software: Niveles y Principios
Clasificado en Informática
Escrito el en español con un tamaño de 4 KB
NIVELES DE DISEÑO
(1) Arquitectura: Requerimientos => componentes del sistema y sus interconexiones
(2) Diseño del Código: Módulos => algoritmos y estructuras de datos
(3) Diseño de la Ejecución: Algoritmos (código) => asignación de mem, tiempo de ejecución, optimizaciones de código
ENFOQUE: trabajar desde lo general a lo particular
Diseño de la Interfaz de Usuario
(1) Principios generales (Sommerville)
Familiaridad: utilizar términos familiares a los usuarios
Consistencia: menúes y comandos con el mismo formato y significado en toda la aplicación
Mínima sorpresa: misma acción en contextos comparables produzcan un cambio similar
Recuperabilidad: recuperación frente a errores cometidos por el usuario, brindar: confir de accio destructivas recursos para deshacer en varios niveles
Guía al usuario: proveer ayuda en varios niveles
Diversidad de usuarios: tener en cuenta distintos tipos de usuarios.
DISEÑO - PRINCIPIOS
*Diseño para el Cambio *Separación de Intereses *Modularización (localización del impacto de los cambios)
*Niveles de Abstracción (facilita comprensión)*Ocultamiento de Información (encapsular)*Alta Cohesión, Bajo Acoplamiento
MODULARIZACIÓN
Módulo: un componente bien definido de un sistema de software que provee recursos y servicios
*Están bien definidos: Recursos y Servicios , La forma de suministrarlos (Interfaces)
*Un mód puede ser un programa o varios, una subrutina o varias --Principio de Separación de Intereses cada módulo se ocupa de aspectos específicos
CRITERIOS PARA MODULARIZAR
Descomposición: Descomponer el problema en sub-problemas (diseño top-down)
Composición: A partir de los componentes es posible obtener un nuevo sistema (diseño bottom-up)
Continuidad del impacto por cambios: Pequeños cambios en la especificación afectan pocos módulos
Protección durante ejecución: Efectos de anomalías durante la ejecución están localizados
DIAGRAMAS UML
*Paquetes (visión de alt nivl mostrando depndncias) mecanismo para agrupaci de elemens la dependencia significa que cambios en uno afectan al otro
*Subsistemas (visión de paquetes, comportamiento de clases) agrupación lógica de elementos de diseño, con interface de servicios que brinda (implementados por las clases)
*De Interacción (dos visiones distintas de lo mismo) *Secuencia (deja en claro la evolución temporal) *Comunicación (muestra más claramente las interacciones, pero el orden está dado por números)
*Clases (relaciones estáticas, operaciones, navegabilidad)
*Componentes (dependencias entre componentes)
*Despliegue (Deployment del software en el hardware)
TÉCNICAS PARA MEJORAR EL DISEÑO
*Reducir Complejidad: Generalidad de la solución con menos componentes más simples resolver el problema nivel de abstracción
Adaptabilidad de la solución cubrir con una solución distintos problemas particulares
*Diseño por Contrato: interacción entre componentes basada en contrato entre un cliente de un servicio y un proveedor del mismo
*Prototipado del Diseño: Recomienda construir un sistema, tirarlo y construirlo de nuevo para aprovechar en el segundo el aprendizaje de los errores cometidos al construir el primero .Construir una parte del sistema para evaluar factibilidad /riesgos
*Análisis de Arbol de Faltas: Ayudan a descomponer el diseño para identificar situaciones que podrían generar una falla árbol lógico desde el efecto a las posibles causas