uml: lenguaje unificado de lenguaje unificado de modelado

206
UML UML: Lenguaje Unificado de Lenguaje Unificado de Modelado http://uml.org Tema 4 TACC II 1 TACC II Curso 2008/09

Upload: dinhngoc

Post on 06-Jan-2017

286 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

UMLUML:Lenguaje Unificado deLenguaje Unificado de Modelado http://uml.org

Tema 4

TACC II1

TACC IICurso 2008/09

Page 2: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

IntroducciónIntroducción

Similitud:Similitud: Arquitectos, edificios, planosIng. Inf., programas, diagramas

UML Unified Modeling Language. Versión 2.0 (finales 2004)Diagramas (ing inf )Diagramas (ing. inf.)

Usados como esquemas y menos con información rigurosa (“planos de arquitectos”)Dos modos:

• Ingeniería inversa: a partir de código hacer diagramas• Ingeniería directa: hacer diagramas y luego implementar

DominioMundo en el que hay definido un problema

Modelo:Abstracción de un problema

2

Abstracción de un problemaFormado por objetos

Page 3: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

IndiceIndice

Diagramas de Casos de Uso.Diagramas de EstructuraDiagramas de Estructura.Diagramas de Comportamiento.OCL.H i tHerramientas.Ejemplos.j pBibliografía.

3

Page 4: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Casos de UsoCasos de Uso

D ib é h l i t d d l tDescriben qué hace el sistema desde el punto de vista de un observador externo.

Ponen énfasis en qué hace el sistema, no en cómo lo hace.cómo lo hace.

Un escenario es una instancia particular de unUn escenario es una instancia particular de un diagrama de casos de uso.

Ejemplo de lo que ocurre cuando alguien interactúa con el sistema

4

Page 5: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Casos de UsoCasos de Uso

A t Al t i t ( tActor = Algo con comportamiento (persona, otro programa, organización...), que interactua con el sistema.sistema.

Escenario (instancia de caso de uso) =Escenario (instancia de caso de uso) Secuencia de acciones e interacciones entre los actores y el sistema.

Caso de Uso = Colección de escenarios (éxito y fracaso) que describen actores que usan elfracaso) que describen actores que usan el sistema para conseguir un objetivo.

5

Page 6: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Casos de Uso

P

Casos de Uso

Pasos:

Identificar los límites del sistema.

Identificar los actores principales.

Para cada uno, identificar sus objetivos.

Definir casos de uso que satisfagan susobjetivos.

6

Page 7: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

EjemploEjemploAplicación para una Galería de Arte

Te encargan realizar una aplicación para la compra-venta de cuadros. En cuanto a la compra de cuadros, una vezque el agente introduce unos datos básicos sobre el cuadro el sistema debe proporcionar el precio recomendadoque el agente introduce unos datos básicos sobre el cuadro, el sistema debe proporcionar el precio recomendadoque el agente de la galería debería pagar. Si el vendedor del cuadro acepta la oferta, entonces el agente de lagalería introduce más detalles (sobre el vendedor del cuadro y la venta).

Los datos básicos incluyen el nombre y apellidos del artista, el título y fecha de la obra, sus dimensiones, la técnicay y p , y , ,(óleo, acuarela u otras técnicas), el tema (retrato, naturaleza muerta, paisaje, otro) y la clasificación (obra maestra,obra representativa, otro tipo). Si es obra maestra, el precio recomendado se calcula comparando el cuadrointroducido con los que hay en el registro de cuadros, tomando el más parecido y aplicando un algoritmo que tieneen cuenta la coincidencia de tema, la técnica y las dimensiones del cuadro. El sistema debe utilizar información desubasta de todo el mundo que ahora la galería 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 corrección. Para una obrade otro tipo, se calcula utilizando el área del cuadro y un coeficiente de moda para el artista. Si no hay coeficiente demoda 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 galería, el sistema simplemente registra la fecha de venta, el nombrey dirección del comprador y el precio de venta real.y p y p

El sistema también deberá detectar nuevas tendencias en el mercado de arte tan pronto como sea posible. La ideaes detectar secuencias de compras por valores mayores que los esperados por la obra de un artista determinado, detal manera que tu cliente pueda comprar cuadros de ese artista antes de que otros detecten la tendencia. Con el

7

objetivo de detectar cuándo 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.

Se quieren generar tres informes: compras y ventas realizadas durante un año, y artistas de moda.…

Page 8: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Comprar unaEjemplo pObra maestra

Comprar unaO

Ejemplo

VendedorObra representativa

Comprar unaObra de Otro Tipo

Vender uncuadro

Obra de Otro Tipo

Agente

Producir Informecompras

Comprador

AgenteGalería Producir Informe

ventas

Producir Informetendencias

8Actualizar

Coeficiente de moda

Page 9: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

EjemploActores primarios:

Caso de uso: comprar una obra maestra

EjemploActores primarios:

Agente Galería, vendedorInteresados y Objetivos:

• Agente: quiere obtener una recomendación lo más acertada posible del precio á i d d d á idmáximo recomendado de manera rápida.

• Vendedor: quiere vender el cuadro a un precio razonable de manera rápida.Precondiciones:

El agente ha entrado en la aplicación.El agente ha entrado en la aplicación.Garantía de éxito (post-condiciones):

Se registra la venta.Escenario Principal de Éxito:

1 El t i t d l d i ió d l d1. El agente introduce la descripción del cuadro.2. El sistema busca el cuadro más parecido del mismo autor.3. El sistema presenta el precio recomendado.4. El agente hace una propuesta por debajo del precio recomendado, y el vendedor age e ace u a p opues a po debajo de p ec o eco e dado, y e e dedoacepta la oferta.5. El agente introduce información de la venta.

Extensiones:2 N h i ú d id d l i t í l i t t

9

2a. No hay ningún cuadro parecido del mismo autor, así que el sistema no presenta una recomendación.4a. El vendedor no acepta la oferta y la venta no se produce.

Page 10: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Ejemplo

TPV

EjemploTerminal Punto de Venta

TPVProcesar

VentaServicio

cajeroProcesar

Devoluciones

Serviciode Autorización

de Pagos

«actor»

Calculador de

AnalizarActividad

«actor»Analizador deA ti id d d pImpuestos

«actor»

Actividad deVentas

...

Sistema decontabilidad

GestionarSeguridad

10Administradordel sistema

GestionarUsuarios

Page 11: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Diagramas de Caso de UsoDiagramas de Caso de UsoRelaciones

R l i t d dRelaciones entre dos casos de usoGeneralización

“E ti l d ”“Es un caso particular de …”Herencia de clases en POO (overriding)También se puede tener esta relación entre dos actoresTambién se puede tener esta relación entre dos actores

Inclusión (include)“Implica hacer también …”

Extensión (extend)“Se insertará en …” un determinado punto (llamado “punto de extensión”) dependiendo de una condiciónextensión”) dependiendo de una condición. Si un caso de uso depende de varios casos de uso mediante “extend” tendrá un punto de extensión para cada uno.

11

Page 12: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

EjemploEjemploGestión de Pacientes

Cancel Appointment

Make AppointmentScheduler

<<include>>

Patient Request Medication

Check Patient Record<<include>>

DoctorDefer Payment<<extend>>

Clerk

Pay Bill

Extensions PointsMore Treatment

12Bill InsuranceMore Treatment

Page 13: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

EjemploEjemploGestión de Proyectos

13

Page 14: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Casos de UsoCasos de Uso

Son útiles en tres áreas:

Especificación de requisitos

Comunicación con los clientesSu simplicidad los convierte en excelentes medios de comunicación

Generación de casos de pruebaGeneración de casos de pruebaA partir de los escenarios de un Caso de Uso

14

Page 15: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

IndiceIndiceDiagramas de Casos de Uso.Diagramas de Casos de Uso.Diagramas de Estructura.

Clases y Objetos.Clases y Objetos.Componentes.Estructuras Compuestas.Estructuras Compuestas.Despliegue.Paquetes.q

Diagramas de Comportamiento.OCL.Herramientas.Ejemplos.

15Bibliografía.

Page 16: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Clases y ObjetosClases y Objetos

Los diagramas de Clases y de Objetos son losLos diagramas de Clases y de Objetos son los principales modos de representar los aspectos estructurales en UML.

Diagramas de clases. Estructura del sistema.ClasesClases.

Atributos: Tipos, valores iniciales.Operaciones: visibilidad.

Relaciones con otras clases: AsociacionesRelaciones con otras clases: Asociaciones

Diagramas de objetos. Estructura del sistema en ti d j iótiempo de ejecución.

Objetos. Instancias de una Clase. Atributos (valores actuales).

16Links. Relaciones entre objetos, instancias de asociaciones.

Page 17: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Clases y ObjetosClases y Objetos

Elemento

Diagrama de

HidrógenoCarbono

ag a a declases

:Hidrógeno:Hidrógeno

Di d:Hidrógeno :Hidrógeno:Carbono :Carbono

Diagrama deobjetos

17:Hidrógeno :Hidrógeno

Page 18: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Clases y ObjetosNombre

Clases y ObjetosEn cursiva si es

abstractaCirculo

-radio: doublet d bl

Nombre de la clase

At ib t

abstracta

-centrox: double-centroy: double

Atributosvisibilidad

+Area(): double+Perímetro(): double Operaciones

Nombre d l bj

Clase unCirculo: Circulo

radio = 3.4centrox = 2 0

del objeto del objeto

Valores de18

centrox 2.0centroy = 2.0 los atributos

Page 19: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Clases

Notación para atributos:Atributos

p

[visibilidad] [/] nombre [: tipo] [multiplicidad] [= valor] [{ propiedad }]

Visibilidad (opcional): Pública: +Privada: -Protegida: #Paquete: ~

