Está en la página 1de 206

UML

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

zDiagramas de Casos de Uso.


zDiagramas de Estructura.
Estructura
zDiagramas de Comportamiento.
zOCL.
zH
zHerramientas.
i t
zEjemplos.
j p
zBibliografa.
3

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

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>>

Patient

Check Patient Record

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

{ Generacin de casos de prueba


z A partir de los escenarios de un Caso de Uso
14

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.

{ Relaciones con otras clases: Asociaciones

z Diagramas de objetos. Estructura del sistema en


ti
tiempo
de
d ejecucin.
j
i
{ Objetos. Instancias de una Clase.
z Atributos (valores actuales).

{ Links. Relaciones entre objetos, instancias de asociaciones.


16

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: ~

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
<propertyname>}, {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
[[visibilidad]] nombre ( [lista-parametros]
[
p
] ) : [{propiedad}]
[{p p
}]
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

z Relacin del tipo todo/parte


{ El todo es el Crculo
{ La parte es el Punto

z Es una relacin fuerte


{ Si el Crculo es destruido o copiado, tambin lo es el Punto
{ La cardinalidad en la parte del todo es 0..1 o 1.
22

Asociaciones
Navegacin, Roles, Cardinalidad

z Las asociaciones pueden tener etiquetas:


{ Nombre
{ Roles en la relacin
{ Multiplicidad (cardinalidad)
Crculo

centro

z Ejemplos
Ej
l de
d cardinalidad:
di lid d
1..*
0..*
0..
0..1
1,2,4
3

navegacin

mnimo 1, no hay mximo


mnimo 0, no hay mximo
mnimo 0, mximo 1
uno, dos o cuatro
exactamente tres

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

La ventana contiene figuras,


pero cada una puede existir sin la otra
27

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

z Dependencia: relacin muy dbil.


Ventana

susFiguras

Figura

0..*
Draw(ContextoDibujo)

suContexto
ContextoDibujo

Dependencia

28

Clases Asociativas
zAsociacin con atributos propios.
Nombre asociacin

Empleado

casado con >

Persona

testigos 2

Matrimonio
fecha

Clase Asociativa

0..*

29

Clases y Objetos
j
Estilo

z Los atributos no deben ser objetos (utilizar


relaciones en tal caso).
z En los diagramas de clases no suelen aparecer
(son detalles de implementacin y no de
diseo):
{Constructores
{Mtodos de acceso (get/set)
( get/set )
{Mtodos de gestin de elementos de una asociacin o
agregacin (por ejemplo, add/remove)
30

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.

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

zAsociaciones entre ms de dos clases:


Ao
temporada
d

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

z Dado un objeto cualificado, el nmero de objetos al otro lado de la asociacin


viene
i
d
dado
d por lla multiplicidad
lti li id d d
declarada.
l d
{ 0..1 : el valor del cualificador es nico.
{ 0..* : el conjunto de instancas asociadas se particiona en subconjuntos.
z Similar a un array asociativo,
asociativo map o tabla hash
hash.
37

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

Una clase annima ligada:


FArray<T -> Point>

{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

z Se usa el composite y el singleton (para la clase Controlador


Controlador
Pedidos, aunque esto no queda reflejado en el diseo a este nivel 43
de
abstraccin).

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

Estructura interna de una clase. Multiplicidades.

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

{ Especifica cmo los objetos y las asociaciones cooperan


z En un contexto dado
z Con un propsito especfico

63

Diagramas de Interaccin
z El patrn
t
d
de
mensajes
j
d t
dentro
colaboracin es una interaccin:

d
de

una

{Mensajes: seales, invocaciones, interacciones implcitas


a travs de condiciones y eventos temporales.
{Especifica secuencia de mensajes para cumplir el
objetivo de la colaboracin
{Para especificar la interaccin, es necesario especificar
primero la colaboracin
{Semntica basada en trazas.
64

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

{Es ms apropiado para aplicaciones de Tiempo Real


y escenarios complicados
65

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.

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.
z Puede tambin representar la secuencia de
mensajes
{ Especifica el orden relativo mediante nmeros

z Similar a un diagrama de objetos, muestra el


contexto necesario para una colaboracin.
67

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

1*[i:=1..N]: num:= nextInt()

: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

1.3.1a [multa=0]: multa:=


create(fecha,retraso)

multa:Multa
lt M lt
{new}
multa:Multa

1.2: retraso:=getRetraso(fecha)

1.3.1b [multa<>0]: anyade(fecha,retraso)

dev:Copia

Solucin
1.3 [retraso>0]: multar(retraso)
1: devolver(id,
( , fecha))

:Lector

prestamos

1.1: fec:=remove(id)

:Copia

1.3.1a [multa=0]: multa:=


create(fecha,retraso)

multa:Multa
lt M lt
{new}
multa:Multa

fechas

1.2: retraso:=getRetraso(fecha)

fec:Fecha

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 h
hasta
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*[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}

<< local >>

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.

Tipos de Flujos de Control


Llamada a procedimiento u otra forma de llamada con
anidamiento de control. La secuencia anidada termina
antes de que siga la operacin que invoc
invoc. Puede
usarse para procesos concurrentes cuando el mensaje
es sncrono.
Comunicacin asincrna, sin anidamiento de control.
El objeto que enva no se detiene a esperar respuesta.
Retorno de una llamada a procedimiento. Esta flecha
puede omitirse si queda claro por el fin de la
activacin.
82

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

z Se muestra la existencia y duracin de las


instancias, pero no sus relaciones
83

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

[for each producto]


[value > 10000]
entregar()

[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.

{ Secuenciacin estricta (strict).


z Secuenciacin estricta en el orden de los eventos de los operandos.

{ Negativa (neg).
z Define trazas invlidas.

{ Regin crtica (critical).


z Los eventos del operando no pueden mezclarse con ningn otro.
91

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)

z Duracin de mensajes y seales (duration)


z Intervalos de tiempo ({t..t+3}) y restricciones temporales.
z Observaciones temporales (tiempo actual, now)
99

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

En este momento la traza


<v w q> no es vlida

z Se comprueban justo antes de la ocurrencia del prximo


evento
t (puede
(
d haber
h b
mensajes
j
no mostrados
t d
en ell
103
diagrama).

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

El usuario pulsa el botn Enviar


Enviar
El indicador en uso se ilumina en pantalla
El mvil establece conexin con la red
L d
Los
dgitos
it acumulados
l d se mandan
d a lla red
d
Se establece la conexin con el nmero marcado

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

Visin de Conjunto de la Interaccin


z D
Define
fi las
l interacciones
i t
i
a ttravs
d
de una
variante de los diagramas de actividad.
z Visin general del flujo de control.
z Usa elementos de los diagramas de actividad
para especificar:
{ Alternativas entre interacciones.
{ Paralelismo de interacciones.
{ Bucles de interacciones.
114

Visin de Conjunto de la Interaccin

115

Tiempo
zMuestran
M
t
i t
interacciones
i
d d
donde
importante razonar sobre el tiempo.

es

zRepresenta condiciones que cambian en


una o varias lneas de vida, en un eje
lineal de tiempo.
tiempo
zCambios en el estado de un objeto con el
tiempo en respuesta a eventos.
116

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

[guard] evt/action [post-]

A2

{Smbolos especiales para el envo y recepcin de


seales (normalmente usados en diagramas de
actividad).
)
122

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

Solucion: Estados Jerrquicos

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

Componentes Ortogonales: Utilidad

z Modelo de un sistema formado por un proceso


en red sin componentes ortogonales.
ack

Idle

arr.

Message

arr

transmit

time out

Sending
arr

129

Mquinas
q
de Estados

Componentes Ortogonales: Utilidad


ack1
Idle
d 1
Idle2

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

Componentes Ortogonales: Utilidad


ack

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

Componentes Ortogonales: Utilidad


P 1
Proc-1

ack/ channel = free


Idle

arr

transmit
Message
arr

Wait [channel
channel ==free ] /

arr
Sending

channel = busy

time out / channel = free


P 2
Proc-2

ack/ channel = free


Idle

arr

transmit
Message
arr

arr

Wait [channel
channel ==free ] /

Sending

channel = busy

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*
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.

zModelar el comportamiento de una


puede estar
cadena de msica. Esta p
encendida (ON) o apagada (Standby). La
cadena tiene reproductor de CD
CD, Radio y
Cinta. Se cambia de uno a otro con el
botn mode
mode . Cuando se enciende la
cadena se recuerda el ltimo estado en el
que estuvo.
136

Mquinas
q
de Estados

Estado Histrico. Ejercicio. Solucin

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

Estado Histrico. Ejercicio. Solucin (ii)

Standby
lastCD

lastRadio

power
power
power

lastTape

On

power

power

CD

mode

mode

Radio

mode

Tape

power

138

Mquinas de Estados
Pseudo - estados: Junction.

Pseudo - estados: Choice.

139

Mquinas de Estados
Puntos de Entrada/Salida, Estados Sub-Mquina

140

Ejemplo. Reproductor CDs.


I
InterfazUsuario
f U
i
...
...

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

Diagrama de estados para la clase


ReproductorCD
p
[else]/ driver.stop();
NumActual=1;;
actual= disco.obtenerCancion(NumActual)

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

Mquinas de Estados de Protocolo


z Asociadas a un clasificador,, interface o p
puerto.
z Especifican qu operaciones del clasificador se pueden
llamar en qu condiciones.
condiciones
z Las operaciones que no generan transicin no se
representan.
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.
z Mquinas de estado Ejecutables: Especifican todos
los eventos que un clasificador puede recibir y tratar,
tratar
con las transiciones implicadas.
143

Mquinas de Estados de Protocolo


z Mquinas de estados de
protocolo. Ejemplo (declarativa).

z Los estados de mquinas de


protocolo no tienen asociadas
acciones exit/entry/do,
exit/entry/do
pero
pueden tener invariantes.
z Las transiciones no tienen
acciones, pero s pueden tener
pre- y post- condiciones.

Cleanup
[inv]

[pre-cond] Evt/ [post-cond]

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

z Eventos de botones recibidos:


{
{
{
{
{
{
{
{

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

{ Las transiciones son disparadas


p
cuando se completan
p
estas
acciones o subactividades
{ Semntica basada en tokens.

z Flujos dirigidos por procesamiento interno (en los


diagramas de estados normales son dirigidos por eventos
externos).
z Semntica basada en Redes de Petri. No obstante no se
156
da una transformacin a Redes de Petri.

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

OCL: Object Constraint Language


z Lenguaje de restricciones para expresar condiciones
adicionales que no podemos expresar con diagramas y
cardinalidades.
z Combinar diagramas y especificaciones textuales.
z Lenguaje preciso, no ambiguo, declarativo, tipado, basado
en matemticas (lgica de predicados y teora de
conjuntos).
conjuntos)
z til p
para obtener modelos p
precisos ((no anotaciones en
lenguaje natural).
z Se utiliza fundamentalmente junto a los diagramas de
167
clases.

Ejemplos
Flight

Airplane
0 *
0..

Flightnr: Integer

flights

1
plane

numberOfSeats: Integer

availableSeats(): Integer
flights 0..
0 *
passengers 0..*

P
Person
name: String

Tambin es un lenguaje de consultas (mismo


poder expresivo que SQL).
Context Flight::availableSeats(): Integer
body: plane.numberOfSeats passengers->size()

z Cmo se expresa el hecho de que en ningn vuelo puede haber


ms p
pasajeros
j
que asientos tiene el avin?
q
z Restriccin OCL:
Context Flight
Inv: passengers->size() <= plane.numberOfSeats

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

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)
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

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 d
de 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 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()

forAll(expr): devuelve verdadero si expr es verdadero en cada


elemento de la coleccin.
coleccion->forAll( expresion-logica )
coleccion->forAll( v | expresion-logica-con-v )
coleccion->forAll( v : Type | expresion-logica-con-v )
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 : P
Person | p.isUnemployed
i U
l
d=F
False
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 )

iterate(): itera sobre todos los elementos de una coleccin.


coleccion->iterate( elem : Type; acc : Type = <expresion> | expresion-logicacon-elem-y-acc
l
)
collection->collect(x : T | x.property)
( : T;; acc : T2 = Bag{}
g{} | acc->including(x.property))
g( p p y))
collection->iterate(x
aade un elemento a una coleccin

178

Colecciones Otras Operaciones


Colecciones.
Operaciones.
z Otras operaciones
p
de bucle:
{ source->any(iterator|body)
z source->select(iterator|body)->asSequence()->first()

{ 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

Poseidon for UML

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

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
Escenario
i Principal
P i i l de
d 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
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

Cuadro de Otro Tipo


usa

Obra Representativa

Moda
nombreArtista
appelidosArtista
coeficiente

191

Diagrama de clases asociado al caso de uso vender una obra maestra

Proporciona los datos introducidos


por el agente
Vendedor

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

10: transferir detalles


11: solicitar
vendedor
actualizacin
13: confirmacin

12: confirmacin

193

Un ejemplo completo para


todos los diagramas
Un sistema de gestin de cursos impartidos para un conjunto
de clientes. Algunos de esos clientes pueden pertenecer a
empresas.

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

También podría gustarte