Analisis y Diseño con UML Fase de Diseño FASE DE DISEÑO DISEÑO DEL SISTEMA Partición en subsistemas y asignación a subaplicaciones Definir todos los procesos. DISEÑO DE OBJETOS Las clases del análisis se promueven a clases especificas Diseñar las clases necesarias Integrar clases ya existentes al diseño DISEÑO ARQUITECTONICO Se define la arquitectura Proceso UML 2 INTEGRIDAD DEBERÍAN GARANTIZAR QUE LOS MODELOS GENERADOS SON CONSISTENTES 1) DIAGRAMAS DE CLASES VS. TARJETAS CRC 2) MODELOS DINÁMICO VS. TARJETAS CRC 3) DIAGRAMAS DE CLASES VS. PROTOTIPO DE DISEÑO Proceso UML 3 DISEÑO DEL SISTEMA Descomposición en subsistemas de modo que el acoplamiento sea mínimo. Asignar subsistemas a procesos. Se establece la arquitectura de alto nivel del sistema, que conecta subsistemas. Considerar tecnología para implementar los distintos componentes. Asignar datos y procesamiento: clienteservidor Proceso UML 4 DISEÑO DE OBJETOS A partir de las clases y asociaciones de los diagramas de clase del análisis, definimos clases de la aplicación (o partes no visuales). Definir clases interface o visuales (partes visuales) Existirán otras clases sin correspondencia directa con elementos del análisis: clases del diseño Acceso a bases de datos Estructuras de datos Relacionadas conProceso patrones de diseño UML 5 DISEÑO DE OBJETOS Política para representar atributos derivados, clasificación múltiple, clasificación dinámica,.. Política para validación de datos de entrada del usuario: objeto-servidor u objeto-cliente Posibilidad de utilizar “diseño por contrato” Proceso UML 6 PROPUESTA DE DISEÑO Fase Elaboración Modelo de Requerimientos Modelo del Dominio Diagramas de Clase conceptual y diagramas de actividad Modelo de Casos de Uso Valorar riesgos técnologicos Decisiones de Diseño sobre la arquitectura Planificación Proceso UML 7 PROPUESTA DISEÑO Fase Construcción Iterativa e incremental En cada iteración se realiza análisis, diseño, implementación y test Cada etapa acaba con un prototipo Comenzar con las partes críticas Proceso UML 8 Diseño de Clases • Cuestiones a analizar: – Efectos laterales en funciones – Número de argumentos en los métodos – Tamaño de las clases – Estructuras de datos activas – Exportación selectiva – Documentación de una clase – Tratamiento de casos excepcionales Proceso UML 9 Diagramas de Paquetes Uso de paquetes • Paquete: conjunto de elementos de cualquier tipo pertenecientes al modelo (clases, casos de uso, diagramas de colaboración u otros paquetes). Esto es un paquete Proceso UML 11 Paquete • Paquete: conjunto de elementos de cualquier tipo pertenecientes al modelo (clases, casos de uso, diagramas de colaboración u otros paquetes). Otro paquete Esto es un paquete cuyo interior no especifico Proceso UML +A -B 12 Diagramas de Paquetes • Un paquete agrupa un conjunto de componentes relacionados. • Un diagrama de paquetes muestra muestra paquetes de clases y las dependencias entre ellas. • Permiten simplificar diagramas de clase complejos. • Unidad básica para “testing”. Proceso UML 13 En lugar de... Frame Presentación Procesamiento Dominio Facturas Servicios Interfaz BD Almacenamiento Albaranes Generador de informes Base de datos Proceso UML 14 ...utilizar: Presentación Procesamiento Presentación Dominio Servicios Almacenamiento Dominio Servicios Almacenamiento Proceso UML 15 De modo que: Dominio Facturas Albaranes Los elementos de un paquete pueden representarse mediante “particiones”: una partición representa un conjunto de subsistemas más o menos independientes dentro de una capa. Proceso UML 16 D IA G R A M A S D E P A Q U E T E S U N P A Q UE TE P UE D E C O N TE N E R A O TR O S P A Q UE TE S Editor Controlador Elementos de diagrama Núcleo Gráfico Sistemas de Ventanas Proceso UML 17 D IA G R A M A S D E P AQ U E T E S R elació n de D ep e nde ncia U n item p ued e ser im portado e n un paq uete si e s visible (e xportado) por el paquete do nde se declara. Clientes Banco: ChequandoCuenta «imports» Banco ChequandoCuenta Proceso UML 18 Pertenencias y referencias • Un elemento del modelo estará incluido en un sólo paquete, pero puede ser referenciado desde otros. Dominio Almacenamiento Cliente Mensaje 0..* 0..* almacena 1 1 Servidor Buzón Proceso UML Dominio::Buzón 19 Dependencias entre paquetes • Denotan que algún elemento de un paquete depende de los elementos en otro paquete. Dominio {autor: Paco Pil} Almacenamiento Proceso UML 20 Dependencia de importación Dominio +Cliente Presentación +FrameCliente AWT +Frame -AWT::Frame «importa» «importa» +Label «importa» Proceso UML 21 Generalización AWT +Frame #Label MiAWT +Frame #AWT::Label Proceso UML 22 En la arquitectura multinivel... Presentación Procesamiento Dominio Servicios Almacenamiento Proceso UML 23 Consideraciones • Dentro de un paquete pueden incluirse los elementos que: – Están relacionados conceptualmente o tienen un objetivo común – Pertenecen a un mismo árbol de herencia – Pertenecen al mismo caso de uso – Tienen relaciones conceptuales muy fuertes Proceso UML 24 Diagramas de Componentes Componentes • Un componente es un módulo físico de código (ficheros con código fuente, bibliotecas, runtimes, etc.). • La única relación posible entre componentes es la dependencia, con la que denotamos que un componente debe ser compilado antes que otro. Proceso UML 26 Componente • Los componentes son “paquetes físicos” de otros elementos lógicos • Estereotipos predefinidos: – – – – – Ejecutable Biblioteca (library) Tabla (de BD) Fichero Documento Proceso UML 27 Conceptos • Componente: parte física y reemplazable de un sistema que implementa y suministra ciertos conjuntos de interfaces.. • Diseño Basado en Componentes: forma de desarrollar el software en la que todos sus productos pueden ser construidos ensamblando, adaptando y conectando componentes preexistentes. Proceso UML 28 Tipos de componentes (I) Especificación de subprograma Cuerpo de subprograma Componente en general Los subprogramas son conjuntos de rutinas, de suerte que no incluyen especificaciones de clases. Proceso UML 29 Tipos de componentes (II) Programa principal Especificación de paquete Contiene el nodo raíz del programa Por ejemplo, un .H de C++ Proceso UML Cuerpo de paquete Por ejemplo, un .CPP de C++ 30 Tipos de componentes (III) Especificación de tarea Cuerpo de tarea Representan tareas independientes (p.ej., un .EXE) Proceso UML 31 Relaciones de dependencia Factura.CPP LineaFactura.H Factura.H LineaFactura.CPP Proceso UML 32 Ejemplos servidor realiza FServidor.java Servidor.java Cliente.java servidor.java servidor.java FServidor.java Proceso UML Servidor.java Cliente.java 33 Ventajas • • • • Reutilización Unidades de mantenimiento y actualización Desarrollo en paralelo Escalabilidad (facilidad de añadir nuevos servicios) • Independencia del lenguaje • Componentes distribuidos Proceso UML 34 Especificación de un componente • • • • • • Servicios prestados (interfaces) Servicios requeridos (interfaces) Especificación externa Código ejecutable Código de validación Documentos de diseño Proceso UML 35 Diagramas de Despliege Diagramas de Despliegue • Muestra las relaciones físicas entre el hardware y el software del sistema construído.Elementos: Nodos: Dispositivo hardware Conexiones entre nodos Componentes: Módulos de código. Dependencias entre paquetes Proceso UML 37 D IA G R A M A S D E D E S P L IE G U E (II) TCP / IP Servidor Diabetes BDOO Conexión Dominio del Cuidado de la Salud Servidor Hígado BDOO Dominio del Cuidado de la Salud «comunicación» Información Aplicación sobre el Hígado Nodo Pacientes Objetos contenidos Interface Proceso UML 38 Diagrama de Despliege modem Internet Procesador Servidor Servidor Web Red Local Procesador Cache Procesador DNS Proceso UML Procesador Direcc. 39 Patrón “Tablas como objetos” • Definir una tabla (en BB.DD.RR.) para cada clase de objetos persistente • Dificultad de relaciones entre objetos :Persona Personas Nombre Apellidos Paco Pil Bruja Avería Nombre: Paco Apellido: Pil :Persona Nombre: Bruja Apellido: Avería Proceso UML 40 Ejemplo Java class B extends A implements X { Ximplem at1; … public void metodo1(..) {at1.metodo1(..)} public int metodo2(..) {return at1.metodo2} … } class Ximplem implements X {…} Proceso UML 41 Ejemplo Delphi class Aplicación creation make feature {None} transicion: ARRAY2[Integer]; estado_asociado: ARRAY[Estado] feature make(n,m: Integer) is do !!transicion.make(1,n,1,m); !!estado_asociado.make(1,n) end; inicial: Integer; establecer_inicial (ne: Integer) is do inicial:= ne; end; put_estado (e: Estado; ne: Integer) is do estado_asociado.put(e, ne) end Proceso UML 42 Ejemplo Eifel • Ejemplo de variable de clase class TRABAJADOR suma_salarios: REF_INTEGER is once !!Result end; salario: INTEGER; incremento_salario(v:INTEGER) is do salario:= salario + v; suma_salarios.add(v) end …. end Proceso UML 43 public class FrameCliente extends Frame implements Inicio { private Cliente mCliente; public FrameCliente() { ... } public FrameCliente(String title) { this(); setTitle(title); Proceso UML mCliente=new Cliente(title); 44 public class Servidor { private Cliente mClientes[]; private boolean mConectado; public String mNombre; private int mCapacidad; private int mConectados; private InterfazServidor mInterfaz; ... Proceso UML 45 public class Servidor { private Cliente mClientes[]; private boolean mConectado; public String mNombre; private int mCapacidad; private int mConectados; private InterfazServidor mInterfaz; ... public void setInterfaz(InterfazServidor interfaz) { mInterfaz=interfaz; } Proceso UML 46