“/” indica que el atributo es derivado.La multiplicidad va entre [ ] y por defecto vale 1.Propiedades válidas: {readOnly} {union} {subsets <propertyPropiedades válidas: {readOnly}, {union}, {subsets <property-name>}, {redefines <property-name>}, {ordered}, {bag}, {seq}, {sequence}, y {composite}.

19

Un atributo subrayado es estático.

Page 20: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

ClasesEjemplo atributos

ClaseAname: Stringshape: Rectangle+ size: Integer [0..1]/ area: Integer {readOnly}h i ht I t 5height: Integer = 5width: Integer# pos: Point

ClaseBid: {redefines name}

20

id: {redefines name}shape: Square

Page 21: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Clases

N t ió ét d

Métodos

Notación para métodos:

[visibilidad] nombre ( [lista-parametros] ) : [{propiedad}][ ] ( [ p ] ) [{p p }]

Visibilidad (opcional).nombre del métodonombre del métodolista de parámetros formales, separados por coma:

direccion nombre : tipo [multiplicidad] = valor [{propiedad}]Los métodos estáticos se subrayan.

Ejemplos:Ejemplos:display ()-hide ()+createWindow (location: Coordinates container: Container [0 1]): Window

21

+createWindow (location: Coordinates, container: Container [0..1]): Window+toString (): String

Page 22: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Asociaciones

Un Círculo contiene un Punto

Composición

Un Círculo contiene un PuntoSe representa con una Composición

Círculo Punto

Relación del tipo todo/parteRelación del tipo todo/parteEl todo es el CírculoLa parte es el Punto

Es una relación fuerteSi el Círculo es destruido o copiado, también lo es el PuntoLa cardinalidad en la parte del todo es 0..1 o 1.

22

La cardinalidad en la parte del todo es 0..1 o 1.

Page 23: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Asociaciones

Las asociaciones pueden tener etiquetas:Navegación, Roles, Cardinalidad

Las asociaciones pueden tener etiquetas:NombreRoles en la relaciónMultiplicidad (cardinalidad) navegación

Ej l d di lid d

Círculo Puntocentro

1N ióEjemplos de cardinalidad:

1..* mínimo 1, no hay máximo0..* mínimo 0, no hay máximo

Navegación:UnidireccionalBidireccional0.. mínimo 0, no hay máximo

0..1 mínimo 0, máximo 11,2,4 uno, dos o cuatro3 exactamente tres

BidireccionalNo especificado.No navegable (x)

23

3 exactamente tres No navegable (x)

Page 24: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

AsociacionesEjemplos de Navegación y Cardinalidad

24

Page 25: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

EjercicioEjercicioRepresenta mediante un diagrama de clases la siguienteRepresenta mediante un diagrama de clases la siguienteespecificación:

Una aplicación necesita almacenar información sobreempresas, sus empleados y sus clientes.Ambos se caracterizan por su nombre y edad.L l d ti ld b t l l dLos empleados tienen un sueldo bruto, los empleados queson directivos tienen una categoría, así como un conjunto deempleados subordinados.pDe los clientes además se necesita conocer su teléfono decontacto.L li ió it t l d t d l dLa aplicación necesita mostrar los datos de empleados yclientes.

25

Page 26: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

EjercicioEjercicioPersonaPersona

+ mostrar()

- nombre- edad

+ mostrar()

- nombre- edad

t ()

- sueldo_bruto - nombre_empresa- telefono_de_contacto

Empleado Clientesubordinados

t ()

- sueldo_bruto - telefono_de_contacto

Empleado Clientesubordinados

0..*

+mostrar()

+ mostrar ()+ calcular_salario_neto()

empleados clientes+mostrar()

+ mostrar ()+ calcular_salario_neto()

1..*0..*

- categoria

DirectivoEmpresa

b

empleados

- categoria

DirectivoEmpresa

b1

1..*

0..*

26+ mostrar ()- nombre

+ mostrar ()- nombre

Page 27: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Asociaciones: AgregaciónAsociaciones: Agregación

Cuando la relación todo/parte no es tan fuerte, se utiliza Agregación, g g

Ventana FigurasusFiguras

0 *0..

La ventana contiene figuras, pero cada una puede existir sin la otra

27

Page 28: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Asociaciones y DependenciaAsociaciones y Dependencia.

Existen relaciones de conocimiento entre clases que no implican una relación todo/parte

Cliente Cuentatitular1 *

cuentas0 *1.. 0..

Dependencia: relación muy débil.

VentanasusFiguras

0..*Figura

Draw(ContextoDibujo)

suContexto

28

ContextoDibujo

Dependencia

Page 29: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Clases AsociativasClases Asociativas

Asociación con atributos propios.

Nombre asociación

Empleado Persona1

casado con >1

Matrimoniofecha

2testigos

fecha0..*

29Clase Asociativa

Page 30: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Clases y Objetosy jEstilo

Los atributos no deben ser objetos (utilizar relaciones en tal caso).

En los diagramas de clases no suelen aparecerEn los diagramas de clases no suelen aparecer (son detalles de implementación y no de diseño):diseño):

ConstructoresMétodos de acceso (“get/set”)Métodos de acceso ( get/set )Métodos de gestión de elementos de una asociación o agregación (por ejemplo, “add/remove”)

30

Page 31: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

EjemploEjemplo

Cliente

nombre

Orden

fecha1 0..*dirección estado

calcImpuestocalcTotalcalcPesoTotalPago

1..* 1 calcPesoTotalPago

monto 1

EfectivoCrédito Cheque DetalleOrden Item

1..*

0 * 1

línea

monedafechanúmerotipo

autorizado

nombreidentifBanco

autorizado

cantidadtipoImpuesto

calcSubtotalcalcPeso

pesodescripción

precioPorCantidadobtenerPeso

0.. 1

31

autorizado

Page 32: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

EjercicioEjercicioEspecificar un diagrama de clases que describa redesde ordenadores.Los elementos que se pueden incluir en la red son:

S id PC IServidor, PC, Impresora.Hub, Cable de red.

Los PCs pueden conectarse con un único Hub losLos PCs pueden conectarse con un único Hub, losservidores con uno o varios.Los Servidores y PCs pueden generar mensajes, conuna cierta longitud.Los Hubs tienen un número de puertos, algunos de loscuales puede usarse para conectar con otros Hubscuales puede usarse para conectar con otros Hubs.Tienen cierta probabilidad de “perder” mensajes.Las impresoras pueden averiarse, con cierta

32

Las impresoras pueden averiarse, con ciertaprobabilidad, durante cierto tiempo.

Page 33: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Ejercicio Posible SoluciónEjercicio. Posible Solución.

33“Los PCs pueden conectarse con un único Hub, los servidores con uno o varios”Podemos modelarlo como una restricción OCL, o bien añadir asociaciones desde Servidor y PC

Page 34: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Más sobre asociacionesMás sobre asociacionesAsociaciones n-arias

Asociaciones entre más de dos clases:

Añod

E i J d

temporada

Equipo Jugadorpichichiequipo

34

Page 35: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Más sobre asociaciones

A i i d i d ( “/” d l t d l b )

Más sobre asociacionesAdornos en asociaciones y fin de asociación.

Asociaciones derivadas (con un “/” delante del nombre).Propiedades, cerca del nombre de la asociación.Los finales de la asociación pueden adornarse con:Los finales de la asociación pueden adornarse con:

Multiplicidad.Nombre (rol).( )Propiedades:

{subsets <nombre-prop>}.{redefine <nombre-fin-asoc>}{redefine <nombre-fin-asoc>}.{union}.{ordered} (un conjunto ordenado).{bag} (conjunto con repetición){bag} (conjunto con repetición).{sequence} o {seq} (bag ordenado).

35

Page 36: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Más sobre asociacionesMás sobre asociacionesAdornos en asociaciones y fin de asociación: Ejemplos

A Ba b

A B0..1 *{ordered}

C D1 0..1

d

{subsets b}{subsets b}

Para un objeto de tipo C, la colección d es un subconjunto de la colección b.

36

Page 37: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Más sobre asociaciones

Un cualificador declara una partición del conjunto de instancias asociadas con

Más sobre asociacionesAsociaciones Cualificadas

Un cualificador declara una partición del conjunto de instancias asociadas con respecto a la instancia cualificada.

Banco TableroBancoNumCuenta

*

Ajedrezfila: Filacol: Colum

1

Persona

*0..1

Casilla

11

Dado un objeto cualificado, el número de objetos al otro lado de la asociación i d d l lti li id d d l d

Persona Casilla

viene dado por la multiplicidad declarada.0..1 : el valor del cualificador es único.0..* : el conjunto de instancas asociadas se particiona en subconjuntos.

Similar a un array asociativo map o tabla hash

37

Similar a un array asociativo, map o tabla hash.

Page 38: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Pre y Post Condiciones NotasPre- y Post- Condiciones, Notas

pre-condición

body-condition

post-condición

38

Page 39: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

InterfacesInterfaces<<interface>>

ClaseClase MiInterfaz

métodos MiInterfaz

ClaseMiInterfaz

39

Page 40: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

PlantillasPlantillas

FArray<T -> Point>Una clase anónima ligada:

T -> Point

40K -> 10

Page 41: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

EjercicioExamen Junio 2008.

Realiza el diseño de una aplicación para la gestión de pedidos. La aplicación deberámanejar clientes (se guarda su nombre, dirección, teléfono y e-mail), que puedenrealizar pedidos de productos, de los cuales se anota la cantidad en stock. Unp p ,cliente puede tener una o varias cuentas para el pago de los pedidos. Cadacuenta está asociada a una tarjeta de crédito, y tiene una cierta cantidaddisponible de dinero, que el cliente debe aumentar periódicamente para poderrealizar nuevos pedidos.realizar nuevos pedidos.

Un cliente puede empezar a realizar un pedido sólo si tiene alguna cuenta con dinerodisponible. Al realizar un pedido, un cliente puede agruparlos en pedidos simpleso compuestos. Los pedidos simples están asociados a una sola cuenta de pago y(por restricciones en la distribución) contienen un máximo de 20 unidades del(por restricciones en la distribución) contienen un máximo de 20 unidades delmismo o distinto tipo de producto. A su vez, un pedido compuesto contiene dos omás pedidos, que pueden ser simples o compuestos. Como es de esperar, elsistema debe garantizar que todos los pedidos simples que componen un pedidocompuesto se paguen con cuentas del mismo cliente Además sólo es posiblecompuesto se paguen con cuentas del mismo cliente. Además, sólo es posiblerealizar peticiones de productos en stock.

