Diseno de software
Lección 3.2.1 Concepto de diseño 1. Definición y contenido 2. Principios de diseño Lección 3.2.2 Abstracciones de diseño 1. Tipos de abstracción en el diseño 2. Abstracciones de datos Lección 3.2.3 Arquitectura Software 1. Concepto 2. Componentes y relaciones 3. Tipos de arquitecturas del software Lección 3.2.4 Enfoques y estrategias 1. Concepto 2. Estrategias dediseño Lección 3.2.5 Documentación
29/10/2003
Dpto. LSI - Universidad de Granada
1
Diseño de software
• Proceso de aplicación de diversas técnicas y principios con el propósito de definir un dispositivo, un proceso o un sistema, con suficiente detalle como para poder construirlo. • Establecimiento de una correspondencia entre el dominio del problema y el dominio de las soluciones •Diseño:
– Preliminar (Arquitectónico) – Detallado
• Características:
– Labor creativa – No hay técnicas a prueba de locos – Distancia conceptual entre dominio del problema y las soluciones
29/10/2003 Dpto. LSI - Universidad de Granada 2
Principios de diseño
• • • • Modularidad Abstracción Independencia funcional Ocultamiento de información
• Orientación a objetos:
– TAD (abstracción +modularidad + ocultamiento) – Ley de Demeter (independencia)
29/10/2003 Dpto. LSI - Universidad de Granada 3
Independencia funcional
• Necesita abstracción y modularidad • Los módulos deben ser lo más independientes funcionalmente que se pueda • Un módulo es funcionalmente independiente si:
– Realiza una función bien definida (alta cohesión) – Para modificarlo no es necesario conocer elinterior de otros módulos que lo usan o que usa (bajo acoplamiento)
29/10/2003 Dpto. LSI - Universidad de Granada 4
Cohesión
• • Unión funcional de los elementos de proceso que forman un módulo Grados (- a +):
1. 2. 3. 4. 5. 6. 7.
29/10/2003
Accidental: instrucciones que se repiten Lógica: lo mismo en el mismo módulo Temporal: lógica en un solo tiempo Procedimental: un trozo de organigramaComunicacional: una estructura de datos Secuencial: la salida sirve de entrada Funcional: función específica y repetible
Dpto. LSI - Universidad de Granada 5
Acoplamiento
• • Grado de interdependencia entre distintos módulos. Cuanto más debamos conocer del interior de un módulo A, para comprender el módulo B mayor acoplamiento. Grados:
1. 2. 3. 4. 5. 6. 7.
29/10/2003
•
ningúnacoplamiento: no se conocen acoplamiento de datos: datos por la interfaz acoplamiento de porciones de datos: trozos de datos acoplamiento de control: decide el comportamiento interno acoplamiento externo: datos externos acoplamiento de áreas comunes de datos: datos globales acoplamiento de contenido:
Dpto. LSI - Universidad de Granada 6
Ocultamiento de información
Las decisiones de diseño difíciles, ylos aspectos susceptibles de cambio, deben ocultarse en el interior de algún (algunos) módulos: – Detalles de implementación – Formatos de E/S – Códigos de caracteres, criterios de orden de los mismos – Desplazamiento y enmascaramiento de la información binaria – Aspectos dependientes del hardware – Parámetros generales de la aplicación (Año en curso, IVA, períodos de emisión de informes degestión,... )
29/10/2003 Dpto. LSI - Universidad de Granada 7
Ley de Demeter
• Proyecto Demeter de Liberherr • En el interior de un método M de una clase C sólo se deberían enviar mensajes a:
– Las variables de instancia (atributos miembro) definidas en C (no heredadas) – Argumentos de M – Objetos creados en M – Variables globales usadas en M
• No se deben enviar mensajes a objetos devueltospor mensajes • MAS LEVE: minimizar este tipo de mensajes
29/10/2003 Dpto. LSI - Universidad de Granada 8
¿Por qué?
Class C0 variables x1 : C1; methods M0 (xi : Ci) returns C2 begin x2 : C2; x2 := x1.x3.M3(xi); return (x2); end M0; end C0; Class C1 variables x3 : C3; end C1;
Class C0 variables x1 : C1; methods M0 (xi : Ci) returns C2 begin return (x1.M3_NEW(xi)); end M0; end C0; Class...
Regístrate para leer el documento completo.