390 likes | 442 Views
Curso de UML. Modelado Estructural Avanzado. Resumen. Modelado avanzado de clases Modelado avanzado de relaciones Interfaces, tipos y roles Paquetes Instancias Diagramas de objetos. Modelado Avanzado de Clases. Introducción al modelado avanzado de clases.
E N D
Curso de UML Modelado Estructural Avanzado
Resumen • Modelado avanzado de clases • Modelado avanzado de relaciones • Interfaces, tipos y roles • Paquetes • Instancias • Diagramas de objetos
Introducción al modelado avanzado de clases • La clase es el bloque de construcción más importante pero no el único. • Un clasificador es un mecanismo que describe características estructurales (atributos) y de comportamiento (operaciones). • Tipos de clasificador: • Son clasificadores los elementos de modelado que pueden tener instancias.
CuentaCorriente #numero #saldo -interés +consultarSaldo() +ingresar(cantidad: real)() Visibilidad • Especifica si un elemento de un clasificador puede ser utilizado por otros clasificadores. • Valores: • public (+) • protected(#) • private(-).
Proceso #numero #prioridad -numProcesos Alcance • Especifica si una característica aparece en cada instancia o si hay una única ocurrencia para todas las instancias. • Valores: • instancia: sin adorno. • clasificador: aparece subrayada.
Jerarquía • Clase u operación abstracta: • nombre en cursiva. • Clase hoja: • propiedad {leaf} bajo el nombre de la clase. • Clase raíz: • propiedad {root} bajo el nombre de la clase. • Operación hoja: • no es polimórfica y no puede ser redefinida. • propiedad {leaf} junto al nombre de la operación.
1 ControladorRed puertoConsola[2..*]: Puerto Multiplicidad • Número de instancias que puede tener una clase. • Consiste en una especificación del rango de cardinalidades permitidas. • En una clase se muestra en la esquina superior derecha.
Atributos • Sintaxis completa: [visibilidad] nombre [multiplicidad] [:tipo] [=valor_inicial] [{propiedades}] • Propiedades predefinidas de los atributos: • changeable: Sin restricciones. Valor por defecto. • addOnly: Para atributos con multiplicidad mayor que uno, permite añadir valores adicionales, pero una vez creado un valor no puede modificarse ni eliminarse. • frozen: El valor del atributo no se puede modificar tras inicializar el objeto. • frozen se corresponde con const en C++.
Operaciones • Signatura: nombre de la operación + parámetros + tipo retorno. • Operación: especifica un servicio que se puede requerir de cualquier objeto de la clase. • Método: implementación de una operación. • En una jerarquía de herencia puede haber varios métodos para una misma operación. • Sintaxis de una operación: [visibilidad] nombre [(lista parámetros)] [:tipo retorno] [{propiedades}]
Operaciones (y ll) • Sintaxis de los parámetros de una operación: [dirección] nombre :tipo [=valor_por_defecto] • Dirección: • in: parámetro de entrada que no puede modificarse. • out: parámetro de salida. • inout: parámetro de entrada que puede modificarse. • Propiedades predefinidas para las operaciones: • isQuery: su ejecución no cambia el estado del sistema. • sequential: sólo hay un flujo de control al mismo tiempo. • guarded: si hay más de un flujo de control, se secuencian las llamadas. • concurrent: se garantiza la existencia de múltiples flujos de control.
elemento tam: int Pila +push() +pop() <<bind>> (Integer,100) Pila <Integer,100> PilaEnteros Ligadura implícita Ligadura explícita Clases plantilla (templates) • Elemento parametrizado que no se puede utilizar directamente: necesita ser instanciado. • Especifican contenedores que se pueden instanciar para elementos específicos. • Representación UML:
Elementos estándar • Todos los mecanismos de extensibilidad de UML se aplican a las clases. • Valores etiquetados: permiten extender las propiedades de la clase. • Estereotipos: permiten especificar nuevos tipos de componentes. • Estereotipos estándar para clases: • metaclass: clasificador cuyos objetos son clases. • powertype: clasificador cuyos objetos son los hijos de un padre dado (metaclase cuyas instancias son subclases de otra clase). • stereotype: el clasificador es un estereotipo aplicable a otros elementos. • utility: clase cuyos atributos y operaciones tienen alcance de clase.
+ informal + formal Modelado de la semántica de una clase • Especificar las responsabilidades de la clase: • Como una nota con el estereotipo responsibility. • En un compartimento extra. • Especificar la semántica con un texto: • Nota con estereotipo semantics. • Representar el cuerpo de un método • Nota asociada mediante dependencia en LPOO o texto. • Precondiciones, postcondiciones e invariante: • Notas con estereotipos precondition, postcondiction e invariant. • Especificar una máquina de estados para la clase. • Especificar una colaboración que represente a la clase. • Pre y Postcondiciones, e invariante en un lenguaje formal como OCL.
Dependencia • Una dependencia simple suele bastar para la mayoría de relaciones de uso a modelar. • Para matizar, UML define 17 estereotipos específicos. • Estereotipos que se aplican a dependencias entre clases y objetos: • bind: relaciona una plantilla con su clase instanciada. • derive: el origen puede calcularse a partir del destino. • friend: el origen tiene una visibilidad especial en destino. • instanceOf: el objeto origen es una instancia del clasificador destino. • instantiate: el origen crea instancias del destino (entre objetos). • powertype: el destino es un supratipo (clasificador cuyos objetos son todos los hijos de un padre dado). • refine: especifica que el origen es más detallado que el destino. • use: la semántica origen depende de la sem. de la parte pública destino.
Dependencia (ll) • Estereotipos que se aplican a dependencias entre paquetes: • access: el origen tiene permiso para referenciar elementos del destino. • import: los contenidos públicos del destino pasan a formar parte del origen como si hubiesen sido declarados en él. • Estereotipos que se aplican a dependencias entre casos de uso: • extend: el destino extiende el comportamiento del origen. • include: el origen incorpora el comportamiento destino. • Estereotipos aplicables en interacciones entre objetos: • become: los dos objetos son el mismo en diferentes momentos. • call: la operación origen invoca la operación destino. • copy: el objeto destino es una copia exacta pero independiente.
Dependencia (y lll) • Estereotipo que aparece en las máquinas de estados: • send: la operación origen envía el evento destino. • Estereotipo que aparece en la organización en subsistemas y modelos: • trace: el destino es un antecesor histórico del origen.
Generalización • La herencia simple sin adornos suele bastar. • Para matizar, UML define 1 estereotipo y 4 restricciones específicas. • Estereotipo: • implementation: el hijo hereda hereda la implementación del padre pero no soporta sus interfaces ni los hace públicos, violando la semántica de sustitución (derivación privada de C++). • Restricciones estándar: • complete: no se permiten hijos adicionales a los ya especificados. • incomplete: se permiten hijos adicionales. • disjoint: los objetos del padre no pueden tener más de uno de los hijos como tipo. • overlapping: los objetos del padre pueden tener más de uno de los hijos como tipo.
Usuario Directorio Usuario Clave +propietario -clave Asociación • Adornos básicos: nombre, roles, multiplicidades y agregación. • Otros adornos: • Navegación: permite indicar la dirección de navegación más eficiente. • Visibilidad: visibilidad de los extremos (por defecto es pública). • Calificación: permite especificar cualificadores. Como en OMT. • Especificador de interfaz: permite especificar el rol que se desempeña. nombreRol : nombreInterfaz trabajador : IEmpleado supervisor : IGestor
Usuario Directorio Permiso Asociación (ll) • Clases asociación: modelado de las propiedades de una asociación. • UML define 5 restricciones aplicables a las asociaciones: • implicit:no es una relación manifiesta sino conceptual. • ordered:el conjunto de objetos del extremo sigue un orden. • changeable:se pueden añadir, modificar y eliminar enlaces. • addOnly:se pueden añadir enlaces desde un objeto del extremo. • frozen:los enlaces una vez añadidos no se pueden modificar.
Validar contraseña Caso de Uso Validación Colaboración Realización • Relación semántica entre clasificadores, en la que uno especifica un contrato y otro garantiza que lo cumplirá. • En la representación, la punta de flecha apunta al clasificador que especifica el contrato. • 2 usos habituales: • Mostrar la relación entre un caso de uso y la colaboración que lo realiza:
<<interface>> ChoiceBlock setDefault(choice: Choice) getChoice(): Choice RadioButtonArray setDefault(choice: Choice) getChoice(): Choice PopUpMenu setDefault(choice: Choice) getChoice(): Choice Realización (ll) • Mostrar la relación entre una interfaz y la clase o componente que proporciona sus servicios:
<<interface>> ChoiceBlock setDefault(choice) getChoice(): Choice PopUpMenu ChoiceBlock PopUpMenu setDefault(choice) getChoice(): Choice Realización (y lll) • La realización se puede mostrar de dos maneras: • Forma canónica: estereotipo + línea dirigida discontínua • Forma abreviada: notación en forma de “cabeza de alfiler” Forma canónica Forma abreviada
Técnicas comunes de modelado de redes de relaciones • Aplicar los caso de uso y los escenarios para descubrir las relaciones entre el conjunto de abstracciones. • Comenzar modelando las relaciones estructurales. • Luego identificar posibles generalizaciones/especializaciones usando la herencia múltiple con moderación. • Por último buscar dependencias como formas más sutiles de conexión. • Para todas las relaciones, comenzar por su forma básica para más adelante aplicar características avanzadas. • Resaltar los conjuntos interesantes de relaciones en diagramas aparte.
<<interface>> Empleado obtenerSueldo() obtenerBeneficios() Revisión de términos y conceptos • Interfaz: colección de operaciones que especifica un servicio de una clase o un componente. • Tipo: estereotipo de una clase que especifica un dominio de objetos y las operaciones aplicables al objeto. • Rol: comportamiento de una entidad participante en un contexto particular. • Representación de las interfaces: Persona Empleado
Revisión de términos y conceptos (y ll) • Una interfaz puede intervenir en relaciones de generalización, asociación, dependencia y, obviamente, de realización. • Especifica un contrato para una clase o componente pero no su implementación. • UML permite ampliar la información que recibe una interfaz: • asociando pre y postcondiciones a cada operación e invariantes a la clase o componente (se puede usar OCL). • asociando una máquina de estados a la interfaz para especificar el orden de las operaciones. • asociando colaboraciones a la interfaz que especifiquen su comportamiento esperado. • Una interfaz representa un rol de una clase en una asociación.
Modelado de las fronteras de un sistema • Las interfaces pueden utilizarse para modelar las fronteras de un sistema formado por componentes comprados, reutilizados o nuevos. • Para modelar las fronteras: • dibujar una línea alrededor de componentes que tienden a acoplarse. • refinar la agrupación agrupando juntos los que cambian juntos. • identificar las operaciones que cruzan las fronteras. • empaquetar como interfaces los conjuntos de operaciones y señales anteriores, utilizando criterios lógicos de agrupamiento. • para cada colaboración identificar • interfaces en que se basa (importa) • interfaces que ofrece (exporta) • documentar las interfaces con pre y postcondiciones, invariantes, etc.
Modelado de tipos dinámicos • La mayoría de lenguajes sólo soporta tipos estáticos, pero muchos objetos (p.e. de negocio) cambian sus roles en un flujo de trabajo. • Para modelar un tipo dinámico: • especificar los tipos posibles utilizando una clase estereotipada. • modelar todos los roles • utilizando la generalización, o • asociando un tipo a cada rol de la clase. • representar cada instancia dinámica en un diagrama de interacción. • Mostrar el cambio para cada objeto, dibujándolo una vez para cada rol.
Conceptos avanzados sobre paquetes • Paquete: mecanismo de propósito general para organizar elementos en grupos. • Puede contener: clases, interfaces, componentes, nodos, colaboraciones, casos de uso, diagramas y otros paquetes. • Forma un espacio de nombres. • El paquete raíz de un modelo es anónimo. • Visibilidad de los elementos: + publico -privado #protegido
Conceptos avanzados sobre paquetes (y ll) • Relaciones: generalización y dependencia (acceso e importación). • Estereotipos estándar aplicables a paquetes: • facade: un paquete sólo es una vista de otro. • framework: paquete que consta principalmente de patrones. • stub: paquete “abreviado”. Sirve de proxy de otro. • subsystem: representa un subsistema. • system: representa el sistema completo. • facade y stub ayudan a manejar modelos muy grandes: • los facade ofrecen vistas simples de modelos complejos. • los stub se usan cuando hay equipos diferentes trabajando sobre el mismo paquete.
Técnicas comunes de modelado • Modelado de grupos de elementos: • buscar grupos de elementos similares conceptual o semánticamente. • englobar cada grupo en un paquete. • determinar en cada paquete las visibilidades de los elementos. • establecer las dependencias de importación y acceso entre paquetes. • import: permiso de acceso de un solo sentido sin añadir nombres al paquete cliente, lo que obliga a usar nombres de ruta. • access: permiso de acceso de un solo sentido en el que los nombres del paquete proveedor se añaden al espacio de nombres del cliente. • establecer jerarquías de generalización entre los paquetes si existen.
Vista de diseño Vista de implementación Vista de casos de uso Vista de Vista de procesos despliegue Técnicas comunes de modelado (ll) • Modelado de vistas arquitectónicas: • identificar el conjunto de vistas arquitectónicas significativas en el contexto del problema. Usualmente: vista diseño + v. procesos + v. implementación + v. despliegue + v. casos uso • colocar cada elemento y diagrama en el paquete adecuado. • agrupar si es necesario estos elementos en paquetes. • establecer la visibilidad entre vistas: normalmente abierta entre las vistas de más alto nivel.
Revisión de términos y conceptos • Instancia: manifestación concreta de una abstracción. • Representación gráfica: subrayando su nombre. • Estereotipos estándar aplicables a las relaciones clase-objeto: • instanceOf: el objeto es una instancia del clasificador destino. • instantiate: la clase origen crea instancias de la clase destino. • Estereotipos estándar para instancias de mensajes y transiciones: • become: el destino es el mismo que el origen en un instante posterior. • copy: el destino es una copia igual del origen pero independiente. • Restricción estándar para objetos: • transient: la instancia se crea y se destruye durante la colaboración.