Existe una clase (de la cual debe haber una única instancia en la aplicación)responsable del cobro, orden de distribución y confirmación de los pedidos. Elp y pcobro de los pedidos se hace una vez al día, y el proceso consiste en comprobartodos los pedidos pendientes de cobro, y cobrarlos de la cuenta de pagocorrespondiente. Si una cuenta no tiene suficiente dinero, el pedido se rechaza (sies parte de un pedido compuesto, se rechaza el pedido entero). Una vez que el

41

p p p , p ) qpedido está listo para servirse, se ordena su distribución, y una vez entregado,pasa a estar confirmado.

Se pide un diagrama de clases de diseño.

Page 42: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Solución

42

Page 43: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Solucion (ii)Solucion (ii)Nota: pedidos_simples es una asociación derivada. El atributo total de Pedido es derivadoPedido es derivado.Habría que incluir las siguientes restricciones OCL:

C t t li didContext realizar_pedido:pre: self.cuentas->exists(c | c.disponible > 0)

Context Pedido Compuesto:Context Pedido Compuesto:inv: self.pedidos_simples->cuenta->cliente->asSet()->size() = 1

Context Pedido:Context Pedido:inv: self.t_productos.num->sum() <= 20

Context añadir pedido(p: Producto num: int):Context añadir_pedido(p: Producto, num: int):pre: p.stock>=num

