Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Diseo
Bibliografa
An Integrated Approach to Software Engineering 3ed Springer Pankaj Jalote Captulos 6 (no completo) y 7 Software Engineering 7ed Addison Wesley Ian Sommerville
Diseo
Durante el diseo se refina la arquitectura El diseo es un plano de una solucin para el sistema Diseo Orientado a Objetos y Diseo Orientado a Funciones
Objetivos
El diseo de un sistema es correcto si un sistema construido de acuerdo a ese diseo satisface los requerimientos del sistema Pero el objetivo del diseo no es encontrar el diseo correcto sino
Encontrar el mejor diseo posible dentro de las limitaciones impuestas por
los requerimientos, el ambiente fsico del sistema y el ambiente social donde el mismo va a operar otras limitaciones?
4
Sin embargo, las dos cosas ms importantes concernientes a los diseadores es que el diseo sea:
Eficiente Simple Por qu?
Estas dos propiedades estn normalmente encontradas. Soluciones de compromiso. Y normalmente, por cul se inclinaran?
5
La Tarea de Diseo
Crear un diseo simple y eficiente de un sistema grande puede ser una tarea extremadamente compleja
Actividad bsicamente creativa No puede reducirse a una serie de pasos a seguir Sin embargo, se pueden dar guas
Principios de Diseo
Algunos principios de diseo a tener en cuenta:
Dividir y conquistar Abstraccin
Modularidad
Dividir y Conquistar
Debido a la complejidad de los grandes problemas y las limitaciones de la mente humana estos no se pueden atacar como una unidad monoltica
Aplicar dividir y conquistar Dividir en piezas que pueden ser conquistadas por separado. Sino se hizo una divisin poco inteligente
Dividir en piezas con esta propiedad es una tarea compleja para el diseo de software
8
10
Abstraccin
Permite al diseador considerar una componente a un cierto nivel de abstraccin sin preocuparse por los detalles de implementacin de dicha componente
Se describe el comportamiento exterior sin describir los detalles internos
11
Modularidad
Un sistema se considera modular si
El sistema consiste de componentes y estas se pueden implementar separadamente y el cambio en una tiene mnimos impactos en otras componentes
12
Diseo
Diseo Orientado a Objetos
Orientacin a Objetos
Clases y objetos Diagramas de clases Diagramas de interaccin entre objetos Patrones de diseo Herencia, polimorfismo, sobrecarga de operadores Etc.
PROGRAMACIN 4
15
Ventajas de Sistemas OO
Un modelo OO representa bastante el domino del problema
Esto facilita el entendimiento del diseo
Es ms sencillo impactar cambios en los requerimientos (comparado con otros enfoques) Facilita la reutilizacin Se cree que este enfoque es ms natural
Entonces, provee estructuras ms ricas para pensar y poder hacer abstracciones
16
Conceptos de Diseo
Tres conceptos claves para la calidad de un diseo (adems de ser correcto, claro)
Acoplamiento (bajo) Cohesin (alta) Principio abierto-cerrado (cumplir con el principio)
17
Acoplamiento
Captura la fuerza de interconexin entre mdulos Cunto ms acoplados ms dependientes entre si
Entonces, ms difcil comprenderlos y modificarlos
Tipos de Acoplamiento
Interaccin
Mtodos de una clase que invocan a mtodos de otra clase La peor forma es si se interacta con partes internas del mtodo La del medio es si se accede directamente a atributos del objeto La menor es si se accede al mtodo mediante intercambio de parmetros
19
Herencia
20
Cohesin
Se focaliza en conocer porqu los elementos de un mdulo estn juntos en ese mdulo El objetivo es tener en un mismo mdulo elementos que estn fuertemente vinculados
Entonces, mdulos ms fciles de entender y ms fciles de modificar
21
Tipos de Cohesin
Sin entrar en mucho detalle Mtodo
Ms alta cohesin cuando el mtodo implementa una nica funcin claramente definida y todas las sentencias contribuyen a esa funcin
Clase
Se focaliza en porqu distintos atributos y mtodos estn en una misma clase Una clase implementando un nico concepto o abstraccin Y todos sus elementos contribuyendo a soportar ese concepto o abstraccin
22
23
Principio Abierto-Cerrado
Objetivo (otra vez): promover la construccin de sistemas que sean fciles de modificar Mdulos abiertos para la extensin
El comportamiento puede ser extendido
Impresora
Impresora 1
Impresora 2
25
Se describen
Clases (nombre, atributos, mtodos) Asociaciones entre clases Relaciones de herencia
26
27
28
29
UML - Componentes
Piezas independientes Estas piezas es bueno que sean actualizables (upgradeable)
30
UML - Despliegue
Qu hardware usan los distintos elementos de software Nodo Algo que puede alojar (host) software
Se identifica con un cubo Dos tipos
Dispositivo Representa hardware Ambiente de ejecucin Representa software que aloja otro software
Dentro se pone lo que se despliega en ese nodo Nodos que se comunican se representa mediante lneas
31
32
Metodologa de Diseo
Existen varias
Siempre es una actividad creativa por lo que no es un conjunto de pasos que mgicamente produce un diseo
Se asume que:
Durante el diseo de la arquitectura se parti el sistema en varios subsistemas Se va a producir un diseo orientado a objetos
Entonces, el problema que se ataca es cmo producir un diseo orientado a objetos de un subsistema
33
34
Medidas de Diseos OO
Algunas medidas para evaluar la calidad y complejidad de diseos OO
S. R. Chidamber and C. F. Kemerer. A metrics suite for object-oriented design. IEEE Transactions on Software Engineering, June 1994 35
36
37
Estas mtricas predicen de una manera bastante buena las clases con ms defectos
Todas menos esta Esto se presenta en: V. R. Basili, L. Briand, and W. L. Melo. A validation of object-oriented design metrics as quality indicators. IEEE Transactions on Software Engineering, Oct 1996.
38
Forma de extensin
Escribir clases concretas de clases abstractas del Framework Escribir mtodos que sern llamados por eventos o estados reconocidos por el Framework (callbacks)
Frameworks (2)
aplicacin biblioteca Framework
aplicacin