Documentos de Académico
Documentos de Profesional
Documentos de Cultura
UML:
Lenguaje Unificado de
Modelado http://uml.org
Tema 4
TACC II
Curso 2008/09
1
Introduccin
z Similitud:
{ Arquitectos, edificios, planos
{ Ing. Inf., programas, diagramas
z UML
{ Unified Modeling Language. Versin 2.0 (finales 2004)
{ Diagramas (ing.
(ing inf
inf.))
z Usados como esquemas y menos con informacin rigurosa (planos
de arquitectos)
z Dos modos:
Ingeniera inversa: a partir de cdigo hacer diagramas
Ingeniera directa: hacer diagramas y luego implementar
z Dominio
{ Mundo en el que hay definido un problema
z Modelo:
{ Abstraccin de un problema
{ Formado por objetos 2
Indice
4
Casos de Uso
z Actor
A t = Algo
Al con comportamiento
t i t (persona,
( otro
t
programa, organizacin...), que interactua con el
sistema.
5
Casos de Uso
zP
zPasos:
y el nombre y apellidos
Los datos bsicos incluyen p del artista,, el ttulo y fecha de la obra,, sus dimensiones,, la tcnica
(leo, acuarela u otras tcnicas), el tema (retrato, naturaleza muerta, paisaje, otro) y la clasificacin (obra maestra,
obra representativa, otro tipo). Si es obra maestra, el precio recomendado se calcula comparando el cuadro
introducido con los que hay en el registro de cuadros, tomando el ms parecido y aplicando un algoritmo que tiene
en cuenta la coincidencia de tema, la tcnica y las dimensiones del cuadro. El sistema debe utilizar informacin de
subasta de todo el mundo que ahora la galera recibe en un CD de manera mensual. Para una obra representativa,
el precio recomendado se calcula como si fuera una obra maestra y luego se aplica una correccin. Para una obra
de otro tipo, se calcula utilizando el rea del cuadro y un coeficiente de moda para el artista. Si no hay coeficiente de
moda para un artista, el agente tiene por norma no comprar el cuadro. El coeficiente de moda varia de mes a mes.
En cuanto a la venta de cuadros por parte de la galera, el sistema simplemente registra la fecha de venta, el nombre
y direccin del comprador
p y el p
precio de venta real.
El sistema tambin deber detectar nuevas tendencias en el mercado de arte tan pronto como sea posible. La idea
es detectar secuencias de compras por valores mayores que los esperados por la obra de un artista determinado, de
tal manera que tu cliente pueda comprar cuadros de ese artista antes de que otros detecten la tendencia. Con el
objetivo de detectar cundo el precio de venta es mayor que el precio esperado cuando tu cliente compr el cuadro,
se debe mantener un registro de todas las compras y todas las ventas.
7
Se quieren generar tres informes: compras y ventas realizadas durante un ao, y artistas de moda.
Ejemplo Comprar
p una
Obra maestra
Comprar una
O
Obra representativa
Vendedor
Comprar una
Obra de Otro Tipo
Vender un
cuadro
Producir Informe
tendencias
Actualizar
8
Coeficiente de moda
Ejemplo
Caso de uso: comprar una obra maestra
Actores primarios:
Agente Galera, vendedor
Interesados y Objetivos:
Agente: quiere obtener una recomendacin lo ms acertada posible del precio
mximo
i recomendado
d d d de manera rpida.
id
Vendedor: quiere vender el cuadro a un precio razonable de manera rpida.
Precondiciones:
El agente ha entrado en la aplicacin.
Garanta de xito (post-condiciones):
Se registra la venta.
Escenario Principal de xito:
1 El agente
1. t iintroduce
t d lla d
descripcin
i i d dell cuadro.
d
2. El sistema busca el cuadro ms parecido del mismo autor.
3. El sistema presenta el precio recomendado.
4. El age
agentee hace
ace u
una
ap propuesta
opues a popor debajo de
del pprecio
ec o recomendado,
eco e dado, y e el vendedor
e dedo
acepta la oferta.
5. El agente introduce informacin de la venta.
Extensiones:
2 N
2a. No hhay ningn
i cuadrod parecido id ddell mismo
i autor,
t as que ell sistema
i t no presenta
t una
recomendacin. 9
4a. El vendedor no acepta la oferta y la venta no se produce.
Ejemplo
Terminal Punto de Venta
TPV
Procesar
Venta
Servicio
cajero de Autorizacin
Procesar de Pagos
Devoluciones
actor
actor Analizar
Analizador de Actividad Calculador de
A ti id d de
Actividad d Impuestos
p
Ventas
...
actor
Gestionar Sistema de
Seguridad contabilidad
Gestionar
Administrador Usuarios 10
del sistema
Diagramas de Caso de Uso
Relaciones
z Relaciones
R l i entre
t d dos casos d
de uso
{Generalizacin
z Es
E un caso particular
ti l d de
z Herencia de clases en POO (overriding)
z Tambin se puede tener esta relacin entre dos actores
{Inclusin (include)
z Implica hacer tambin
{Extensin (extend)
z Se insertar en un determinado punto (llamado punto de
extensin) dependiendo de una condicin
condicin.
z Si un caso de uso depende de varios casos de uso mediante
extend tendr un punto de extensin para cada uno.
11
Ejemplo
Gestin de Pacientes
Cancel Appointment
Scheduler
Make Appointment
<<include>>
<<include>>
Check Patient Record
Doctor
<<extend>> Defer Payment
Pay Bill
13
Casos de Uso
{ Especificacin de requisitos
14
Indice
z Diagramas de Casos de Uso.
z Diagramas de Estructura.
{Clases y Objetos.
{Componentes.
{Estructuras Compuestas.
{Despliegue.
{Paquetes.
q
z Diagramas de Comportamiento.
z OCL.
z Herramientas.
z Ejemplos.
z Bibliografa. 15
Clases y Objetos
z Los diagramas de Clases y de Objetos son los
principales modos de representar los aspectos
estructurales en UML.
Diagrama
ag a a de
clases
Carbono Hidrgeno
:Hidrgeno :Hidrgeno
Diagrama de
Di d
objetos :Hidrgeno :Carbono :Carbono :Hidrgeno
17
:Hidrgeno :Hidrgeno
Clases y Objetos
En cursiva si es
Nombre abstracta
de la clase Circulo
-radio: double
-centrox:
t double
d bl At ib t
Atributos
visibilidad -centroy: double
+Area(): double
+Permetro(): double
Operaciones
Nombre Clase
d l objeto
del bj unCirculo: Circulo del objeto
radio = 3.4
centrox = 2.0
20 Valores de
centroy = 2.0 los atributos 18
Clases
Atributos
z Notacin p
para atributos:
z Visibilidad (opcional):
{ Pblica: +
{ Privada: -
{ Protegida: #
{ Paquete: ~
z / indica que el atributo es derivado.
z La multiplicidad va entre [ ] y por defecto vale 1.
z Propiedades vlidas: {readOnly},
{readOnly} {union},
{union} {subsets <property
<property-
name>}, {redefines <property-name>}, {ordered}, {bag}, {seq},
{sequence}, y {composite}.
z Un atributo subrayado es esttico.
19
Clases
Ejemplo atributos
ClaseA
name: String
shape: Rectangle
+ size: Integer [0..1]
/ area: Integer {readOnly}
h i ht IInteger
height: t =5
width: Integer
# pos: Point
ClaseB
id: {redefines name}
shape: Square
20
Clases
Mtodos
z Notacin
N t i para mtodos:
t d
z Visibilidad (opcional).
z nombre del mtodo
z lista de parmetros formales, separados por coma:
direccion nombre : tipo [multiplicidad] = valor [{propiedad}]
z Los mtodos estticos se subrayan.
z Ejemplos:
display ()
-hide ()
+createWindow (location: Coordinates
Coordinates, container: Container [0
[0..1]):
1]): Window
+toString (): String 21
Asociaciones
Composicin
z Un Crculo contiene un Punto
z Se representa con una Composicin
Crculo Punto
centro
Crculo Punto
1
z Ejemplos
Ej l ded cardinalidad:
di lid d zN
zNavegacin:
i
1..* mnimo 1, no hay mximo Unidireccional
0..*
0.. mnimo 0, no hay mximo Bidireccional
0..1 mnimo 0, mximo 1
No especificado.
1,2,4 uno, dos o cuatro
3 exactamente tres No navegable (x)
23
Asociaciones
Ejemplos de Navegacin y Cardinalidad
24
Ejercicio
z Representa mediante un diagrama de clases la siguiente
especificacin:
{ Una aplicacin necesita almacenar informacin sobre
empresas, sus empleados y sus clientes.
{ Ambos se caracterizan por su nombre y edad.
{ Los
L empleados
l d tienen
ti un sueldo
ld bruto,
b t los
l empleados
l d que
son directivos tienen una categora, as como un conjunto de
empleados
p subordinados.
{ De los clientes adems se necesita conocer su telfono de
contacto.
{ La
L aplicacin
li i necesita
it mostrar
t l
los d t
datos d empleados
de l d y
clientes.
25
Ejercicio
Persona
- nombre
- edad
+ mostrar()
Empleado Cliente
subordinados
- sueldo_bruto - telefono_de_contacto
nombre_empresa
0..*
+ mostrar
t ()
+ calcular_salario_neto()
+mostrar()
1..*
empleados 0..* clientes
1..*
Directivo
0..* Empresa
- categoria 1
- nombre
b
+ mostrar () 26
Asociaciones: Agregacin
susFiguras
Ventana Figura
0 *
0..
27
Asociaciones y Dependencia.
Dependencia
z Existen relaciones de conocimiento entre clases que no
implican una relacin todo/parte
titular cuentas
Cliente Cuenta
1 *
1.. 0 *
0..
suContexto
ContextoDibujo
28
Dependencia
Clases Asociativas
Nombre asociacin
Clase Asociativa 29
Clases y Objetos
j
Estilo
Cliente Orden
nombre 1 0..* fecha
direccin estado
calcImpuesto
calcTotal
1..* 1
Pago calcPesoTotal
monto 1
lnea 1..*
31
Ejercicio
z Especificar un diagrama de clases que describa redes
de ordenadores.
z Los elementos que se pueden incluir en la red son:
{ Servidor,
S id PC, PC Impresora.
I
{ Hub, Cable de red.
z Los PCs pueden conectarse con un nico Hub, Hub los
servidores con uno o varios.
z Los Servidores y PCs pueden generar mensajes, con
una cierta longitud.
z Los Hubs tienen un nmero de puertos, algunos de los
cuales puede usarse para conectar con otros Hubs.Hubs
Tienen cierta probabilidad de perder mensajes.
z Las impresoras pueden averiarse, con cierta
probabilidad, durante cierto tiempo. 32
Ejercicio Posible Solucin.
Ejercicio. Solucin
Los PCs pueden conectarse con un nico Hub, los servidores con uno o varios
33
Podemos modelarlo como una restriccin OCL, o bien aadir asociaciones desde
Servidor y PC
Ms sobre asociaciones
Asociaciones n-arias
Ao
temporada
d
E i
Equipo equipo pichichi
J
Jugador
d
34
Ms sobre asociaciones
Adornos en asociaciones y fin de asociacin.
zAAsociaciones
i i d
derivadas
i d ((con un / d
delante
l t d dell nombre).
b )
z Propiedades, cerca del nombre de la asociacin.
z Los finales de la asociacin pueden adornarse con:
{ Multiplicidad.
{ Nombre (rol).
( )
{ Propiedades:
z {subsets <nombre-prop>}.
z {redefine <nombre-fin-asoc>}
<nombre-fin-asoc>}.
z {union}.
z {ordered} (un conjunto ordenado).
z {bag} (conjunto con repeticin)
repeticin).
z {sequence} o {seq} (bag ordenado).
35
Ms sobre asociaciones
Adornos en asociaciones y fin de asociacin: Ejemplos
a b
A 0..1 *
B
{ordered}
d
C 1 0..1
D
{subsets b}
36
Ms sobre asociaciones
Asociaciones Cualificadas
body-condition
post-condicin
38
Interfaces
<<interface>>
Clase MiInterfaz Clase
mtodos MiInterfaz
Clase
MiInterfaz
39
Plantillas
42
Solucion (ii)
z Nota: pedidos_simples es una asociacin derivada. El atributo total de
Pedido es derivado
derivado.
z Habra que incluir las siguientes restricciones OCL:
Context
C t t realizar_pedido:
li did
pre: self.cuentas->exists(c | c.disponible > 0)
Context Pedido:
inv: self.t_productos.num->sum() <= 20
Context aadir_pedido(p:
aadir pedido(p: Producto
Producto, num: int):
pre: p.stock>=num
Objetos
Empleado Cliente
subordinados
- sueldo_bruto - nombre_empresa
+ mostrar () - telefono_de_contacto
+ calcular_salario_neto()
l l l i t ()
+mostrar()
empleados clientes
Directivo
Empresa
- categoria
- nombre
+ mostrar ()
e2 : Empleado e1 : Empleado
- nombre=Mara - nombre=Pedro
- edad
edad=25
25 - edad
edad=23
23
- sueldo_bruto=36000 - sueldo_bruto=30000
subordinados empleados empleados
d1 : Directivo empleados
Empresa
- nombre=Luis - nombre=HGJ
- edad=35
d d 35
- sueldo_bruto=36000
- categoria=C1 clientes
c1 : Cliente
- nombre=Luis
- edad=35 46
- nombre_empresa=Macroware
- telefono_de_contacto=91555666
Componentes
z Componente
C t = Unidad
U id d Modular
M d l con interfaces
i t f
bien definidos que es reemplazable en su
entorno .
entorno
z nfasis
f i en reutilizacin
tili i y encapsulamiento.
l i t
Interfaces Interfaces
que ofrece que requiere
48
Componentes
Vi t d
Vista de caja
j bl
blanca
49
Estructuras Compuestas
z Composicin
C i i de
d elementos
l t ( l ifi d
(clasificadores o
colaboraciones)
51
Estructuras Compuestas
Alternativa a relaciones de composicin
A li ti
Application
2
Window Button
Application
2
Window Button
52
Estructuras Compuestas
53
Estructuras Compuestas
p
Colaboracin.
E t t
Estructura iinterna
t d
de una colaboracin.
l b i
54
Estructuras Compuestas
p
Colaboracin.
O
Ocurrencia
i de
d una colaboracin
l b i en otra.
t Binding.
Bi di
55
Estructuras Compuestas
p
Colaboracin.
Template de colaboracin.
56
Despliegue
z Definen
D fi lla arquitectura
it t d
de ejecucin
j i dde un sistema.
i t
57
Despliegue
p g
Relaciones entre artefactos.
Manifestacin de
elementos a travs de
artefactos
58
Despliegue
p g
Ejemplo.
59
Paquetes
z Un paquete es un contenedor que agrupa elementos
relacionados.
60
Paquetes
q
Ejemplo.
61
Indice
z Diagramas de Casos de Uso
Uso.
z Diagramas de Estructura.
zDiagramas de Comportamiento
Comportamiento.
{ Diagramas de Interaccin.
z Diagramas de Comunicacin.
z Diagramas de Secuencia.
z Diagramas de visin de conjunto de la interaccin.
z Diagramas de tiempo.
{ Diagramas de Estados.
{ Diagramas de Actividad.
z OCL
z Herramientas.
z Ejemplos
Ejemplos.
z Bibliografa. 62
Diagramas de Interaccin
z El comportamiento
t i t se representa
t a travs
t de d
colaboraciones:
{ Coleccin de objetos:
z Instancias
z Roles
z En un contexto dado
z Diagrama
Di d Secuencia
de S i
z Estructura
E t t d
de llos participantes
ti i t
zDiagramas de Comunicacin
z Patrones de comunicacin
zDiagramas de Comunicacin
zDiagramas de Secuencia
z Temporizacin
p de la comunicacin.
zDiagramas de Secuencia
zDiagramas de Tiempo.
z Estructuracin de las interacciones
zDiagrama
g de visin de conjunto
j de la
interaccin.
66
Diagramas de Comunicacin
z Representa
R t los
l objetos
bj t ( l
(roles o instancias)
i t i )
necesarios para una interaccin y sus
relaciones.
:Window
Wi d / Observer
Ob : SlidingBarIcon
Slidi B I
roles
l
relaciones
/Subject :CallQueue
68
Diagramas de Comunicacin
:Window
Wi d / Observer
Ob : SlidingBarIcon
Slidi B I
restriccin
{
{Observer.reading=length(Subject.queue)
g g ( j q )
/Subject :CallQueue and
Observer.range = (0..Subject.capacity)}
69
Diagramas de Comunicacin
Llamadas anidadas:
realizarPago(cantidad) 1: realizarPago(cantidad)
:Registro :Venta
1.1: crear(cantidad)
:Pago
Iteraciones:
Ejectuar() 1*[i:=1..N]: num:= nextInt()
:Simulador :Random
70
Diagramas
g de Comunicacin
Multiobjetos.
z R
Representan
t conjuntos
j t d instancias
de i t i en ell
extremo muchos de una relacin 1:N o M:N
servers
:Client :Server
:Server
1:aServer:=find(specs)
aServer <<local>>
:Server
2:process
72
Diagramas
g de Comunicacin
Condiciones.
e:ClaseE
2 msg6()
2: 6()
1b
b [not
[ ot test]:
test] msg4()
sg () 1a.1:
a msg3()
sg3()
d:ClaseD c:ClaseC
1b 1 msg5()
1b.1: 5()
73
Ejercicio: Biblioteca
z Una biblioteca tiene copias de libros
libros. Estos ltimos se
caracterizan por su nombre, tipo (novela, teatro, poesa,
ensayo), editorial, ao y autor.
z Los autores se caracterizan por su nombre, nacionalidad
y fecha de nacimiento.
z Cada copia tiene un identificador
identificador, y puede estar en la
biblioteca, prestada, reservada, con retraso o en
reparacin.
z Los lectores pueden tener un mximo de 3 libros en
prstamo.
z Cada libro se ppresta un mximo de 30 das, p por cada da
de retraso, se impone una multa de dos das sin
posibilidad de coger un libro.
z Realiza el diagrama de colaboracin para el mtodo
devolver()
Solucin
1.3 [retraso>0]: multar(retraso)
1: devolver(id,
( , fecha))
prestamos
:Lector 1.1: dev:=remove(id)
:Copia
1.3.1a [multa=0]: multa:=
create(fecha,retraso)
multa:Multa
lt M lt
{new} 1.2: retraso:=getRetraso(fecha)
dev:Copia
multa:Multa
1.3.1b [multa<>0]: anyade(fecha,retraso)
Solucin
1.3 [retraso>0]: multar(retraso)
1: devolver(id,
( , fecha))
prestamos
:Lector 1.1: fec:=remove(id)
:Copia
1.3.1a [multa=0]: multa:=
create(fecha,retraso)
multa:Multa
lt M lt fechas
{new} fec:Fecha
1.2: retraso:=getRetraso(fecha)
multa:Multa
1.3.1b [multa<>0]: anyade(fecha,retraso)
76
Diagramas
g de Comunicacin
Etiquetas de las flechas.
predecesor
d orden-secuencial
d i l valor-retorno
l t
:= nombre-mensaje lista-argumentos
z Predecesor
{ Lista separada por , terminada en /
{ El mensaje
j no est
t habilitado
h bilit d hhasta
t que no ocurran llos
mensajes en la lista
z Orden en la secuencia
{ Lista separada por ., terminada en :
{ C d t
Cada trmino
i representa t nivel
i ld de anidamiento
id i t procedural
d l
{ Iteracin: *[clusula interacin]
{ Bifurcacin: [condicin]
77
Diagramas
g de Comunicacin
Etiquetas de las flechas.
zEjemplos:
{2: display(x,y)
display(x y)
{1.3.1: p:=find(specs)
{4 [x<0]: invert(x, color)
{A3,B4/ C3.1:update()
{1.1 *[i:=1..n]: lecturer()
78
Diagramas
g de Comunicacin
Ejemplo.
redisplay()
:Controller :Window
1:displayPositions(window) 1.1.3.1:add(self)
1.1*[i:=1..n]: drawSegment(i)
contents {new}
wire
<< local >> line
wire:Wire :Line
Li {new}
{ }
<< self >> 1.1.2: create(r0,r1)
i-1 i 1.1.3: display(window)
1 1 1 r0:=
1.1.1a: 0 position()
i i () 1 1 1b r1:=
1.1.1b: 1 position()
i i ()
left:Bead right:Bead
g
79
Diagramas
g de Comunicacin
Objetos Activos.
zPoseen
P su propio
i hilo
hil de
d control
t l
zLos
L objetos
bj t activos
ti se representan
t
frecuentemente con componentes internas
80
Diagramas
g de Comunicacin
Objetos Activos. Ejemplo.
:FactoryManager
:FactoryScheduler
job
1:start(job)
A2,B2/2:completed(job)
currentJob:TransferJob
<<local>> job :FactoryJobMgr
B2:completed A2:completed
1/B1:start(job) 1/A1:start(job)
:Robot :Oven
81
Diagramas
g de Comunicacin
Objetos Activos. Ejemplo.
z Dos dimensiones:
{Tiempo (generalmente vertical); puede ser una escala si
el sistema es de tiempo real
{Diferentes
{Dif t instancias
i t i ((generalmente
l t h
horizontal);
i t l) ell
orden relativo no tiene importancia
zP
Pueden
d existir
i ti trazas
t no incluidas
i l id en los
l d
dos conjuntos
j t
anteriores.
a: lift receiver
b: dial tone
Objetos c: dial
di l digit
di it
...
Focos de d: route
Control
ringing tone phone rings
Mensajes answer phone
ac: ds:
LoginPage: CurrentUser:
Authentication UserData
Servlet UserData
C
Controller
ll S i
Service
validateCredentials(Dan, b4_23)
restoreUserData(Dan)
create(Dan,Administrator)
currentUser
currentUser
86
Diagramas de Secuencia
Gate (formal),
con nombre
out Unlock
out_Unlock
88
Diagramas de Secuencia
z Copian el contenido de
la interaccin referida.
z Substitucin de
parmetros y conexin
de las puertas (gates)
formales y actuales.
actuales
89
Diagramas
g de Secuencia
Operadores sobre interacciones.
z Fragmentos combinados,
combinados operadores (i):
{ Alternativa (alt).
z Eleccin (mediante una guarda) de una interaccin.
interaccin
{ Asercin (assert).
z La
a secue
secuencia
c a espec
especificada
cada po
por e
el ope
operador
ado es la
anica
ca vlida.
da
{ Opcin (opt).
z Equivalente a un operador alt con un solo fragmento.
{ Ruptura (break).
z El operando se ejecuta en lugar del resto de la interaccin englobada en el
fragmento padre.
padre .
{ Paralelo (par).
z Mezcla de las trazas de los operandos (cualquier entrelazado es vlido
mientras preserve el orden de los eventos de cada operando).
operando)
90
Diagramas
g de Secuencia
Operadores sobre interacciones.
{ Secuenciacin dbil (seq).
(seq)
z Define un conjunto de trazas que cumple:
z 1. Se mantiene el orden de eventos de los operandos
z 2.
2 Eventos de otras lneas de vida de otros operandos pueden venir
en cualquier orden.
z 3. Eventos de la misma lnea de vida de otros operandos se ordenan
de tal manera que cualquier evento del primer operando va antes que
el del segundo.
{ Negativa (neg).
z Define trazas invlidas.
92
Diagramas
g de Secuencia
Operadores sobre interacciones. Alternativa.
93
Diagramas
g de Secuencia
Operadores sobre interacciones. Opcin.
94
Diagramas
g de Secuencia
Operadores sobre interacciones. Bucle.
95
Diagramas
g de Secuencia
Operadores sobre interacciones. Regin Crtica.
96
Diagramas de Secuencia
Ejemplo
Sd Alarm Activation
assert
Activate()
ReadConfiguration()
Configuration Information Returned
seq SelfTest()
ACK
Activate()
SelfTest()
par opt Test()
opt Validate
{t..t+5}
ACK 97
ACK
Diagramas
g de Secuencia
Retorno de Valores
98
Diagramas
g de Secuencia
Tiempo
z Restricciones temporales (duracin)
La estructura interna de
ACS
ACSystem tiene
i una
interaccin
AC_UserAccess que se
invoca en este fragmento.
100
Diagramas
g de Secuencia
Descomposicin en partes
101
Diagramas
g de Secuencia Coregin: s[u]
co-regin recibe los mensajes
en cualquier orden.
102
Diagramas
g de Secuencia
Invariantes
z Invariantes.
Invariantes
104
Ejercicio
Especificar
f el diagrama de secuencia de la operacin
crearLaberinto
:JuegoLaberinto
crearLaberinto()
l bL b i t
lab:Laberinto
h1:Habitacion
h2:Habitacion
create(h1,h2)
puerta:Puerta
aadeHabitacion(h1)
aadeHabitacion(h2)
aadePuerta(puerta)
Ejercicio
Especificar el diagrama de secuencia de la operacin
crearLaberinto
public class JuegoLaberinto {
private Laberinto lab;
private boolean conVentana;
public JuegoLaberinto() {
lab = new Laberinto();
conVentana = true;
}
:JuegoLaberinto lab:Laberinto
crearLaberinto()
opt [conVentana==true]
v:Ventana
aadeVentana(v)
aadeHabitacion(h)
Ejercicio
+ mover(int actual,
int unidades):
boolean
Solucin
par tirar()
n1
tirar()
n2
ca:=casillaActual()
mover(ca,n1+n2)
movRealizado
Ejercicio
Identificar las clases relevantes y realizar el diagrama de
secuencia para el siguiente caso de uso, que corresponde a
la realizacin de una llamada desde un telfono mvil.
loop [for i = 1 to 9]
digit(code)
displayDigit
(code) emitTone
(code)
send()
connect(pno)
inUse()
Diagrama de colaboracin
equivalente?
Solucin
Visin de Conjunto de la Interaccin
z D
Define
fi las
l interacciones
i t i a ttravs
dde una
variante de los diagramas de actividad.
115
Tiempo
zMuestran
M t i t
interacciones
i d d
donde es
importante razonar sobre el tiempo.
Diagrama temporal
correspondiente
p
a la interaccin
117
Tiempo
118
Tiempo
119
Mquinas de Estados
z Statecharts
St t h t [Harel]
[H l]
120
Mquinas de Estados
digit(n)
start Partial Dial
digit(n)
Transiciones
121
Mquinas de Estados
z Un
U ttransicin
i i puede
d ttener:
{ Evento.
z Eventos temporales: tm(n)
{ Accin.
{ pre-condiciones (guardas) y post- condiciones.
z Ejemplo:
j p
Dialing
124
digit(n)
Ejercicio: Biblioteca
z Una biblioteca tiene copias de libros
libros. Estos ltimos se
caracterizan por su nombre, tipo (novela, teatro, poesa,
ensayo), editorial, ao y autor.
z Los autores se caracterizan por su nombre, nacionalidad
y fecha de nacimiento.
z Cada copia tiene un identificador
identificador, y puede estar en la
biblioteca, prestada, reservada, con retraso o en
reparacin.
z Los lectores pueden tener un mximo de 3 libros en
prstamo.
z Cada libro se ppresta un mximo de 30 das, p por cada da
de retraso, se impone una multa de dos das sin
posibilidad de coger un libro.
z Realiza el diagrama de estados de la clase copia
copia .
Solucion
Con devolver()
Con reservar(id) /
Retraso y
en Retraso usrRes = id
reser ado
reservado
reparacion
reparado() devolver() [getDate()>fp+30] [getDate()>fp+30]
reparar()
en prestar(id,fecha)/ reservar(id) /
prestado reservado
biblioteca fp=fecha usrRes = id
devolver()
prestar(id, fecha) devolver()
[usrRes==id]/
fp=fecha
t (2 days)
tm(2 d ) en
reserva
Solucion: Estados Jerrquicos
Con
Con reservar(id) / Retraso y
en Retraso usrRes = id reser ado
reservado
reparacion
reparado() [getDate()>fp+30] [getDate()>fp+30]
reparar()
en prestar(id,fecha)/ reservar(id) /
prestado reservado
biblioteca fp=fecha usrRes = id
127
Mquinas
q de Estados
Componentes Ortogonales
Incomplete
lab done
Lab1 Lab2
Final pass
Test
fail
128
Failed
Mquinas
q de Estados
Componentes Ortogonales: Utilidad
ack
transmit
Idle Message Sending
arr.
129
Mquinas
q de Estados
Componentes Ortogonales: Utilidad
ack1
Idle
d 1 Mess
ss1 trans1 Send
d1
Idle2 arr1 Idle2 Idle2
arr1
arr2 arr2 tout1 arr2
arr1
arr2 arr2
arr1
Idle1 Mess1 trans1 Send1
Mess2 arr1 Mess2 Mess2
tout1 arr1
ack1 trans2
trans2 tout2
ack2 tout2
ack2 arr1
Idle1 Mess1 z Dos
Send2 Send2
arr1
arr2 procesos 130
Mquinas
q de Estados
Componentes Ortogonales: Utilidad
ack P 1
Proc-1
transmit
Idle Message Sending
arr.
arr
time out arr
P 2
Proc-2
ack
transmit
Idle Message Sending
arr.
arr
time out arr 131
Mquinas
q de Estados
Componentes Ortogonales: Utilidad
P 1
Proc-1
ack/ channel = free
arr
transmit
Wait [channel
Idle Message Sending
arr channel ==free ] /
channel = busy
arr
time out / channel = free
P 2
Proc-2
ack/ channel = free
arr
transmit
Wait [channel
Idle Message Sending
arr channel ==free ] /
channel = busy
arr
time out / channel = free 132
Mquinas de Estados
Pseudo
P d - estados:
t d
z Fork / Join.
z Initial.
z Deep History / Shallow History. H* H
z Junction.
z Choice.
z Entry / Exit point.
z Terminate.
A1 A2
Setup Cleanup
B1 B2
133
Fork Join
Mquinas
q de Estados
Estado Histrico
B
H
t4
B1 B2
I
t1: ev0 B12
t2
B21 t3
B11
t3: ev1
t4: ev2
134
Mquinas
q de Estados
Estado Histrico (ii)
B
H
H*
t4
B1 B2
I
t1: ev0 B12
t2
B21 t3
B11
t3: ev1
t4: ev2
135
Mquinas
q de Estados
Estado Histrico. Ejercicio.
136
Mquinas
q de Estados
Estado Histrico. Ejercicio. Solucin
On
power H
Radio Tape
mode
M d l ell mismo
Modelar i sistema
i t sin
i usar estado
t d histrico.
hi t i
137
Mquinas
q de Estados
Estado Histrico. Ejercicio. Solucin (ii)
Standby On
power
lastCD CD mode
power
mode
power
lastRadio
power
Radio Tape
mode
lastTape power
power
138
Mquinas de Estados
Pseudo - estados: Junction.
139
Mquinas de Estados
Puntos de Entrada/Salida, Estados Sub-Mquina
140
Ejemplo. Reproductor CDs.
ReproductorCD
p
I
InterfazUsuario
f U i Li C i
ListaCanciones
- Tpausa: Tiempo 1 disco
... ...
- NumActual: Entero 1
... + obtenerCancion(Orden: Entero):
+ stop()
t () Cancion
+ pause() + numCanciones(): Entero
+ play() 1 ....
+ eject()
j ()
+ apagar()
+ finCancion()
- buscaDisco(d: InfoDisco): pista 0..*
1
ListaCanciones Cancion
player 1 actual
- titulo: Cadena
driver 1 - duracion: Tiempo
p
ControladorCD - Artista: Cadena
- Orden: Entero
...
...
+ play(act:
l ( t Cancion,
C i desde: d d Tiempo)
Ti )
+ stop() : Tiempo
+ detectarDisco() : InfoDisco
+ detectarAbierto()
() : Logico
g
+ abrir()
+ cerrar() 141
+ apagar()
Diagrama de estados para la clase
ReproductorCD
p
[(info=driver.detectarDisco())!=NULL]/
[not driver. disco=buscaDisco(info)
detectarAbierto()] NumActual = 1; [else]/ driver.stop();
actual = disco.obtenerCancion(ordenActual)
( ) NumActual=1;;
actual= disco.obtenerCancion(NumActual)
[drriver.detectarrAbierto()]
Cerrado
endOfSong()/
NumActual+=1
driver.cerrarr ()
Play()/
driver.abrir (()
[NumActual<=
pausa)
eject
disco.numCanciones()]/
p()
Tpausa = driver.stop
driver.pllay(actual, Tp
d
e
actual=
t l
eject ()/
Abierto disco.obtenerCancion
driver.stop(); stop()/
(NumActual)
driver.abrir() driver.stop();
driver.play(actual,0)
NumActual=11
NumActual
Pause())/
actual=
Play()/
disco.obtenerCancion(NumActual)
Pause
apagar ()/
driver.stop();
142
driver.apagar()
Mquinas de Estados de Protocolo
z Asociadas a un clasificador,, interface o p
puerto.
z M
Mquinas
i d estado
de t d declarativas:
d l ti E
Especifican
ifi l
las
transiciones legales (no su condicin) para cada
operacin. Contrato para el usuario del clasificador.
144
Mquinas
q de Estados
Generalizacin
z Una mquina de estados es generalizable
generalizable.
145
Mquinas
q de Estados
Generalizacin: Ejemplo, cajero autmatico.
146
Mquinas
q de Estados
Generalizacin: Ejemplo, cajero autmatico.
Extensin:
E i posibilidad
ibilid d de
d
teclear el importe a
retirar, y de que este se
pueda rechazar.
147
Ejercicio
z M
Modelar
d l ell comportamiento
t i t reactivo ti de
d un reloj
l j de
d pulsera.
l
z El valor del tiempo se debe actualizar cada segundo, incluso cuando no se
muestra (p.ej. crono encendido).
z El botn de la parte superior derecha enciende la luz, luz que se mantiene
encendida tanto como el botn est apretado, una vez que se suelta, la luz
est encendida durante 2 segundos ms y se apaga.
z El botn superior izquierdo alterna entre el modo de crono y de reloj. El
sistema empieza en el modo reloj,
reloj en el que se muestra la hora en formato
HH:MM:SS.
z En el modo crono, el tiempo discurrido se muestra en formato MM:SS:CC
((CC son centsimas de segundo). g ) Inicialmente el crono empieza
p en
00:00:00. El botn inferior derecho se usa para activar el crono. ste
se
actualiza en incrementos de 1/100 segundos. Presionando el botn inferior
derecho pausa o continua el crono (si el reloj est en modo crono).
Pulsando el botn inferior izquierdo
q resetea el crono a 00:00:00 si el relojj
est en modo crono y el crono ha sido pausado antes. El crono continua
corriendo (si est corriendo) o mantiene su valor (si est en pausa) incluso
cuando el reloj est en un modo de display distinto (por ejemplo, cuando se
muestra la hora).
148
Ejercicio
z Interface provisto por el controlador:
{ getTime() : Devuelve la hora actual.
{ refreshTimeDisplay() : Repinta la hora en el visor con la hora interna actual. El
visor no necesita limpiarse antes de llamar a esta funcin. Por ejemplo, si se est
visualizando el crono, se borrar antes de pintar la hora.
{ refreshChronoDisplay() : ver refreshTimeDisplay().
{ resetChrono() : Resetea el crono interno a 00:00:00.
{ increaseTime() : Incrementa la hora en un segundo. Los minutos y horas se
modificarn adecuademente, (por ejemplo, si se llama a increaseTime () a las
11:59:59, la nueva hora ser 12:00:00).
{ increaseChrono () : Incrementa el crono en 1/100 segundos.
{ setLight() : Enciende la luz del visor.
{ unsetLight() : Apaga la luz del visor.
visor
z Eventos de botones recibidos:
{ topRightPressed.
{ topRightReleased.
p g
{ topLeftPressed.
{ topLeftReleased.
{ bottomRightPressed.
{ bottomRightReleased
bottomRightReleased.
{ bottomLeftPressed. 149
{ bottomRightReleased.
Posible Solucin.
Solucin
150
Mquinas de Estados
Ejemplo. Herramienta de Dibujo (i)
/setup widgets
setup
t bibindings
di
Active
wmQuit
exitButton
151
Mquinas
q de Estados
Ejemplo. Herramienta de Dibujo (ii)
Shapes Canvas
Modes
152
Mquinas
q de Estados
Ejemplo. Herramienta de Dibujo (iii)
Shapes
shapeSelected(Triangle)
shapeSelected(Rectangle) shapeSelected(Circle)
Triangle
shapeSelected(Triangle)
p ( g )
shapeSelected(Circle)
h S l t d(Ci l )
Rectangle Circle
shapeSelected(Rectangle)
153
Mquinas
q de Estados
Ejemplo. Herramienta de Dibujo (iv)
Modes
modeSelect(Insert)/
Canvas.Insert
modeSelect(Delete)/
Canvas.Delete
Insert
modeSelect(Move)/
Canvas.Move
modeSelect(Insert)/
Canvas.Insert
modeSelect(Delete)/
( )/
Canvas.Delete
Move Delete
modeSelect(Move)/
C
Canvas.Move
M
154
Mquinas de Estados
Ejemplo Herramienta de Dibujo (v)
Ejemplo.
Canvas
[Shapes in Circle]/
Inserting
g
d
drawCircle(x,y)
Ci l ( )
[Shapes in Rectangle]/
Idle drawRectangle(x,y)
[Shapes in Triangle]/
onDrawingMouse1Press(x,y) drawTriangle(x,y)
C
delete insert
move insert
Deleting
Moving
Idle
onDrawingMouse1Press(x,y)/
movingObject=find_closest(x,y)
i Obj t fi d l t( ) onDrawingMouse1Click(x,y)/
D i M 1Cli k( )/
find_closest(x,y).del()
onDrawingMouse1Release(x,y)
Idle Moving
move
onDrawingMouse1Motion(x,y)/
oldCoords=coords(movingObject)
delete 155
move(movingObject, distance(oldCoords, (x,y)))
Diagramas de Actividad
z Refinamiento de los diagramas de estados.
estados
Drink
[no cola]
157
Diagramas de Actividad
Swimlanes
158
Diagramas de Actividad
Pesos en los enlaces
159
Diagramas de Actividad
Parmetros y Eventos Temporales
Parmetros/Pins/Excepciones
E
Eventos
t Temporales
T l
160
Diagramas de Actividad
Excepciones/Pins
161
Diagramas de Actividad
Regiones de
Expansin
z Regiones de expansin,
procesamiento paralelo
(tambin iterative y
streaming).
t i )
162
Diagramas de Actividad
Regiones Interrumpibles
163
Diagramas de Actividad
Particiones
164
Diagramas de Actividad
Flujos de Objetos: Objectflows
165
Indice
z til p
para obtener modelos p
precisos ((no anotaciones en
lenguaje natural).
z Restriccin OCL:
Context Flight
168
Inv: passengers->size() <= plane.numberOfSeats
Ejemplos
Casa Persona
0 *
0.. 1 numSegSoc:
S S Id
Identificador
ifi d
valor: Dinero
casas propietario sueldo: Dinero
Reglas adicionales:
1. Una persona puede tener una hipoteca sobre una casa slo si es el
propietario.
2.
2 La fecha de inicio de cada hipoteca ha de ser menor que la de final
final.
3. El nmero de la seguridad social de cada persona ha de ser nico.
4. Slo es posible contratar una nueva hipoteca si el salario de la persona
es suficiente.
5. Slo es posible contratar una nueva hipoteca si el valor de la casa aval
es suficiente. 169
Ejemplos Las restricciones OCL se escriben
en el contexto de una instancia de
un tipo especfico.
Context
C t t Hipoteca
Hi t
Inv: aval.propietario = contratante
Context Hipoteca
Inv: fechaInicio < fechaFin self hace referencia a la instancia
del contexto.
Context Persona
Inv: Persona::allInstances()->isUnique(numSegSoc)
170
Ejemplos
Los PCs pueden conectarse con un nico Hub, los servidores con uno o varios
Context PC
Inv: cable_equipo->size() = 1
Context Servidor
Inv: cable_equipo->size() >= 1 171
Ejercicio
Un Hub no puede conectarse consigo mismo a travs de
un puerto
Context Cable_Hubs
Inv: Puerto_Hub.hub->asSet()->size() = 2
172
Dnde usar OCL?
z Clases:
{ Invariantes. Expresin OCL de tipo booleano, la expresin debe
ser true para cada instancia de la clase en todo momento de la
ejecucin.
ejecucin
z Operaciones:
{ Pre-condicin. Condicin que debe ser verdadera para ejecutar
l operacin
la i en una d
determinada
t i d iinstancia.
t i
{ Post-condicin. Condicin que debe ser verdadera al terminar
una operacin.
{ Body.
B d Especificacin
E ifi i del
d l cuerpo d
de una operacin
i dde ti
tipo query.
z Atributos y finales de asociacin:
{ Valor inicial. expresin
p p
para dar el valor inicial a un atributo o
final de asociacin. Se evalua al crear la instancia.
{ Valor derivado.
z Transiciones de mquinas de estados:
{ Guarda.
Ejemplos
parents
0..*
children 0..*
174
Ejemplos
z Especificacin
E ifi i ddell valor
l iinicial
i i lyd
derivado
i d d de atributos/association
t ib t / i ti ends:
d
context Person::income : Integer
init: parents.income->sum() * 1% -- pocket allowance
d i d if self.age
derived:if lf < 18
then parents.income->sum() * 1% -- pocket allowance
else job.salary -- income from regular job
endif
z Subexpresiones (let):
context Person inv:
let income : Integer = self.job.salary->sum() in
if isUnemployed then
income < 100
else
income >= 100
endif
175
Ejemplos Colecciones.
Ejemplos. Colecciones
context
t t Company
C i
inv:
self.employee->select(age < 25)->notEmpty()
context Company
inv: self.employee->forAll( isUnemployed = False )
inv: self.employee->forAll( p | p.isUnemployed = False )
i
inv: self.employee->forAll(
lf l >f All( p : PPerson | p.isUnemployed
i U l d=FFalse
l )
177
Ejemplos Colecciones.
Ejemplos. Colecciones
exists(expr): devuelve true si al menos hay un elemento en la
coleccin para el que expr es verdadera.
verdadera
coleccion->exists( expresion-logica )
coleccion->exists( v | expresion-logica-con-v )
coleccion->exists( v : Type | expresion-logica-con-v )
context Company
inv: self.employee->exists( age > 50 )
inv: self.employee->exists( p | p.age > 50 )
inv: self.employee->exists( p : Person | p.age > 50 )
181
Herramientas II
Herramientas,
z Soporte a la navegacin
{Vistas compuestas
{Elaboracin de conexiones entre informacin
relacionada
{B
{Bsquedad
{Visin con diferentes niveles de granularidad
(expansin y contraccin de partes de la vista)
{Filtros
{Operaciones sobre componentes de la vista
182
Herramientas III
Herramientas,
z Soporte al trabajo multiusuario
{ Bloqueo de informacin
{ Trabajo
j colaborativo
z Generacin de cdigo
{ Esqueletos con informacin esttica (clases)
{ Generacin a partir de diagramas de comportamiento
(mquinas de estados).
{ Integracin con lenguajes especiales (SQL, )
{ Desarrollo Dirigido por Modelos (MDA
(MDA,
http://www.omg.org/mda/)
z Ingeniera inversa
{ Construccin de un modelo de diseo a partir de cdigo
{ Diseo iterativo: incorporacin al modelo de detalles
implementados
183
Herramientas IV
Herramientas,
184
Herramientas V
Herramientas,
185
Poseidon for UML
Indice
Comprar un
cuadro
Vendedor
Vender un
cuadro
Agente
Galera
Producir Informe
C
Comprador
d
Actualizar
Coeficiente de
moda
188
Diagrama Comprar
p una
Obra maestra
refinado
Comprar una
O
Obra representativa
Vendedor
Comprar una
Obra representativa
Vender un
cuadro
Producir Informe
tendencias
Actualizar
189
Coeficiente de moda
Caso de uso: comprar una obra maestra
Actores primarios:
p
Agente Galera, vendedor
Interesados y Objetivos:
Agente: quiere obtener una recomendacin lo ms acertada posible del
precio mximo recomendado de manera rpida.
Vendedor: quiere vender el cuadro a un precio razonable de manera rpida.
Precondiciones:
El agente ha entrado en la aplicacin.
Garanta de xito (post-condiciones):
Se registra la venta.
E
Escenarioi Principal
P i i l ded xito:
it
1. El agente introduce la descripcin del cuadro.
2. El sistema busca el cuadro ms parecido del mismo autor.
3 El sistema presenta el precio recomendado
3. recomendado.
4. El agente hace una propuesta por debajo del precio recomendado, y el
vendedor acepta la oferta.
5 El agente introduce informacin de la venta
5. venta.
Extensiones:
2a. No hay ningn cuadro parecido del mismo autor, as que el sistema
no presenta una recomendacin
recomendacin.
4a. El vendedor no acepta la oferta y la venta no se produce. 190
Diagrama de clases inicial Cuadro
nombreDelArtista
apellidosDelArtista
Sistema
Si t G
Gestion
ti Titulo
Galeria AoCreacion
Alto
Ancho
Tecnica
Tema
Obra maestra
192
: GUI : Calcular Precio
Vendedor Agente : Cuadro
Obra Maestra
Galera Subastado
1: proporcionar
datos obra 2: transferir detalles
maestra : Obra maestra
3: crear objeto
nuevo
Datos
4: devolver objeto
proporcionados nuevo
por el vendedor 5: buscar cuadros
subastados
6: devolver cuadro
7: proporcionar
8: mostrar subastado
precio
precio
9: proporcionar
detalles del 10: transferir detalles
vendedor 11: solicitar
vendedor
actualizacin
193
Un ejemplo completo para
todos los diagramas
194
195
196
197
0
1
11
1.1
2
2.1
3
3.1 3.1.1
3.2
3.2.1
198
199
200
201
202
203
Indice
OCL
{ Warmer,
Warmer Kleppe.
Kleppe The Object Constraint Language 2nd Edition
Edition. Getting your
Models Ready for MDA. Addison-Wesley. 2003. 205
z D
David
id Harel
H l and d Eran
E G
Gery. E
Executable
bl object
bj
modeling with statecharts. IEEE Computer, pages 31-42,
1997.
206