Se usa el composite y el singleton (para la clase “Controlador43

Se usa el composite y el singleton (para la clase Controlador Pedidos”, aunque esto no queda reflejado en el diseño a este nivel de abstracción).

Page 44: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Ejercicio: BibliotecaEjercicio: Biblioteca

Una biblioteca tiene copias de libros Estos últimos seUna biblioteca tiene copias de libros. Estos últimos se caracterizan por su nombre, tipo (novela, teatro, poesía, ensayo), editorial, año y autor. Los autores se caracterizan por su nombre, nacionalidad y fecha de nacimiento.Cada copia tiene un identificador y puede estar en laCada copia tiene un identificador, y puede estar en la biblioteca, prestada, con retraso o en reparación.Los lectores pueden tener un máximo de 3 libros en préstamopréstamo. Cada libro se presta un máximo de 30 días, por cada día de retraso, se impone una “multa” de dos días sin pposibilidad de coger un nuevo libro.Realiza un diagrama de clases y añade los métodos necesarios para realizar el prestamo y devolución denecesarios para realizar el prestamo y devolución de libros.

Page 45: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

LibroCopia

- id : Identifier- estado: estadoCopia

Libro- titulo : string- tipo: tipoLibro- editorial: string

i t

libro11..*

ejemplar

Prestamo

0..3 prestamos - anyo: intobras1..*

- inicio: Date- fin: Date

0..1 lector Autorb t i

autor1fechas

Lector- nSocio : Identifier- nombre: string

- nombre: string- nacionalidad: string- fechaNacimiento: Date

- telefono: string- direccion: string

<<enumeration>>tipoLibro

novelateatro

i

+ devolver(id: Identifier, fechaAct: Date){precondition: prestamos.notEmpty()}

1

<<enumeration>>estadoCopia

poesiaensayo

Multa

{precondition: prestamos.notEmpty()}+ prestar(id: Identifier, fechaAct: Date){precondition: multa==0}- multar(dias : int)

0..1multa

prestadoretrasobibliotecareparacion

- fInicio: Date- fFin: Date

Page 46: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Objetos+ mostrar()

- nombre- edad

Persona

+ mostrar()

- nombre- edad

Persona

Objetos+ mostrar ()+ l l l i t ()

- sueldo_bruto - nombre_empresa- telefono_de_contacto

Empleado Clientesubordinados

+ mostrar ()+ l l l i t ()

- sueldo_bruto - nombre_empresa- telefono_de_contacto

Empleado Clientesubordinados

+mostrar()

()

+ calcular_salario_neto()

- categoria

DirectivoEmpresa

- nombre

empleados clientes+mostrar()

()

+ calcular_salario_neto()

- categoria

DirectivoEmpresa

- nombre

empleados clientes

+ mostrar ()+ mostrar ()

e1 : Empleado- nombre=“Pedro”- edad=23

e2 : Empleado- nombre=“María”- edad=25 edad 23

- sueldo_bruto=30000edad 25

- sueldo_bruto=36000subordinados empleados empleados

d1 : Directivo- nombre=“Luis”

d d 35

Empresa- nombre=“HGJ”

empleados

- edad=35- sueldo_bruto=36000- categoria=“C1”

c1 : Clienteclientes

46

- nombre=“Luis”- edad=35- nombre_empresa=“Macroware”- telefono_de_contacto=91555666

Page 47: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

ComponentesComponentes

C t “U id d M d l i t fComponente = “Unidad Modular con interfacesbien definidos que es reemplazable en suentorno”entorno .

É f i tili ió l i tÉnfasis en reutilización y encapsulamiento.

Servicios que provee y requiere (interfaces).

Componentes lógicos (componentes de negocio,de proceso) y físicos (EJB, CORBA, COM+, .NET,

47…)

Page 48: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

ComponentesComponentes

Interfacesque ofrece

Interfacesque requiere

48

Page 49: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

ComponentesComponentes

Vi t d j blVista de caja blanca

49

Page 50: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Estructuras Compuestas

C i ió d l t ( l ifi d

Estructuras Compuestas

Composición de elementos (clasificadores ocolaboraciones)

Instancias en tiempo de ejecución que colaborana través de enlaces para alcanzar objetivosa través de enlaces para alcanzar objetivoscomunes.

Colaboraciones: a través de roles.

Se añade a las clases estructura internas ypuertos.

50

Page 51: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Estructuras CompuestasEstructura interna de una clase

Estructuras CompuestasEstructura interna de una clase.

Estructura interna de una clase. Multiplicidades.

51

Page 52: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Estructuras CompuestasEstructuras CompuestasAlternativa a relaciones de composición

A li tiApplication

ButtonWindow 2

Application

Button2

Window

52

Page 53: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Estructuras CompuestasEstructuras Compuestas

Estructura interna de una clase. Constructor.

53

Page 54: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Estructuras Compuestas

E t t i t d l b ió

pColaboración.

Estructura interna de una colaboración.

54

Page 55: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Estructuras Compuestas

O i d l b ió t Bi di

pColaboración.

Ocurrencia de una colaboración en otra. Binding.

55

Page 56: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Estructuras CompuestaspColaboración.

Template de colaboración.

56

Page 57: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

DespliegueDespliegue

D fi l it t d j ió d i tDefinen la arquitectura de ejecución de un sistema.

Representa la asignación de artefactos software a nodosRepresenta la asignación de artefactos software a nodos.

Nodos = elementos hardware, o entornosde ejecución software.

Artefactos = elementos concretos (p.e.:ficheros) que son el resultado del procesode desarrollo.

57

Page 58: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Desplieguep gRelaciones entre artefactos.

“Manifestación” de elementos a través de

artefactos

58

Page 59: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Desplieguep gEjemplo.

59

Page 60: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

PaquetesPaquetes

Un paquete es un contenedor que agrupa elementos relacionados.

Los diagramas de paquetes muestran la estructura de alto nivel de la aplicaciónnivel de la aplicación.

60

Page 61: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

PaquetesqEjemplo.

61

Page 62: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

IndiceIndice

Diagramas de Casos de UsoDiagramas de Casos de Uso.Diagramas de Estructura.Diagramas de ComportamientoDiagramas de Comportamiento.

Diagramas de Interacción.Diagramas de Comunicación.Diagramas de Secuencia.Diagramas de visión de conjunto de la interacción.Diagramas de tiempo.Diagramas de tiempo.

Diagramas de Estados.Diagramas de Actividad.

OCLOCLHerramientas.Ejemplos

62

Ejemplos.Bibliografía.

Page 63: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Diagramas de InteracciónDiagramas de Interacción

El t i t t t é dEl comportamiento se representa a través decolaboraciones:

Colección de objetos:

Instancias

RolesRoles

Especifica cómo los objetos y las asociaciones cooperan

En un contexto dado

63Con un propósito específico

Page 64: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Diagramas de Interacción

El t ó d j d t d

Diagramas de Interacción

El patrón de mensajes dentro de unacolaboración es una interacción:

Mensajes: señales, invocaciones, interacciones implícitasa través de condiciones y eventos temporales.

Especifica secuencia de mensajes para cumplir elobjetivo de la colaboraciónobjetivo de la colaboración

Para especificar la interacción, es necesario especificarprimero la colaboraciónprimero la colaboración

Semántica basada en trazas.64

Page 65: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Diagramas de InteracciónDiagrama de Comunicación

Diagramas de InteracciónDiagrama de Comunicación

Muestra un contexto y una interacciónMuestra un contexto y una interacción.

Di d S iDiagrama de Secuencia

Representación explícita de la secuencia decomunicaciones, eje temporal.

Es más apropiado para aplicaciones de Tiempo Realy escenarios complicados

65

y escenarios complicados

Page 66: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Diagramas de Interacción

E t t d l ti i t

Diagramas de Interacción

Estructura de los participantesDiagramas de Comunicación

Patrones de comunicaciónDiagramas de ComunicaciónDiagramas de Secuencia

Temporización de la comunicación.pDiagramas de SecuenciaDiagramas de Tiempo.

Estructuración de las interaccionesDiagrama de visión de conjunto de la

66

g jinteracción.

Page 67: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Diagramas de Comunicación

R t l bj t ( l i t i )

Diagramas de Comunicación

Representa los objetos (roles o instancias)necesarios para una interacción y susrelaciones.relaciones.

Puede también representar la secuencia dePuede también representar la secuencia demensajes

Especifica el orden relativo mediante números

Similar a un diagrama de objetos, muestra elcontexto necesario para una colaboración.

67

Page 68: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Diagramas de Comunicaciónparticipantes

Diagramas de Comunicación

Wi d / Ob Slidi B I

p p

:Window / Observer : SlidingBarIcon

l

relaciones

roles

/Subject :CallQueue

68

Page 69: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Diagramas de ComunicaciónDiagramas de Comunicación

Wi d / Ob Slidi B I:Window / Observer : SlidingBarIcon

restricción

{Observer.reading=length(Subject.queue)/Subject :CallQueue

{ g g ( j q )andObserver.range = (0..Subject.capacity)}

69

Page 70: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Diagramas de ComunicaciónDiagramas de Comunicación

realizarPago(cantidad)

Llamadas anidadas:

:Registro :VentarealizarPago(cantidad) 1: realizarPago(cantidad)

1.1: crear(cantidad)

:Pago

Iteraciones:

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

70

Page 71: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Diagramas de Comunicación

R t j t d i t i l

gMultiobjetos.

Representan conjuntos de instancias en elextremo “muchos” de una relación 1:N o M:N

Una operación sobre cada instancia requiered jdos mensajes:

Iteración para obtener referencias a las instanciasindividuales

Mensaje a cada instancia, usando la referenciatemporal

71

Page 72: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Diagramas de ComunicacióngMultiobjetos.

:Client :Server:Serverservers

1:aServer:=find(specs)

:ServeraServer <<local>>

2:process2:process

72

Page 73: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Diagramas de ComunicacióngCondiciones.

e:ClaseE

2 6()

a:ClaseA b:ClaseBmsg1() 1a [test]: msg2()

2: msg6()

a:ClaseA b:ClaseB

1b [not test]: msg4() 1a.1: msg3()

d:ClaseD c:ClaseC

b [ ot test] sg ()

1b 1 5()

a sg3()

1b.1: msg5()

73

Page 74: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Ejercicio: BibliotecaEjercicio: Biblioteca

Una biblioteca tiene copias de libros Estos últimos seUna biblioteca tiene copias de libros. Estos últimos se caracterizan por su nombre, tipo (novela, teatro, poesía, ensayo), editorial, año y autor. Los autores se caracterizan por su nombre, nacionalidad y fecha de nacimiento.Cada copia tiene un identificador y puede estar en laCada copia tiene un identificador, y puede estar en la biblioteca, prestada, reservada, con retraso o en reparación.Los lectores pueden tener un máximo de 3 libros enLos lectores pueden tener un máximo de 3 libros en préstamo. Cada libro se presta un máximo de 30 días, por cada día p pde retraso, se impone una “multa” de dos días sin posibilidad de coger un libro.Realiza el diagrama de colaboración para el métodoRealiza el diagrama de colaboración para el método devolver()

Page 75: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

SoluciónSolución

1: devolver(id, fecha)

1.3 [retraso>0]: multar(retraso)

:Lector

( , )

:Copiaprestamos

1.1: dev:=remove(id)1.3.1a [multa=0]: multa:=

lt M lt

create(fecha,retraso)

dev:Copia1.2: retraso:=getRetraso(fecha)multa:Multa

{new}

multa:Multa1.3.1b [multa<>0]: anyade(fecha,retraso)

Page 76: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

SoluciónSolución

1: devolver(id, fecha)

1.3 [retraso>0]: multar(retraso)

:Lector

( , )

:Copiaprestamos

1.1: fec:=remove(id)1.3.1a [multa=0]: multa:=

lt M lt

create(fecha,retraso)

1.2: retraso:=getRetraso(fecha)multa:Multa

{new} fec:Fechafechas

multa:Multa1.3.1b [multa<>0]: anyade(fecha,retraso)

76

Page 77: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Diagramas de ComunicacióngEtiquetas de las flechas.

d d i l l t

Predecesor

predecesor orden-secuencial valor-retorno := nombre-mensaje lista-argumentos

PredecesorLista separada por “,” terminada en “/”El j tá h bilit d h t lEl mensaje no está habilitado hasta que no ocurran los mensajes en la lista

Orden en la secuenciaOrden en la secuenciaLista separada por “.”, terminada en “:”C d té i t i l d id i t d lCada término representa nivel de anidamiento proceduralIteración: *[cláusula interación]Bifurcación: [condición]

77

Bifurcación: [condición]

Page 78: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Diagramas de ComunicacióngEtiquetas de las flechas.

Ejemplos:2: display(x y)2: 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

Page 79: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Diagramas de Comunicación

redisplay()

gEjemplo.

:Controller :Windowredisplay()

1:displayPositions(window) 1.1.3.1:add(self)

Li { }

1.1*[i:=1..n]: drawSegment(i)

wire:Wirewire

<< local >> linecontents {new}

:Line {new}wire:Wire

i-1 i

1 1 1 0 i i ()

<< self >>

1 1 1b 1 i i ()

1.1.2: create(r0,r1)1.1.3: display(window)

left:Bead right:Bead

1.1.1a: r0:= position() 1.1.1b: r1:= position()

79

g

Page 80: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Diagramas de Comunicación

P i hil d t l

gObjetos Activos.

Poseen su propio hilo de control

Un objeto pasivo sólo almacena datos

Puede enviar mensajes mientras procesa unpedido (mensaje) que haya recibidopedido (mensaje) que haya recibido

L bj t ti tLos objetos activos se representanfrecuentemente con componentes internas

80

Page 81: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Diagramas de ComunicacióngObjetos Activos. Ejemplo.

:FactoryScheduler:FactoryManager

currentJob:TransferJob1:start(job)A2,B2/2:completed(job)

job

:FactoryJobMgr<<local>> job

B2:completed

1/B1:start(job)

A2:completed

1/A1:start(job)

:Robot :Oven

81

Page 82: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Diagramas de ComunicacióngObjetos 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 operación que invocó Puedeantes de que siga la operación que invocó. Puede usarse para procesos concurrentes cuando el mensaje es síncrono.Comunicación asincróna, sin anidamiento de control. El objeto que envía no se detiene a esperar respuesta.

Retorno de una llamada a procedimiento. Esta flecha puede omitirse si queda claro por el fin de la activación.

82

Page 83: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Diagramas de Secuencia

R t j t d j t l

Diagramas de Secuencia

Representa conjunto de mensajes entre roles (o instancias) en una interacción

Dos dimensiones:Tiempo (generalmente vertical); puede ser una escala siTiempo (generalmente vertical); puede ser una escala si el sistema es de tiempo real

Dif t i t i ( l t h i t l) lDiferentes instancias (generalmente horizontal); el orden relativo no tiene importancia

Se muestra la existencia y duración de las instancias, pero no sus relaciones

83

Page 84: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Diagramas de Secuencia

Traza: secuencia de ocurrencias de eventos

Diagramas de Secuencia

Traza: secuencia de ocurrencias de eventos <e1 e2 ...en>

La semántica de una interacción es un par de conjuntosLa semántica de una interacción es un par de conjuntosde trazas (válidas e inválidas) [P, I].

P d i ti t i l id l d j tPueden existir trazas no incluidas en los dos conjuntosanteriores.

Equivalencia de interacciones, si sus conjuntos de trazasson iguales.

Una interacción se puede especializar: se añaden mástrazas al conjunto.

84

j

Page 85: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Diagramas de SecuenciaDiagramas de Secuencia

a: lift receiver

:caller :exchange :receiver

b: dial tone

di l di itObjetos c: dial digit

...d: route

Objetos

Focos de d: route

ringing tone phone rings

Focos deControl

answer phone

stop tone stop ringing

Mensajes

85

stop tone stop ringing

Page 86: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Diagramas de SecuenciaDiagramas de Secuenciasd Authenticate User

LoginPage:Servlet

ac:Authentication

C ll

ds:UserDataS i

CurrentUser:UserDataServlet Controller Service UserData

validateCredentials(“Dan”, “b4_23”)restoreUserData(“Dan”)

create(“Dan”,”Administrator”)

currentUsercurrentUser

86

Page 87: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Diagramas de SecuenciaDiagramas de Secuencia

:Pedido preferenteDi t ib id

usualDi t ib id

marcooperador guarda

:Pedido :Distribuidor :Distribuidor

entregar()

loop

alt

entregar()

[for each producto]

[value > 10000]procedure entregar()

foreach producto:if producto.value>10000entregar()

[else]entregar()

ppreferente.entregar()

elseusual.entregar()

end ifend forentregar() end for

end procedure

Page 88: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Diagramas de SecuenciaDiagramas de Secuencia

Gate (formal), con nombre out Unlock

88

out_Unlock

Page 89: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Diagramas de SecuenciaDiagramas de Secuencia

Referencias (Ocurrencias de Interacciones)

Copian el contenido dela interacción referida.

Substitución deparámetros y conexiónde las puertas (gates)formales y actuales

89

formales y actuales.

Page 90: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Diagramas de Secuencia

Fragmentos combinados operadores (i):

gOperadores sobre interacciones.

Fragmentos combinados, operadores (i):

Alternativa (alt).Elección (mediante una guarda) de una interacciónElección (mediante una guarda) de una interacción.

Aserción (assert).La secuencia especificada por el operador es la única válida.a secue c a espec cada po e ope ado es a ú ca á da

Opción (opt).Equivalente a un operador alt con un solo fragmento.

Ruptura (break).El operando se ejecuta en lugar del resto de la interacción englobada en elfragmento “padre”.fragmento padre .

Paralelo (par).Mezcla de las trazas de los operandos (cualquier entrelazado es válidomientras preserve el orden de los eventos de cada operando)

90

mientras preserve el orden de los eventos de cada operando).

Page 91: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Diagramas de Secuencia

Secuenciación débil (seq)

gOperadores sobre interacciones.

Secuenciación débil (seq).Define un conjunto de trazas que cumple:1. Se mantiene el orden de eventos de los operandos2 Eventos de otras líneas de vida de otros operandos pueden venir2. Eventos de otras líneas de vida de otros operandos pueden veniren cualquier orden.3. Eventos de la misma línea de vida de otros operandos se ordenande tal manera que cualquier evento del primer operando va antes queel del segundo.

Secuenciación estricta (strict).Secuenciación estricta en el orden de los eventos de los operandos.

Negativa (neg).Define trazas inválidas.

Región crítica (critical).

91

Los eventos del operando no pueden mezclarse con ningún otro.

Page 92: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Diagramas de SecuenciagOperadores sobre interacciones. Alternativa.

92

Page 93: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Diagramas de SecuenciagOperadores sobre interacciones. Alternativa.

93

Page 94: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Diagramas de SecuenciagOperadores sobre interacciones. Opción.

94

Page 95: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Diagramas de SecuenciagOperadores sobre interacciones. Bucle.

95

Page 96: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Diagramas de SecuenciagOperadores sobre interacciones. Región Crítica.

96

Page 97: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Diagramas de SecuenciaEjemplo

Sd Alarm Activation

Ejemplo

:SystemHandler :CellHandler :Sensor :Alarm :CellConfigurationInformation

Activate()T =

now

assert

T

ReadConfiguration()

Configuration Information Returned

SelfTest()

ACK

seq

Activate()

SelfTest()

Test()

Validate

opt

opt

par

97ACKACK{t

..t+

5}

Page 98: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Diagramas de SecuenciagRetorno de Valores

98

Page 99: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Diagramas de Secuencia

Restricciones temporales (duración)

gTiempo

Restricciones temporales (duración)

Duración de mensajes y señales (duration)Intervalos de tiempo ({t..t+3}) y restricciones temporales.

99Observaciones temporales (tiempo actual, now)

Page 100: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Diagramas de SecuenciagDescomposición en partes

La estructura interna deACS iACSystem tiene una interacción “AC_UserAccess” que se invoca en este fragmento.

100

Page 101: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Diagramas de SecuenciagDescomposición en partes

101

Page 102: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Diagramas de Secuenciagco-región Coregión: s[u]

recibe los mensajesen cualquier orden.

102

Page 103: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Diagramas de Secuencia

Invariantes

gInvariantes

Invariantes.

En este momento la traza<v w q> no es válida<v w q> no es válida

Se comprueban justo antes de la ocurrencia del próximot ( d h b j t d l

103

evento (puede haber mensajes no mostrados en eldiagrama).

Page 104: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Diagramas de SecuenciagBinding

104

Page 105: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

EjercicioEjercicio

fEspecificar el diagrama de secuencia de la operación “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.añadeHabitacion(h1);lab.añadeHabitacion(h2);h1.añadePuerta(puerta);return lab;

}}

Page 106: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

SoluciónSolución

:JuegoLaberinto

l b L b i tcrearLaberinto()

lab:Laberinto

h1:Habitacion

h2:Habitacion

puerta:Puertacreate(h1,h2)

añadeHabitacion(h1)

añadeHabitacion(h2)

añadePuerta(puerta)

Page 107: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

EjercicioEjercicio

Especificar el diagrama de secuencia de la operaciónEspecificar el diagrama de secuencia de la operación “crearLaberinto”

public class JuegoLaberinto {private Laberinto lab;private boolean conVentana;

public JuegoLaberinto() {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.añadeVentana(new Ventana());lab.añadeHabitacion(h);

}}

Page 108: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

SoluciónSolución

:JuegoLaberinto lab:Laberinto

crearLaberinto()

h:Habitacion

loop [for i = 1 to 10]

v:Ventana

opt [conVentana==true]

añadeVentana(v)

añadeHabitacion(h)

Page 109: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

EjercicioEjercicio

Especificar el diagrama de secuencia de la operación “realizarJugada” definida en la clase Jugador, para el juego del parchísparchís

Jugadorill A t l i t

Dado2*

- casillaActual: int+ realizarJugada(): void+ casillaActual(): int

+ tirar(): int

1*

Tablero

+ mover(int actual, int unidades):

1

int unidades): boolean

