Académique Documents
Professionnel Documents
Culture Documents
http://uml.org
Tema 4
Introduccin
Similitud:
Arquitectos, edificios, planos Ing. Inf., programas, diagramas
UML
Unified Modeling Language. Versin 2.0 (finales 2004) Diagramas (ing. inf ) (ing inf.)
Usados como esquemas y menos con informacin rigurosa (planos de arquitectos) Dos modos:
Ingeniera inversa: a partir de cdigo hacer diagramas Ingeniera directa: hacer diagramas y luego implementar
Dominio
Mundo en el que hay definido un problema
Modelo:
Abstraccin de un problema Formado por objetos
2
Indice
Casos de Uso
Describen qu h D ib hace el sistema d d el punto l i t desde l t de vista de un observador externo. Ponen nfasis en qu hace el sistema, no en cmo lo hace. 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
Actor Algo A t = Al con comportamiento (persona, otro t i t ( t programa, organizacin...), que interactua con el sistema. Escenario (instancia de caso de uso) = Secuencia de acciones e interacciones entre los actores y el sistema. Caso de Uso = Coleccin de escenarios (xito y fracaso) que describen actores que usan el sistema para conseguir un objetivo.
5
Casos de Uso
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 el sistema debe proporcionar el precio recomendado cuadro, 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 p , , , Los datos bsicos incluyen el nombre y apellidos del artista, el ttulo y fecha de la obra, sus dimensiones, la tcnica (leo, acuarela u otras tcnicas), el tema (retrato, naturaleza muerta, paisaje, otro) y la clasificacin (obra maestra, obra representativa, otro tipo). Si es obra maestra, el precio recomendado se calcula comparando el cuadro introducido con los que hay en el registro de cuadros, tomando el ms parecido y aplicando un algoritmo que tiene en cuenta la coincidencia de tema, la tcnica y las dimensiones del cuadro. El sistema debe utilizar informacin de subasta de todo el mundo que ahora la galera recibe en un CD de manera mensual. Para una obra representativa, el precio recomendado se calcula como si fuera una obra maestra y luego se aplica una correccin. Para una obra de otro tipo, se calcula utilizando el rea del cuadro y un coeficiente de moda para el artista. Si no hay coeficiente de moda para un artista, el agente tiene por norma no comprar el cuadro. El coeficiente de moda varia de mes a mes. 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 y el precio de venta real. p p 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
Vendedor
Comprar una Obra de Otro Tipo Vender un cuadro Producir Informe compras
Comprador
Agente Galera
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 recomendado d manera rpida. i d d de 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. 1 El agente i t d t introduce l d la descripcin d l cuadro. i i del d 2. El sistema busca el cuadro ms parecido del mismo autor. 3. El sistema presenta el precio recomendado. 4. El agente hace u a p opues a po debajo de p ec o recomendado, y e vendedor age e ace una propuesta por del precio eco e dado, el e dedo acepta la oferta. 5. El agente introduce informacin de la venta. Extensiones: 2a. No hay i 2 N h ningn cuadro parecido d l mismo autor, as que el sistema no presenta una d id del i t l i t t 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 Actividad d A ti id d de Ventas
10
Inclusin (include)
Implica hacer tambin
Extensin (extend)
Se insertar en un determinado punto (llamado punto de extensin) dependiendo de una condicin condicin. 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
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
Son tiles en tres reas:
Especificacin de requisitos Comunicacin con los clientes
Su simplicidad los convierte en excelentes medios de comunicacin
Indice
Diagramas de Casos de Uso.
Diagramas de Estructura.
Clases y Objetos. Componentes. Estructuras Compuestas. Despliegue. Paquetes. q Diagramas de Comportamiento. OCL. Herramientas. Ejemplos. Bibliografa.
15
Clases y Objetos
Los diagramas de Clases y de Objetos son los principales modos de representar los aspectos estructurales en UML. Diagramas de clases. Estructura del sistema.
Clases. Clases
Atributos: Tipos, valores iniciales. Operaciones: visibilidad.
Clases y Objetos
Elemento
Diagrama de ag a a 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: double t d bl -centroy: double +Area(): double +Permetro(): double
18
Clases
Atributos
Notacin para atributos: p [visibilidad] [/] nombre [: tipo] [multiplicidad] [= valor] [{ propiedad }] Visibilidad (opcional):
Pblica: + Privada: Protegida: # Paquete: ~
/ indica que el atributo es derivado. La multiplicidad va entre [ ] y por defecto vale 1. Propiedades vlidas: {readOnly}, {union}, {subsets <property {readOnly} {union} <propertyname>}, {redefines <property-name>}, {ordered}, {bag}, {seq}, {sequence}, y {composite}. Un atributo subrayado es esttico.
19
Clases
Ejemplo atributos
ClaseA
name: String shape: Rectangle + size: Integer [0..1] / area: Integer {readOnly} height: Integer = 5 h i ht I t width: Integer # pos: Point
ClaseB
id: {redefines name} shape: Square
20
Clases
Mtodos
Notacin N t i para mtodos: t d [ [visibilidad] nombre ( [lista-parametros] ) : [{propiedad}] ] [ p ] [{p p }] Visibilidad (opcional). nombre del mtodo lista de parmetros formales, separados por coma:
direccion nombre : tipo [multiplicidad] = valor [{propiedad}] Los mtodos estticos se subrayan.
Ejemplos:
display () -hide () +createWindow (location: Coordinates container: Container [0 1]): Window Coordinates, [0..1]): +toString (): String 21
Asociaciones
Composicin
Un Crculo contiene un Punto Se representa con una Composicin
Crculo
Punto
Asociaciones
Navegacin, Roles, Cardinalidad
Navegacin: N i
Unidireccional Bidireccional No especificado. No navegable (x)
23
Asociaciones
Ejemplos de Navegacin y Cardinalidad
24
Ejercicio
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 ti l d tienen un sueldo b t l empleados que ld bruto, los l d son directivos tienen una categora, as como un conjunto de empleados subordinados. p De los clientes adems se necesita conocer su telfono de contacto. La L aplicacin necesita mostrar l li i it t los d t datos d empleados y de l d 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
Directivo
0..*
- categoria + mostrar ()
Empresa
- nombre b
26
Asociaciones: Agregacin
Cuando la relacin todo/parte no es tan , g g fuerte, se utiliza Agregacin
Ventana
susFiguras 0.. 0 *
Figura
La ventana contiene figuras, pero cada una puede existir sin la otra
27
Figura
suContexto ContextoDibujo
Dependencia
28
Clases Asociativas
Asociacin con atributos propios.
Nombre asociacin
casado con >
Empleado
1 Matrimonio
fecha
Persona
testigos 2
0..*
Clase Asociativa
29
Clases y Objetos j
Estilo
Los atributos no deben ser objetos (utilizar relaciones en tal caso). 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..*
Efectivo
moneda
Cheque
nombre identifBanco autorizado
DetalleOrden
cantidad tipoImpuesto calcSubtotal calcPeso
Item 0.. 0 * 1
peso descripcin precioPorCantidad obtenerPeso
31
Ejercicio
Especificar un diagrama de clases que describa redes de ordenadores. Los elementos que se pueden incluir en la red son:
Servidor, PC, Impresora. S id PC I Hub, Cable de red.
Los PCs pueden conectarse con un nico Hub los Hub, servidores con uno o varios. Los Servidores y PCs pueden generar mensajes, con una cierta longitud. 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. Las impresoras pueden averiarse, con cierta probabilidad, durante cierto tiempo. 32
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
Equipo E i
equipo
pichichi
Jugador J d
34
Ms sobre asociaciones
Adornos en asociaciones y fin de asociacin.
Asociaciones d i d ( A i i derivadas (con un / d l t d l nombre). delante del b ) Propiedades, cerca del nombre de la asociacin. Los finales de la asociacin pueden adornarse con:
Multiplicidad. Nombre (rol). ( ) Propiedades:
{subsets <nombre-prop>}. {redefine <nombre-fin-asoc>} <nombre-fin-asoc>}. {union}. {ordered} (un conjunto ordenado). {bag} (conjunto con repeticin) repeticin). {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}
Ms sobre asociaciones
Asociaciones Cualificadas
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
Dado un objeto cualificado, el nmero de objetos al otro lado de la asociacin viene d d por l multiplicidad d l d i dado la lti li id d 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 asociativo hash.
37
body-condition
post-condicin
38
Interfaces
Clase <<interface>> MiInterfaz mtodos Clase MiInterfaz Clase MiInterfaz
39
Plantillas
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 pedidos de productos, de los cuales se anota la cantidad en stock. Un p p , 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 Adems slo es posible cliente. Adems, realizar peticiones de productos en stock. Existe una clase (de la cual debe haber una nica instancia en la aplicacin) responsable del cobro, orden de distribucin y confirmacin de los pedidos. El p p 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 parte de un pedido compuesto, se rechaza el pedido entero). Una vez que el p p p , p ) q 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)
Nota: pedidos_simples es una asociacin derivada. El atributo total de Pedido es derivado derivado. 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: Producto num: int): aadir_pedido(p: Producto, pre: p.stock>=num
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
Una biblioteca tiene copias de libros Estos ltimos se libros. caracterizan por su nombre, tipo (novela, teatro, poesa, ensayo), editorial, ao y autor. Los autores se caracterizan por su nombre, nacionalidad y fecha de nacimiento. Cada copia tiene un identificador y puede estar en la identificador, biblioteca, prestada, con retraso o en reparacin. Los lectores pueden tener un mximo de 3 libros en prstamo. prstamo Cada libro se presta un mximo de 30 das, por cada da de retraso, se impone una multa de dos das sin p posibilidad de coger un nuevo libro. 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: i t int 1..* obras
1 autor
Autor
- nombre: string b 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=25 edad 25 - sueldo_bruto=36000 empleados subordinados
e1 : Empleado
- nombre=Pedro - edad=23 edad 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
Componente = U id d M d l con i t f C t Unidad Modular interfaces bien definidos que es reemplazable en su entorno entorno. nfasis f i en reutilizacin y encapsulamiento. tili i l i t Servicios que provee y requiere (interfaces). Componentes lgicos (componentes de negocio, de proceso) y fsicos (EJB, CORBA, COM+, .NET, )
47
Componentes
Interfaces que ofrece Interfaces que requiere
48
Componentes
Vista de j blanca Vi t d caja bl
49
Estructuras Compuestas
Composicin d elementos ( l ifi d C i i de l t (clasificadores o colaboraciones) Instancias en tiempo de ejecucin que colaboran a travs de enlaces para alcanzar objetivos comunes. Colaboraciones: a travs de roles. Se aade a las clases estructura internas y puertos.
50
Estructuras Compuestas
Estructura interna de una clase. clase
51
Estructuras Compuestas
Alternativa a relaciones de composicin
Application A li ti
Window
Button
Application
2
Window
Button
52
Estructuras Compuestas
Estructura interna de una clase. Constructor.
53
Estructuras Compuestas p
Colaboracin.
Estructura i t E t t interna d una colaboracin. de l b i
54
Estructuras Compuestas p
Colaboracin.
Ocurrencia d una colaboracin en otra. Bi di O i de l b i t Binding.
55
Estructuras Compuestas p
Colaboracin.
Template de colaboracin.
56
Despliegue
Definen l arquitectura d ejecucin d un sistema. D fi la it t de j i de i t Representa la asignacin de artefactos software a nodos nodos.
Nodos = elementos hardware, o entornos de ejecucin software. Artefactos = elementos concretos (p.e.: ficheros) que son el resultado del proceso de desarrollo.
57
Despliegue p g
Relaciones entre artefactos.
Despliegue p g
Ejemplo.
59
Paquetes
Un paquete es un contenedor que agrupa elementos relacionados. Los diagramas de paquetes muestran la estructura de alto nivel de la aplicacin. aplicacin
60
Paquetes q
Ejemplo.
61
Indice
Diagramas de Casos de Uso Uso. Diagramas de Estructura.
62
Diagramas de Interaccin
El comportamiento se representa a t d t i t t travs de colaboraciones:
Coleccin de objetos:
Instancias Roles
Diagramas de Interaccin
El patrn d t de mensajes d t j dentro colaboracin es una interaccin: de d 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
Diagrama de Comunicacin
Muestra un contexto y una interaccin interaccin.
Diagrama d S Di de Secuencia i
Representacin explcita de comunicaciones, eje temporal. la secuencia de
Diagramas de Interaccin
Estructura d l participantes E t t de los ti i t
Diagramas de Comunicacin
Patrones de comunicacin
Diagramas de Comunicacin Diagramas de Secuencia
Temporizacin de la comunicacin. p
Diagramas de Secuencia Diagramas de Tiempo.
Diagramas de Comunicacin
Representa l R t los objetos ( l bj t (roles o i t instancias) i ) necesarios para una interaccin y sus relaciones. Puede tambin representar la secuencia de mensajes
Especifica el orden relativo mediante nmeros
Diagramas de Comunicacin
p participantes p
:Window Wi d / Observer : SlidingBarIcon Ob Slidi B I
roles l relaciones
/Subject :CallQueue
68
Diagramas de Comunicacin
:Window Wi d
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 de Comunicacin g
Multiobjetos.
Representan conjuntos d i t R t j t de instancias en el i l extremo muchos de una relacin 1:N o M:N Una operacin sobre cada instancia requiere dos d mensajes: j
Iteracin para obtener referencias a las instancias individuales Mensaje a cada instancia, usando la referencia temporal
71
Diagramas de Comunicacin g
Multiobjetos.
servers 1:aServer:=find(specs)
:Client
:Server :Server
aServer <<local>>
:Server
2:process
72
Diagramas de Comunicacin g
Condiciones.
e:ClaseE 2: 2 msg6() 6() msg1() 1a [test]: msg2()
a:ClaseA
b:ClaseB
d:ClaseD
c:ClaseC
73
Ejercicio: Biblioteca
Una biblioteca tiene copias de libros Estos ltimos se libros. caracterizan por su nombre, tipo (novela, teatro, poesa, ensayo), editorial, ao y autor. Los autores se caracterizan por su nombre, nacionalidad y fecha de nacimiento. Cada copia tiene un identificador y puede estar en la identificador, biblioteca, prestada, reservada, con retraso o en reparacin. Los lectores pueden tener un mximo de 3 libros en prstamo. Cada libro se presta un mximo de 30 das, p cada da p por de retraso, se impone una multa de dos das sin posibilidad de coger un libro. 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
1.2: retraso:=getRetraso(fecha)
dev:Copia
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
fechas
1.2: retraso:=getRetraso(fecha)
fec:Fecha
76
Diagramas de Comunicacin g
Etiquetas de las flechas.
predecesor orden-secuencial valor-retorno d d i l l t := nombre-mensaje lista-argumentos
Predecesor
Lista separada por , terminada en / El mensaje no est habilitado h t que no ocurran l j t h bilit d hasta los mensajes en la lista
Orden en la secuencia
Lista separada por ., terminada en : Cada trmino C d t i representa nivel d anidamiento procedural t i l de id i t d l Iteracin: *[clusula interacin] Bifurcacin: [condicin]
77
Diagramas de Comunicacin g
Etiquetas de las flechas.
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 de Comunicacin g
Ejemplo.
redisplay()
:Controller
:Window
wire:Wire
<< self >>
line
:Line {new} Li { }
left:Bead
right:Bead g
79
Diagramas de Comunicacin g
Objetos Activos.
Poseen su propio hil d control P i hilo de t l Un objeto pasivo slo almacena datos
Puede enviar mensajes mientras procesa un pedido (mensaje) que haya recibido
Diagramas de Comunicacin g
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 de Comunicacin g
Objetos Activos. Ejemplo.
Diagramas de Secuencia
Representa conjunto de mensajes entre roles R t j t d j t l (o instancias) en una interaccin Dos dimensiones:
Tiempo (generalmente vertical); puede ser una escala si el sistema es de tiempo real Diferentes instancias ( Dif t i t i (generalmente h i l t horizontal); el t l) l orden relativo no tiene importancia
Diagramas de Secuencia
Traza: secuencia de ocurrencias de eventos <e1 e2 ...en> La semntica de una interaccin es un par de conjuntos de trazas (vlidas e invlidas) [P, I]. Pueden existir t P d i ti trazas no i l id incluidas en l los d dos conjuntos j t anteriores. Equivalencia de interacciones, si sus conjuntos de trazas son iguales. 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
c: di l digit dial 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 Controller C ll ds: UserData Service S i CurrentUser: UserData
86
Diagramas de Secuencia
operador guarda
:Pedido
entregar() loop alt [for each producto] [value > 10000] entregar()
procedure entregar() foreach producto: if producto.value>10000 p 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
Diagramas de Secuencia
Referencias (Ocurrencias de Interacciones)
Copian el contenido de la interaccin referida. Substitucin de parmetros y conexin de las puertas (gates) formales y actuales actuales.
89
Diagramas de Secuencia g
Operadores sobre interacciones.
Fragmentos combinados operadores (i): combinados,
Alternativa (alt).
Eleccin (mediante una guarda) de una interaccin interaccin.
Asercin (assert).
La secuencia especificada por el operador es la nica vlida. a secue c a espec cada po e ope ado a ca da
Opcin (opt).
Equivalente a un operador alt con un solo fragmento.
Ruptura (break).
El operando se ejecuta en lugar del resto de la interaccin englobada en el fragmento padre. padre .
Paralelo (par).
Mezcla de las trazas de los operandos (cualquier entrelazado es vlido mientras preserve el orden de los eventos de cada operando) operando).
90
Diagramas de Secuencia g
Operadores sobre interacciones.
Secuenciacin dbil (seq) (seq).
Define un conjunto de trazas que cumple: 1. Se mantiene el orden de eventos de los operandos 2. 2 Eventos de otras lneas de vida de otros operandos pueden venir en cualquier orden. 3. Eventos de la misma lnea de vida de otros operandos se ordenan de tal manera que cualquier evento del primer operando va antes que el del segundo.
Negativa (neg).
Define trazas invlidas.
Diagramas de Secuencia g
Operadores sobre interacciones. Alternativa.
92
Diagramas de Secuencia g
Operadores sobre interacciones. Alternativa.
93
Diagramas de Secuencia g
Operadores sobre interacciones. Opcin.
94
Diagramas de Secuencia g
Operadores sobre interacciones. Bucle.
95
Diagramas de Secuencia g
Operadores sobre interacciones. Regin Crtica.
96
Diagramas de Secuencia
Ejemplo
Sd Alarm Activation
T = now
:SystemHandler
assert
:CellHandler
:Sensor
:Alarm
:CellConfigurationInformation
seq
par
opt
Test() Validate
97
opt
{t..t+5}
ACK
ACK
Diagramas de Secuencia g
Retorno de Valores
98
Diagramas de Secuencia g
Tiempo
Restricciones temporales (duracin)
Duracin de mensajes y seales (duration) Intervalos de tiempo ({t..t+3}) y restricciones temporales. Observaciones temporales (tiempo actual, now)
99
Diagramas de Secuencia g
Descomposicin en partes
La estructura interna de ACSystem tiene una ACS i interaccin AC_UserAccess que se invoca en este fragmento.
100
Diagramas de Secuencia g
Descomposicin en partes
101
Diagramas de Secuencia g
co-regin
Coregin: s[u] recibe los mensajes en cualquier orden.
102
Diagramas de Secuencia g
Invariantes
Invariantes. Invariantes
Se comprueban justo antes de la ocurrencia del prximo evento ( t (puede h b d haber mensajes no mostrados en el j t d l 103 diagrama).
Diagramas de Secuencia g
Binding
104
Ejercicio
Especificar el diagrama de secuencia de la operacin f 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()
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: i t ill A t l int + 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. El usuario pulsa los dgitos del nmero de telfono Para cada dgito g
la pantalla se actualiza para aadir el dgito marcado se emite un tono por el receptor
El usuario pulsa el botn Enviar Enviar El indicador en uso se ilumina en pantalla El mvil establece conexin con la red Los dgitos L d it acumulados se mandan a l red l d d la d Se establece la conexin con el nmero marcado
Solucin
:Button :Dialer :Display :Speaker send:Button :CellularRadio
loop
emitTone (code)
Solucin
115
Tiempo
Muestran M t interacciones i t i donde d d importante razonar sobre el tiempo. es
Representa condiciones que cambian en una o varias lneas de vida, en un eje lineal de tiempo tiempo. 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
Statecharts [H l] St t h t [Harel] Representan el comportamiento de entidades ( p e p.e. instancias de clases). Especifican reaccin ante eventos Describen posibles secuencias de estados y acciones por las que pueden pasar las entidades. De comportamiento vs. de protocolo.
120
Mquinas de Estados
Comienzo Estados
digit(n)
Fin
start
Partial Dial
digit(n)
Transiciones
121
Mquinas de Estados
Un transicin puede t U t i i d tener:
Evento.
Eventos temporales: tm(n)
A1
A2
Smbolos especiales para el envo y recepcin de seales (normalmente usados en diagramas de actividad). )
122
Mquinas de Estados
Un estado tiene:
Nombre Transiciones internas: lista de acciones ejecutadas en ese estado (entry/exit/do) ( y )
Ejemplo: j p
Typing Password
entry/set echo invisible t / t h i i ibl exit/set echo normal character/handle character help/display help
Mquinas de Estados
Start
entry/start dial tone exit/stop dial tone
digit(n)
Partial Dial
entry/number.append(n)
digit(n)
Partial Dial
entry/number.append(n) y pp ( )
[number.isValid()]
digit(n)
124
Ejercicio: Biblioteca
Una biblioteca tiene copias de libros Estos ltimos se libros. caracterizan por su nombre, tipo (novela, teatro, poesa, ensayo), editorial, ao y autor. Los autores se caracterizan por su nombre, nacionalidad y fecha de nacimiento. Cada copia tiene un identificador y puede estar en la identificador, biblioteca, prestada, reservada, con retraso o en reparacin. Los lectores pueden tener un mximo de 3 libros en prstamo. Cada libro se presta un mximo de 30 das, p cada da p por de retraso, se impone una multa de dos das sin posibilidad de coger un libro. Realiza el diagrama de estados de la clase copia. copia
Solucion
Con Retraso reservar(id) / usrRes = id Con Retraso y reservado reser ado devolver()
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 tm(2 d t (2 days) )
[getDate()>fp+30]
127
Mquinas de Estados q
Componentes Ortogonales
Incomplete
Lab1 Term Project Final Test
fail lab done
Lab2 Passed
project done
pass
Failed
128
Mquinas de Estados q
Idle
arr.
Message
transmit
Sending arr
arr
time out
129
Mquinas de Estados q
ack1 Idle1 d Idle2 arr2 Idle1 Mess2 trans2 ack2 tout2 Idle1 Send2 Mess1 ss Idle2 arr1 arr1 arr1 ack1 arr2 arr2 Mess1 Mess2 trans2
trans1
arr1
Dos procesos
130
Mquinas de Estados q
ack
Idle
arr.
Message arr
transmit
time out
arr.
Sending arr
time out
131
Mquinas de Estados q
arr
channel = busy
time out / channel = free ack/ channel = free Proc-2 P 2 arr Sending
Idle
arr
channel = busy
132
Mquinas de Estados
Pseudo - estados: P d t d Fork / Join. Initial. Deep History / Shallow History. H* Junction. Choice. Entry / Exit point. Terminate. A1 Setup B1 B2
A2 Cleanup
Fork
Join
133
Mquinas de Estados q
Estado Histrico
B
H
t4 I B1 t1: ev0 B12 t3: ev1 B11 t2
B2 B21 t3
t4: ev2
134
Mquinas de Estados q
Estado Histrico (ii)
B
H H*
t4 I B1 t1: ev0 B12 t3: ev1 B11 t2
B2 B21 t3
t4: ev2
135
Mquinas de Estados q
Estado Histrico. Ejercicio.
Modelar el comportamiento de una p cadena de msica. Esta puede estar encendida (ON) o apagada (Standby). La cadena tiene reproductor de CD Radio y CD, Cinta. Se cambia de uno a otro con el botn mode. Cuando se enciende la mode cadena se recuerda el ltimo estado en el que estuvo.
136
Mquinas de Estados q
H
Radio mode Tape
137
Mquinas de Estados q
Standby lastCD power power power power lastTape power power mode
On CD mode
lastRadio
Radio
mode
Tape
138
Mquinas de Estados
Pseudo - estados: Junction.
139
Mquinas de Estados
Puntos de Entrada/Salida, Estados Sub-Mquina
140
+ stop() t () + pause() + play() 1 + eject() j () + apagar() + finCancion() - buscaDisco(d: InfoDisco): ListaCanciones player 1 driver 1 ControladorCD ... + play(act: Cancion, desde: Tiempo) l ( t C i d d 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
Cerrado
eject ()/ driver.cerrar () r e eject ()/ d driver.abrir () (
Stop
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
142
Los estados de mquinas de protocolo no tienen asociadas acciones exit/entry/do exit/entry/do, pero pueden tener invariantes. Las transiciones no tienen acciones, pero s pueden tener pre- y post- condiciones.
Cleanup [inv]
144
Mquinas de Estados q
Generalizacin
Una mquina de estados es generalizable generalizable. Se pueden aadir regiones, estados y transiciones. Se puede cambiar el destino y estado de una transicin siempre que la fuente y evento se mantenga. En caso de herencia mltiple de mquinas de estado (por herencia de los clasificadores asociados), se crea una regin ortogonal por cada mquina heredada mas una por la mquina de estados del heredada, clasificador especfico. Se anota con <<extended>> junto al nombre de la mquina mquina. Los estados heredados se muestran con lneas punteadas o en gris.
145
Mquinas de Estados q
Generalizacin: Ejemplo, cajero autmatico.
146
Mquinas de Estados q
Generalizacin: Ejemplo, cajero autmatico.
Extensin: posibilidad d E i ibilid d de teclear el importe a retirar, y de que este se pueda rechazar.
147
Ejercicio
Modelar l M d l el comportamiento reactivo d un reloj d pulsera. t i t ti de l j de l El valor del tiempo se debe actualizar cada segundo, incluso cuando no se muestra (p.ej. crono encendido). El botn de la parte superior derecha enciende la luz que se mantiene luz, encendida tanto como el botn est apretado, una vez que se suelta, la luz est encendida durante 2 segundos ms y se apaga. El botn superior izquierdo alterna entre el modo de crono y de reloj. El sistema empieza en el modo reloj en el que se muestra la hora en formato reloj, HH:MM:SS. En el modo crono, el tiempo discurrido se muestra en formato MM:SS:CC ( (CC son centsimas de segundo). Inicialmente el crono empieza en g ) p 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 resetea el crono a 00:00:00 si el reloj q 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
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.
149
150
Mquinas de Estados
Ejemplo. Herramienta de Dibujo (i)
Active
wmQuit
exitButton
151
Mquinas de Estados q
Ejemplo. Herramienta de Dibujo (ii)
Shapes Canvas
Modes
152
Mquinas de Estados q
Ejemplo. Herramienta de Dibujo (iii)
Shapes
shapeSelected(Triangle) shapeSelected(Rectangle)
Triangle
shapeSelected(Circle)
shapeSelected(Triangle) p ( g )
Rectangle
Circle
153
Mquinas de Estados q
Ejemplo. Herramienta de Dibujo (iv)
Modes modeSelect(Insert)/ Canvas.Insert modeSelect(Move)/ Canvas.Move
Insert
Move
Delete
154
Mquinas de Estados
Canvas
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
Diagramas de Actividad
Refinamiento de los diagramas de estados estados.
Los estados representan p subactividades la ejecucin j de acciones o
Las transiciones son disparadas cuando se completan estas p p acciones o subactividades Semntica basada en tokens.
Flujos dirigidos por procesamiento interno (en los diagramas de estados normales son dirigidos por eventos externos). Semntica basada en Redes de Petri. No obstante no se 156 da una transformacin a Redes de Petri.
Diagramas de Actividad g
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
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
Eventos Temporales E t T l
160
Diagramas de Actividad
Excepciones/Pins
161
Diagramas de Actividad
Regiones de Expansin
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
Diagramas de Casos de Uso. Diagramas de Estructura. Estructura Diagramas de Comportamiento.
OCL.
Herramientas. Ejemplos. Ejemplos Bibliografa.
166
Ejemplos
Flight
0.. 0 * Flightnr: Integer availableSeats(): Integer flights 0 * 0.. passengers 0..* flights 1 plane numberOfSeats: Integer
Airplane
Person P
name: String
Cmo se expresa el hecho de que en ningn vuelo puede haber ms pasajeros que asientos tiene el avin? p j q Restriccin OCL:
Context Flight Inv: passengers->size() <= plane.numberOfSeats
168
Ejemplos
Casa
0.. 0 * valor: Dinero aval 1 casas
Persona
1 numSegSoc: Id ifi d S S Identificador 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 Hipoteca C t t Hi t Inv: aval.propietario = contratante Context Hipoteca Inv: fechaInicio < fechaFin
Context Persona Inv: Persona::allInstances()->isUnique(numSegSoc) Context Persona::contratarHipoteca(sum: Dinero, aval: Casa) pre: self.hipotecas.mensual->sum()+sum <= self.sueldo * 0.70 Context Persona::contratarHipoteca(sum: Dinero, aval: Casa) pre: aval.valor >= aval.hipotecas.principal->sum()
170
Ejemplos
Los PCs pueden conectarse con un nico Hub, los servidores con uno o varios Context PC Inv: cable_equipo->size() = 1 Context Servidor Inv: cable_equipo->size() >= 1
171
Ejercicio
Un Hub no puede conectarse consigo mismo a travs de un puerto
Context Cable_Hubs Inv: Puerto_Hub.hub->asSet()->size() = 2
172
Operaciones:
Pre-condicin. Condicin que debe ser verdadera para ejecutar la l operacin en una d t i determinada i t i d instancia. i Post-condicin. Condicin que debe ser verdadera al terminar una operacin. Body. Especificacin del cuerpo d una operacin d ti query. B d E ifi i d l de i de tipo
Ejemplos
174
Ejemplos
Especificacin d l valor i i i l y d i d d atributos/association ends: E ifi i del l inicial derivado de t ib t / i ti d
context Person::income : Integer init: parents.income->sum() * 1% -- pocket allowance derived:if d i d if self.age < 18 lf then parents.income->sum() * 1% -- pocket allowance else job.salary -- income from regular job endif
Subexpresiones (let):
context Person inv: let income : Integer = self.job.salary->sum() in if isUnemployed then income < 100 else income >= 100 endif
175
176
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 condicin.
source->reject(expr)
Devuelve una coleccin con los elementos de source que no cumplen la condicin.
source->sortedBy(expr)
Ordena source, resulta en un OrderedSet source
179
Indice
Diagramas de Casos de Uso. Diagramas de Estructura. Estructura Diagramas de Comportamiento. OCL.
Herramientas. Herramientas
Ejemplos. j p Bibliografa.
180
Herramientas, Herramientas I
Dibujo de diagramas Dib j d di
Soporte a la correcccin de los diagramas en base a su semntica Apoyo para simplificar la facilidad de comprensin de los diagramas (layout, etc.)
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, Herramientas II
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
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/)
Ingeniera inversa
Construccin de un modelo de diseo a partir de cdigo Diseo iterativo: incorporacin al modelo de detalles implementados
183
Herramientas, Herramientas IV
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 d di y d de diseo desarrollo ll
184
Herramientas, Herramientas V
Distintos niveles de abstraccin Intercambio de informacin
Especificacin OMG de representacin de modelos UML en XMI (XML Metadata Interchange)
185
Indice
Diagramas de Casos de Uso. Diagramas de Estructura. Estructura Diagramas de Comportamiento. OCL. Herramientas. Herramientas
Ejemplos.
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 Comprador C d Actualizar Coeficiente de moda
188
Diagrama refinado
Vendedor
Comprar una Obra representativa Vender un cuadro Producir Informe compras
Comprador
Agente Galera
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. Escenario Principal de xito: E i P i i l d it 1. El agente introduce la descripcin del cuadro. 2. El sistema busca el cuadro ms parecido del mismo autor. 3. 3 El sistema presenta el precio recomendado recomendado. 4. El agente hace una propuesta por debajo del precio recomendado, y el vendedor acepta la oferta. 5. 5 El agente introduce informacin de la venta 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
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
Moda
nombreArtista appelidosArtista coeficiente
191
Obra Representativa
Obra maestra
Agente A t Galera
GUI
192
Vendedor
Agente Galera
: GUI
7: proporcionar precio
10: transferir detalles 11: solicitar vendedor actualizacin 13: confirmacin 12: confirmacin
193
194
195
196
197
3.2.1
198
199
200
201
202
203
Indice
Diagramas de Casos de Uso. Diagramas de Estructura. Estructura Diagramas de Comportamiento. OCL. Herramientas. Herramientas Ejemplos
Bibliografa.
204
Bibliografa: UML
UML
Dan Pilone; N il Pi D Pil Neil Pitman. UML 2 0 i a N t h ll OR ill 2005 2.0 in Nutshell. OReilly, 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 y Componentes. Addison Wesley, 2002. j 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 Toolkit Eriksson H. E., Penker, M., Lyons, B Fado D UML 2 Toolkit. OMG Press, Press Wiley. 2004. Craig Larman. Applying UML and Patterns. Prentice Hall. 2002.
OCL
Warmer, Kleppe Warmer Kleppe. The Object Constraint Language 2nd Edition Getting your Edition. 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
Harel D On Visual Formalisms Communications of the D. Formalisms. ACM. Vol 31, No. 5. Pp.: 514-530. Mayo 1988. Harel D., Naamad A. The STATEMATE Semantics of Statecharts. ACM Transactions on Software Engineering and Methodology Vol 5 No 4 Oct 1996 Methodology, Vol. 5, No. 4, Oct. 1996, pp.: 293-233. David Harel D id H l and E d Eran G Gery. E Executable object bl bj modeling with statecharts. IEEE Computer, pages 31-42, 1997.
206