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
2

Indice

zDiagramas de Casos de Uso.


z Diagramas de Estructura. Estructura z Diagramas de Comportamiento. z OCL. z Herramientas. H i t z Ejemplos. j p z Bibliografa.
3

Casos de Uso
z Describen D ib qu h hace el l sistema i t d desde d el l 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
z Pasos: P
{ 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

Comprador

Agente Galera

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 i introduce t d l la d descripcin i i d del l 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 del l mismo i autor, t as que el l 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

Servicio de Autorizacin de Pagos


actor Calculador de Impuestos p

Analizar Actividad ... Gestionar Seguridad Gestionar Usuarios

actor Sistema de contabilidad

Administrador del sistema

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 Make Appointment
<<include>> <<include>>

Scheduler

Check Patient Record

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

{ 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.
{Clases y Objetos. {Componentes. {Estructuras Compuestas. {Despliegue. {Paquetes. q Diagramas de Comportamiento. OCL. Herramientas. Ejemplos. Bibliografa.

z z z z z

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 Hidrgeno

:Hidrgeno

:Hidrgeno

Diagrama de Di d objetos

: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

En cursiva si es abstracta At ib t Atributos Operaciones

Nombre d l objeto del bj

unCirculo: Circulo radio = 3.4 centrox = 2.0 20 centroy = 2.0

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 I height: Integer 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 1 Punto
navegacin

z Ejemplos Ej l de d cardinalidad: di lid d


1..* 0..* 0.. 0..1 1,2,4 3 mnimo 1, no hay mximo mnimo 0, no hay mximo mnimo 0, mximo 1 uno, dos o cuatro exactamente tres

zNavegacin: N 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()

Empleado
subordinados - sueldo_bruto + mostrar t () + calcular_salario_neto()

Cliente
- telefono_de_contacto nombre_empresa +mostrar()

0..*

1..*
empleados

0..* clientes 1..* 1

Directivo
0..*
- categoria + mostrar ()

Empresa
- nombre b
26

Asociaciones: Agregacin
z Cuando la relacin todo/parte no es tan , se utiliza Agregacin g g fuerte,

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 titular 1 * 1.. cuentas 0 * 0.. Cuenta

z Dependencia: relacin muy dbil.


Ventana susFiguras 0..*
Draw(ContextoDibujo)

Figura

suContexto ContextoDibujo

Dependencia

28

Clases Asociativas
z Asociacin con atributos propios.
Nombre asociacin
casado con >

Empleado

1 Matrimonio
fecha

Persona

testigos 2

0..*

Clase Asociativa

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..*
fecha estado calcImpuesto calcTotal calcPesoTotal

Pago
monto

1..*

lnea 1..* Crdito


fecha nmero tipo autorizado

Efectivo
moneda

Cheque
nombre identifBanco autorizado

DetalleOrden
cantidad tipoImpuesto calcSubtotal calcPeso

Item 0 * 0.. 1
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

z Asociaciones 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 del l nombre). b ) z Propiedades, cerca del nombre de la asociacin. z Los finales de la asociacin pueden adornarse con:
{ Multiplicidad. { Nombre (rol). ( ) { Propiedades:
z {subsets <nombre-prop>}. z {redefine <nombre-fin-asoc>} <nombre-fin-asoc>}. z {union}. z {ordered} (un conjunto ordenado). z {bag} (conjunto con repeticin) repeticin). z {sequence} o {seq} (bag ordenado).

35

Ms sobre asociaciones
Adornos en asociaciones y fin de asociacin: Ejemplos

a 0..1

b
{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
NumCuenta

Tablero Ajedrez
fila: Fila col: Colum

* 0..1

1 1

Persona

Casilla

z Dado un objeto cualificado, el nmero de objetos al otro lado de la asociacin viene i d dado d por l la 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 mtodos Clase MiInterfaz 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 Prestamo fechas - inicio: Date - fin: Date 0..1 lector - titulo : string libro - tipo: tipoLibro 1 - editorial: string - anyo: int i t 1..* obras

1 autor

Autor
- nombre: b string ti - nacionalidad: string - fechaNacimiento: Date
<<enumeration>> tipoLibro
novela teatro poesia i ensayo

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)

multa 0..1

Multa
- fInicio: Date - fFin: Date

<<enumeration>> estadoCopia
prestado retraso biblioteca reparacion

Persona
- nombre - edad + mostrar()

Objetos
Empleado
subordinados - sueldo_bruto + mostrar () + calcular_salario_neto() l l l i t () empleados

Cliente
- nombre_empresa - telefono_de_contacto +mostrar() clientes

Directivo
- categoria + mostrar ()

Empresa
- nombre

e2 : Empleado
- nombre=Mara - edad edad=25 25 - sueldo_bruto=36000 empleados subordinados

e1 : Empleado
- nombre=Pedro - edad edad=23 23 - sueldo_bruto=30000 empleados

d1 : Directivo
nombre=Luis edad=35 d d 35 sueldo_bruto=36000 categoria=C1

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. 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 i interna 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 l la 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.

z Diagramas 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 l los participantes ti i t
z Diagramas de Comunicacin

z Patrones de comunicacin
z Diagramas de Comunicacin z Diagramas de Secuencia

z Temporizacin p de la comunicacin.
z Diagramas de Secuencia z Diagramas de Tiempo.

z Estructuracin de las interacciones


z Diagrama 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
{ {Observer.reading=length(Subject.queue) g g ( j q ) and Observer.range = (0..Subject.capacity)}
69

/Subject :CallQueue

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 el l 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 1:aServer:=find(specs)

:Client

:Server :Server

aServer <<local>>

:Server
2:process

72

Diagramas g de Comunicacin
Condiciones.
e:ClaseE 2 msg6() 2: 6() msg1() 1a [test]: msg2()

a:ClaseA

b:ClaseB

1b b [not [ ot test]: test] msg4() sg ()

1a.1: a msg3() sg3()

d:ClaseD

1b 1 msg5() 1b.1: 5()

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
1.3.1a [multa=0]: multa:= create(fecha,retraso)

prestamos

1.1: dev:=remove(id)

:Copia

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

1.2: retraso:=getRetraso(fecha)

dev:Copia

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

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

:Lector
1.3.1a [multa=0]: multa:= create(fecha,retraso)

prestamos

1.1: fec:=remove(id)

:Copia

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 l los 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.

z Ejemplos:
{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

1.1.3.1:add(self) contents {new}

wire:Wire
<< self >>

<< local >>

line

i-1 1 1 1 r0:= 1.1.1a: 0 position() i i ()

1.1.2: create(r0,r1) 1.1.3: display(window) 1 1 1b r1:= 1.1.1b: 1 position() i i ()

:Line Li {new} { }

left:Bead

right:Bead g
79

Diagramas g de Comunicacin
Objetos Activos.

z Poseen P su propio i hilo hil de d control t l z Un objeto pasivo slo almacena datos
{ Puede enviar mensajes mientras procesa un pedido (mensaje) que haya recibido

z Los L objetos bj t activos ti se representan t frecuentemente con componentes internas


80

Diagramas g de Comunicacin
Objetos Activos. Ejemplo.
:FactoryManager
job

:FactoryScheduler
A2,B2/2:completed(job) 1:start(job)

currentJob:TransferJob
<<local>> job

:FactoryJobMgr

B2:completed 1/B1:start(job)

A2:completed 1/A1:start(job)

:Robot

: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) el l 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 a: lift receiver b: dial tone :receiver

Objetos Focos de Control Mensajes

c: dial di l digit di it ... d: route ringing tone phone rings answer phone stop tone stop ringing
85

Diagramas de Secuencia
sd Authenticate User LoginPage: Servlet ac: Authentication C Controller ll ds: UserData S i Service CurrentUser: UserData

validateCredentials(Dan, b4_23) restoreUserData(Dan) create(Dan,Administrator) currentUser currentUser

86

Diagramas de Secuencia
operador guarda
:Pedido
entregar() loop alt [for each producto] [value > 10000] entregar()
procedure entregar() foreach producto: if p producto.value>10000 preferente.entregar() else usual.entregar() end if end for end procedure

marco
preferente :Distribuidor Di t ib id usual :Distribuidor Di t ib id

[else]

entregar()

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). )
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
Sd Alarm Activation

T = now

:SystemHandler
assert

:CellHandler

:Sensor

:Alarm

:CellConfigurationInformation

Activate() ReadConfiguration() Configuration Information Returned

seq

SelfTest() ACK Activate() SelfTest()

par

opt

Test() Validate
97

opt

{t..t+5}

ACK

ACK

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 el l 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
crearLaberinto() loop [for i = 1 to 10]

lab:Laberinto

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 i int t + realizarJugada(): void + casillaActual(): int
* 1 * 2

Dado
+ tirar(): int

Tablero
+ mover(int actual, int unidades): boolean

Solucin
:Jugador
realizarJugada() par tirar() n1 tirar() n2

d1:Dado

d2:Dado

:Tablero

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 al la red d Se establece la conexin con el nmero marcado

Solucin
:Button :Dialer :Display :Speaker send:Button :CellularRadio

loop

[for i = 1 to 9] digit(code) displayDigit (code)

emitTone (code)

send() connect(pno) inUse()

Diagrama de colaboracin equivalente?

Solucin

Visin de Conjunto de la Interaccin


z D Define fi las l interacciones i t i at travs 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
z Muestran M t i t interacciones i d d donde importante razonar sobre el tiempo. es

z Representa condiciones que cambian en una o varias lneas de vida, en un eje lineal de tiempo. tiempo z Cambios 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 Estados
digit(n)

Fin

start

Partial Dial

digit(n)

Transiciones
121

Mquinas de Estados
z Un U t transicin i i puede d t tener:
{ Evento.
z Eventos temporales: tm(n)

{ Accin. { pre-condiciones (guardas) y post- condiciones.


[guard] evt/action [post-]

A1

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
entry/set t / t echo h invisible i i ibl exit/set echo normal character/handle character help/display help

Nombre Transiciones internas


123

Mquinas de Estados
Start
entry/start dial tone exit/stop dial tone

digit(n)

Partial Dial
entry/number.append(n)

Estado compuesto: Dialing


Start
entry/start y dial tone exit/stop dial tone digit(n)

digit(n)

Partial Dial
entry/number.append(n) y pp ( )

[number.isValid()]

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
Con Retraso reservar(id) / usrRes = id Con Retraso y reser ado reservado devolver()

en reparacion reparado() reparar()

devolver() [getDate()>fp+30]

[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


Con Retraso [getDate()>fp+30] reservar(id) / usrRes = id Con Retraso y reser ado reservado

en reparacion reparado() reparar()

[getDate()>fp+30]

prestar(id,fecha)/ en prestado biblioteca fp=fecha devolver() t (2 days) tm(2 d )

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
fail lab done

Lab2 Passed

project done

pass

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

transmit

Sending arr

arr

time out

129

Mquinas q de Estados
ack1 Idle d 1 Idle2 arr2 Idle1 Mess2 trans2 ack2 tout2 Idle1 Send2 Mess ss1 Idle2 arr1 arr1 arr1 ack1 arr2 arr2 Mess1 Mess2 trans2

Componentes Ortogonales: Utilidad

trans1

arr1

Send d1 Idle2 arr2 Send1 Mess2 arr1 arr2 arr1

tout1 trans1 tout1 tout2 arr1

ack2 arr1 Mess1 Send2 arr2

z Dos procesos

130

Mquinas q de Estados
ack

Componentes Ortogonales: Utilidad


P 1 Proc-1

Idle

arr.

Message arr

transmit

Sending arr P 2 Proc-2

time out

ack Idle Message arr transmit

arr.

Sending arr

time out

131

Mquinas q de Estados

Componentes Ortogonales: Utilidad


ack/ channel = free Idle transmit Message arr Wait [channel channel ==free ] / P 1 Proc-1 arr Sending

arr

channel = busy

time out / channel = free ack/ channel = free P 2 Proc-2 arr Sending

Idle

arr

transmit Message arr

Wait [channel channel ==free ] /

channel = busy
132

time out / channel = free

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 Setup B1 B2

A2 Cleanup

Fork

Join

133

Mquinas q de Estados
Estado Histrico
B

H
t4 I B1 t1: ev0 B12 t3: ev1 B11 t2

B2 B21 t3

t4: ev2

134

Mquinas q de Estados
Estado Histrico (ii)
B

H H*
t4 I B1 t1: ev0 B12 t3: ev1 B11 t2

B2 B21 t3

t4: ev2

135

Mquinas q de Estados
Estado Histrico. Ejercicio.

z Modelar 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 el Modelar l mismo 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 power power power power lastTape power power mode

On CD mode

lastRadio

Radio

mode

Tape

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 1 disco 1 Li C i ListaCanciones ... + obtenerCancion(Orden: Entero): Cancion + numCanciones(): Entero ....

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

pista 0..* 1 actual Cancion - titulo: Cadena - duracion: Tiempo p - Artista: Cadena - Orden: Entero ...

141

Diagrama de estados para la clase ReproductorCD p


[(info=driver.detectarDisco())!=NULL]/ disco=buscaDisco(info) [not driver. detectarAbierto()] NumActual = 1; actual = disco.obtenerCancion(ordenActual) ( ) [dr river.detectar rAbierto()] [else]/ driver.stop(); NumActual=1; ; actual= disco.obtenerCancion(NumActual) endOfSong()/ NumActual+=1

Cerrado
eject ()/ driver.cerrar r () e eject ()/ driver.abrir ( d ()

Stop

Play()/ driver.play(actual, 0) Play()/ driver.pl lay(actual, Tp pausa)

Play
Pause() )/ Tpausa = driver.stop p() [NumActual<= disco.numCanciones()]/ actual= t l disco.obtenerCancion (NumActual) driver.play(actual,0)

Abierto

eject ()/ driver.stop(); stop()/ driver.abrir() driver.stop(); NumActual=1 NumActual 1 actual= disco.obtenerCancion(NumActual)

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 : Especifican E 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 el l 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 reloj j 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 ) shapeSelected(Rectangle)

Circle

153

Mquinas q de Estados
Ejemplo. Herramienta de Dibujo (iv)
Modes modeSelect(Insert)/ Canvas.Insert modeSelect(Move)/ Canvas.Move

Insert

modeSelect(Delete)/ Canvas.Delete modeSelect(Insert)/ Canvas.Insert

Move

modeSelect(Delete)/ ( )/ Canvas.Delete modeSelect(Move)/ C Canvas.Move M

Delete

154

Mquinas de Estados
Canvas

Ejemplo Herramienta de Dibujo (v) Ejemplo.


[Shapes in Circle]/ Inserting g d drawCircle(x,y) Ci l ( ) [Shapes in Rectangle]/ drawRectangle(x,y) [Shapes in Triangle]/ drawTriangle(x,y)

Idle
onDrawingMouse1Press(x,y)

C
move insert delete insert

Moving

Deleting

Idle
onDrawingMouse1Press(x,y)/ movingObject=find_closest(x,y) i Obj t fi d l t( ) onDrawingMouse1Click(x,y)/ D i M 1Cli k( )/ find_closest(x,y).del()

Idle

onDrawingMouse1Release(x,y)

Moving
move delete
155

onDrawingMouse1Motion(x,y)/ oldCoords=coords(movingObject) move(movingObject, distance(oldCoords, (x,y)))

Diagramas de Actividad
z Refinamiento de los diagramas de estados. estados
{ Los estados representan p subactividades la ejecucin j de acciones o

{ 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 Put Filter in Machine Turn on Machine Add Water to Reservoir / coffeePot.turnOn Brew coffee light goes out Pour Coffee [found cola] Get cans of cola Drink [no cola]
157

[found coffee] Find Beverage g [no coffee]

Get Cups

Diagramas de Actividad
Swimlanes

158

Diagramas de Actividad
Pesos en los enlaces

159

Diagramas de Actividad
Parmetros y Eventos Temporales
Parmetros/Pins/Excepciones

E Eventos t Temporales T l

160

Diagramas de Actividad
Excepciones/Pins

161

Diagramas de Actividad
Regiones de Expansin
z Regiones de expansin, procesamiento paralelo (tambin iterative y streaming t i ). )

162

Diagramas de Actividad
Regiones Interrumpibles

163

Diagramas de Actividad
Particiones

164

Diagramas de Actividad
Flujos de Objetos: Objectflows

165

Indice
z Diagramas de Casos de Uso. z Diagramas de Estructura. Estructura z Diagramas de Comportamiento.

zOCL.
z Herramientas. z Ejemplos. Ejemplos z Bibliografa.
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
0 * 0.. Flightnr: Integer availableSeats(): Integer flights 0.. 0 * passengers 0..* flights 1 plane numberOfSeats: Integer

Airplane

Tambin es un lenguaje de consultas (mismo poder expresivo que SQL).


Context Flight::availableSeats(): Integer body: plane.numberOfSeats passengers->size()

P Person
name: String

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
Casa
0 * 0.. valor: Dinero aval 1 casas

Persona
1 numSegSoc: S S Id Identificador ifi d propietario sueldo: Dinero contratarHipoteca(sum: Dinero, aval: Casa) )

Hipoteca
principal: Dinero 0..* mensual: Dinero hipotecas fechaInicio: Fecha fechaFinal: Fecha 0..* hipotecas

1 contratante

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

Las restricciones OCL se escriben en el contexto de una instancia de un tipo especfico.

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 i instancia. 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 del l valor l i inicial 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 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


z Tipos: Set, OrderedSet, Bag, Sequence. z Operaciones 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 ) self.employee->collect( )->asSet() >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 : self.employee->forAll( inv 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
z Diagramas de Casos de Uso. z Diagramas de Estructura. Estructura z Diagramas de Comportamiento. z OCL.

zHerramientas. Herramientas
z Ejemplos. j p z Bibliografa.
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 { Bsqueda B 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,
z Distintos niveles de abstraccin z Intercambio de informacin
{Especificacin OMG de representacin de modelos UML en XMI (XML Metadata Interchange)

185

Poseidon for UML

Indice
z Diagramas de Casos de Uso. z Diagramas de Estructura. Estructura z Diagramas de Comportamiento. z OCL. z Herramientas. Herramientas

zEjemplos.
z Bibliografa.
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

Comprador

Agente Galera

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 Sistema Si t G Gestion ti Galeria

Cuadro
nombreDelArtista apellidosDelArtista Titulo AoCreacion Alto Ancho Tecnica Tema

Cuadro Galeria
Clasificacion fechaCompra Fechaventa nombreVendedor direccionVendedor precioCompraMaximo precioCompraReal precioVentaDeseado precioVenta nombreComprador direccionComprador

Cuadro Subastado
fechaSubasta precioSubasta

Obra Maestra

Cuadro de Otro Tipo usa

Moda
nombreArtista appelidosArtista coeficiente
191

Obra Representativa

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

: Calcular Precio Obra Maestra


2: transferir detalles 3: crear objeto nuevo 4: devolver objeto nuevo 5: buscar cuadros subastados

: Cuadro Subastado : Obra maestra

1: proporcionar datos obra maestra

Datos proporcionados por el vendedor

8: mostrar precio 9: proporcionar detalles del vendedor 14: mostrar confirmacin

7: proporcionar precio

6: devolver cuadro subastado

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
z Diagramas de Casos de Uso. z Diagramas de Estructura. Estructura z Diagramas de Comportamiento. z OCL. z Herramientas. Herramientas z Ejemplos

zBibliografa.
204

Bibliografa: UML
UML
{ Dan D Pil Pilone; N Neil il Pi Pitman. UML 2 2.0 0i in 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 2 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