Page 110: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

SoluciónSolución

:Jugador d1:Dado

realizarJugada()

d2:Dado :Tablero

tirar()

n1

par

tirar()

n2

ca:=casillaActual()

mover(ca,n1+n2)

movRealizado

Page 111: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

EjercicioEjercicioIdentificar las clases relevantes y realizar el diagrama deIdentificar las clases relevantes y realizar el diagrama de

secuencia para el siguiente caso de uso, que corresponde a la realización de una llamada desde un teléfono móvil.

El usuario pulsa los dígitos del número de teléfonoPara cada dígitog

la pantalla se actualiza para añadir el dígito marcadose emite un tono por el receptor

El usuario pulsa el botón “Enviar”El usuario pulsa el botón EnviarEl indicador “en uso” se ilumina en pantallaEl móvil establece conexión con la redL dí it l d d l dLos dígitos acumulados se mandan a la redSe establece la conexión con el número marcado

Page 112: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

SoluciónSolución

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

digit(code)

loop [for i = 1 to 9]

displayDigit

send()

displayDigit(code) emitTone

(code)

send()

connect(pno)

inUse()inUse()

¿Diagrama de colaboraciónequivalente?

Page 113: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

SoluciónSolución

Page 114: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Visión de Conjunto de la Interacción

D fi l i t i t é d

Visión de Conjunto de la Interacción

Define las interacciones a través de una variante de los diagramas de actividad.

Visión general del flujo de control.

Usa elementos de los diagramas de actividad para especificar:

Alternativas entre interacciones.Paralelismo de interacciones.

114Bucles de interacciones.

Page 115: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Visión de Conjunto de la InteracciónVisión de Conjunto de la Interacción

115

Page 116: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Tiempo

M t i t i d d

Tiempo

Muestran interacciones donde esimportante razonar sobre el tiempo.

Representa condiciones que cambian enRepresenta condiciones que cambian enuna o varias líneas de vida, en un ejelineal de tiempolineal de tiempo.

Cambios en el estado de un objeto con eltiempo en respuesta a eventos.

116

Page 117: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

TiempoTiempo

Diagrama temporal correspondientepa la interacción

117

Page 118: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

TiempoTiempo

118

Page 119: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

TiempoTiempo

119

Page 120: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Máquinas de EstadosMáquinas de Estados

“St t h t ” [H l]“Statecharts” [Harel]

Representan el comportamiento de entidades ( p eRepresentan el comportamiento de entidades ( p.e. instancias de clases).

Especifican reacción ante eventos

Describen posibles secuencias de estados y acciones por las que pueden pasar las entidades.

De comportamiento vs. de protocolo.

120

Page 121: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Máquinas de EstadosMáquinas de Estados

EstadosComienzo Fin

start Partial Dialdigit(n)

digit(n)

Transiciones

121

Page 122: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Máquinas de Estados

U t i ió d t

Máquinas de Estados

Un transición puede tener:Evento.

Eventos temporales: tm(n)Eventos temporales: tm(n)Acción.pre-condiciones (guardas) y post- condiciones.

A1 A2[guard] evt/action [post-]

A1 A2

Símbolos especiales para el envío y recepción de señales (normalmente usados en diagramas de actividad).

122

)

Page 123: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Máquinas de EstadosMáquinas de Estados

Un estado tiene:Nombre

Transiciones internas: lista de acciones ejecutadas en ese estado (entry/exit/do)( y )

Ejemplo:j p

Typing Passwordt / t h i i ibl

Nombreentry/set echo invisibleexit/set echo normalcharacter/handle characterhelp/display help

Transicionesinternas

123

help/display help

Page 124: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Máquinas de EstadosStart Partial Dial

Máquinas de Estados

digit(n)Startentry/start dial toneexit/stop dial tone

Partial Dialentry/number.append(n)

digit(n)Estado compuesto: digit(n)

Dialing

digit(n)Startentry/start dial tone

Partial Dialentry/number.append(n)

[number.isValid()]y

exit/stop dial toney pp ( )

124digit(n)

Page 125: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Ejercicio: BibliotecaEjercicio: Biblioteca

Una biblioteca tiene copias de libros Estos últimos seUna biblioteca tiene copias de libros. Estos últimos se caracterizan por su nombre, tipo (novela, teatro, poesía, ensayo), editorial, año y autor. Los autores se caracterizan por su nombre, nacionalidad y fecha de nacimiento.Cada copia tiene un identificador y puede estar en laCada copia tiene un identificador, y puede estar en la biblioteca, prestada, reservada, con retraso o en reparación.Los lectores pueden tener un máximo de 3 libros enLos lectores pueden tener un máximo de 3 libros en préstamo. Cada libro se presta un máximo de 30 días, por cada día p pde retraso, se impone una “multa” de dos días sin posibilidad de coger un libro.Realiza el diagrama de estados de la clase “copia”Realiza el diagrama de estados de la clase copia .

Page 126: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

SolucionSolucion

enCon

Retraso

ConRetraso yreser ado

devolver()reservar(id) /usrRes = iden

reparacion

reparar()reparado()

Retraso

[getDate()>fp+30]

reservado

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

enbiblioteca prestado

prestar(id,fecha)/fp=fecha reservadoreservar(id) /

usrRes = iddevolver()

devolver()prestar(id, fecha)[usrRes==id]/fp=fecha

t (2 d ) enreserva

tm(2 days)

Page 127: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Solucion: Estados JerárquicosSolucion: Estados Jerárquicos

enCon

Retraso

ConRetraso yreser ado

reservar(id) /usrRes = iden

reparacion

reparar()reparado()

Retraso

[getDate()>fp+30]

reservado

[getDate()>fp+30]

usrRes = id

enbiblioteca prestado

prestar(id,fecha)/fp=fecha reservadoreservar(id) /

usrRes = id

devolver() devolver()prestar(id, fecha)[usrRes==id]/fp=fechat (2 d ) en

reservafp=fechatm(2 days)

127

Page 128: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Máquinas de EstadosqComponentes Ortogonales

Incomplete

lab donelab doneLab1 Lab2

Term project done PassedTermProject

project done

Final passFinalTest

pass

128Failedfail

Page 129: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Máquinas de EstadosqComponentes Ortogonales: Utilidad

