UML
1
Introducción, I • Similitud: – Arquitectura: Edificios, planos – Ingeniería del software: Programas, diagramas
• UML – Unified Modeling Language – Distintos tipos de diagramas – Adaptado a Unified Process (procedimiento de análisis y diseño)
• Dominio – Mundo en el que está definido un problema
• Modelo: – Abstracción de un problema – Formado por objetos 2
Introducción, II • Objetos: – Interaccionan entre sí enviándose mensajes – Cosas que saben (atributos) y cosas que pueden hacer (operaciones) – Los valores de sus atributos determinan sus estados
• Clases: – Un diagrama común a todos los objetos de cada clase – Objetos son instancias de clases
3
Diagramas de casos de uso • • •
Lo que hace el sistema (no cómo lo hace), descrito a nivel de usuario Pueden describirse en lenguaje natural Escenario: – Una secuencia de eventos (lo que ocurre al interaccionar con el sistema)
•
Caso de uso (un óvalo): – Resumen de escenarios para un caso particular
• •
Un actor (persona u objeto) establece una comunicación con un caso de uso Diagrama de casos de uso: – Una colección de actores, casos de uso y sus comunicaciones – Puede contener fronteras de separación (un rectángulo)
•
Permiten: – Planificar acciones de debugging – Hacer análisis de requisitos (las acciones completas de los usuarios) 4
Ejemplo, I
5
Ejemplo, II
6
Ejemplo, III • • • • • • • • • • • •
Origen levanta receptor Suena tono de llamada Origen marca cifra (9) Para tono de llamada Origen marca cifra (1) Origen marca cifra (3) Origen marca cifra (9) Origen marca cifra (7) Origen marca cifra (4) Origen marca cifra (4) Origen marca cifra (6) Origen marca cifra (7)
• • • • • • • •
Suena alarma destino Suena señal origen Destino responde Para alarma destino Para señal origen Conexión Destino cuelga Origen cuelga
7
Relaciones • Relaciones entre dos casos de uso – Generalización • “Es un caso particular de …” • Herencia de clases en POO
– Inclusión (include) • “Implica hacer también …”
– Extensión (extends) • “Es una variación condicionada de …” • Incluye un punto de extensión 8
Ejemplo
9
Ejemplo (II)
10
Ejemplo de diagrama de clases
11
Diagramas de clases, I Clases • •
Clases y sus relaciones Diagramas estáticos – Muestran lo que interacciona pero no lo que ocurre al interaccionar
•
Clase: – – – –
Rectángulo Nombre de clase (en cursiva si es clase abstracta) Atributos y métodos Visibilidad (vis) para atributos y métodos • público (+); por omisión para métodos • privado (-); por omisión para atributos • protegido (#)
– Atributos • [vis]atributo[: tipo [= valor]]
– Operaciones (métodos) • [vis]metodo[([params]) [:tipo]] • Métodos de clase subrayados
12
Ejemplo
13
Diagramas de clases, II Relaciones Tipo de relación
Representación
Relación bidireccional Asociación (unidirecc.) Agregación Generalización Dependencia de las APIs 14
Diagramas de clases, III Interfaces • Clases abstractas sin atributos y cuyos métodos no se definen en ellas • Ejemplo: Iterator operator*() operator++() operator+(int) 15
Diagramas de clases, IV Representaci贸n de interfaces Clase MiInterfaz
Clase
<<interface>> MiInterfaz m茅todos
16
Diagramas de clases, V Agregación compuesta • Agregación compuesta Al desaparecer un objeto de la clase inicial, también lo hacen las partes correspondientes Universidad
Facultad 1
1..*
17
Ejemplo
18
Diagramas de clases, VI Anotaciones a las relaciones Tipo de anotaciรณn
Representaciรณn
Multiplicidad
1..*
Rol
cliente
Restricciรณn (OCL) Cualificaciรณn simple Cualificaciรณn compuesta
pre
2 servidor
{pre.saldo โ ค pos.total}
pos
fecha fecha saldo 19
Diagramas de clases, VII Ejemplo de cualificaci贸n compuesta
20
Anotaci贸n de relaciones, I Dependencia Derivaci贸n
Function Se puede calcular una instancia a partir de otra
Instanciaci贸n Un m茅todo de una clase crea instancias de otra clase
Keyword derive
instantiate
21
Anotaci贸n de relaciones, II Dependency
Function
Keyword
Creaci贸n
Una instancia de una clase create crea instancias de otra clase
Llamada
Un m茅todo de una clase llama a una operaci贸n de otra clase
call
22
Diagramas de clases, VIII • Los atributos no deben ser objetos (utilizar relaciones en tal caso) • Las relaciones estáticas entre clases dan lugar a asociaciones dinámicas entre objetos correspondientes • Las asociaciones entre objetos pueden modificar los datos que contienen 23
Diagramas de clases, IX OCL: Tipos de restricciones • Invariante Expresión booleana asociada a un clasificador (relación, clase, interfaz, caso de uso) que es cierta en cada instante de ejecución del programa • Precondición Expresión booleana asociada a un método que es cierta en el instante en que se comienza a ejecutar • Postcondición Expresión booleana asociada a un método que es cierta en el instante en que se termina de ejecutar 24
Diagramas de clases, X OCL: Tipos de expr. booleanas • Ejemplos de expresiones: – – – –
a>0 i > j and self.size > i articulo->forAll(a | a < 100) average hours worked per week Las tres primeras son de tipo Boolean y formales La cuarta es de tipo Real e informal
• Los operandos de una expresión son expresiones 25
Diagramas de clases, XI OCL: Expresiones • Expresiones formales básicas (atómicas): – identifier.attribute Dependiendo del contexto, identifier puede ser: • • • •
Nombre de objeto, clase, interfaz o caso de uso Rol en relación self Implícito
26
Diagramas de clases, XII OCL: Tipos bรกsicos
27
Diagramas de clases, XIII OCL: Operadores sobre colecciones • Varios: size(), count(…), sum(), product() • Set: union(…), intersection(…) • OrderdedSet: append(…), insertAt(…), at(…) • Booleanos: includes(…), forAll(|), any(|), one(|)
28
Diagramas de clases, XIV OCL: Expresiones, contexto relación Pedido
ArtículoPedido
número fecha total
dto
art precio …
…
{total = (art.precio * (1-dto))->sum()}
art.precio es un set, a menos que la multiplicidad sea menor o igual que 1, o se indique que art es ordenado ({sort}), en cuyo caso es un orderedSet, o que es una lista no ordenada ({bag}) o una lista ordenada ({sequence}) 29
Diagramas de clases, XV Asociación de restricciones • Mediante anotaciones directas (ej: relaciones) • Mediante anotaciones separadas Persona {self.edad > 0}
nombre edad … 30
31
Diagramas de clases, XVI Paquetes A
B
C
D
32
Diagramas de objetos • Instancias en lugar de clases – Nombre de instancia subrayado – Puede aparecer nombre de instancia y/o nombre de clase
• Ejemplo: Diagrama de clases:
33
Diagramas de objetos, II Ejemplo: Diagrama de objetos
34
Diagramas de secuencia • Diagramas de clases y objetos son estáticos • Diagramas de interacción son dinámicos (describen cómo colaboran los objetos) • Diagrama de secuencia: – Un diagrama de interacción que dice qué mensajes se envían y cuándo – El tiempo avanza verticalmente hacia abajo – También llamados trazas de eventos 35
Ejemplo, I
aReservation
aReservation
aReservation
aNotice
36
Ejemplo, II Bucles y condiciones
37
Ejemplo, III :Receptor
:LĂnea
:Receptor
Origen levanta receptor Suena tono de llamada Origen marca cifra (3) Para tono de llamada Origen marca cifra (9)
... Suena seĂąal origen
Suena alarma destino Destino responde
. . .
38
Diagramas de colaboración • Diagramas de interacción • Combinación de uno de objetos y uno de secuencia – Sin considerar la línea del tiempo – Grafo dirigido – Cada mensaje tiene un número (según cuándo ocurran)
• Llamado también diagrama de flujo de eventos
39
Ejemplo, I 5.suena alarma 8.para alarma 9.conexión 11.fin conexión
1.levanta receptor 3.marca cifra 10.cuelga :Receptor
:Línea
2.suena tono llamada 4.para tono llamada 5.suena señal origen 7.para señal 9.conexión 11.fin conexión
:Receptor
6.descuelga 10.cuelga
40
Ejemplo, II
41
Diagramas de estado, I Espera
start
Proceso
stop end
end
42
Diagramas de estado, II • Autómata finito determinista • Se aplica a los objetos de una clase determinada • Se entra en un estado en respuesta a un evento determinado o al crearse un objeto de la clase • Dan lugar a código que se completa con los eventos que llegan en cada momento 43
Eventos • Pueden tener parámetros • Pueden ser de cuatro tipos: – – – –
Eventos de llamada: Eventos de cambio: Eventos de señal: Eventos temporales:
op(a:T) when(exp) sname(a:T) after(time)
44
Jerarquía de señales • InputEvent (time) – UserInput (device) • MouseButton(location) – MouseButtonDown – MouseButtonUp • KeyboardCharacter(character) – ControlCharacter – GraphicCharacter »… 45
Diagramas de estado, III Actividades y condiciones • Asociadas a transiciones o estados • Estados: – entry: Se ejecuta al pasar al estado – exit: Se ejecuta al pasar a otro estado – do: Se ejecuta durante la permanencia en el estado; se para si se activa una transición durante su ejecución
• Condiciones: Asociadas a transiciones; se comprueban antes de activarlas 46
Diagramas de estado, IV Espera
start
Proceso do/run
stop end
end
47
Diagramas de estado, V Espera
start stop
Proceso entry/run
end Run lanza evento stop
48
Diagramas de estado, VI
Press tab OR move cursor to PIN field/Cursor to PIN Press shift tab OR move cursor to SSN field/Cursor to SSN
Banco Internet (validaci贸n); 49
Diagramas de estado, VII Inscripci贸n en curso de formaci贸n
50
Diagramas de estado, VIII Otro ejemplo • Suena la alarma del reloj para indicar que ha llegado la hora predeterminada (hora objetivo) • Se puede poner la alarma (con una hora objetivo) • Se puede quitar la alarma • La alarma del reloj suena cuando se cumple: alarm=on && objetivo<=hora actual <= objetivo+20s • Si la alarma está sonando, deja de sonar la alarma del reloj y se quita la alarma si se cumple alguna de las siguientes condiciones; – Se pulsa cualquier botón – hora actual>=objetivo+20 51
Diagramas de estado, IX Alarma activada do/Âżdebe-sonar-alarma?
[sĂ]/sonar alarma Alarma sonando do/Âżdebe-sonar-alarma?
poner alarma
quitar alarma
Alarma desactivada
[no]/desactivar alarma
tocar cualquier tecla
52
Diagramas de estado, X Alarma activada sonar alarma
poner alarma
Alarma sonando
quitar alarma
Alarma desactivada
desactivar alarma
tocar cualquier tecla
53
Diagramas de estado, XI Otro ejemplo •
• •
• • •
Mientras exploran un castillo, A y B descubren lo que parece ser la entrada de un corredor secreto. Mientras A examina la puerta, B retira una vela del candelabro. En ese momento, la puerta gira 180º, llevándose a A consigo. B vuelve a colocar la vela en el candelabro. La puerta gira 360º y A vuelve a quedar separado de B. B saca de nuevo la vela. La puerta gira 360º, pero esta vez A le impide cerrarse con su cuerpo. B pasa la vela a A. Los dos amigos fuerzan (empujando cada uno en un extremo) a la puerta a retroceder 180º y de nuevo quedan separados, pero ahora B está dentro y A junto al candelabro. A pone la vela en el candelabro. Cuando la puerta empieza a girar, A saca la vela. La puerta se detiene tras girar 90º. A y B penetran en el corredor para explorarlo 54
Diagramas de estado, XII • Sacar y meter la vela del candelabro es un interruptor • Puerta: – Posición inicial 0º – Gira en sentido de las agujas del reloj – Con la puerta parada, si se toca el interruptor empieza a moverse – Con la puerta en movimiento: ¿se toca el interruptor? • No: la puerta gira hasta la posición 180º • Sí: la puerta gira hasta la posición más cercana múltiplo de 90º 55
Diagramas de estado, XIII 0 cs/gira(90)
270
cs/gira(90)
90
s, c/gira(270) s, c/gira(180)
s, c, cs/gira(90)
cs/gira(90) 180
s, c/gira(360)
56
Diagramas de estado de protocolo, I • Indican restricción: qué métodos se pueden ejecutar en cada estado con cada condición • Las transiciones consisten en la ejecución de métodos. Solamente tienen asociado un método y, opcionalmente, una condición • Los estados no tienen asociadas acciones • Si se llama un método que no corresponde a ninguna transición, el método no hace nada 57
Diagramas de estado de protocolo, II Cuenta corriente reintegro(cant) [cant <= balance + saldo]
Abierto
Close()
Cerrado
deposito(cant)
58
Diagramas de actividad, I Selecci贸n
Selecci贸n
hotel
d铆as mas
inicio fin
mensaje
Aviso banco
[libre() and inicio!=fin]
inicio++
[!libre()] [libre() and inicio=fin]
Aviso cliente 59
Diagramas de actividad, II • Llamados también diagramas de flujo de datos • Indican la lógica que rige la ejecución de acciones • Se asocian a casos de uso, paquetes, etc • Se pueden crear agrupaciones de actividades según el objeto que las realiza (swinlanes) 60
Diagramas de actividad, III Componentes gráficos • Estados de acción – Se ejecuta su acción y se sale de ellos – La acción en muchos casos es un método – Pueden tener datos de entrada (argumentos) y salida (resultados)
• Nodos de decisión (flujo con condiciones o else) • Bifurcaciones (salientes, forks, y entrantes, joins • Nodos de objeto (entre dos acciones)
61
Diagramas de actividad, III Swinglanes
62
Diagramas de actividad, IV [Pulsó Cancelar]
Muestra mensaje
Pide contraseña [Contraseña escrita]
...
Comprueba contraseña
[Contraseña correcta]
[No coincide]
Muestra mensaje
63
Atomos de actividad: acciones • • • • • •
Leer Escribir Excepción Creación Comunicación … 64
Diagramas de actividad, V Paso de diagramas de actividad y clases a diagramas de secuencia o de colaboración – Niveles de granularidad arbitrarios – Asignación de acciones y condiciones a objetos – Agrupación de acciones en métodos (iniciales y llamados por ellos) o asignación directa de métodos a acciones, y sincronización • Los objetos que ejecutan los métodos llamados por otros deben ser accesibles desde los objetos a que llaman a los métodos padres o desde el objeto devuelto por el método anterior 65
Diagramas de actividad, VI makeReservation UI
Cadena
Selecci贸n
Selecci贸n
d铆as
hotel
UI
mas
inicio fin
mensaje
Reservation Aviso banco
Hotel
[libre and inicio!=fin]
inicio++
[!libre]
Hotel [libre and inicio=fin]
Hotel
makeReservation Aviso cliente 66
Diagramas de actividad, VII
67
Diagramas de actividad, VII • Otros tipos de nodos: – Señales (síncronas o asíncronas) • Llegada • Salida
– Ejemplo: Teléfono cuelga
contesta marca
suena
habla tiempo
cuelga
68
Diagrama de componentes • Estructura física del código – – – –
Análogo físico de un diagrama de clases Componentes fuente, objetos o ejecutables Pueden formar paquetes Se pueden establecer relaciones de dependencia
• Componente
69
Ejemplo Gestor Ventanas
Gestor Ventanas
(win.cpp)
(win.obj)
Gestor Comu. (com.cpp)
Bibl. grรกfica (graph.lib)
Gestor Comu. (com.obj)
Prog. cliente (client.exe)
Clase main
Clase main
(main.cpp)
(main.obj)
70
Diagrama de despliegue • Muestra la arquitectura física del hardware y del software del sistema • Nodos: ordenadores y dispositivos. • Conexiones de diversos tipos
71
Ejemplo, I ClienteA: Compaq
TCP/IP
Servidor Aplic.: SUN ClienteB: IBM
DecNet
Servidor Base d.: VAX
TCP/IP
72
Ejemplo, II
73
Herramientas, I • Dibujo de diagramas – Soporte a la correctitud de los diagramas en base a su semántica – Apoyo para simplificar la facilidad de comprensión de los diagramas
• Archivo de información – – – –
Comprobación de inconsistencias Detección de trabajo a realizar y mejoras Generación de informes Soporte a la reutilización 74
Herramientas, II • Soporte a la navegación – Vistas compuestas – Elaboración de conexiones entre información relacionada – Búsqueda – Visión con diferentes niveles de granularidad (expansión y contracción de partes de la vista) – Filtros – Operaciones sobre componentes de la vista 75
Herramientas, III • Soporte al trabajo multiusuario – Bloqueo de información – Trabajo colaborativo
• Generación de código – Esqueletos con información estática (clases) – Integración con lenguajes especiales (SQL, …)
• Ingeniería inversa – Construcción de un modelo de diseño a partir de código – Diseño iterativo: incorporación al modelo de detalles implementados 76
Herramientas, IV • Integración con otras herramientas – – – – – – –
Entorno de desarrollo (tendencia a confluir) Configuración del sistema y control de versiones Herramientas de documentación Herramientas de prueba de software Herramientas de construcción de interfaces de usuario Herramientas de especificación de requerimientos Herramientas de gestión de proyectos y soporte al proceso de diseño y desarrollo 77
Herramientas, V • Distintos niveles de abstracción • Intercambio de información – Especificación OMG de representación de modelos UML en XMI (XML Metadata Interchange)
78
•
• • • •
Fundamentación de UML: Metalenguaje Metaclases que representan los elementos básicos a
partir de los cuales se definen todos los conceptos de UML (clases, relaciones, casos de uso, representación de estados, …) Forman el núcleo (core) de UML Basado en el paradigma de clases con atributos y herencia Sigue el estándar Meta Object Facility, MOF, del Object Management Group, OMG La forma en que está estructurado el metalenguaje se puede representar conceptualmente en UML 79
Fundamentación de UML (Meta)clase básica: Element • Element: concepto al que se puede asociar una secuencia de pares atributo-valor • Análogo en el meta-modelo de UML a la clase Object en algunos lenguajes de programación • Subclases inmediatas: NamedElement, RedefinableElement, RedefinedElement, PackagableElement, MultiplicityElement 80
Fundamentación de UML (Meta)clases: Relationship • Superclase común para indicar una conexión entre elementos • Subclases: Dependencia (dependency), generalización (generalization), dependencia dirigida (DirectedRelationship) 81
Fundamentación de UML Otras (meta)clases • MultiplicityElement: Incluye información sobre el número permitido de elementos instanciados • NameSpace: Puede comprender una colección de elementos para jerarquizarlos (Packages son también contenedores) • Expression: Cadena de caracteres en un lenguaje determinado 82
Fundamentación de UML (Meta)clases derivadas • Classifier (subclase de todas las anteriores) • ValueSpecification: LiteralSpecification, InstanceSpecification • Association (relación entre clasificadores con propiedades asociadas); instancias: Link • Dependency (relación que indica necesidad) 83
Fundamentación de UML Elementos comunes • Class • Operation (opcionalmente incluyen precondiciones y poscondiciones) • Interface • Implementation (relación entre un clasificador y una interfaz) 84
Fundamentaci贸n de UML Superclases de Classifier
85
Fundamentaci贸n de UML Subclases de Classifier
86
Extensiones de UML: Estereotipos • Permiten añadir semántica a un elemento “tipos especiales de” elementos del mismo tipo • Basados en cualquier tipo de elemento (clases, nodos, componentes, paquetes, relaciones, asociaciones, generalizaciones, dependencias) • Se pueden utilizar en las mismas situaciones que el elemento original 87
Extensiones de UML Definici贸n de estereotipos y perfiles <<stereotype>> <<metaclass>> Class
ClObjsCompartidos -PCImpl : PC -PCCl : PC
Objetocompartido: Un tipo especial de clase 88
Extensiones de UML Perfiles • Notación para definir nuevas construcciones compuestas con semántica específica • Formados por una <<metaclass>> y una jerarquía mediante herencia de <<stereotype>>
89
Extensiones de UML Utilizaci贸n de estereotipos y perfiles <<ClObjsCompartidos>> Obj1
<<ClObjsCompartidos>> PCImpl = PC1 PCCl = PC2 90
Fundamentaci贸n de UML Utilizaci贸n de perfiles
91
Fundamentación de UML Utilización de perfiles: descripción ± Class “ “ Device author color volume
EXTENSIÓN DE UML TV channel Author color volume = 10 92
Otras extensiones de UML: Valores etiquetados y restricciones • Valores etiquetados: Se pueden definir en estereotipos • Restricciones: Lenguaje específico (ya visto)
93