uml: lenguaje unificado de lenguaje unificado de modelado
Embed Size (px)
TRANSCRIPT
-
UMLUML:Lenguaje Unificado deLenguaje Unificado de Modelado http://uml.org
Tema 4
TACC II1
TACC IICurso 2008/09
-
IntroduccinIntroduccin
Similitud:Similitud: Arquitectos, edificios, planosIng. Inf., programas, diagramas
UML Unified Modeling Language. Versin 2.0 (finales 2004)Diagramas (ing inf )Diagramas (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
DominioMundo en el que hay definido un problema
Modelo:Abstraccin de un problema
2
Abstraccin de un problemaFormado por objetos
-
IndiceIndice
Diagramas de Casos de Uso.Diagramas de EstructuraDiagramas de Estructura.Diagramas de Comportamiento.OCL.H i tHerramientas.Ejemplos.j pBibliografa.
3
-
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 cmo lo hace.cmo 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 interacta con el sistema
4
-
Casos de UsoCasos de Uso
A t Al t i t ( tActor = Algo con comportamiento (persona, otro programa, organizacin...), 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 = Coleccin de escenarios (xito y fracaso) que describen actores que usan elfracaso) que describen actores que usan el sistema para conseguir un objetivo.
5
-
Casos de Uso
P
Casos de Uso
Pasos:
Identificar los lmites del sistema.
Identificar los actores principales.
Para cada uno, identificar sus objetivos.
Definir casos de uso que satisfagan susobjetivos.
6
-
EjemploEjemploAplicacin para una Galera de Arte
Te encargan realizar una aplicacin para la compra-venta de cuadros. En cuanto a la compra de cuadros, una vezque el agente introduce unos datos bsicos sobre el cuadro el sistema debe proporcionar el precio recomendadoque el agente introduce unos datos bsicos sobre el cuadro, el sistema debe proporcionar el precio recomendadoque el agente de la galera debera pagar. Si el vendedor del cuadro acepta la oferta, entonces el agente de lagalera introduce ms detalles (sobre el vendedor del cuadro y la venta).
Los datos bsicos incluyen el nombre y apellidos del artista, el ttulo y fecha de la obra, sus dimensiones, la tcnicay y p , y , ,(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 cuadrointroducido con los que hay en el registro de cuadros, tomando el ms parecido y aplicando un algoritmo que tieneen cuenta la coincidencia de tema, la tcnica y las dimensiones del cuadro. El sistema debe utilizar informacin desubasta 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 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 galera, el sistema simplemente registra la fecha de venta, el nombrey direccin del comprador y el precio de venta real.y p y p
El sistema tambin 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 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.
Se quieren generar tres informes: compras y ventas realizadas durante un ao, y artistas de moda.
-
Comprar unaEjemplo pObra maestraComprar una
O
Ejemplo
VendedorObra representativa
Comprar unaObra de Otro Tipo
Vender uncuadro
Obra de Otro Tipo
Agente
Producir Informecompras
Comprador
AgenteGalera Producir Informe
ventas
Producir Informetendencias
8Actualizar
Coeficiente de moda
-
EjemploActores primarios:
Caso de uso: comprar una obra maestra
EjemploActores primarios:
Agente Galera, vendedorInteresados y Objetivos:
Agente: quiere obtener una recomendacin lo ms acertada posible del precio i d d d idmximo recomendado de manera rpida.
Vendedor: quiere vender el cuadro a un precio razonable de manera rpida.Precondiciones:
El agente ha entrado en la aplicacin.El agente ha entrado en la aplicacin.Garanta 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 descripcin del cuadro.2. El sistema busca el cuadro ms 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 informacin de la venta.
Extensiones:2 N h i d id d l i t l i t t
9
2a. No hay ningn cuadro parecido del mismo autor, as que el sistema no presenta una recomendacin.4a. El vendedor no acepta la oferta y la venta no se produce.
-
Ejemplo
TPV
EjemploTerminal Punto de Venta
TPVProcesar
VentaServicio
cajeroProcesar
Devoluciones
Serviciode Autorizacin
de Pagos
actor
Calculador de
AnalizarActividad
actorAnalizador deA ti id d d pImpuestos
actor
Actividad deVentas
...
Sistema decontabilidad
GestionarSeguridad
10Administradordel sistema
GestionarUsuarios
-
Diagramas de Caso de UsoDiagramas de Caso de UsoRelaciones
R l i t d dRelaciones entre dos casos de usoGeneralizacin
E ti l d Es un caso particular de Herencia de clases en POO (overriding)Tambin se puede tener esta relacin entre dos actoresTambin se puede tener esta relacin entre dos actores
Inclusin (include)Implica hacer tambin
Extensin (extend)Se insertar en un determinado punto (llamado punto de extensin) dependiendo de una condicinextensin) dependiendo de una condicin. Si un caso de uso depende de varios casos de uso mediante extend tendr un punto de extensin para cada uno.
11
-
EjemploEjemploGestin de Pacientes
Cancel Appointment
Make AppointmentScheduler
Patient Request Medication
Check Patient Record
DoctorDefer Payment
Clerk
Pay Bill
Extensions PointsMore Treatment
12Bill InsuranceMore Treatment
-
EjemploEjemploGestin de Proyectos
13
-
Casos de UsoCasos de Uso
Son tiles en tres reas:
Especificacin de requisitos
Comunicacin con los clientesSu simplicidad los convierte en excelentes medios de comunicacin
Generacin de casos de pruebaGeneracin de casos de pruebaA partir de los escenarios de un Caso de Uso
14
-
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.
15Bibliografa.
-
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 itiempo de ejecucin.
Objetos. Instancias de una Clase. Atributos (valores actuales).
16Links. Relaciones entre objetos, instancias de asociaciones.
-
Clases y ObjetosClases y Objetos
Elemento
Diagrama de
HidrgenoCarbono
ag a a declases
:Hidrgeno:Hidrgeno
Di d:Hidrgeno :Hidrgeno:Carbono :Carbono
Diagrama deobjetos
17:Hidrgeno :Hidrgeno
-
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+Permetro(): 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
-
Clases
Notacin para atributos: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
-
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
-
Clases
N t i t d
Mtodos
Notacin para mtodos:
[visibilidad] nombre ( [lista-parametros] ) : [{propiedad}][ ] ( [ p ] ) [{p p }]
Visibilidad (opcional).nombre del mtodonombre del mtodolista de parmetros formales, separados por coma:
direccion nombre : tipo [multiplicidad] = valor [{propiedad}]Los mtodos estticos 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
-
Asociaciones
Un Crculo contiene un Punto
Composicin
Un Crculo contiene un PuntoSe representa con una Composicin
Crculo Punto
Relacin del tipo todo/parteRelacin del tipo todo/parteEl todo es el CrculoLa parte es el Punto
Es una relacin fuerteSi el Crculo es destruido o copiado, tambin 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.
-
Asociaciones
Las asociaciones pueden tener etiquetas:Navegacin, Roles, Cardinalidad
Las asociaciones pueden tener etiquetas:NombreRoles en la relacinMultiplicidad (cardinalidad) navegacin
Ej l d di lid d
Crculo Puntocentro
1N iEjemplos de cardinalidad:
1..* mnimo 1, no hay mximo0..* mnimo 0, no hay mximo
Navegacin:UnidireccionalBidireccional0.. mnimo 0, no hay mximo
0..1 mnimo 0, mximo 11,2,4 uno, dos o cuatro3 exactamente tres
BidireccionalNo especificado.No navegable (x)
23
3 exactamente tres No navegable (x)
-
AsociacionesEjemplos de Navegacin y Cardinalidad
24
-
EjercicioEjercicioRepresenta mediante un diagrama de clases la siguienteRepresenta mediante un diagrama de clases la siguienteespecificacin:
Una aplicacin necesita almacenar informacin 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 categora, as como un conjunto deempleados subordinados.pDe los clientes adems se necesita conocer su telfono decontacto.L li i it t l d t d l dLa aplicacin necesita mostrar los datos de empleados yclientes.
25
-
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
-
Asociaciones: AgregacinAsociaciones: Agregacin
Cuando la relacin todo/parte no es tan fuerte, se utiliza Agregacin, g g
Ventana FigurasusFiguras
0 *0..
La ventana contiene figuras, pero cada una puede existir sin la otra
27
-
Asociaciones y DependenciaAsociaciones y Dependencia.
Existen relaciones de conocimiento entre clases que no implican una relacin todo/parte
Cliente Cuentatitular1 *
cuentas0 *1.. 0..
Dependencia: relacin muy dbil.
VentanasusFiguras
0..*Figura
Draw(ContextoDibujo)
suContexto
28
ContextoDibujo
Dependencia
-
Clases AsociativasClases Asociativas
Asociacin con atributos propios.
Nombre asociacin
Empleado Persona1
casado con >1
Matrimoniofecha
2testigos
fecha0..*
29Clase Asociativa
-
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 implementacin y no de diseo):diseo):
ConstructoresMtodos de acceso (get/set)Mtodos de acceso ( get/set )Mtodos de gestin de elementos de una asociacin o agregacin (por ejemplo, add/remove)
30
-
EjemploEjemplo
Cliente
nombre
Orden
fecha1 0..*direccin estado
calcImpuestocalcTotalcalcPesoTotalPago
1..* 1 calcPesoTotalPago
monto 1
EfectivoCrdito Cheque DetalleOrden Item
1..*
0 * 1
lnea
monedafechanmerotipo
autorizado
nombreidentifBanco
autorizado
cantidadtipoImpuesto
calcSubtotalcalcPeso
pesodescripcin
precioPorCantidadobtenerPeso
0.. 1
31
autorizado
-
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 nmero 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.
-
Ejercicio Posible SolucinEjercicio. Posible Solucin.
33Los PCs pueden conectarse con un nico Hub, los servidores con uno o variosPodemos modelarlo como una restriccin OCL, o bien aadir asociaciones desde Servidor y PC
-
Ms sobre asociacionesMs sobre asociacionesAsociaciones n-arias
Asociaciones entre ms de dos clases:
Aod
E i J d
temporada
Equipo Jugadorpichichiequipo
34
-
Ms sobre asociaciones
A i i d i d ( / d l t d l b )
Ms sobre asociacionesAdornos en asociaciones y fin de asociacin.
Asociaciones derivadas (con un / delante del nombre).Propiedades, cerca del nombre de la asociacin.Los finales de la asociacin pueden adornarse con:Los finales de la asociacin pueden adornarse con:
Multiplicidad.Nombre (rol).( )Propiedades:
{subsets }.{redefine }{redefine }.{union}.{ordered} (un conjunto ordenado).{bag} (conjunto con repeticin){bag} (conjunto con repeticin).{sequence} o {seq} (bag ordenado).
35
-
Ms sobre asociacionesMs sobre asociacionesAdornos en asociaciones y fin de asociacin: Ejemplos
A Ba b
A B0..1 *{ordered}
C D1 0..1
d
{subsets b}{subsets b}
Para un objeto de tipo C, la coleccin d es un subconjunto de la coleccin b.
36
-
Ms sobre asociaciones
Un cualificador declara una particin del conjunto de instancias asociadas con
Ms sobre asociacionesAsociaciones Cualificadas
Un cualificador declara una particin 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 nmero de objetos al otro lado de la asociacin 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.
-
Pre y Post Condiciones NotasPre- y Post- Condiciones, Notas
pre-condicin
body-condition
post-condicin
38
-
InterfacesInterfaces
ClaseClase MiInterfaz
mtodos MiInterfaz
ClaseMiInterfaz
39
-
PlantillasPlantillas
FArray Point>Una clase annima ligada:
T -> Point
40K -> 10
-
EjercicioExamen Junio 2008.
Realiza el diseo de una aplicacin para la gestin de pedidos. La aplicacin debermanejar clientes (se guarda su nombre, direccin, telfono 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 crdito, y tiene una cierta cantidaddisponible de dinero, que el cliente debe aumentar peridicamente para poderrealizar nuevos pedidos.realizar nuevos pedidos.
Un cliente puede empezar a realizar un pedido slo si tiene alguna cuenta con dinerodisponible. Al realizar un pedido, un cliente puede agruparlos en pedidos simpleso 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(por restricciones en la distribucin) contienen un mximo de 20 unidades delmismo o distinto tipo de producto. A su vez, un pedido compuesto contiene dos oms 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 Adems slo es posiblecompuesto se paguen con cuentas del mismo cliente. Adems, slo es posiblerealizar 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. Elp y pcobro de los pedidos se hace una vez al da, 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 distribucin, y una vez entregado,pasa a estar confirmado.
Se pide un diagrama de clases de diseo.
-
Solucin
42
-
Solucion (ii)Solucion (ii)Nota: pedidos_simples es una asociacin derivada. El atributo total de Pedido es derivadoPedido es derivado.Habra 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() =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 diseo a este nivel de abstraccin).
-
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, 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 laCada copia tiene un identificador, y puede estar en la biblioteca, prestada, con retraso o en reparacin.Los lectores pueden tener un mximo de 3 libros en prstamoprstamo. Cada libro se presta un mximo de 30 das, por cada da de retraso, se impone una multa de dos das sin pposibilidad de coger un nuevo libro.Realiza un diagrama de clases y aade los mtodos necesarios para realizar el prestamo y devolucin denecesarios para realizar el prestamo y devolucin de libros.
-
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
tipoLibro
novelateatro
i
+ devolver(id: Identifier, fechaAct: Date){precondition: prestamos.notEmpty()}
1
estadoCopia
poesiaensayo
Multa
{precondition: prestamos.notEmpty()}+ prestar(id: Identifier, fechaAct: Date){precondition: multa==0}- multar(dias : int)
0..1multa
prestadoretrasobibliotecareparacion
- fInicio: Date- fFin: Date
-
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=Mara- 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
-
ComponentesComponentes
C t U id d M d l i t fComponente = Unidad Modular con interfacesbien definidos que es reemplazable en suentornoentorno .
f i tili i l i tnfasis en reutilizacin y encapsulamiento.
Servicios que provee y requiere (interfaces).
Componentes lgicos (componentes de negocio,de proceso) y fsicos (EJB, CORBA, COM+, .NET,
47)
-
ComponentesComponentes
Interfacesque ofrece
Interfacesque requiere
48
-
ComponentesComponentes
Vi t d j blVista de caja blanca
49
-
Estructuras Compuestas
C i i d l t ( l ifi d
Estructuras Compuestas
Composicin de elementos (clasificadores ocolaboraciones)
Instancias en tiempo de ejecucin que colaborana travs de enlaces para alcanzar objetivosa travs de enlaces para alcanzar objetivoscomunes.
Colaboraciones: a travs de roles.
Se aade a las clases estructura internas ypuertos.
50
-
Estructuras CompuestasEstructura interna de una clase
Estructuras CompuestasEstructura interna de una clase.
Estructura interna de una clase. Multiplicidades.
51
-
Estructuras CompuestasEstructuras CompuestasAlternativa a relaciones de composicin
A li tiApplication
ButtonWindow 2
Application
Button2
Window
52
-
Estructuras CompuestasEstructuras Compuestas
Estructura interna de una clase. Constructor.
53
-
Estructuras Compuestas
E t t i t d l b i
pColaboracin.
Estructura interna de una colaboracin.
54
-
Estructuras Compuestas
O i d l b i t Bi di
pColaboracin.
Ocurrencia de una colaboracin en otra. Binding.
55
-
Estructuras CompuestaspColaboracin.
Template de colaboracin.
56
-
DespliegueDespliegue
D fi l it t d j i d i tDefinen la arquitectura de ejecucin de un sistema.
Representa la asignacin de artefactos software a nodosRepresenta la asignacin de artefactos software a nodos.
Nodos = elementos hardware, o entornosde ejecucin software.
Artefactos = elementos concretos (p.e.:ficheros) que son el resultado del procesode desarrollo.
57
-
Desplieguep gRelaciones entre artefactos.
Manifestacin de elementos a travs de
artefactos
58
-
Desplieguep gEjemplo.
59
-
PaquetesPaquetes
Un paquete es un contenedor que agrupa elementos relacionados.
Los diagramas de paquetes muestran la estructura de alto nivel de la aplicacinnivel de la aplicacin.
60
-
PaquetesqEjemplo.
61
-
IndiceIndice
Diagramas de Casos de UsoDiagramas de Casos de Uso.Diagramas de Estructura.Diagramas de ComportamientoDiagramas de Comportamiento.
Diagramas de Interaccin.Diagramas de Comunicacin.Diagramas de Secuencia.Diagramas de visin de conjunto de la interaccin.Diagramas de tiempo.Diagramas de tiempo.
Diagramas de Estados.Diagramas de Actividad.
OCLOCLHerramientas.Ejemplos
62
Ejemplos.Bibliografa.
-
Diagramas de InteraccinDiagramas de Interaccin
El t i t t t dEl comportamiento se representa a travs decolaboraciones:
Coleccin de objetos:
Instancias
RolesRoles
Especifica cmo los objetos y las asociaciones cooperan
En un contexto dado
63Con un propsito especfico
-
Diagramas de Interaccin
El t d j d t d
Diagramas de Interaccin
El patrn de mensajes dentro de unacolaboracin es una interaccin:
Mensajes: seales, invocaciones, interacciones implcitasa travs de condiciones y eventos temporales.
Especifica secuencia de mensajes para cumplir elobjetivo de la colaboracinobjetivo de la colaboracin
Para especificar la interaccin, es necesario especificarprimero la colaboracinprimero la colaboracin
Semntica basada en trazas.64
-
Diagramas de InteraccinDiagrama de Comunicacin
Diagramas de InteraccinDiagrama de Comunicacin
Muestra un contexto y una interaccinMuestra un contexto y una interaccin.
Di d S iDiagrama de Secuencia
Representacin explcita de la secuencia decomunicaciones, eje temporal.
Es ms apropiado para aplicaciones de Tiempo Realy escenarios complicados
65
y escenarios complicados
-
Diagramas de Interaccin
E t t d l ti i t
Diagramas de Interaccin
Estructura de los participantesDiagramas de Comunicacin
Patrones de comunicacinDiagramas de ComunicacinDiagramas de Secuencia
Temporizacin de la comunicacin.pDiagramas de SecuenciaDiagramas de Tiempo.
Estructuracin de las interaccionesDiagrama de visin de conjunto de la
66
g jinteraccin.
-
Diagramas de Comunicacin
R t l bj t ( l i t i )
Diagramas de Comunicacin
Representa los objetos (roles o instancias)necesarios para una interaccin y susrelaciones.relaciones.
Puede tambin representar la secuencia dePuede tambin representar la secuencia demensajes
Especifica el orden relativo mediante nmeros
Similar a un diagrama de objetos, muestra elcontexto necesario para una colaboracin.
67
-
Diagramas de Comunicacinparticipantes
Diagramas de Comunicacin
Wi d / Ob Slidi B I
p p
:Window / Observer : SlidingBarIcon
l
relaciones
roles
/Subject :CallQueue
68
-
Diagramas de ComunicacinDiagramas de Comunicacin
Wi d / Ob Slidi B I:Window / Observer : SlidingBarIcon
restriccin
{Observer.reading=length(Subject.queue)/Subject :CallQueue
{ g g ( j q )andObserver.range = (0..Subject.capacity)}
69
-
Diagramas de ComunicacinDiagramas de Comunicacin
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
-
Diagramas de Comunicacin
R t j t d i t i l
gMultiobjetos.
Representan conjuntos de instancias en elextremo muchos de una relacin 1:N o M:N
Una operacin sobre cada instancia requiered jdos mensajes:
Iteracin para obtener referencias a las instanciasindividuales
Mensaje a cada instancia, usando la referenciatemporal
71
-
Diagramas de ComunicacingMultiobjetos.
:Client :Server:Serverservers
1:aServer:=find(specs)
:ServeraServer
2:process2:process
72
-
Diagramas de ComunicacingCondiciones.
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
-
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, 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 laCada copia tiene un identificador, y puede estar en la biblioteca, prestada, reservada, con retraso o en reparacin.Los lectores pueden tener un mximo de 3 libros enLos lectores pueden tener un mximo de 3 libros en prstamo. Cada libro se presta un mximo de 30 das, por cada da p pde retraso, se impone una multa de dos das sin posibilidad de coger un libro.Realiza el diagrama de colaboracin para el mtodoRealiza el diagrama de colaboracin para el mtodo devolver()
-
SolucinSolucin
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 [multa0]: anyade(fecha,retraso)
-
SolucinSolucin
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 [multa0]: anyade(fecha,retraso)
76
-
Diagramas de ComunicacingEtiquetas 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 trmino representa nivel de anidamiento proceduralIteracin: *[clusula interacin]Bifurcacin: [condicin]
77
Bifurcacin: [condicin]
-
Diagramas de ComunicacingEtiquetas de las flechas.
Ejemplos:2: display(x y)2: display(x,y)1.3.1: p:=find(specs)4 [x
-
Diagramas de Comunicacin
redisplay()
gEjemplo.
:Controller :Windowredisplay()
1:displayPositions(window) 1.1.3.1:add(self)
Li { }
1.1*[i:=1..n]: drawSegment(i)
wire:Wirewire
> linecontents {new}
:Line {new}wire:Wire
i-1 i
1 1 1 0 i i ()
>
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
-
Diagramas de Comunicacin
P i hil d t l
gObjetos Activos.
Poseen su propio hilo de control
Un objeto pasivo slo 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
-
Diagramas de ComunicacingObjetos Activos. Ejemplo.
:FactoryScheduler:FactoryManager
currentJob:TransferJob1:start(job)A2,B2/2:completed(job)
job
:FactoryJobMgr job
B2:completed
1/B1:start(job)
A2:completed
1/A1:start(job)
:Robot :Oven
81
-
Diagramas de ComunicacingObjetos Activos. Ejemplo.
Tipos de Flujos de Control
Llamada a procedimiento u otra forma de llamada con anidamiento de control. La secuencia anidada termina antes de que siga la operacin que invoc Puedeantes de que siga la operacin que invoc. Puede usarse para procesos concurrentes cuando el mensaje es sncrono.Comunicacin asincrna, sin anidamiento de control. El objeto que enva no se detiene a esperar respuesta.
Retorno de una llamada a procedimiento. Esta flecha puede omitirse si queda claro por el fin de la activacin.
82
-
Diagramas de Secuencia
R t j t d j t l
Diagramas de Secuencia
Representa conjunto de mensajes entre roles (o instancias) en una interaccin
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 duracin de las instancias, pero no sus relaciones
83
-
Diagramas de Secuencia
Traza: secuencia de ocurrencias de eventos
Diagramas de Secuencia
Traza: secuencia de ocurrencias de eventos
La semntica de una interaccin es un par de conjuntosLa semntica de una interaccin es un par de conjuntosde trazas (vlidas e invlidas) [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 interaccin se puede especializar: se aaden mstrazas al conjunto.
84
j
-
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
-
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
-
Diagramas de SecuenciaDiagramas de Secuencia
:Pedido preferenteDi t ib idusual
Di 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
-
Diagramas de SecuenciaDiagramas de Secuencia
Gate (formal), con nombre out Unlock
88
out_Unlock
-
Diagramas de SecuenciaDiagramas de Secuencia
Referencias (Ocurrencias de Interacciones)
Copian el contenido dela interaccin referida.
Substitucin deparmetros y conexinde las puertas (gates)formales y actuales
89
formales y actuales.
-
Diagramas de Secuencia
Fragmentos combinados operadores (i):
gOperadores sobre interacciones.
Fragmentos combinados, operadores (i):
Alternativa (alt).Eleccin (mediante una guarda) de una interaccinEleccin (mediante una guarda) de una interaccin.
Asercin (assert).La secuencia especificada por el operador es la nica vlida.a secue c a espec cada po e ope ado es 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 elfragmento padre.fragmento padre .
Paralelo (par).Mezcla de las trazas de los operandos (cualquier entrelazado es vlidomientras preserve el orden de los eventos de cada operando)
90
mientras preserve el orden de los eventos de cada operando).
-
Diagramas de Secuencia
Secuenciacin dbil (seq)
gOperadores sobre interacciones.
Secuenciacin dbil (seq).Define un conjunto de trazas que cumple:1. Se mantiene el orden de eventos de los operandos2 Eventos de otras lneas de vida de otros operandos pueden venir2. Eventos de otras lneas de vida de otros operandos pueden veniren cualquier orden.3. Eventos de la misma lnea de vida de otros operandos se ordenande tal manera que cualquier evento del primer operando va antes queel del segundo.
Secuenciacin estricta (strict).Secuenciacin estricta en el orden de los eventos de los operandos.
Negativa (neg).Define trazas invlidas.
Regin crtica (critical).
91
Los eventos del operando no pueden mezclarse con ningn otro.
-
Diagramas de SecuenciagOperadores sobre interacciones. Alternativa.
92
-
Diagramas de SecuenciagOperadores sobre interacciones. Alternativa.
93
-
Diagramas de SecuenciagOperadores sobre interacciones. Opcin.
94
-
Diagramas de SecuenciagOperadores sobre interacciones. Bucle.
95
-
Diagramas de SecuenciagOperadores sobre interacciones. Regin Crtica.
96
-
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}
-
Diagramas de SecuenciagRetorno de Valores
98
-
Diagramas de Secuencia
Restricciones temporales (duracin)
gTiempo
Restricciones temporales (duracin)
Duracin de mensajes y seales (duration)Intervalos de tiempo ({t..t+3}) y restricciones temporales.
99Observaciones temporales (tiempo actual, now)
-
Diagramas de SecuenciagDescomposicin en partes
La estructura interna deACS iACSystem tiene una interaccin AC_UserAccess que se invoca en este fragmento.
100
-
Diagramas de SecuenciagDescomposicin en partes
101
-
Diagramas de Secuenciagco-regin Coregin: s[u] recibe los mensajes
en cualquier orden.
102
-
Diagramas de Secuencia
Invariantes
gInvariantes
Invariantes.
En este momento la traza no es vlida no es vlida
Se comprueban justo antes de la ocurrencia del prximot ( d h b j t d l
103
evento (puede haber mensajes no mostrados en eldiagrama).
-
Diagramas de SecuenciagBinding
104
-
EjercicioEjercicio
fEspecificar el diagrama de secuencia de la operacin crearLaberinto
public class JuegoLaberinto {public Laberinto crearLaberinto () {
Laberinto lab = new Laberinto();Habitacion h1 = new Habitacion();Habitacion h2 = new Habitacion();Puerta puerta = new Puerta(h1, h2);
lab.aadeHabitacion(h1);lab.aadeHabitacion(h2);h1.aadePuerta(puerta);return lab;
}}
-
SolucinSolucin
:JuegoLaberinto
l b L b i tcrearLaberinto()
lab:Laberinto
h1:Habitacion
h2:Habitacion
puerta:Puertacreate(h1,h2)
aadeHabitacion(h1)
aadeHabitacion(h2)
aadePuerta(puerta)
-
EjercicioEjercicio
Especificar el diagrama de secuencia de la operacinEspecificar el diagrama de secuencia de la operacin 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
-
SolucinSolucin
:JuegoLaberinto lab:Laberinto
crearLaberinto()
h:Habitacion
loop [for i = 1 to 10]
v:Ventana
opt [conVentana==true]
aadeVentana(v)
aadeHabitacion(h)
-
EjercicioEjercicio
Especificar el diagrama de secuencia de la operacin realizarJugada definida en la clase Jugador, para el juego del parchsparchs
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
-
SolucinSolucin
:Jugador d1:Dado
realizarJugada()
d2:Dado :Tablero
tirar()
n1
par
tirar()
n2
ca:=casillaActual()
mover(ca,n1+n2)
movRealizado
-
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 realizacin de una llamada desde un telfono mvil.
El usuario pulsa los dgitos del nmero de telfonoPara cada dgitog
la pantalla se actualiza para aadir el dgito marcadose emite un tono por el receptor
El usuario pulsa el botn EnviarEl usuario pulsa el botn EnviarEl indicador en uso se ilumina en pantallaEl mvil establece conexin con la redL d it l d d l dLos dgitos acumulados se mandan a la redSe establece la conexin con el nmero marcado
-
SolucinSolucin
: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 colaboracinequivalente?
-
SolucinSolucin
-
Visin de Conjunto de la Interaccin
D fi l i t i t d
Visin de Conjunto de la Interaccin
Define las interacciones a travs de una variante de los diagramas de actividad.
Visin general del flujo de control.
Usa elementos de los diagramas de actividad para especificar:
Alternativas entre interacciones.Paralelismo de interacciones.
114Bucles de interacciones.
-
Visin de Conjunto de la InteraccinVisin de Conjunto de la Interaccin
115
-
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 lneas de vida, en un ejelineal de tiempolineal de tiempo.
Cambios en el estado de un objeto con eltiempo en respuesta a eventos.
116
-
TiempoTiempo
Diagrama temporal correspondientepa la interaccin
117
-
TiempoTiempo
118
-
TiempoTiempo
119
-
Mquinas de EstadosMquinas 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 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 EstadosMquinas de Estados
EstadosComienzo Fin
start Partial Dialdigit(n)
digit(n)
Transiciones
121
-
Mquinas de Estados
U t i i d t
Mquinas de Estados
Un transicin puede tener:Evento.
Eventos temporales: tm(n)Eventos temporales: tm(n)Accin.pre-condiciones (guardas) y post- condiciones.
A1 A2[guard] evt/action [post-]
A1 A2
Smbolos especiales para el envo y recepcin de seales (normalmente usados en diagramas de actividad).
122
)
-
Mquinas de EstadosMquinas 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
-
Mquinas de EstadosStart Partial Dial
Mquinas 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)
-
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, 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 laCada copia tiene un identificador, y puede estar en la biblioteca, prestada, reservada, con retraso o en reparacin.Los lectores pueden tener un mximo de 3 libros enLos lectores pueden tener un mximo de 3 libros en prstamo. Cada libro se presta un mximo de 30 das, por cada da p pde retraso, se impone una multa de dos das sin posibilidad de coger un libro.Realiza el diagrama de estados de la clase copiaRealiza el diagrama de estados de la clase copia .
-
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 reservado
reservar(id) /usrRes = id
devolver()devolver()prestar(id, fecha)
[usrRes==id]/fp=fecha
t (2 d ) enreserva
tm(2 days)
-
Solucion: Estados JerrquicosSolucion: Estados Jerrquicos
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 reservado
reservar(id) /usrRes = id
devolver() devolver()prestar(id, fecha)[usrRes==id]/fp=fechat (2 d ) en
reservafp=fechatm(2 days)
127
-
Mquinas de EstadosqComponentes Ortogonales
Incomplete
lab donelab doneLab1 Lab2
Term project done PassedTermProject
project done
Final passFinalTest
pass
128Failedfail
-
Mquinas 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
-
Mquinas de EstadosqComponentes Ortogonales: Utilidad
ack1
Idle1 Mess1 Send1trans1
1
d 1Idle2
ss1Idle2
d1Idle2arr1
1
toutarr1
arr arr arr2tout1 arr1
Idle1
arr2
Mess1
arr2
Send1trans1arr2arr2arr1
arr2
Idle1Mess2
Mess1Mess2arr1
trans
Send1Mess2
trans1
tout1 arr1ack1 trans2
Idle1Send
trans2 tout2ack2 Mess1
Send
tout2arr1
ack2Dos
130
Send2 Send2arr2
arr1 procesos
-
Mquinas 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
-
Mquinas 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
-
Mquinas de EstadosP d t d
Mquinas 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
-
Mquinas de EstadosqEstado Histrico
BHHHH
t4
IB1 B2
t1: ev0t2
t3
B12
B11B21 t3
t3: ev1
t4: ev2
134
-
Mquinas de EstadosqEstado Histrico (ii)
BH*H*HH
t4
IB1 B2
t1: ev0t2
t3
B12
B11B21 t3
t3: ev1
t4: ev2
135
-
Mquinas de EstadosqEstado Histrico. Ejercicio.
Modelar el comportamiento de una cadena de msica. 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 botn mode Cuando se enciende labotn mode . Cuando se enciende la cadena se recuerda el ltimo estado en el que estuvo.
136
-
Mquinas de EstadosqEstado Histrico. Ejercicio. Solucin
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 histrico.
137
-
Mquinas de EstadosqEstado Histrico. Ejercicio. Solucin (ii)
Standby Onpower
CD modemode
power
powerlastCD
power
Radio Tapemode
lastRadiopower
power
powerlastTape power
power
138
-
Mquinas de EstadosPseudo - estados: Junction.
Mquinas de EstadosPseudo estados: Junction.
Pseudo - estados: Choice.
139
-
Mquinas de EstadosMquinas de EstadosPuntos de Entrada/Salida, Estados Sub-Mquina
140
-
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()
-
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
-
Mquinas de Estados de ProtocoloAsociadas a un clasificador, interface o puerto.
Mquinas de Estados de Protocolo, p
Especifican qu operaciones del clasificador se puedenllamar en qu condicionesllamar en qu condiciones.
Las operaciones que no generan transicin no seLas operaciones que no generan transicin no serepresentan.
M i d t d d l ti E ifi lMquinas de estado declarativas: Especifican lastransiciones legales (no su condicin) para cadaoperacin. Contrato para el usuario del clasificador.
Mquinas 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.
-
Mquinas de Estados de ProtocoloMquinas de estados de
Mquinas de Estados de ProtocoloMquinas de estados de
protocolo. Ejemplo (declarativa).
Los estados de mquinas 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
-
Mquinas de Estados
Una mquina de estados es generalizable
qGeneralizacin
Una mquina de estados es 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 delcada mquina heredada, mas una por la mquina de estados del clasificador especfico.
Se anota con junto al nombre de la mquinaSe anota con junto al nombre de la mquina.
Los estados heredados se muestran con lneas punteadas o en gris.
145
-
Mquinas de EstadosqGeneralizacin: Ejemplo, cajero autmatico.
146
-
Mquinas de EstadosqGeneralizacin: Ejemplo, cajero autmatico.
E i ibilid d dExtensin: posibilidad deteclear el importe aretirar, y de que este sepueda rechazar.
147
-
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 botn de la parte superior derecha enciende la luz que se mantieneEl botn de la parte superior derecha enciende la luz, que se mantieneencendida tanto como el botn est apretado, una vez que se suelta, la luzest encendida durante 2 segundos ms y se apaga.El botn 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 centsimas de segundo). Inicialmente el crono empieza en
( g ) p00:00:00. El botn inferior derecho se usa para activar el crono. ste seactualiza en incrementos de 1/100 segundos. Presionando el botn inferiorderecho 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 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).
-
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 funcin. Por ejemplo, si se estvisualizando 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 semodificarn adecuademente, (por ejemplo, si se llama a increaseTime () a lasmodificarn 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.
-
Posible SolucinPosible Solucin.
150
-
Mquinas de EstadosEjemplo. Herramienta de Dibujo (i)
/setup widgetst bi di
Active
setup bindings
Active
exitButtonwmQuit
151
-
Mquinas de EstadosqEjemplo. Herramienta de Dibujo (ii)
Shapes Canvas
Modes
152
-
Mquinas 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
-
Mquinas 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
-
Mquinas 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
-
Diagramas de Actividad
Refinamiento de los diagramas de estados
Diagramas de Actividad
Refinamiento de los diagramas de estados.
Los estados representan la ejecucin de acciones op jsubactividades
Las transiciones son disparadas cuando se completan estasp pacciones o subactividades
Semntica basada en tokens.
Flujos dirigidos por procesamiento interno (en losdiagramas de estados normales son dirigidos por eventosdiagramas de estados normales son dirigidos por eventosexternos).
156Semntica basada en Redes de Petri. No obstante no seda una transformacin a Redes de Petri.
-
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
-
Diagramas de ActividadSwimlanes
158
-
Diagramas de ActividadDiagramas de ActividadPesos en los enlaces
159
-
Diagramas de ActividadDiagramas de ActividadParmetros y Eventos Temporales
Parmetros/Pins/Excepciones
E t T lEventos Temporales
160
-
Diagramas de ActividadDiagramas de ActividadExcepciones/Pins
161
-
Diagramas de ActividadRegiones deExpansin
Regiones de expansin, procesamiento paralelo (tambin iterative y t i )streaming).
162
-
Diagramas de ActividadDiagramas de ActividadRegiones Interrumpibles
163
-
Diagramas de ActividadDiagramas de ActividadParticiones
164
-
Diagramas de ActividadDiagramas de ActividadFlujos de Objetos: Objectflows
165
-
IndiceIndice
Diagramas de Casos de Uso.Diagramas de EstructuraDiagramas de Estructura.Diagramas de Comportamiento.
OCL.Herramientas.EjemplosEjemplos.Bibliografa.
166
-
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 matemticas (lgica de predicados y teora 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.
-
EjemplosEjemplosFlight Airplane
0 * 1Flightnr: Integer
availableSeats(): Integer
numberOfSeats: Integerflights0.. 1
plane
0 *flights
P
0..
0..*
flights
passengersTambin es un lenguaje de consultas (mismo poder expresivo que SQL).
Person
name: StringContext Flight::availableSeats(): Integerbody: plane.numberOfSeats passengers->size()
Cmo se expresa el hecho de que en ningn vuelo puede haberms pasajeros que asientos tiene el avin?p j q
Restriccin OCL:
168Context FlightInv: passengers->size()
-
EjemplosEjemplosCasa Persona
S S Id ifi d0 * 1valor: Dinero numSegSoc: Identificadorsueldo: 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 slo 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 nmero de la seguridad social de cada persona ha de ser nico.4. Slo es posible contratar una nueva hipoteca si el salario de la persona
es suficiente.
1695. Slo es posible contratar una nueva hipoteca si el valor de la casa aval
es suficiente.
-
Ejemplos Las restricciones OCL se escriben
C t t Hi t
Ejemplos Las restricciones OCL se escribenen el contexto de una instancia deun tipo especfico.
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 = aval.hipotecas.principal->sum()
170
-
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
-
EjercicioEjercicio
Un Hub no puede conectarse consigo mismo a travs de un puerto
Context Cable_HubsInv: Puerto_Hub.hub->asSet()->size() = 2
172
-
Dnde usar OCL?Dnde usar OCL?
Clases:Clases:Invariantes. Expresin OCL de tipo booleano, la expresin debe ser true para cada instancia de la clase en todo momento de la ejecucinejecucin.
Operaciones:Pre-condicin. Condicin que debe ser verdadera para ejecutar l i d t i d i t ila operacin en una determinada instancia.Post-condicin. Condicin que debe ser verdadera al terminar una operacin.B d E ifi i d l d i d tiBody. Especificacin del cuerpo de una operacin de tipo query.
Atributos y finales de asociacin:Valor inicial. expresin para dar el valor inicial a un atributo o p pfinal de asociacin. Se evalua al crear la instancia.Valor derivado.
Transiciones de mquinas de estados:Transiciones de mquinas de estados:Guarda.
-
EjemplosEjemplos
parents
children
0..*
0..*
174
-
EjemplosEjemplos
E ifi i d l l i i i l d i d d t ib t / i ti dEspecificacin 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
-
Ejemplos ColeccionesEjemplos. Colecciones.
Tipos: Set, OrderedSet, Bag, Sequence.
Operaciones de bucle con colecciones:select(expr): selecciona los elementos que cumplan una condicin.
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()
-
Ejemplos Coleccionescollect(expr): devuelve la coleccin que resulta de evaluar expr
Ejemplos. Colecciones.collect(expr): devuelve la coleccin que resulta de evaluar exprpara cada elemento de la coleccin fuente.
self employee >collect( birthDate ) >asSet()self.employee->collect( birthDate )->asSet()
forAll(expr): devuelve verdadero si expr es verdadero en cadaelemento de la coleccin.
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 )
-
Ejemplos ColeccionesEjemplos. Colecciones.exists(expr): devuelve true si al menos hay un elemento en lacoleccin para el que expr es verdaderacoleccin 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 coleccin.coleccion->iterate( elem : Type; acc : Type = | 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))
aade un elemento a una coleccin
-
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 condicin.
source->reject(expr)Devuelve una coleccin con los elementos de source que no cumplen laDevuelve una coleccin con los elementos de source que no cumplen la condicin.
source->sortedBy(expr)Ordena source resulta en un OrderedSet
179
Ordena source, resulta en un OrderedSet
-
IndiceIndice
Diagramas de Casos de Uso.Diagramas de EstructuraDiagramas de Estructura.Diagramas de Comportamiento.OCL.
HerramientasHerramientas.Ejemplos.j pBibliografa.
180
-
Herramientas IHerramientas, I
Dib j d diDibujo de diagramasSoporte a la correcccin de los diagramas en base a su semnticasemnticaApoyo para simplificar la facilidad de comprensin de los diagramas (layout, etc.)
Archivo de informacinComprobacin de inconsistenciasDeteccin de trabajo a realizar y mejorasGeneracin de informesSoporte a la reutilizacinSoporte al rediseo (refactorings).
181
-
Herramientas IIHerramientas, II
Soporte a la navegacinVistas compuestasElaboracin de conexiones entre informacin relacionadaB dBsquedaVisin con diferentes niveles de granularidad (expansin y contraccin de partes de la vista)(expansin y contraccin de partes de la vista)FiltrosOperaciones sobre componentes de la vistaOperaciones sobre componentes de la vista
182
-
Herramientas IIIHerramientas, III
Soporte al trabajo multiusuarioSoporte al trabajo multiusuarioBloqueo de informacinTrabajo colaborativoj
Generacin de cdigoEsqueletos con informacin esttica (clases)Generacin a partir de diagramas de comportamientoGeneracin a partir de diagramas de comportamiento (mquinas de estados).Integracin con lenguajes especiales (SQL, )Desarrollo Dirigido por Modelos (MDADesarrollo Dirigido por Modelos (MDA, http://www.omg.org/mda/)
Ingeniera inversaConstruccin de un modelo de diseo a partir de cdigoDiseo iterativo: incorporacin al modelo de detalles implementados
183
-
Herramientas IVHerramientas, IV
Integracin con otras herramientasEntorno de desarrollo (tendencia a confluir)Configuracin del sistema y control de versionesHerramientas de documentacinHerramientas de prueba de softwareHerramientas de construccin de interfaces de usuarioHerramientas de especificacin de requisitosHerramientas de gestin de proyectos y soporte al
d di d llproceso de diseo y desarrollo
184
-
Herramientas VHerramientas, V
Distintos niveles de abstraccinIntercambio de informacinIntercambio de informacin
Especificacin OMG de representacin de modelos UML en XMI (XML Metadatamodelos UML en XMI (XML Metadata Interchange)
185
-
Poseidon for UMLPoseidon for UML
-
IndiceIndice
Diagramas de Casos de Uso.Diagramas de EstructuraDiagramas de Estructura.Diagramas de Comportamiento.OCL.HerramientasHerramientas.
Ejemplos.Ejemplos.Bibliografa.
187
-
Ejemplo de AnlisisAplicacin para una Galera de Arte
Diagrama de casos de uso inicial
Comprar uncuadro
Vender uncuadro
Vendedor
AgenteGalera
Producir Informe
C dCompradorActualizar
Coeficiente de
188
moda
-
Comprar unaDiagrama pObra maestra
Comprar unaO
refinado
VendedorObra representativa
Comprar unaObra representativa
Vender uncuadro
Obra representativa
Agente
Producir Informecompras
Comprador
AgenteGalera Producir Informe
ventas
Producir Informetendencias
189Actualizar
Coeficiente de moda
-
Caso de uso: comprar una obra maestra
Actores primarios:pAgente Galera, vendedor
Interesados y Objetivos: Agente: quiere obtener una recomendacin lo ms acertada posible del precio mximo recomendado de manera rpida. Vendedor: quiere vender el cuadro a un precio razonable de manera rpida.
Precondiciones:El agente ha entrado en la aplicacin.
Garanta de xito (post-condiciones):Se registra la venta.
E i P i i l d itEscenario Principal de xito:1. El agente introduce la descripcin del cuadro.2. El sistema busca el cuadro ms parecido del mismo autor.3 El sistema presenta el precio 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 informacin de la venta5. El agente introduce informacin de la venta.
Extensiones:2a. No hay ningn cuadro parecido del mismo autor, as que el sistema no presenta una recomendacin
190
no presenta una recomendacin.4a. El vendedor no acepta la oferta y la venta no se produce.
-
Diagrama de clases inicial
Si t G ti
CuadronombreDelArtistaapellidosDelArtista
Sistema GestionGaleria
TituloAoCreacionAltoAnchoTecnicaTema
Cuadro GaleriaClasificacionfechaCompraFechaventa
Cuadro SubastadofechaSubastaprecioSubasta
FechaventanombreVendedordireccionVendedorprecioCompraMaximoprecioCompraRealprecioCompraRealprecioVentaDeseadoprecioVentanombreCompradordireccionCompradordireccionComprador
Obra Maestra Cuadro de Otro Tipo ModanombreArtistausa
191Obra Representativa
nombreArtistaappelidosArtistacoeficiente
usa
-
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 PrecioAgenteGalera
GUI Calcular PrecioObra Maestra
Cuadro Cuad oSubastado
192
-
AgenteGalera
: 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: proporcionarprecio8: mostrar
precio
9: proporcionardetalles delvendedor
10: transferir detallesvendedor 11: solicitar
actualizacin
12: confirmacin13: confirmacin14: mostrarconfirmacin
193
-
Un ejemplo completo para todos los diagramastodos los diagramas
Un sistema de gestin de cursos impartidos para un conjunto de clientes. Algunos de esos clientes pueden pertenecer a empresas.
194
-
195
-
196
-
197
-
001
1 11.12
2.1
33.1 3.1.1
3.2 3.2.1
198
-
199
-
200
-
201
-
202
-
203
-
IndiceIndice
Diagramas de Casos de Uso.Diagramas de EstructuraDiagramas de Estructura.Diagramas de Comportamiento.OCL.HerramientasHerramientas.Ejemplos
Bibliografa.204
-
Bibliografa: UMLBibliografa: UMLUML
D Pil N il Pi UML 2 0 i N t h ll OR ill 2005Dan Pilone; Neil Pitman. UML 2.0 in a 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.orgPerdita Stevens, Rob Pooley. Utilizacin de UML en Ingeniera 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.
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
Bibliografa: 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