Modelo de un sistema formado por un proceso en red sin componentes ortogonales.

ack

Idle Message Sendingtransmit

Idle Message Sendingarr.

time out arrtime out arrarr

129

Page 130: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Máquinas de EstadosqComponentes Ortogonales: Utilidad

ack1

Idle1 Mess1 Send1trans1

1

d 1Idle2

ss1Idle2

d1Idle2arr1

1

toutarr1

arr arr arr2tout1 arr1

Idle1

arr2

Mess1

arr2

Send1trans1

arr2arr2arr1

arr2

Idle1Mess2

Mess1Mess2arr1

trans

Send1Mess2

trans1

tout1 arr1ack1 trans2

Idle1Send

trans2 tout2ack2 Mess1

Send

tout2arr1

ack2

Dos 130

Send2 Send2

arr2

arr1 procesos

Page 131: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Máquinas de Estados

ack P 1

qComponentes Ortogonales: Utilidad

ack Proc-1

Idle Message Sendingarr.

transmit

time out arrarr

P 2ack

Proc-2

Idle Message Sendingarr.

transmit

131time out arrarr

Page 132: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Máquinas de Estados

P 1

qComponentes Ortogonales: Utilidad

transmit

ack/ channel = freearr

Proc-1

Idle Message Sendingarr

transmitWait

channel[channel==free ] /channel = busy

time out / channel = freearr

P 2Proc-2

transmitarr

ack/ channel = free

Idle Message Sendingarr

transmitWait

channel[channel==free ] /channel = busy

132time out / channel = freearr

Page 133: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Máquinas de EstadosP d t d

Máquinas de EstadosPseudo - estados:

Fork / Join.Initial.Deep History / Shallow History.Junction.Choice.

H* H

Entry / Exit point.Terminate.

Setup CleanupA1 A2

B1 B2

133

Fork Join

Page 134: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Máquinas de EstadosqEstado Histórico

BHHHH

t4

IB1 B2

t1: ev0t2

t3

B12

B11B21 t3

t3: ev1

t4: ev2

134

Page 135: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Máquinas de EstadosqEstado Histórico (ii)

BH*H*HH

t4

IB1 B2

t1: ev0t2

t3

B12

B11B21 t3

t3: ev1

t4: ev2

135

Page 136: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Máquinas de EstadosqEstado Histórico. Ejercicio.

Modelar el comportamiento de una cadena de música. Esta puede estar pencendida (ON) o apagada (Standby). La cadena tiene reproductor de CD Radio ycadena tiene reproductor de CD, Radio y Cinta. Se cambia de uno a otro con el botón “mode” Cuando se enciende labotón mode . Cuando se enciende la cadena se recuerda el último estado en el que estuvo.

136

Page 137: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Máquinas de EstadosqEstado Histórico. Ejercicio. Solución

On

Standby

On

CD modemodepower

H

Radio Tapemode

power H

mode

M d l l i i t i t d hi tó iModelar el mismo sistema sin usar estado histórico.

137

Page 138: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Máquinas de EstadosqEstado Histórico. Ejercicio. Solución (ii)

Standby Onpower

CD modemode

power

powerlastCD

power

Radio Tapemode

lastRadiopower

power

powerlastTape power

power

138

Page 139: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Máquinas de EstadosPseudo - estados: Junction.

Máquinas de EstadosPseudo estados: Junction.

Pseudo - estados: Choice.

139

Page 140: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Máquinas de EstadosMáquinas de EstadosPuntos de Entrada/Salida, Estados Sub-Máquina

140

Page 141: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Ejemplo. Reproductor CDs.

I f U iReproductorCD

Li C iInterfazUsuario

...

...

p

- Tpausa: Tiempo- NumActual: Entero+ t ()

ListaCanciones

...+ obtenerCancion(Orden: Entero):

disco11

+ stop()+ pause()+ play()+ eject()

Cancion+ numCanciones(): Entero....1

j ()+ apagar()+ finCancion()- buscaDisco(d: InfoDisco):ListaCanciones

0..*pista1ListaCanciones Cancion

- titulo: Cadena- duracion: Tiempo

1

1driver

player actual

p- Artista: Cadena- Orden: Entero

...

ControladorCD

...+ l ( t C i d d Ti )+ play(act: Cancion, desde: Tiempo)+ stop() : Tiempo+ detectarDisco() : InfoDisco+ detectarAbierto() : Logico

141

() g+ abrir()+ cerrar()+ apagar()

Page 142: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Diagrama de estados para la clase ReproductorCD

[(info=driver.detectarDisco())!=NULL]/disco=buscaDisco(info)NumActual = 1; actual = disco.obtenerCancion(ordenActual)

[not driver.detectarAbierto()]

p

[else]/ driver.stop(); NumActual=1;

Cerrado

( )

Play()/r ()

endOfSong()/NumActual+=1

()rAbi

erto

()]

;actual= disco.obtenerCancion(NumActual)

Stop PlayPlay()/driver.play(actual, 0)

p()

paus

a)

ejec

t ()/

driv

er.c

erra

r

[NumActual<=disco.numCanciones()]/

t lejec

t ()/

driv

er.a

brir

(

river

.det

ecta

r

)/ = dr

iver

.sto p

