Documentos de Académico
Documentos de Profesional
Documentos de Cultura
5 UML Rev1
5 UML Rev1
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
Indice
Casos de Uso
z Describen
D
ib qu
h
hace ell sistema
i t
d
desde
d ell punto
t
de vista de un observador externo.
z Ponen nfasis en qu hace el sistema, no en
cmo lo hace.
z Un escenario es una instancia particular de un
diagrama de casos de uso.
{Ejemplo de lo que ocurre cuando alguien interacta
con el sistema
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.
z Escenario (instancia de caso de uso) =
Secuencia de acciones e interacciones entre los
actores y el sistema.
z Caso de Uso = Coleccin de escenarios (xito y
fracaso) que describen actores que usan el
sistema para conseguir un objetivo.
5
Casos de Uso
zP
zPasos:
{ Identificar los lmites del sistema.
{ Identificar los actores principales.
{ Para cada uno, identificar sus objetivos.
{ Definir casos de uso que satisfagan sus
objetivos.
6
Ejemplo
Aplicacin para una Galera de Arte
Te encargan realizar una aplicacin para la compra-venta de cuadros. En cuanto a la compra de cuadros, una vez
que el agente introduce unos datos bsicos sobre el cuadro,
cuadro el sistema debe proporcionar el precio recomendado
que el agente de la galera debera pagar. Si el vendedor del cuadro acepta la oferta, entonces el agente de la
galera introduce ms detalles (sobre el vendedor del cuadro y la venta).
y el nombre y apellidos
p
del artista,, el ttulo y fecha de la obra,, sus dimensiones,, la tcnica
Los datos bsicos incluyen
(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.
Si el cuadro finalmente se compra, se introducen datos adicionales.
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
compras
Agente
Galera
Comprador
Producir Informe
ventas
Producir Informe
tendencias
Actualizar
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
agente
e hace
ace u
una
ap
propuesta
opues a po
por debajo de
del p
precio
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 h
hay ningn
i cuadro
d parecido
id d
dell 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
cajero
Procesar
Devoluciones
actor
Analizador de
A ti id d de
Actividad
d
Ventas
Administrador
del sistema
actor
Analizar
Actividad
Calculador de
Impuestos
p
...
Gestionar
Seguridad
Gestionar
Usuarios
Servicio
de Autorizacin
de Pagos
actor
Sistema de
contabilidad
10
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>>
Patient
Request Medication
<<extend>>
Defer Payment
Doctor
Pay Bill
Extensions Points
More Treatment
Clerk
Bill Insurance
12
Ejemplo
Gestin de Proyectos
13
Casos de Uso
z Son tiles en tres reas:
{ Especificacin de requisitos
{ Comunicacin con los clientes
z Su simplicidad los convierte en excelentes medios de
comunicacin
Indice
z Diagramas de Casos de Uso.
z Diagramas de Estructura.
z
z
z
z
z
{Clases y Objetos.
{Componentes.
{Estructuras Compuestas.
{Despliegue.
{Paquetes.
q
Diagramas de Comportamiento.
OCL.
Herramientas.
Ejemplos.
Bibliografa.
15
Clases y Objetos
z Los diagramas de Clases y de Objetos son los
principales modos de representar los aspectos
estructurales en UML.
z Diagramas de clases. Estructura del sistema.
{ Clases.
Clases
z Atributos: Tipos, valores iniciales.
z Operaciones: visibilidad.
Clases y Objetos
Elemento
Diagrama
ag a a de
clases
Carbono
Diagrama de
Di
d
objetos
:Hidrgeno
Hidrgeno
:Hidrgeno
:Hidrgeno
:Carbono
:Carbono
:Hidrgeno
:Hidrgeno
:Hidrgeno
17
Clases y Objetos
Nombre
de la clase
visibilidad
Circulo
-radio: double
-centrox:
t
double
d bl
-centroy: double
+Area(): double
+Permetro(): double
Nombre
d l objeto
del
bj
En cursiva si es
abstracta
unCirculo: Circulo
radio = 3.4
centrox = 2.0
20
centroy = 2.0
At ib t
Atributos
Operaciones
Clase
del objeto
Valores de
los atributos
18
Clases
Atributos
z Notacin p
para atributos:
[visibilidad] [/] nombre [: tipo] [multiplicidad] [= valor] [{ propiedad }]
z Visibilidad (opcional):
{
{
{
{
Pblica: +
Privada: Protegida: #
Paquete: ~
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
[[visibilidad]] nombre ( [lista-parametros]
[
p
] ) : [{propiedad}]
[{p p
}]
z Visibilidad (opcional).
z nombre del mtodo
z lista de parmetros formales, separados por coma:
Asociaciones
Composicin
z Un Crculo contiene un Punto
z Se representa con una Composicin
Crculo
Punto
Asociaciones
Navegacin, Roles, Cardinalidad
centro
z Ejemplos
Ej
l de
d cardinalidad:
di lid d
1..*
0..*
0..
0..1
1,2,4
3
navegacin
Punto
zN
zNavegacin:
i
Unidireccional
Bidireccional
No especificado.
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()
Cliente
Empleado
subordinados
0..*
- sueldo_bruto
- telefono_de_contacto
nombre_empresa
+ mostrar
t
()
+ calcular_salario_neto()
1..*
empleados
+mostrar()
0..* clientes
1..*
Directivo
0..*
- categoria
+ mostrar ()
Empresa
- nombre
b
26
Asociaciones: Agregacin
zCuando la relacin todo/parte no es tan
g g
fuerte,, se utiliza Agregacin
Ventana
susFiguras
0 *
0..
Figura
Asociaciones y Dependencia.
Dependencia
z Existen relaciones de conocimiento entre clases que no
implican una relacin todo/parte
Cliente
cuentas
titular
0 *
0..
1 *
1..
Cuenta
susFiguras
Figura
0..*
Draw(ContextoDibujo)
suContexto
ContextoDibujo
Dependencia
28
Clases Asociativas
zAsociacin con atributos propios.
Nombre asociacin
Empleado
Persona
testigos 2
Matrimonio
fecha
Clase Asociativa
0..*
29
Clases y Objetos
j
Estilo
Ejemplo
Cliente
nombre
direccin
Orden
1
0..*
Pago
1..*
monto
fecha
estado
calcImpuesto
calcTotal
calcPesoTotal
lnea 1..*
Crdito
fecha
nmero
tipo
autorizado
Efectivo
moneda
Cheque
Item
DetalleOrden
nombre
identifBanco
cantidad
tipoImpuesto
autorizado
calcSubtotal
calcPeso
0 *
0..
peso
descripcin
precioPorCantidad
obtenerPeso
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.
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
E i
Equipo
equipo
pichichi
J
Jugador
d
34
Ms sobre asociaciones
Adornos en asociaciones y fin de asociacin.
zA
Asociaciones
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
0..1
{ordered}
d
1
0..1
{subsets b}
z Para un objeto de tipo C, la coleccin d es un subconjunto de la coleccin b.
36
Ms sobre asociaciones
Asociaciones Cualificadas
z Un cualificador declara una particin del conjunto de instancias asociadas con
respecto a la instancia cualificada.
Banco
Tablero
Ajedrez
NumCuenta
fila: Fila
col: Colum
*
0..1
Persona
1
1
Casilla
Pre y Post
PrePost- Condiciones,
Condiciones Notas
pre-condicin
body-condition
post-condicin
38
Interfaces
Clase
<<interface>>
MiInterfaz
Clase
MiInterfaz
mtodos
Clase
MiInterfaz
39
Plantillas
{T -> Point
{K -> 10
40
Ejercicio
Examen Junio 2008.
Realiza el diseo de una aplicacin para la gestin de pedidos. La aplicacin deber
manejar clientes (se guarda su nombre, direccin, telfono y e-mail), que pueden
realizar p
pedidos de p
productos,, de los cuales se anota la cantidad en stock. Un
cliente puede tener una o varias cuentas para el pago de los pedidos. Cada
cuenta est asociada a una tarjeta de crdito, y tiene una cierta cantidad
disponible de dinero, que el cliente debe aumentar peridicamente para poder
realizar nuevos pedidos.
Un cliente puede empezar a realizar un pedido slo si tiene alguna cuenta con dinero
disponible. Al realizar un pedido, un cliente puede agruparlos en pedidos simples
o compuestos. Los pedidos simples estn asociados a una sola cuenta de pago y
(por restricciones en la distribucin) contienen un mximo de 20 unidades del
mismo o distinto tipo de producto. A su vez, un pedido compuesto contiene dos o
ms pedidos, que pueden ser simples o compuestos. Como es de esperar, el
sistema debe garantizar que todos los pedidos simples que componen un pedido
compuesto se paguen con cuentas del mismo cliente.
cliente Adems,
Adems slo es posible
realizar peticiones de productos en stock.
Existe una clase (de la cual debe haber una nica instancia en la aplicacin)
responsable
p
del cobro, orden de distribucin y confirmacin de los p
pedidos. El
cobro de los pedidos se hace una vez al da, y el proceso consiste en comprobar
todos los pedidos pendientes de cobro, y cobrarlos de la cuenta de pago
correspondiente. Si una cuenta no tiene suficiente dinero, el pedido se rechaza (si
es p
parte de un p
pedido compuesto,
p
, se rechaza el p
pedido entero).
) Una vez q
que el
pedido est listo para servirse, se ordena su distribucin, y una vez entregado,
41
pasa a estar confirmado.
Se pide un diagrama de clases de diseo.
Solucin
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 Compuesto:
inv: self.pedidos_simples->cuenta->cliente->asSet()->size() = 1
Context Pedido:
inv: self.t_productos.num->sum() <= 20
Context aadir_pedido(p:
aadir pedido(p: Producto
Producto, num: int):
pre: p.stock>=num
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, con retraso o en reparacin.
z Los lectores pueden tener un mximo de 3 libros en
prstamo.
prstamo
z Cada libro se presta un mximo de 30 das, por cada da
de retraso, se impone
p
una multa de dos das sin
posibilidad de coger un nuevo libro.
z Realiza un diagrama de clases y aade los mtodos
necesarios para realizar el prestamo y devolucin de
libros.
Libro
Copia
- id : Identifier
ejemplar
- estado: estadoCopia 1..*
0..3 prestamos
- titulo : string
libro - tipo: tipoLibro
1 - editorial: string
- anyo: int
i t
1..* obras
Prestamo
fechas - inicio: Date
- fin: Date
1 autor
Autor
0..1 lector
Lector
- nSocio : Identifier
- nombre: string
- telefono: string
- direccion: string
+ devolver(id: Identifier, fechaAct: Date) 1
{precondition: prestamos.notEmpty()}
+ prestar(id: Identifier, fechaAct: Date)
{precondition: multa==0}
- multar(dias : int)
- nombre:
b string
ti
- nacionalidad: string
- fechaNacimiento: Date
<<enumeration>>
tipoLibro
novela
teatro
poesia
i
ensayo
multa 0..1
Multa
- fInicio: Date
- fFin: Date
<<enumeration>>
estadoCopia
prestado
retraso
biblioteca
reparacion
Persona
- nombre
- edad
+ mostrar()
Objetos
Cliente
Empleado
subordinados
- sueldo_bruto
+ mostrar ()
+ calcular_salario_neto()
l l
l i
t ()
empleados
Directivo
- categoria
+ mostrar ()
e2 : Empleado
nombre=Luis
edad=35
d d 35
sueldo_bruto=36000
categoria=C1
+mostrar()
clientes
Empresa
- nombre
e1 : Empleado
- nombre=Mara
- edad
edad=25
25
- sueldo_bruto=36000
empleados
subordinados
d1 : Directivo
- nombre_empresa
- telefono_de_contacto
- nombre=Pedro
- edad
edad=23
23
- sueldo_bruto=30000
empleados
empleados
Empresa
- nombre=HGJ
clientes
c1 : Cliente
-
nombre=Luis
edad=35
nombre_empresa=Macroware
telefono_de_contacto=91555666
46
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
z Servicios que provee y requiere (interfaces).
z Componentes lgicos (componentes de negocio,
de proceso) y fsicos (EJB, CORBA, COM+, .NET,
)
47
Componentes
Interfaces
que ofrece
Interfaces
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)
z Instancias en tiempo de ejecucin que colaboran
a travs de enlaces para alcanzar objetivos
comunes.
z Colaboraciones: a travs de roles.
z Se aade a las clases estructura internas y
puertos.
50
Estructuras Compuestas
Estructura interna de una clase.
clase
51
Estructuras Compuestas
Alternativa a relaciones de composicin
A li ti
Application
Window
Button
Application
2
Window
Button
52
Estructuras Compuestas
Estructura interna de una clase. Constructor.
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 d
de un sistema.
i t
z Representa la asignacin de artefactos software a nodos
nodos.
z Nodos = elementos hardware, o entornos
de ejecucin software.
z Artefactos = elementos concretos (p.e.:
ficheros) que son el resultado del proceso
de desarrollo.
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.
z Los diagramas de paquetes muestran la estructura de alto
nivel de la aplicacin.
aplicacin
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
z
z
z
Diagramas de Comunicacin.
Diagramas de Secuencia.
Diagramas de visin de conjunto de la interaccin.
Diagramas de tiempo.
{ Diagramas de Estados.
{ Diagramas de Actividad.
z
z
z
z
OCL
Herramientas.
Ejemplos
Ejemplos.
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
63
Diagramas de Interaccin
z El patrn
t
d
de
mensajes
j
d t
dentro
colaboracin es una interaccin:
d
de
una
Diagramas de Interaccin
z Diagrama de Comunicacin
{ Muestra un contexto y una interaccin.
interaccin
z Diagrama
Di
d Secuencia
de
S
i
{Representacin explcita de
comunicaciones, eje temporal.
la
secuencia
de
Diagramas de Interaccin
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.
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.
z Puede tambin representar la secuencia de
mensajes
{ Especifica el orden relativo mediante nmeros
Diagramas de Comunicacin
participantes
p
p
: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
/Subject :CallQueue
{
{Observer.reading=length(Subject.queue)
g
g (
j
q
)
and
Observer.range = (0..Subject.capacity)}
69
Diagramas de Comunicacin
Llamadas anidadas:
realizarPago(cantidad)
:Registro
1: realizarPago(cantidad)
:Venta
1.1: crear(cantidad)
:Pago
Iteraciones:
Ejectuar()
: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
z Una operacin sobre cada instancia requiere
d mensajes:
dos
j
{Iteracin para obtener referencias a las instancias
individuales
{Mensaje a cada instancia, usando la referencia
temporal
71
Diagramas
g
de Comunicacin
Multiobjetos.
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()
msg1()
a:ClaseA
1a [test]: msg2()
1b
b [not
[ ot test]:
test] msg4()
sg ()
d:ClaseD
1b 1 msg5()
1b.1:
5()
b:ClaseB
1a.1:
a
msg3()
sg3()
c:ClaseC
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 p
presta 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))
:Lector
prestamos
1.1: dev:=remove(id)
:Copia
multa:Multa
lt M lt
{new}
multa:Multa
1.2: retraso:=getRetraso(fecha)
dev:Copia
Solucin
1.3 [retraso>0]: multar(retraso)
1: devolver(id,
( , fecha))
:Lector
prestamos
1.1: fec:=remove(id)
:Copia
multa:Multa
lt M lt
{new}
multa:Multa
fechas
1.2: retraso:=getRetraso(fecha)
fec:Fecha
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 h
hasta
t que no ocurran llos
mensajes en la lista
z Orden en la secuencia
{
{
{
{
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*[i:=1..n]: drawSegment(i)
wire
wire:Wire
<< self >>
i-1
1 1 1 r0:=
1.1.1a:
0 position()
i i ()
left:Bead
1.1.3.1:add(self)
contents {new}
1.1.2: create(r0,r1)
1.1.3: display(window)
line
:Line
Li {new}
{
}
1 1 1b r1:=
1.1.1b:
1 position()
i i ()
right:Bead
g
79
Diagramas
g
de Comunicacin
Objetos Activos.
zPoseen
P
su propio
i hilo
hil de
d control
t l
zUn objeto pasivo slo almacena datos
{ Puede enviar mensajes mientras procesa un
pedido (mensaje) que haya recibido
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
currentJob:TransferJob
A2,B2/2:completed(job)
1:start(job)
:FactoryJobMgr
<<local>> job
A2:completed
B2:completed
1/B1:start(job)
:Robot
1/A1:start(job)
:Oven
81
Diagramas
g
de Comunicacin
Objetos Activos. Ejemplo.
Diagramas de Secuencia
z R
Representa
t conjunto
j t de
d mensajes
j entre
t roles
l
(o instancias) en una interaccin
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
Diagramas de Secuencia
z Traza: secuencia de ocurrencias de eventos <e1 e2 ...en>
z La semntica de una interaccin es un par de conjuntos
de trazas (vlidas e invlidas) [P, I].
zP
Pueden
d
existir
i ti trazas
t
no incluidas
i l id
en los
l
d
dos
conjuntos
j t
anteriores.
z Equivalencia de interacciones, si sus conjuntos de trazas
son iguales.
z Una interaccin se puede especializar: se aaden ms
j
trazas al conjunto.
84
Diagramas de Secuencia
:caller
:exchange
:receiver
a: lift receiver
b: dial tone
Objetos
Focos de
Control
c: dial
di l digit
di it
...
d: route
ringing tone
Mensajes
phone rings
answer phone
stop tone
stop ringing
85
Diagramas de Secuencia
sd Authenticate User
ac:
Authentication
C
Controller
ll
LoginPage:
Servlet
ds:
UserData
S i
Service
CurrentUser:
UserData
validateCredentials(Dan, b4_23)
restoreUserData(Dan)
create(Dan,Administrator)
currentUser
currentUser
86
Diagramas de Secuencia
guarda
operador
marco
preferente
:Distribuidor
Di t ib id
:Pedido
usual
:Distribuidor
Di t ib id
entregar()
loop
alt
[else]
entregar()
procedure entregar()
foreach producto:
if p
producto.value>10000
preferente.entregar()
else
usual.entregar()
end if
end for
end procedure
Diagramas de Secuencia
Gate (formal),
con nombre
out Unlock
out_Unlock
88
Diagramas de Secuencia
Referencias (Ocurrencias de Interacciones)
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
a
nica
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.
Diagramas
g
de Secuencia
Operadores sobre interacciones. Alternativa.
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
T = now
Sd Alarm Activation
:SystemHandler
assert
:CellHandler
:Sensor
:Alarm
:CellConfigurationInformation
Activate()
ReadConfiguration()
Configuration Information Returned
seq
SelfTest()
ACK
Activate()
SelfTest()
par
opt
{t..t+5}
opt
ACK
ACK
Test()
Validate
97
Diagramas
g
de Secuencia
Retorno de Valores
98
Diagramas
g
de Secuencia
Tiempo
z Restricciones temporales (duracin)
Diagramas
g
de Secuencia
Descomposicin en partes
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
co-regin
Coregin: s[u]
recibe los mensajes
en cualquier orden.
102
Diagramas
g
de Secuencia
Invariantes
z Invariantes.
Invariantes
Diagramas
g
de Secuencia
Binding
104
Ejercicio
Especificar
f
el diagrama de secuencia de la operacin
crearLaberinto
public class JuegoLaberinto {
public Laberinto crearLaberinto () {
Laberinto lab = new Laberinto();
Habitacion h1 = new Habitacion();
Habitacion h2 = new Habitacion();
Puerta puerta = new Puerta(h1, h2);
lab.aadeHabitacion(h1);
lab.aadeHabitacion(h2);
h1.aadePuerta(puerta);
return lab;
}
}
Solucin
: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;
}
public void crearLaberinto () {
Habitacion h;
for (int i=0; i<10; i++) {
h = new Habitacion();
if (conVentana == true)
h.aadeVentana(new Ventana());
lab.aadeHabitacion(h);
}
}
Solucin
:JuegoLaberinto
lab:Laberinto
crearLaberinto()
loop
[for i = 1 to 10]
h:Habitacion
opt
[conVentana==true]
v:Ventana
aadeVentana(v)
aadeHabitacion(h)
Ejercicio
Especificar el diagrama de secuencia de la operacin
realizarJugada definida en la clase Jugador, para el juego del
parchs
Jugador
- casillaActual:
ill A t l iintt
+ realizarJugada(): void
+ casillaActual(): int
Dado
+ tirar(): int
*
1
Tablero
+ mover(int actual,
int unidades):
boolean
Solucin
d1:Dado
:Jugador
d2:Dado
:Tablero
realizarJugada()
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.
z El usuario pulsa los dgitos del nmero de telfono
z Para cada dgito
g
{ la pantalla se actualiza para aadir el dgito marcado
{ se emite un tono por el receptor
z
z
z
z
z
Solucin
:Button
loop
:Dialer
:Display
:Speaker
send:Button
:CellularRadio
[for i = 1 to 9]
digit(code)
displayDigit
(code)
emitTone
(code)
send()
connect(pno)
inUse()
Diagrama de colaboracin
equivalente?
Solucin
115
Tiempo
zMuestran
M
t
i t
interacciones
i
d d
donde
importante razonar sobre el tiempo.
es
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]
z Representan el comportamiento de entidades ( p
p.e.
e
instancias de clases).
z Especifican reaccin ante eventos
z Describen posibles secuencias de estados y acciones
por las que pueden pasar las entidades.
z De comportamiento vs. de protocolo.
120
Mquinas de Estados
Comienzo
Fin
Estados
start
digit(n)
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.
A1
A2
Mquinas de Estados
z Un estado tiene:
{ Nombre
{ Transiciones internas: lista de acciones ejecutadas en ese
estado (entry/exit/do)
(
y
)
z Ejemplo:
j p
Typing Password
Nombre
entry/set
t / t echo
h invisible
i i ibl
exit/set echo normal
character/handle character
help/display help
Transiciones
internas
123
Mquinas de Estados
Start
entry/start dial tone
exit/stop dial tone
digit(n)
Estado compuesto:
Partial Dial
entry/number.append(n)
digit(n)
Dialing
Start
entry/start
y
dial tone
exit/stop dial tone
digit(n)
Partial Dial
[number.isValid()]
entry/number.append(n)
y
pp
( )
digit(n)
124
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 p
presta 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
en
reparacion
reparado()
reparar()
Con
Retraso
reservar(id) /
usrRes = id
devolver() [getDate()>fp+30]
Con
Retraso y
reser ado
reservado
devolver()
[getDate()>fp+30]
prestar(id,fecha)/
reservar(id) /
en
prestado
usrRes = id
biblioteca fp=fecha
devolver()
prestar(id, fecha)
[usrRes==id]/
fp=fecha
t (2 days)
tm(2
d
)
reservado
devolver()
en
reserva
en
reparacion
reparado()
reservar(id) /
usrRes = id
Con
Retraso
reparar()
[getDate()>fp+30]
prestar(id,fecha)/
en
prestado
biblioteca fp=fecha
devolver()
t (2 days)
tm(2
d
)
Con
Retraso y
reser ado
reservado
[getDate()>fp+30]
reservar(id) /
usrRes = id
prestar(id, fecha)
[usrRes==id]/
fp=fecha
reservado
devolver()
en
reserva
127
Mquinas
q
de Estados
Componentes Ortogonales
Incomplete
Lab1
Term
Project
Final
Test
lab done
project done
Lab2
Passed
pass
fail
Failed
128
Mquinas
q
de Estados
Idle
arr.
Message
arr
transmit
time out
Sending
arr
129
Mquinas
q
de Estados
arr1
arr1
arr2
arr1
Idle1
Mess2
trans2
ack2
arr1
tout2
Idle1
Send2
trans1
Mess
ss1
Idle2
ack1
arr2
tout1
Send
d1
Idle2
arr2
arr2
Mess1
Mess2
trans2
ack2
arr1
Mess1
Send2
arr2
trans1
tout1
tout2
arr1
Send1
Mess2
arr1
arr2
arr1
z Dos
procesos
130
Mquinas
q
de Estados
Idle
arr.
Message
arr
P 1
Proc-1
transmit
time out
arr.
Message
arr
arr
P 2
Proc-2
ack
Idle
Sending
transmit
time out
Sending
arr
131
Mquinas
q
de Estados
arr
transmit
Message
arr
Wait [channel
channel ==free ] /
arr
Sending
channel = busy
arr
transmit
Message
arr
arr
Wait [channel
channel ==free ] /
Sending
channel = busy
132
Mquinas de Estados
Pseudo
P
d - estados:
t d
z Fork / Join.
z Initial.
z Deep History / Shallow History. H*
z Junction.
z Choice.
z Entry / Exit point.
z Terminate.
A1
A2
Setup
Cleanup
B1
Fork
B2
Join
133
Mquinas
q
de Estados
Estado Histrico
H
t4
I
B1
t1: ev0
B12
t3: ev1
B2
t2
B11
B21
t3
t4: ev2
134
Mquinas
q
de Estados
Estado Histrico (ii)
H
H*
t4
I
B1
t1: ev0
B12
t3: ev1
B2
t2
B11
B21
t3
t4: ev2
135
Mquinas
q
de Estados
Estado Histrico. Ejercicio.
Mquinas
q
de Estados
On
Standby
power
power
mode
CD
mode
H
Radio
mode
Tape
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
Standby
lastCD
lastRadio
power
power
power
lastTape
On
power
power
CD
mode
mode
Radio
mode
Tape
power
138
Mquinas de Estados
Pseudo - estados: Junction.
139
Mquinas de Estados
Puntos de Entrada/Salida, Estados Sub-Mquina
140
ReproductorCD
p
- Tpausa: Tiempo
- NumActual: Entero
Li C i
ListaCanciones
1
+ stop()
t ()
+ pause()
+ play()
1
+ eject()
j ()
+ apagar()
+ finCancion()
- buscaDisco(d: InfoDisco):
ListaCanciones
player 1
driver 1
ControladorCD
...
+ play(act:
l ( t Cancion,
C i desde:
d d Tiempo)
Ti
)
+ stop() : Tiempo
+ detectarDisco() : InfoDisco
+ detectarAbierto()
() : Logico
g
+ abrir()
+ cerrar()
+ apagar()
disco
1
...
+ obtenerCancion(Orden: Entero):
Cancion
+ numCanciones(): Entero
....
pista 0..*
1
actual
Cancion
- titulo: Cadena
- duracion: Tiempo
p
- Artista: Cadena
- Orden: Entero
...
141
Stop
Play()/
driver.play(actual, 0)
eject ()/
driver.stop(); stop()/
driver.abrir() driver.stop();
NumActual=11
NumActual
actual=
disco.obtenerCancion(NumActual)
Play
Pause())/
Tpausa = driver.stop
p()
Abierto
endOfSong()/
NumActual+=1
Play()/
driver.pllay(actual, Tp
pausa)
eject ()/
driver.cerrarr ()
Cerrado
e
eject
()/
driver.abrir (()
d
[drriver.detectarrAbierto()]
[(info=driver.detectarDisco())!=NULL]/
disco=buscaDisco(info)
[not driver.
detectarAbierto()] NumActual = 1;
actual = disco.obtenerCancion(ordenActual)
(
)
[NumActual<=
disco.numCanciones()]/
actual=
t l
disco.obtenerCancion
(NumActual)
driver.play(actual,0)
Pause
apagar ()/
driver.stop();
driver.apagar()
142
Cleanup
[inv]
144
Mquinas
q
de Estados
Generalizacin
z Una mquina de estados es generalizable
generalizable.
z Se pueden aadir regiones, estados y transiciones.
z Se puede cambiar el destino y estado de una transicin siempre
que la fuente y evento se mantenga.
z En caso de herencia mltiple de mquinas de estado (por herencia
de los clasificadores asociados), se crea una regin ortogonal por
cada mquina heredada
heredada, mas una por la mquina de estados del
clasificador especfico.
z Se anota con <<extended>> junto al nombre de la mquina
mquina.
z Los estados heredados se muestran con lneas punteadas o en gris.
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
topRightPressed.
topRightReleased.
p g
topLeftPressed.
topLeftReleased.
bottomRightPressed.
bottomRightReleased
bottomRightReleased.
bottomLeftPressed.
bottomRightReleased.
149
Posible Solucin.
Solucin
150
Mquinas de Estados
Ejemplo. Herramienta de Dibujo (i)
/setup widgets
setup
t bi
bindings
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)
Triangle
shapeSelected(Circle)
shapeSelected(Triangle)
p
(
g )
Rectangle
shapeSelected(Circle)
h
S l t d(Ci l )
Circle
shapeSelected(Rectangle)
153
Mquinas
q
de Estados
Ejemplo. Herramienta de Dibujo (iv)
Modes
modeSelect(Insert)/
Canvas.Insert
modeSelect(Move)/
Canvas.Move
Move
modeSelect(Delete)/
Canvas.Delete
Insert
modeSelect(Insert)/
Canvas.Insert
modeSelect(Delete)/
(
)/
Canvas.Delete
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]/
drawRectangle(x,y)
Idle
onDrawingMouse1Press(x,y)
[Shapes in Triangle]/
drawTriangle(x,y)
C
move
insert
delete
insert
Deleting
Moving
Idle
onDrawingMouse1Press(x,y)/
movingObject=find_closest(x,y)
i Obj t fi d l
t( )
Idle
onDrawingMouse1Release(x,y)
onDrawingMouse1Click(x,y)/
D
i M
1Cli k( )/
find_closest(x,y).del()
Moving
onDrawingMouse1Motion(x,y)/
oldCoords=coords(movingObject)
move(movingObject, distance(oldCoords, (x,y)))
move
delete
155
Diagramas de Actividad
z Refinamiento de los diagramas de estados.
estados
{ Los estados representan
p
subactividades
la
ejecucin
j
de
acciones
Diagramas
g
de Actividad
Ejemplo
Put Coffee
in Filter
[found
coffee]
Find
Beverage
g
[no coffee]
Put Filter
in Machine
Turn on
Machine
Add Water
to Reservoir
Get
Cups
/ coffeePot.turnOn
Brew
coffee
light goes out
Pour
Coffee
[found cola]
Get cans
of cola
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
zDiagramas de Casos de Uso.
zDiagramas de Estructura.
Estructura
zDiagramas de Comportamiento.
zOCL.
zHerramientas.
zEjemplos.
zEjemplos
zBibliografa.
166
Ejemplos
Flight
Airplane
0 *
0..
Flightnr: Integer
flights
1
plane
numberOfSeats: Integer
availableSeats(): Integer
flights 0..
0 *
passengers 0..*
P
Person
name: String
168
Ejemplos
Persona
Casa
0 *
0..
valor: Dinero
1 numSegSoc:
S S
Id
Identificador
ifi d
propietario sueldo: Dinero
casas
contratarHipoteca(sum: Dinero,
aval: Casa))
aval 1
Hipoteca
principal: Dinero
0..* mensual: Dinero
hipotecas fechaInicio: Fecha
fechaFinal: Fecha
1 contratante
0..*
hipotecas
Reglas adicionales:
1.
2.
2
3.
4.
5.
Una persona puede tener una hipoteca sobre una casa slo si es el
propietario.
La fecha de inicio de cada hipoteca ha de ser menor que la de final
final.
El nmero de la seguridad social de cada persona ha de ser nico.
Slo es posible contratar una nueva hipoteca si el salario de la persona
es suficiente.
Slo es posible contratar una nueva hipoteca si el valor de la casa aval
169
es suficiente.
Ejemplos
Context
C
t t Hipoteca
Hi t
Inv: aval.propietario = contratante
Context Hipoteca
Inv: fechaInicio < fechaFin
Context Persona
Inv: Persona::allInstances()->isUnique(numSegSoc)
Context Persona::contratarHipoteca(sum: Dinero, aval: Casa)
pre: self.hipotecas.mensual->sum()+sum <= self.sueldo * 0.70
Context Persona::contratarHipoteca(sum: Dinero, aval: Casa)
pre: aval.valor >= aval.hipotecas.principal->sum()
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
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 d
de ti
tipo query.
Ejemplos
parents
0..*
children 0..*
174
Ejemplos
z Especificacin
E
ifi
i d
dell 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
zTipos: Set, OrderedSet, Bag, Sequence.
zOperaciones de bucle con colecciones:
select(expr): selecciona los elementos que cumplan una condicin.
coleccion->select( expresion-logica )
coleccion->select(
l
i
l t( v | expresion-logica-con-v)
i l i
)
coleccion->select( v : Type | expresion-logica-con-v)
context
t t Company
C
i
inv:
self.employee->select(age < 25)->notEmpty()
context Company inv:
self.employee->select(gender=female)->notEmpty()
176
Ejemplos Colecciones.
Ejemplos.
Colecciones
collect(expr): devuelve la coleccin que resulta de evaluar expr
para cada elemento de la coleccin fuente.
self employee >collect( birthDate ))->asSet()
self.employee->collect(
>asSet()
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 )
178
{ source
source->collectNested(iterators|body)
collectNested(iterators|body)
z Bag de elementos que resultan de aplicar body a cada elemento de
source.
{ source->isUnique(iterators|body)
(
|
y)
z True si body se evalua a un valor diferente para cada elemento de
source.
{ source->one(expr)
z Devuelve true si existe exactamente un elemento de source que cumple
la condicin.
{ source->reject(expr)
z Devuelve una coleccin con los elementos de source que no cumplen la
condicin.
{ source->sortedBy(expr)
z Ordena source,
source resulta en un OrderedSet
179
Indice
zDiagramas de Casos de Uso.
zDiagramas de Estructura.
Estructura
zDiagramas de Comportamiento.
zOCL.
zHerramientas.
zHerramientas
zEjemplos.
j p
zBibliografa.
180
Herramientas I
Herramientas,
z Dibujo
Dib j d
de di
diagramas
{Soporte a la correcccin de los diagramas en base a su
semntica
{Apoyo para simplificar la facilidad de comprensin de
los diagramas (layout, etc.)
z Archivo de informacin
{Comprobacin de inconsistencias
{Deteccin de trabajo a realizar y mejoras
{Generacin de informes
{Soporte a la reutilizacin
{Soporte al rediseo (refactorings).
181
Herramientas II
Herramientas,
z Soporte a la navegacin
{Vistas compuestas
{Elaboracin de conexiones entre informacin
relacionada
{B
{Bsqueda
d
{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,
z Integracin con otras herramientas
{Entorno de desarrollo (tendencia a confluir)
{Configuracin del sistema y control de versiones
{Herramientas de documentacin
{Herramientas de prueba de software
{Herramientas de construccin de interfaces de usuario
{Herramientas de especificacin de requisitos
{Herramientas de gestin de proyectos y soporte al
proceso de
d di
diseo
yd
desarrollo
ll
184
Herramientas V
Herramientas,
zDistintos niveles de abstraccin
zIntercambio de informacin
{Especificacin OMG de representacin de
modelos UML en XMI (XML Metadata
Interchange)
185
Indice
zDiagramas de Casos de Uso.
zDiagramas de Estructura.
Estructura
zDiagramas de Comportamiento.
zOCL.
zHerramientas.
zHerramientas
zEjemplos.
Ejemplos.
zBibliografa.
187
Ejemplo de Anlisis
Aplicacin para una Galera de Arte
Diagrama de casos de uso inicial
Comprar un
cuadro
Vendedor
Vender un
cuadro
Agente
Galera
Producir Informe
C
Comprador
d
Actualizar
Coeficiente de
moda
188
Diagrama
refinado
Comprar
p una
Obra maestra
Comprar una
O
Obra
representativa
Vendedor
Comprar una
Obra representativa
Vender un
cuadro
Producir Informe
compras
Agente
Galera
Comprador
Producir Informe
ventas
Producir Informe
tendencias
Actualizar
Coeficiente de moda
189
Cuadro
nombreDelArtista
apellidosDelArtista
Titulo
AoCreacion
Alto
Ancho
Tecnica
Tema
Sistema
Si
t
G
Gestion
ti
Galeria
Cuadro Galeria
Cuadro Subastado
Clasificacion
fechaCompra
Fechaventa
nombreVendedor
direccionVendedor
precioCompraMaximo
precioCompraReal
precioVentaDeseado
precioVenta
nombreComprador
direccionComprador
fechaSubasta
precioSubasta
Obra Maestra
Obra Representativa
Moda
nombreArtista
appelidosArtista
coeficiente
191
Obra maestra
Agente
A
t
Galera
GUI
Calcular Precio
Obra Maestra
Cuadro
Cuad
o
Subastado
192
Vendedor
Agente
Galera
: GUI
1: proporcionar
datos obra
maestra
: Calcular Precio
Obra Maestra
2: transferir detalles
: Cuadro
Subastado
: Obra maestra
3: crear objeto
nuevo
4: devolver objeto
nuevo
5: buscar cuadros
subastados
Datos
proporcionados
por el vendedor
8: mostrar
precio
9: proporcionar
detalles del
vendedor
14: mostrar
confirmacin
6: devolver cuadro
subastado
7: proporcionar
precio
12: confirmacin
193
194
195
196
197
0
1
11
1.1
2
2.1
3
3.1
3.2
3.1.1
3.2.1
198
199
200
201
202
203
Indice
zDiagramas de Casos de Uso.
zDiagramas de Estructura.
Estructura
zDiagramas de Comportamiento.
zOCL.
zHerramientas.
zHerramientas
zEjemplos
zBibliografa.
204
Bibliografa: UML
UML
{ Dan
D Pil
Pilone; N
Neilil Pi
Pitman. UML 2
2.0
0 iin a N
Nutshell.
t h ll OR
OReilly,
ill 2005
2005.
{ Martin Fowler. UML Distilled: A Brief Guide to the Standard Object Modeling
Language, 3rd Edition. Addison Wesley, 2003.
{ Web de la OMG sobre UML: http://www.uml.org
{ Perdita Stevens, Rob Pooley. Utilizacin de UML en Ingeniera del Software con
Objetos
j
y Componentes.
p
Addison Wesley,
y, 2002.
{ Grady Booch, James Rumbaugh, Ivar Jacobson. The Unified Modeling
Language User Guide. Addison-Wesley, 1999.
{ Eriksson,
Eriksson H.
H E.,
E Penker,
Penker M.,
M Lyons,
Lyons B
B., Fado
Fado, D
D. UML
UML 2 Toolkit
Toolkit . OMG Press,
Press
Wiley. 2004.
{ Craig Larman. Applying UML and Patterns. Prentice Hall. 2002.
OCL
{ Warmer,
Warmer Kleppe.
Kleppe The Object Constraint Language 2nd Edition
Edition. Getting your
Models Ready for MDA. Addison-Wesley. 2003.
205
{Especificacin de OCL 2.0: http://www.omg.org/docs/ptc/03-10-14.pdf
Bibliografa: Statecharts
z Harel D.
D On Visual Formalisms.
Formalisms Communications of the
ACM. Vol 31, No. 5. Pp.: 514-530. Mayo 1988.
z Harel D., Naamad A. The STATEMATE Semantics of
Statecharts.
ACM
Transactions
on
Software
Engineering and Methodology,
Methodology Vol.
Vol 5,
5 No.
No 4,
4 Oct.
Oct 1996,
1996
pp.: 293-233.
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