lay(

actu

al, T

p

stop()/driver.stop(); NumActual=1

Abierto eject ()/driver.stop();driver.abrir()

actual=disco.obtenerCancion(NumActual)driver.play(actual,0)

e d

[dr

Pause

Paus

e()

Tpau

sa

Play

()/

driv

er.p

lNumActual 1actual= disco.obtenerCancion(NumActual)

Pause

apagar ()/

142

apagar ()/driver.stop();driver.apagar()

Page 143: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Máquinas de Estados de ProtocoloAsociadas a un clasificador, interface o puerto.

Máquinas de Estados de Protocolo, p

Especifican qué operaciones del clasificador se puedenllamar en qué condicionesllamar en qué condiciones.

Las operaciones que no generan transición no seLas operaciones que no generan transición no serepresentan.

Má i d t d d l ti E ifi lMáquinas de estado declarativas: Especifican lastransiciones legales (no su condición) para cadaoperación. “Contrato” para el usuario del clasificador.

Máquinas de estado Ejecutables: Especifican todoslos eventos que un clasificador puede recibir y tratar

143

los eventos que un clasificador puede recibir y tratar,con las transiciones implicadas.

Page 144: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Máquinas de Estados de ProtocoloMáquinas de estados de

Máquinas de Estados de ProtocoloMáquinas de estados de

protocolo. Ejemplo (declarativa).

Los estados de máquinas deprotocolo no tienen asociadasacciones exit/entry/do pero

Cleanupacciones exit/entry/do, peropueden tener invariantes.

Las transiciones no tienen

[inv]

Las transiciones no tienenacciones, pero sí pueden tenerpre- y post- condiciones.

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

144

Page 145: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Máquinas de Estados

Una máquina de estados es generalizable

qGeneralización

Una máquina de estados es generalizable.

Se pueden añadir regiones, estados y transiciones.

Se puede cambiar el destino y estado de una transición siempre que la fuente y evento se mantenga.

En caso de herencia múltiple de máquinas de estado (por herencia de los clasificadores asociados), se crea una región ortogonal por cada máquina heredada mas una por la máquina de estados delcada máquina heredada, mas una por la máquina de estados del clasificador específico.

Se anota con <<extended>> junto al nombre de la máquinaSe anota con <<extended>> junto al nombre de la máquina.

Los estados heredados se muestran con líneas punteadas o en gris.

145

Page 146: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Máquinas de EstadosqGeneralización: Ejemplo, cajero autómatico.

146

Page 147: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Máquinas de EstadosqGeneralización: Ejemplo, cajero autómatico.

E ió ibilid d dExtensión: posibilidad deteclear el importe aretirar, y de que este sepueda rechazar.

147

Page 148: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

EjercicioEjercicioM d l l t i t ti d l j d lModelar el comportamiento reactivo de un reloj de pulsera.El valor del tiempo se debe actualizar cada segundo, incluso cuando no semuestra (p.ej. crono encendido).El botón de la parte superior derecha enciende la luz que se mantieneEl botón de la parte superior derecha enciende la luz, que se mantieneencendida tanto como el botón está apretado, una vez que se suelta, la luzestá encendida durante 2 segundos más y se apaga.El botón superior izquierdo alterna entre el modo de crono y de reloj. Elsistema empieza en el modo reloj en el que se muestra la hora en formatosistema empieza en el modo reloj, en el que se muestra la hora en formatoHH:MM:SS.En el modo crono, el tiempo discurrido se muestra en formato MM:SS:CC(CC son centésimas de segundo). Inicialmente el crono empieza en

É( g ) p00:00:00. El botón inferior derecho se usa para activar el crono. Éste seactualiza en incrementos de 1/100 segundos. Presionando el botón inferiorderecho pausa o continua el crono (si el reloj está en modo crono).Pulsando el botón inferior izquierdo resetea el crono a 00:00:00 si el relojq jestá en modo crono y el crono ha sido pausado antes. El crono continuacorriendo (si está corriendo) o mantiene su valor (si está en pausa) inclusocuando el reloj está en un modo de display distinto (por ejemplo, cuando semuestra la hora).

148

muestra la hora).

Page 149: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

EjercicioInterface provisto por el controlador:

Ejercicio

getTime() : Devuelve la hora actual.refreshTimeDisplay() : Repinta la hora en el visor con la hora interna actual. Elvisor no necesita limpiarse antes de llamar a esta función. 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 semodificarán adecuademente, (por ejemplo, si se llama a increaseTime () a lasmodificarán adecuademente, (por ejemplo, si se llama a increaseTime () a las11: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 visorunsetLight() : Apaga la luz del visor.

Eventos de botones recibidos:topRightPressed.topRightReleased.p gtopLeftPressed.topLeftReleased.bottomRightPressed.bottomRightReleased

149

bottomRightReleased.bottomLeftPressed.bottomRightReleased.

Page 150: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Posible SoluciónPosible Solución.

150

Page 151: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Máquinas de EstadosEjemplo. Herramienta de Dibujo (i)

/setup widgetst bi di

Active

setup bindings

Active

exitButtonwmQuit

151

Page 152: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Máquinas de EstadosqEjemplo. Herramienta de Dibujo (ii)

Shapes Canvas

Modes

152

Page 153: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Máquinas de EstadosqEjemplo. Herramienta de Dibujo (iii)

Shapes

TriangleshapeSelected(Circle)

shapeSelected(Triangle)

shapeSelected(Rectangle)

shapeSelected(Triangle)p ( g )

h S l t d(Ci l )Rectangle CircleshapeSelected(Circle)

shapeSelected(Rectangle)

153

Page 154: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Máquinas de EstadosqEjemplo. Herramienta de Dibujo (iv)

Modes

modeSelect(Insert)/

Insert

modeSelect(Insert)/Canvas.Insert

modeSelect(Delete)/Canvas.Delete

modeSelect(Move)/Canvas.Move

modeSelect(Insert)/Canvas.Insert

modeSelect(Delete)/

Canvas.Insert

Move Delete( )/

Canvas.Delete

modeSelect(Move)/C M

154

Canvas.Move

Page 155: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Máquinas de EstadosEjemplo Herramienta de Dibujo (v)

Canvas

Inserting[Shapes in Circle]/d Ci l ( )

Ejemplo. Herramienta de Dibujo (v)

g

Idle[Shapes in Triangle]/

[Shapes in Rectangle]/drawRectangle(x,y)

drawCircle(x,y)

CConDrawingMouse1Press(x,y)

[Shapes in Triangle]/drawTriangle(x,y)

Deleting

delete insert

Moving

insertmove

Idle

D i M 1Cli k( )/

Moving

onDrawingMouse1Press(x,y)/i Obj t fi d l t( ) onDrawingMouse1Click(x,y)/

find_closest(x,y).del()

MovingIdleonDrawingMouse1Release(x,y)

movingObject=find_closest(x,y)

155onDrawingMouse1Motion(x,y)/

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

movedelete

Page 156: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Diagramas de Actividad

Refinamiento de los diagramas de estados

Diagramas de Actividad

Refinamiento de los diagramas de estados.

Los estados representan la ejecución de acciones op jsubactividades

Las transiciones son disparadas cuando se completan estasp pacciones o subactividades

Semántica basada en tokens.

Flujos dirigidos por procesamiento interno (en losdiagramas de estados normales son dirigidos por eventosdiagramas de estados normales son dirigidos por eventosexternos).

156Semántica basada en Redes de Petri. No obstante no seda una transformación a Redes de Petri.

Page 157: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Diagramas de Actividad

Put Coffee Put Filter

gEjemplo

Put Coffee in Filter

Turn onMachine

Put Filterin Machine

[found

Find Beverage

Add Waterto Reservoir Brew

coffee

[found coffee] / coffeePot.turnOn

g

GetCups

Pour

[no coffee] light goes out

Get cansof cola

PourCoffee

[found cola]

Drink

[no cola]

157

Page 158: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Diagramas de ActividadSwimlanes

158

Page 159: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Diagramas de ActividadDiagramas de ActividadPesos en los enlaces

159

Page 160: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Diagramas de ActividadDiagramas de ActividadParámetros y Eventos Temporales

Parámetros/Pins/Excepciones

E t T lEventos Temporales

160

Page 161: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Diagramas de ActividadDiagramas de ActividadExcepciones/Pins

161

Page 162: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Diagramas de ActividadRegiones deExpansión

Regiones de expansión, procesamiento paralelo (también iterative y t i )streaming).

162

Page 163: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Diagramas de ActividadDiagramas de ActividadRegiones Interrumpibles

163

Page 164: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Diagramas de ActividadDiagramas de ActividadParticiones

164

Page 165: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Diagramas de ActividadDiagramas de ActividadFlujos de Objetos: Objectflows

165

Page 166: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

IndiceIndice

Diagramas de Casos de Uso.Diagramas de EstructuraDiagramas de Estructura.Diagramas de Comportamiento.

OCL.Herramientas.EjemplosEjemplos.Bibliografía.

166

Page 167: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

OCL: Object Constraint LanguageOCL: Object Constraint LanguageLenguaje de restricciones para expresar condicionesLenguaje de restricciones para expresar condicionesadicionales que no podemos expresar con diagramas ycardinalidades.

Combinar diagramas y especificaciones textuales.

Lenguaje preciso, no ambiguo, declarativo, tipado, basadoen matemáticas (lógica de predicados y teoría deconjuntos)conjuntos).

Útil para obtener modelos precisos (no anotaciones enp p (lenguaje natural).

Se utiliza fundamentalmente junto a los diagramas de167

Se utiliza fundamentalmente junto a los diagramas declases.

Page 168: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

EjemplosEjemplosFlight Airplane

0 * 1Flightnr: Integer

availableSeats(): Integer

numberOfSeats: Integerflights0.. 1

plane

0 *flights

P

0..

0..*

flights

passengersTambién es un lenguaje de consultas (mismo poder expresivo que SQL).

Person

name: StringContext Flight::availableSeats(): Integerbody: plane.numberOfSeats – passengers->size()

¿Cómo se expresa el hecho de que en ningún vuelo puede habermás pasajeros que asientos tiene el avión?p j q

Restricción OCL:

168Context FlightInv: passengers->size() <= plane.numberOfSeats

Page 169: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

EjemplosEjemplosCasa Persona

S S Id ifi d0 * 1valor: Dinero numSegSoc: Identificador

sueldo: DinerocontratarHipoteca(sum: Dinero,aval: Casa)

casas0..

propietario1

aval 1)

Hipotecaprincipal: Dineromensual: DinerofechaInicio: Fechahipotecas

0..*

1 contratante

0..*hipotecasfechaInicio: Fecha

fechaFinal: Fechahipotecas hipotecas

Reglas adicionales:

1. Una persona puede tener una hipoteca sobre una casa sólo si es el propietario.

2 La fecha de inicio de cada hipoteca ha de ser menor que la de final2. La fecha de inicio de cada hipoteca ha de ser menor que la de final.3. El número de la seguridad social de cada persona ha de ser único.4. Sólo es posible contratar una nueva hipoteca si el salario de la persona

es suficiente.

1695. Sólo es posible contratar una nueva hipoteca si el valor de la casa aval

es suficiente.

Page 170: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Ejemplos Las restricciones OCL se escriben

C t t Hi t

Ejemplos Las restricciones OCL se escribenen el contexto de una instancia deun tipo específico.

Context HipotecaInv: aval.propietario = contratante

Context HipotecaInv: fechaInicio < fechaFin self hace referencia a la instancia

del contexto.

Context PersonaInv: 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

Page 171: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

EjemplosEjemplos

“Los PCs pueden conectarse con un único Hub, los servidores con uno o varios”

Context PCInv: cable_equipo->size() = 1

171

Context ServidorInv: cable_equipo->size() >= 1

Page 172: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

EjercicioEjercicio

“Un Hub no puede conectarse consigo mismo a través de un puerto”

Context Cable_HubsInv: Puerto_Hub.hub->asSet()->size() = 2

172

Page 173: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

¿Dónde usar OCL?¿Dónde usar OCL?

Clases:Clases:Invariantes. Expresión OCL de tipo booleano, la expresión debe ser true para cada instancia de la clase en todo momento de la ejecuciónejecución.

Operaciones:Pre-condición. Condición que debe ser verdadera para ejecutar l ió d t i d i t ila operación en una determinada instancia.Post-condición. Condición que debe ser verdadera al terminar una operación.B d E ifi ió d l d ió d tiBody. Especificación del cuerpo de una operación de tipo query.

Atributos y finales de asociación:Valor inicial. expresión para dar el valor inicial a un atributo o p pfinal de asociación. Se evalua al crear la instancia.Valor derivado.

Transiciones de máquinas de estados:Transiciones de máquinas de estados:Guarda.

Page 174: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

EjemplosEjemplos

parents

children

0..*

0..*

174

Page 175: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

EjemplosEjemplos

E ifi ió d l l i i i l d i d d t ib t / i ti dEspecificación del valor inicial y derivado de atributos/association ends:context Person::income : Integerinit: parents.income->sum() * 1% -- pocket allowanced i d if lf < 18derived:if self.age < 18

then parents.income->sum() * 1% -- pocket allowanceelse job.salary -- income from regular jobendifendif

Subexpresiones (let):context Person inv:let income : Integer = self.job.salary->sum() inif isUnemployed thenincome < 100elseincome >= 100endif

175

endif

Page 176: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Ejemplos ColeccionesEjemplos. Colecciones.

Tipos: Set, OrderedSet, Bag, Sequence.

Operaciones de bucle con colecciones:select(expr): selecciona los elementos que cumplan una condición.

coleccion->select( expresion-logica )l i l t( | i l i )coleccion->select( v | expresion-logica-con-v)

coleccion->select( v : Type | expresion-logica-con-v)

t t C icontext Company inv:self.employee->select(age < 25)->notEmpty()

context Company inv:176

context Company inv:self.employee->select(gender=female)->notEmpty()

Page 177: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Ejemplos Coleccionescollect(expr): devuelve la colección que resulta de evaluar expr

Ejemplos. Colecciones.collect(expr): devuelve la colección que resulta de evaluar exprpara cada elemento de la colección fuente.

self employee >collect( birthDate ) >asSet()self.employee->collect( birthDate )->asSet()

forAll(expr): devuelve verdadero si expr es verdadero en cadaelemento de la colección.

coleccion->forAll( expresion-logica )coleccion->forAll( v | expresion-logica-con-v )coleccion->forAll( v : Type | expresion-logica-con-v )

context Companyinv: self.employee->forAll( isUnemployed = False )inv: self.employee->forAll( p | p.isUnemployed = False )i lf l >f All( P | i U l d F l )

177

inv: self.employee->forAll( p : Person | p.isUnemployed = False )

Page 178: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Ejemplos ColeccionesEjemplos. Colecciones.exists(expr): devuelve true si al menos hay un elemento en lacolección para el que expr es verdaderacolección para el que expr es verdadera.

coleccion->exists( expresion-logica )coleccion->exists( v | expresion-logica-con-v )coleccion->exists( v : Type | expresion-logica-con-v )coleccion->exists( v : Type | expresion-logica-con-v )

context Companyinv: 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 colección.coleccion->iterate( elem : Type; acc : Type = <expresion> | expresion-logica-

l )con-elem-y-acc )

collection->collect(x : T | x.property)collection->iterate(x : T; acc : T2 = Bag{} | acc->including(x.property))

178

( ; g{} | g( p p y))

añade un elemento a una colección

Page 179: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Colecciones Otras OperacionesOtras operaciones de bucle:

Colecciones. Otras Operaciones.p

source->any(iterator|body)source->select(iterator|body)->asSequence()->first()

source->collectNested(iterators|body)source collectNested(iterators|body)Bag de elementos que resultan de aplicar body a cada elemento de source.

source->isUnique(iterators|body)( | y)True si body se evalua a un valor diferente para cada elemento de source.

source->one(expr)Devuelve true si existe exactamente un elemento de source que cumple la condición.

source->reject(expr)Devuelve una colección con los elementos de source que no cumplen laDevuelve una colección con los elementos de source que no cumplen la condición.

source->sortedBy(expr)Ordena source resulta en un OrderedSet

179

Ordena source, resulta en un OrderedSet

Page 180: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

IndiceIndice

Diagramas de Casos de Uso.Diagramas de EstructuraDiagramas de Estructura.Diagramas de Comportamiento.OCL.

HerramientasHerramientas.Ejemplos.j pBibliografía.

180

Page 181: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Herramientas IHerramientas, I

Dib j d diDibujo de diagramasSoporte a la correccción de los diagramas en base a su semánticasemánticaApoyo para simplificar la facilidad de comprensión de los diagramas (layout, etc.)

Archivo de informaciónComprobación de inconsistenciasDetección de trabajo a realizar y mejorasGeneración de informesSoporte a la reutilizaciónSoporte al rediseño (refactorings).

181

Page 182: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Herramientas IIHerramientas, II

Soporte a la navegaciónVistas compuestasElaboración de conexiones entre información relacionadaBú dBúsquedaVisión con diferentes niveles de granularidad (expansión y contracción de partes de la vista)(expansión y contracción de partes de la vista)FiltrosOperaciones sobre componentes de la vistaOperaciones sobre componentes de la vista

182

Page 183: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Herramientas IIIHerramientas, III

Soporte al trabajo multiusuarioSoporte al trabajo multiusuarioBloqueo de informaciónTrabajo colaborativoj

Generación de códigoEsqueletos con información estática (clases)Generación a partir de diagramas de comportamientoGeneración a partir de diagramas de comportamiento (máquinas de estados).Integración con lenguajes especiales (SQL, …)Desarrollo Dirigido por Modelos (MDADesarrollo Dirigido por Modelos (MDA, http://www.omg.org/mda/)

Ingeniería inversaConstrucción de un modelo de diseño a partir de códigoDiseño iterativo: incorporación al modelo de detalles implementados

183

Page 184: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Herramientas IVHerramientas, IV

Integración con otras herramientasEntorno de desarrollo (tendencia a confluir)Configuración del sistema y control de versionesHerramientas de documentaciónHerramientas de prueba de softwareHerramientas de construcción de interfaces de usuarioHerramientas de especificación de requisitosHerramientas de gestión de proyectos y soporte al

d di ñ d llproceso de diseño y desarrollo

184

Page 185: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Herramientas VHerramientas, V

Distintos niveles de abstracciónIntercambio de informaciónIntercambio de información

Especificación OMG de representación de modelos UML en XMI (XML Metadatamodelos UML en XMI (XML Metadata Interchange)

185

Page 186: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Poseidon for UMLPoseidon for UML

Page 187: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

IndiceIndice

Diagramas de Casos de Uso.Diagramas de EstructuraDiagramas de Estructura.Diagramas de Comportamiento.OCL.HerramientasHerramientas.

Ejemplos.Ejemplos.Bibliografía.

187

Page 188: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Ejemplo de AnálisisAplicación para una Galería de Arte

Diagrama de casos de uso inicial

Comprar uncuadro

Vender uncuadro

Vendedor

AgenteGalería

Producir Informe

C dCompradorActualizar

Coeficiente de

188

moda

Page 189: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Comprar unaDiagrama pObra maestra

Comprar unaO

refinado

VendedorObra representativa

Comprar unaObra representativa

Vender uncuadro

Obra representativa

Agente

Producir Informecompras

Comprador

AgenteGalería Producir Informe

ventas

Producir Informetendencias

189Actualizar

Coeficiente de moda

Page 190: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Caso de uso: comprar una obra maestra

Actores primarios:pAgente Galería, vendedor

Interesados y Objetivos:• Agente: quiere obtener una recomendación lo más acertada posible del precio máximo recomendado de manera rápida.• Vendedor: quiere vender el cuadro a un precio razonable de manera rápida.

Precondiciones:El agente ha entrado en la aplicación.

Garantía de éxito (post-condiciones):Se registra la venta.

E i P i i l d É itEscenario Principal de Éxito:1. El agente introduce la descripción del cuadro.2. El sistema busca el cuadro más parecido del mismo autor.3 El sistema presenta el precio recomendado3. El sistema presenta el precio recomendado.4. El agente hace una propuesta por debajo del precio recomendado, y el vendedor acepta la oferta.5 El agente introduce información de la venta5. El agente introduce información de la venta.

Extensiones:2a. No hay ningún cuadro parecido del mismo autor, así que el sistema no presenta una recomendación

190

no presenta una recomendación.4a. El vendedor no acepta la oferta y la venta no se produce.

Page 191: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Diagrama de clases inicial

Si t G ti

CuadronombreDelArtistaapellidosDelArtista

Sistema GestionGaleria

TituloAñoCreacionAltoAnchoTecnicaTema

Cuadro GaleriaClasificacionfechaCompraFechaventa

Cuadro SubastadofechaSubastaprecioSubasta

FechaventanombreVendedordireccionVendedorprecioCompraMaximoprecioCompraRealprecioCompraRealprecioVentaDeseadoprecioVentanombreCompradordireccionCompradordireccionComprador

Obra Maestra Cuadro de Otro Tipo ModanombreArtistausa

191Obra Representativa

nombreArtistaappelidosArtistacoeficiente

usa

Page 192: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

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

Proporciona los datos introducidos por el agente

Vendedor

por el agente

Obra maestra

A t GUI Calcular PrecioAgenteGalería

GUI Calcular PrecioObra Maestra

Cuadro Cuad oSubastado

192

Page 193: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

AgenteGalería

: GUI : Calcular PrecioObra Maestra

: CuadroSubastado

Vendedor

: Obra maestra1: proporcionardatos obramaestra

2: transferir detalles

3: crear objetonuevonuevo

4: devolver objetonuevo5: buscar cuadrossubastados

Datos proporcionados por el vendedor

subastados6: devolver cuadrosubastado7: proporcionar

precio8: mostrarprecio

9: proporcionardetalles delvendedor

10: transferir detallesvendedor 11: solicitar

actualización

12: confirmación13: confirmación14: mostrarconfirmación

193

Page 194: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Un ejemplo completo para todos los diagramastodos los diagramas

Un sistema de gestión de cursos impartidos para un conjunto de clientes. Algunos de esos clientes pueden pertenecer a empresas.

194

Page 195: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

195

Page 196: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

196

Page 197: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

197

Page 198: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

001

1 11.12

2.1

33.1 3.1.1

3.2 3.2.1

198

Page 199: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

199

Page 200: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

200

Page 201: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

201

Page 202: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

202

Page 203: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

203

Page 204: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

IndiceIndice

Diagramas de Casos de Uso.Diagramas de EstructuraDiagramas de Estructura.Diagramas de Comportamiento.OCL.HerramientasHerramientas.Ejemplos

Bibliografía.204

Page 205: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Bibliografía: UMLBibliografía: UMLUML

D Pil N il Pi “UML 2 0 i N t h ll” O’R ill 2005Dan Pilone; Neil Pitman. “UML 2.0 in a Nutshell”. O’Reilly, 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.orgPerdita Stevens, Rob Pooley. “Utilización de UML en Ingeniería del Software con

Objetos y Componentes”. Addison Wesley, 2002.j y p y,Grady Booch, James Rumbaugh, Ivar Jacobson. “The Unified Modeling

Language User Guide”. Addison-Wesley, 1999.Eriksson H E Penker M Lyons B Fado D “UML 2 Toolkit” OMG PressEriksson, H. E., Penker, M., Lyons, B., Fado, D. UML 2 Toolkit . OMG Press,

Wiley. 2004.Craig Larman. “Applying UML and Patterns”. Prentice Hall. 2002.

OCLWarmer Kleppe “The Object Constraint Language 2nd Edition Getting your

205

Warmer, Kleppe. “The Object Constraint Language 2nd Edition. Getting your Models Ready for MDA”. Addison-Wesley. 2003.

Especificación de OCL 2.0: http://www.omg.org/docs/ptc/03-10-14.pdf

Page 206: UML: Lenguaje Unificado de Lenguaje Unificado de Modelado

Bibliografía: Statecharts

Harel D “On Visual Formalisms” Communications of the

Bibliografía: Statecharts

Harel D. “On Visual Formalisms”. Communications of theACM. Vol 31, No. 5. Pp.: 514-530. Mayo 1988.

Harel D., Naamad A. “The STATEMATE Semantics ofStatecharts”. ACM Transactions on SoftwareEngineering and Methodology Vol 5 No 4 Oct 1996Engineering and Methodology, Vol. 5, No. 4, Oct. 1996,pp.: 293-233.

D id H l d E G E bl bjDavid Harel and Eran Gery. Executable objectmodeling with statecharts. IEEE Computer, pages 31-42,1997.

206