Documente Academic
Documente Profesional
Documente Cultură
Captulo 1
El Lenguaje Unificado de Modelado, UML
Francisco Javier Bermdez Ruiz fjavier@um.es Departamento de Informtica y Sistemas Universidad de Murcia
Contenidos
Introduccin al modelado del software Presentacin de UML Modelado de Casos de Usos Diagramas de casos de uso Modelado Estructural Diagramas de Clases
Paquetes Componentes
2
Contenidos
Modelado del Comportamiento Diagramas de interaccin Diagramas de actividades Mquinas de estado Modelado de la Implementacin Artefactos y despliegue Diagramas de despliegue Colaboraciones Formalizacin de UML: MOF y metamodelo
3
Bibliografa
G. Booch, J. Rumbaugh, I. Jacobson, El lenguaje unificado de modelado, 2 Edicin, Addison-Wesley, 2006. C. Larman, UML y Patrones: Una introduccin al
anlisis y diseo orientado a objetos y al proceso unificado,
Contenidos
Introduccin al Modelado del software
Presentacin de UML Modelado de Casos de Usos Diagramas de casos de uso Modelado Estructural Diagramas de Clases
Paquetes Componentes
5
En 1994, Booch, Rumbaugh y Jacobson deciden unificar las notaciones de sus mtodos: Unified Modeling Language (UML) Proceso de estandarizacin promovido por el OMG
http://www.uml.org
6
Y muchos ms!
Evolucin UML
Grady Booch y Jim Rumbaugh comenzaron a unificar sus mtodos (Octubre, 1994). Borrador de UML (versin 0.8) (Octubre, 1995) Ivar Jacobson se une al proyecto (Noviembre, 1995). UML 0.9 y se crea un consorcio (Junio, 1996) OMG lanza una peticin para un lenguaje unificado (1996) UML 1.0 es ofrecido al OMG (Enero, 1997) Se extiende el consorcio (Enero-Julio, 1997) UML 1.1 es ofrecido al OMG (Julio, 1997) OMG adopta UML 1.1 (Noviembre, 1997) Se crea el UML RTF (1998) UML 1.3 (Mayo 1999) UML 2.0 (principios de 2005)
8
Ventajas de la unificacin
Reunir los puntos fuertes de cada mtodo Idear nuevas mejoras Proporcionar estabilidad al mercado
Proyectos basados en un lenguaje maduro Aparicin de potentes herramientas
Una empresa software con xito es aquella que produce de manera consistente software de calidad que satisface las necesidades de los usuarios
El modelado es la parte esencial de todas las actividades que conducen a la produccin de software de calidad
12
Sera lo ideal pero .... .... necesitamos escribir modelos, aunque la mayora de desarrolladores todava no practican el modelado
13
Se obtienen beneficios con el modelado? Un coste en formacin y tiempo Una mejora de la productividad? Una mejora de la calidad del software?
15
16
17
Qu es un modelo?
Un modelo es una simplificacin de la realidad Un modelo es resultado de un proceso de abstraccin y ayuda a comprender y razonar sobre una realidad.
18
Qu es un modelo software?
Un modelo es una descripcin de un aspecto del sistema, escrita en un lenguaje bien definido.
Diferentes tipos de modelos:
Anlisis vs. Diseo, Comportamiento vs. Estructural Negocio vs. Software Nivel de detalle ....
19
Un modelo software
Usuario nombre 1 nif 1 0.. n Pedido id tot al 1 1..n LineaPedido unidade s 0..n
0..n
0..n
20
Modelos en UML
Modelado de Casos de Uso
Diagrama de Casos de Uso
Modelado Estructural
Diagrama de Clases
Modelado de Comportamiento
Diagramas de Interaccin Diagramas de Estados
Modelado Implementacin
Diagrama de Componentes
Modelado de Despliegue
Diagramas de Despliegue
21
Tipos de modelo
En qu etapa del proceso se usa? Anlisis o Diseo? Cul es su grado de detalle? Abstracto o detallado? Qu sistema describe? Modelo de negocio o modelo software? Qu aspecto describe? Estructural o de comportamiento? Es especfico o independiente de la plataforma? A qu plataforma va dirigido? EJB, JDBC, .NET, CORBA, etc.
22
describe
Modelo Software
describe
Empresa
Sistema software
Sistema de la empresa
23
24
Modelado es la solucin?
25
Contenidos
Modelado del software
Presentacin de UML
Modelado de Casos de Usos Diagramas de casos de uso Modelado Estructural Diagramas de Clases
Paquetes Componentes
26
UML y el modelado
UML es un lenguaje para visualizar, especificar, construir y documentar los artefactos (modelos) de un sistema que involucra una gran cantidad de software, desde una perspectiva orientada a objetos.
UML es una notacin, no es un proceso Se han definido muchos procesos para UML.
Rational ha ideado RUP, elproceso unificado.
Relaciones Diagramas
Mecanismos comunes
Especificaciones, Extensibilidad, Dicotoma clase-instancia, Dicotoma interfaz-realizacin
28
Elementos Estructurales
Partes estticas de un modelo
Ventana origen tamao abrir() cerrar() mover() dibujar()
<<Interface>> IAvisable
colaboracin
IAvisable
Interface
Gestin Pedidos
clase
ValidarTransaccion
caso de uso
29
Elementos Estructurales
Gestor Eventos suspender() vaciarCola()
clase activa
FormularioPedido
componente
<<artifact>>
window.dll
Servidor
nodo artefacto
30
Elementos de Comportamiento
Son las partes dinmicas de UML.
Interaccin Conjunto de mensajes intercambiados entre un conjunto de objetos con un propsito particular.
dibujar
mensaje
31
Elementos de Comportamiento
Son las partes dinmicas de UML.
Mquina de estados Secuencia de estados por las que pasa un objeto durante su vida en respuesta a eventos.
activado
estado
32
Elementos de Agrupacin
Son las partes de organizacin de los modelos UML
paquete
Un paquete incluye un conjunto de elementos de cualquier naturaleza. Tiene una naturaleza conceptual.
33
Elementos de Anotacin
Son las partes explicativas de los modelos UML
Nota
34
Relaciones
Dependencia
0..1 *
patron
empleado
Asociacin
Generalizacin Realizacin
35
Ejemplo
IteradorCuenta
Cuenta 1 0..n
Domiciliacion
Ahorro
36
Pedido Desayuno direccin fecha hora descuento calcularPrecio() +pedido 1 Cliente +pedidos 1.. n +cliente 1 crearPedido() numeroCuent a direccion
+des ayuno
Desayuno Estandar nombre precio estilo 0.. n Comestible nombre cantidadMinima precio 1..n formaTransporte Parte cantidad
Cambio cantidad
0..n
Diagramas de UML
Diagrama de Clases Diagrama de Objetos Diagramas no Diagrama de Componentes son modelos Diagrama de Estructura Compuesta Diagrama de Casos de Uso Diagrama Secuencia Diagrama Comunicacin (antes de Colaboracin) Diagrama de Estados Diagrama de Actividades Diagrama de Despliegue Diagrama de Artefactos Diagrama de Paquetes Diagrama de Tiempos
38
Modelos en UML
Modelado de Casos de Uso
Diagrama de Casos de Uso
Modelado Estructural
Diagrama de Clases
Modelado de Comportamiento
Diagramas de Interaccin: Secuencia y Comunicacin Diagramas de Estados
Modelado Implementacin
Diagrama de Componentes
Modelado de Despliegue
Diagramas de Artefactos Diagramas de Despliegue
39
Responsable
Servicio PE
Alumno
Sistema
no Cambiar admitidos
Hay alumnos? no
Cancelar Curso
Diagrama de actividades
Pujador
Partic ipante n omb re a pelli dos n umI D d omic i lio d ir ecc i onEnv io t el efono r eput ac i on
Diagrama de clases
Modelo Estructural
+p +pa +pc PujaOrdinaria dato s Tarjet a es ta do +puja Adjudic ac ion
PagoAnunc io
+as
+pujas +adjudic ac iones Anunc ioSubas ta Edic ionSubas ta idEdic ion f ec haInic io f ec haC ierre es tado +anunc ios +es p v pR ec om end p uja Mini ma c uota g as to s Env io p laz o f orm aPago a nti ci po +a rt ic u los Artic uloC onc reto c o dArt ic u lo +artic ulos Artic ulo idEs pe c c a rac ter is ti c as pv p Re c om end
i nt num Aj udi caci ones = M i ni m o(puj as.l ength(), arti cul os.l ength());
Diagrama de comunicacin
9. [1..num Adj s]* add(adj ) 4. * cerrar() : Anunci oSubasta 3. * as := ge t() : Edi ci onSubasta as : Anunci oSubasta adj udi caci ones : Ad j udi c ac io n
8. [1..num Adj s]* adj := crear(as, pg, a) 6. [1..num Adj s]* pg := g et () puj as : Pu j aOrdi naria 7. [1..num Adj s]* a: = get()
Se recorre l a col ecci n de puj as obteni endo l as puj as ganadoras (consi deram os que l a col ecci n est ordenada de m ayor a m enor val or de puj a).
ad j : Adj udi caci on : Arti culo Concre to Se crean tantas adj udi caci ones com o puj as ganadoras haya. Cada adj udi caci n se asoci a con un Arti cul oConcreto, una puj a adj udi catari a y con l a subasta.
Modelo de Comportamiento
Mquina de Estado
Diagrama de estado
Espera Venta introducirProducto introducirProducto
Introduccion Productos
44
Elena
Elena : Persona
: Persona
45
IOrtografia IDiccionario
asistenteOrtografico
IUnknown
46
cliente: Persona
El tipo declara la clase de una entidad, por ejemplo un objeto o parmetro, y el rol describe el significado de la entidad en un determinado contexto, tal como una clase, componente o colaboracin.
47
Valores etiquetados
Extienden las propiedades de un estereotipo, permitiendo crear nueva informacin en la especificacin del estereotipo. Par etiqueta/valor: { etiqueta = valor }
Restricciones
Especifican condiciones que una configuracin de tiempo de ejecucin debe satisfacer para conformar con el modelo.
48
<<Actor>> Cl iente
IComparator
Cl iente
49
valor etiquetado
Overflow
{ordenado}
restriccin
50
Cuenta
{xor}
restricciones
Persona sexo
0.. 1 +esposa
0..1 +esposo
{Self.esposa.sexo = mujer and self.esposo.sexo = hombre}
51
Hola, Mundo!
import java.awt.Graphics; class HolaMundo extends java.applet.Applet { public void paint (Graphics g) { g.drawString (Hola, Mundo!,10,10); } }
HolaMundo g.drawString ("Hola, mundo) paint()
52
Diagrama de Clases
Applet
HolaMundo paint()
Graphics
(from awt)
53
imageUpdate() Container
(from awt)
Panel
(from awt)
Applet
HolaMundo paint()
Graphics
(from awt)
Organizacin en Paquetes
55
Diagrama de Secuencia
root : Thread : Toolkit : ComponentPeer target : HolaMundo
run callbackLoop
handleExpose
paint
56
Diagrama de Artefactos
HolaMundo <<manifest>> <<artifact>> HolaMundo.class <<manifest>> hola.java
hola.html
hola.jpg
57
Contenidos
Introduccin al modelado del software
Paquetes Componentes
58
60
Emisor
Centralita
Receptor
listo( )
tono
marcar_numero
tono_sonando timbre_sonando
Escenario
para_tono
telefono_cogido
para_timbre
Casos de uso son ideados por Jacobson a principios de los noventa, Inspirados en los escenarios utilizados para describir procesos.
asociacion
63
Actores
Un actor representa un conjunto coherente de roles que juegan los usuarios de los casos de uso al interaccionar con el sistema. Roles jugados por personas, dispositivos, u otros sistemas. El tiempo puede ser un actor (procesos iniciados automticamente por el sistema) No forman parte del sistema.
65
Actores
Un usuario puede jugar diferentes roles. En la realizacin de un caso de uso pueden intervenir diferentes actores. Un actor puede intervenir en varios casos de uso. Identificar casos de uso mediante actores y eventos externos. Un actor necesita el caso de uso y/o participa en l.
66
Actores
Dos tipos de actores:
Principal: Requiere al sistema el cumplimiento de un objetivo Secundarios: El sistema necesita de ellos para satisfacer un objetivo
67
68
Debe ser legible y comprensible para un usuario no experto. Debe indicar: actores, flujos principal y excepcionales.
70
Cajero
Realizar Venta
Cliente
:Sistema
Responsable
Rebajar Mnimo
Aprobar curso
Servicio CPE
Fin matriculacion
Realizar preinscripcin
Sist ema
Alumno
Realizar preinscripcin
Gest in Expedient es
Actor Principal
Matriculacin Ent idad Banc aria
Reservar Libro
Prestamo revista
Profesor
Prestamo Libro
Devolver revista
Bibliotecario
Extender Prestamo
Consultar
Socio
77
Una colaboracin tiene una parte esttica (diagramas de clases) y una parte dinmica (diagramas de secuencia).
78
Gestin Pedidos
realizacin
79
El objetivo de la arquitectura del sistema es encontrar el conjunto mnimo de colaboraciones bien estructuradas, que satisfacen el comportamiento especificado en todos los casos de uso del sistema
80
Inclusin
Un cdu base incorpora explcitamente el comportamiento de otro en algn lugar de su secuencia.
Extensin
Un cdu base incorpora implcitamente el comportamiento de otro cdu en el lugar especificado indirectamente por este otro cdu
81
Ejemplo
Relacin de extensin
extend
Hacer Pedido
(establecer prioridad)
include
Relacin de inclusin
Comprobar clave
Validar Usuario
Generalizacin
Seguir Pedido
include
Examinar retina
82
Relacin de inclusin
Permite factorizar un comportamiento en un caso de uso aparte y evitar repetir un mismo flujo en diferentes casos de uso. Ejemplo:
Hacer Pedido: Obtener y verificar el nmero de pedido; Incluir (Validar usuario); para cada lnea en el pedido: Consultar el estado; Preparar un informe para el usuario
83
Relacin de extensin
El caso de uso base incluye una serie de puntos de extensin. Sirve para modelar
la parte opcional del sistema un subflujo que slo se ejecuta bajo ciertas condiciones varios flujos que se pueden insertar en un punto
84
Relacin de extensin
Ejemplo:
Hacer Pedido: Incluir Validar usuario; Recoger los tem del pedido del usuario; establecer prioridad: punto de extensin Enviar pedido para ser procesado.
85
2) Encontrar todos los roles que juegan los usuarios y que son relevantes al sistema. 3) Para cada rol identificar todas las formas (objetivos) de interactuar con el sistema. 4) Crea un caso de uso por cada objetivo. 5) Estructurar los casos de uso. (Cuidado!) 6) Revisar y validar con el usuario.
86
(D. Coleman)
condiciones que deben cumplirse interacciones entre los actores y el sistema necesarias para obtener el objetivo
Variaciones (opcional) cualquier variacin en los pasos No-funcional (opcional) lista requisitos no funcionales Cuestiones lista de cuestiones que permanecen por
resolver
87
(D. Coleman)
1. Operador es notificado de problema en la red 2. Operador inicia una sesin de reparacin 3. REPETIR 3.1. Operador ejecuta aplicacin diagnsticos en la red. 3.2. Operador identifica elementos que deben cambiarse y sus nuevos valores para los parmetros. 3.3. EN PARALELO 3.3.1. Ingeniero mantenimiento comprueba elementos en la red || 3.3.2. Ingeniero mantenimiento enva informe fallo 4. Operador cierra sesin
88
(D. Coleman)
Precondicin: El cajero se identifica y autentica Postcondiciones: Se registra la venta. Se calcula el impuesto. Se actualiza contabilidad e inventario...
91
Cuestiones Pendientes:
- Explorar cuestiones de recuperacin de accesos a servicios remotos - Qu adaptaciones son necesarias para diferentes negocios?
94
(B. Meyer)
Solo deben ser usados por equipos expertos en desarrollo OO tiles para validacin
96
97
Granularidad
Diferente granularidad Un caso de uso se puede asociar a un objetivo del usuario o a una interaccin bsica con el sistema. Un objetivo implica una o ms interacciones. Se debe definir un caso de uso por cada objetivo del usuario.
98
Granularidad
Casos de uso del negocio
Procesos de Negocio: Objetivo estratgico de la empresa (Ej. Vender productos)
Segn la importancia
Primario, secundario u opcional
Recomendaciones
Especificar casos de uso no es una actividad de dibujar diagramas sino de escribir con el detalle necesario el flujo principal y los flujos alternativos: centrado en la escritura en vez del dibujo No hay que preocuparse demasiado por las relaciones entre casos de uso ni entre actores. El objetivo inicial es identificar los actores y a partir de sus objetivos encontrar los casos de uso, el diagrama de casos de uso es una ayuda visual. Los actores deben interactuar con el sistema
101
Recomendaciones
Qu granularidad es apropiada para un caso de uso?
Sirven para planificar el proyecto Se les asocia un flujo de interacciones actor-sistema Deben ser objetivos del usuario
Error comn: no identificar como casos de uso las tareas que inicia el propio sistema
Anular reservas pasados quince das
102
Recomendaciones
No incluir como caso de uso las operaciones CRUD sobre un objeto de negocio (alta, consulta, borrado, actualizacin): funcin del sistema aparte, excepto si se trata de operaciones relevantes para el sistema, como registrar cliente en un sistema de venta por internet Cuidado con el empleo de la relacin include
NO HACER UNA DESCOMPOSICION FUNCIONAL!
Escribir casos de uso independientes de la interfaz o de detalles de implementacin, escribirlos a nivel esencial. A qu nivel de detalle se describe un caso de uso?
Primero informal, luego expandido
103
Recomendaciones
Hay que comprobar que los casos de uso incluyen toda la funcionalidad del sistema. Preocupacin por mantener la validez y consistencia del conjunto de casos de uso. Cada compaa debe tener un manual sobre uso de los casos de uso. Los casos de uso slo consideran los requisitos funcionales del proyecto, hay que aadir los nofuncionales.
104
Referencias
http://alistair.cockburn.us/usecases/usecases.html
A. Cockburn,Writing effective uses case, AddisonWesley, 2000 C. Larman, UML y Patrones: Una introduccin al anlisis y diseo orientado a objetos y al proceso unificado, Prentice-Hall, 2003.
105
Contenidos
Introduccin al modelado del software
Presentacin de UML
Modelado de Casos de Usos Diagramas de casos de uso
Modelado Estructural
Diagramas de Clases
Paquetes Componentes
106
Modelado estructural
Se describen los tipos de objetos de un sistema y las relaciones estticas que existen entre ellos.
Clases Interfaces Relaciones de dependencia, realizacin, generalizacin y asociacin (agregacin, composicin) Tambin pueden incluir paquetes y colaboraciones
Modelado estructural
Diferentes perspectivas. Modelado Conceptual
Conceptos del dominio del problema: atributos, restricciones y relaciones entre ellos.
Modelo de Diseo
Incluye clases que corresponden a decisiones del diseo
Modelo de Implementacin
Clases que corresponden a un lenguaje de programacin
108
Pedido Desayuno direccin fecha hora descuento calcularPrecio() +pedido 1 Cliente +pedidos 1.. n +cliente 1 crearPedido() numeroCuent a direccion
+des ayuno
Desayuno Estandar nombre precio estilo 0.. n Comestible nombre cantidadMinima precio 1..n formaTransporte Parte cantidad
Modelo Conceptual
Cambio cantidad
0..n
110
Partic ipante n omb re a pelli dos n umI D d omic i lio d ir ecc i onEnv io t el efono r eput ac i on
+as
+as
+pujas +adjudic ac iones Anunc ioSubas ta Edic ionSubas ta idEdic ion f ec haInic io f ec haC ierre es tado +anunc ios +es p v pR ec om end p uja Mini ma c uota g as to s Env io p laz o f orm aPago a nti ci po +a rt ic u los Artic uloC onc reto c o dArt ic u lo +artic ulos Artic ulo idEs pe c c a rac ter is ti c as pv p Re c om end
IteradorCuenta
Modelo de diseo
Cuenta 1 0..n
Domiciliacion
Ahorro
i nt num Aj udi caci ones = M i ni m o(puj as.l ength(), arti cul os.l ength());
9. [1..num Adj s]* add(adj ) 4. * cerrar() : Anunci oSubasta 3. * as := ge t() : Edi ci onSubasta as : Anunci oSubasta adj udi caci ones : Ad j udi c ac io n
8. [1..num Adj s]* adj := crear(as, pg, a) 6. [1..num Adj s]* pg := g et () puj as : Pu j aOrdi naria 7. [1..num Adj s]* a: = get()
Se recorre l a col ecci n de puj as obteni endo l as puj as ganadoras (consi deram os que l a col ecci n est ordenada de m ayor a m enor val or de puj a).
ad j : Adj udi caci on : Arti culo Concre to Se crean tantas adj udi caci ones com o puj as ganadoras haya. Cada adj udi caci n se asoci a con un Arti cul oConcreto, una puj a adj udi catari a y con l a subasta.
Realizar Compra
Realizar Compra
115
0..n
1..n
116
: MostrarProductos
: Aadir
: CarroCompras
6: [!nuevoItem]incrementarUnidades()
10: [nuevoItem]put(codigo,i)
5: i:=getItemCarro(codigo)
7: [nuevoItem]p:=get(codigo)
9: [nuevoItem]i:=creaItem(p)
: ItemCarro
: Producto
117
118
119
Ingeniera inversa
Obtener un modelo a partir de cdigo. Ms difcil ya que hay prdida de informacin al pasar de los modelos al cdigo.
120
Clases
Cuenta ultimoCodigo codigo cliente saldo ultimasOperaciones getSaldo() getUltimasOperaciones() nuevoCodigo()
Atributos
Operaciones
No se tienen por qu mostrar todos los atributos y mtodos Agrupar los mtodos usando estereotipos: <<constructor>>, <<query>>,...
121
Interfaces
Una interfaz es una coleccin de operaciones que especifica los servicios de una clase o componente.
<<Interface>> Coll ection add() remove() size() contains() iterator()
122
Atributos
[visibilidad] nombre [: tipo] [[multiplicidad]] [= valor_inicial ] [property-string {, property-string}]
+ = # = = ~ = pblica protegida privada package
nombre del atributo tipo del atributo valor inicial o por defecto
valor_inicial:
Atributos : Ejemplos
origen + origen origen : Punto nombre : String [0..30] origen : Punto = (0,0) id : Integer {readOnly}
124
Atributos
Cliente nombre : String
Nivel Conceptual: Los clientes tienen un nombre Nivel de Especificacin: El cliente puede almacenar y consultar su nombre Nivel de Implementacin: Una instancia de Cliente tiene un campo de tipo String que almacena su nombre y un mtodo que lo devuelve
125
Operaciones
[visibilidad] nombre [(lista_parametros)] [: tipo_retorno] [property-string {, property-string}]
+ = # = = ~ = pblica protegida privada package
visibilidad
nombre: nombre de la operacin lista_parmetros: lista de parmetros separados por comas tipo retorno: propiedades: tipo de valor devuelto por la operacin {isQuery}, {sequential}, {concurrent}
126
Operaciones
dibujar + dibujar set (nombre : String) getID(): Integer arrancar() {guarded} Formato parmetro:
[direccion] nombre : tipo [= valor-por-defecto] direccion puede ser : in, out o inout
127
Clases Parametrizadas
G
Clase Parametrizada
bind <Empleado>
Empleados
Instanciacin
Tabla<Cliente>
128
Otras propiedades
Clases y mtodos abstractos Multiplicidad Variables y mtodos de clase
Cuenta ultimoCodigo codigo cliente saldo ultimasOperaciones getSaldo() getUltimasOperaciones() nuevoCodigo()
CatalogoPedidos 1
Figura visualizar() rotar() trasladar()
129
Clases Estereotipadas
<<metaclass>> MetaclaseCuenta
<<exception>> FueraRango
130
Relaciones
Dependencia
Un cambio en la especificacin de un elemento afecta a otro
PlanDelCurso
Clock
Nodo <<friend>>
Lista
131
Relaciones
Generalizacin
Es-un-tipo-de
Cuenta
Window
CuentaAhorro
CuentaCorriente
TextWindow
BoxDialog
133
Generalizacin
Nivel Conceptual
Todas las instancias de CuentaCorriente son instancias de Cuenta
Nivel Especificacin
La interfaz de CuentaCorriente incluye la interfaz de Cuenta Principio Sustitucin
Nivel Implementacin
Herencia
134
Relaciones
Asociacin
Relacin estructural que especifica que los objetos de un tipo estn conectados con los de otro.
Persona
+empleado 1..*
+patron *
Empresa
Curso
*
impartido
1..*
Profesor
135
Asociaciones
Agregacin
Caso especial de asociacin Relacin estructural parte-de
Empresa 1..1
* Departamento
136
Asociaciones
Nivel Conceptual
Muestran la relacin conceptual entre dos clases. Un cliente tiene varios pedidos
Nivel de Especificacin
Representan responsabilidades Detectamos los mensajes del protocolo de una clase con respecto a la otra
Nivel de Implementacin
Establecer atributos: navegabilidad
137
Asociaciones
Especificacin:
class Pedido { public Cliente getCliente(); public Set getLineaPedido();... }
Implementacin
class Pedido { private Cliente private HashSet _cliente; _lineasPedido; }
138
Navegacin
Posibilidad de limitar la navegacin a una sola direccin Determina si una clase de la asociacin tiene conocimiento de la otra. Nivel de especificacin o implementacin
Curso *
impartido 1..*
Profesor
139
Visibilidad
Pblica: Protegida: Privada: Paquete: + # ~ propietario propietario propietario propietario
Usuari o
+propi etari o 1
Clave
140
Asociaciones calificadas
Pedido numero tipoPago producto estado caducidad 1 ItemPedido unidades total
Nivel Conceptual: Dentro del mismo pedido no pueden existir dos lneas con el mismo producto Nivel Especificacin: El acceso a ItemPedido es indexado por productos Nivel Implementacin: Se usa una tabla para almacenar las lneas de pedido
141
Asociaciones calificadas
Class Pedido { private Hashtable _lineasPedido;
public ItemPedido getItemPedido(Producto unProducto); public void addItemPedido (Integer cantidad, Producto elProducto); }
142
Agregacin
Dos criterios:
Dependencia:
La existencia de una parte va ligada a la del agregado?
Exclusividad:
Una parte puede pertenecer a ms de un agregado?
Habra cuatro posibles tipos de agregacin; en UML hay dos: agregacin y composicin
143
Composicin
Forma fuerte de agregacin Una parte pertenece a un nico agregado (exclusividad) Si se elimina un agregado se eliminan todas sus partes (dependiente) Una parte se puede aadir o eliminar en cualquier instante al agregado.
144
Composicin
W indow 1 1 1
agregado
+scrollbar Slider
2
+title
1 +body Panel
Header
partes
145
Clases Asociacin
Una asociacin que tambin es una clase Una asociacin que posee sus propias caractersticas. Una clase asociacin aade una restriccin: Slo puede existir una instancia de la asociacin entre cualquiera par de objetos participantes No podramos modelar que una persona tiene diferentes contratos para una misma compaa a lo largo del tiempo.
146
Distinta semntica
Contrato Persona 1 salario descripcion 0..n fechaContrato Empresa 1..n 1
147
Asociaciones derivadas
Cliente nombre direccion email 1 /facturaCliente
Asociacin Derivada
0..n Pedido numero tipoPago estado 1 caducidad 0..n Factura numero fecha total
0..1
148
Asociaciones derivadas
recib e Estudiante Asignatura
/ensea
i mp arte
Profesor
Asociacin Derivada
149
Cuenta
{or}
Persona
{subconjunto}
+m ie mb ro 1..* Persona +Director 1 ..1
150
empleado
patrn
* 0..1
jefe
Persona
0..1
Empresa
{ Persona.patrn= Persona.jefe.patrn }
Realizacin
Relacin entre clasificadores, un clasificador especifica un contrato que otro clasificador garantiza que cumplir.
<<Interface>> ICollection List add() remove() contains()
List
ICollection
152
I nputStream
(from io)
InputStreamReader
(from io)
Clase Abstracta
FilterInputStream
(from io)
DataInputStream
(from io)
153
InputStreamReader
(from io)
Interfaz
FilterInputStream
(from io)
DataInputStream
(from io)
154
155
Interfaces
Interfaz requerida Interfaz proporcionada
Observer
Target
TargetTracker
Observable
Target Track er
156
Contenidos
Introduccin al modelado del software Presentacin de UML Modelado de Casos de Usos Diagramas de casos de uso Modelado Estructural Diagramas de Clases
Paquetes Componentes
157
Paquetes
Elemento organizativo Puede agrupar elementos de cualquier tipo. Un elemento es exclusivo a un paquete:
Si eliminamos el paquete se elimina el elemento
Modelo
158
Importacin/Exportacin en paquetes
Visibilidad pblica, protegida y privada Relaciones de importacin y generalizacin. La parte pblica de un paquete son sus exportaciones. Las partes pblicas son visibles en los paquetes que importan al paquete que los contiene. Cuando un paquete A importa a otro B, todos los elementos pblicos de B son aadidos a A, se accede a ellos sin calificar su nombre. La complejidad de un gran nmero de abstracciones es controlada at travs de los paquetes y de la importacin.
159
Importacin/Exportacin en paquetes
La relacin de acceso es igual que la importacin pero no se pueden re-exportar los elementos aadidos. Importacin y acceso se representan mediante relaciones de dependencia estereotipadas con <<import>> y <<access>>. La relacin de importacin es transitiva. Los paquetes anidados pueden ver todo lo que ven los paquetes que los contienen.
160
<<import>>
Politicas + ReglasPedidos + GUI:Ventana
<<import>>
Generalizacin de Paquetes
GUI + Ventana + Formulario # GestorEventos
MacGUI
162
Paquetes
Un paquete bien estructurado debe:
ser cohesivo estar poco acoplado pocos anidamientos conjunto equilibrado de elementos
164
165
<<model>> Diseo
<<framework>> Struts
166
Modelado OO ofrece una correspondencia directa entre los dos puntos de vista, a travs del concepto de objeto
167
Modelo
Un modelo captura una vista de un sistema fsico. Es una abstraccin de ese sistema con cierto propsito, para cierto conjunto de personas interesadas y a cierto nivel de abstraccin. Un modelo contiene todos los elementos de modelado necesarios. Un modelo y sus elementos se representan mediante diagramas, que expresan una vista del modelo.
168
Modelo
169
Subsistema
Un subsistema es una unidad de comportamiento en el sistema. Permite descomponer el sistema Un subsistema ofrece interfaces, tiene operaciones, y distingue entre especificacin e implementacin.
170
Vistas UML
vocabulario funcionalidad ensamblado gestion conf.
Vista de Implementacion
Vista de Diseo
comportamiento
Vista de Interaccin
Vista de Despliegue
Vistas UML
clases interfaces colaboraciones
Vista de Diseo Vista de Implementacion
componentes
casos de uso
Vista de Interaccin
Vista de Despliegue
clases activas
nodos
172
Vistas UML
Diagramas de clase Diagramas de interaccin Diagramas de estado
Vista de Diseo
Vista de Interaccin
Vista de Despliegue
Contenidos
Introduccin al modelado del software Presentacin de UML Modelado de Casos de Usos Diagramas de casos de uso Modelado Estructural Diagramas de Clases
Paquetes Componentes
174
Componentes
Es una unidad auto-contenida que encapsula el estado y comportamiento de un conjunto de clasificadores (p.e. clases). Especifica un contrato de los servicios que proporciona y de los que requiere en trminos de interfaces requeridas y proporcionadas Es una unidad reemplazable que se puede sustituir en tiempo de diseo o ejecucin por otro componente que ofrezca la misma funcionalidad en base a la compatibilidad de sus interfaces. Vista externa vs. Vista interna
175
Componentes
Un componente es una parte reemplazable de un sistema, que conforma con/y proporciona la implementacin de un conjunto de interfaces. Un sistema basado en componentes est formado por componentes que implementan las interfaces, junto con otros que acceden a los servicios proporcionados por esas interfaces. Servicios independientes de la localizacin y reemplazables. Interfaces proporcionadas vs. Interfaces requeridas.
176
Propiedades de un componente
Interfaz Componente
Interfaz soportada
1..*
Especificacin Componente
1 *
realizacin
Implementacin Componente
1 *
instalacin
Instancia Componente
instancia
Instalacin Componente
177
Propiedades de un componente
Es una unidad de despliegue independiente. Puede ser conectado con otros componentes En una aplicacin dada existir una nica copia Es una parte sustituible de un sistema (conforma con una o ms interfaces) Realiza una funcin bien definida (cohesin fsica y lgica) Abarca ms de una colaboracin de clases Existe en el contexto de una arquitectura bien definida. Presupone una infraestructura tecnolgica en la que se piensa utilizar
Componentes
AsignacionItem
<<component>>
Persona
Seguimiento
Pedido
Factura
ItemPedido
Interfaces proporcionadas
Interfaces requeridas
179
Componentes
<<component>>
Pedido
Interfaz proporcionada
Interfaz requerida
180
Componentes
JerarquaElementos
explorador.java arbol.java
181
Componentes
182
Puertos
Representan un punto de interaccin entre una instancia de un clasificador (clase, componente) con su entorno o con las instancias que contiene (estructura interna). Las interfaces asociadas especifican la naturaleza de la interaccin.
Requeridas: especifican las peticiones que se pueden hacer al entorno Proporcionadas: especifican las peticiones que puede recibir del entorno
183
Puertos
Los puertos son parte de un componente Cuando se crea una instancia de un componente, se crean instancias de sus puertos
Un puerto tiene multiplicidad Un puerto tiene identidad: un nombre La instancia de un puerto es un objeto de una clase que implementa las interfaces relacionadas.
184
Componente
Puerto
Reservar
ventas normales atracciones
Cargar espectculos
Ventas Ticket
Vendedor Ticket
Tarjetas Crdito
cobros ventas prioritarias
Ventas Ticket
185
Estructura Interna
Una parte es una unidad de implementacin de un componente, que tiene un nombre y un tipo. Una instancia de un componente puede contener una o ms instancias de cada una de sus partes. La estructura interna de un componente est formada por las partes que lo implementan junto con las conexiones entre ellas.
Las partes pueden ser componentes conectados a travs de sus puertos.
186
Estructura interna
Compilador
lex:AnalizadorLexico
parse: Parser
Compilar
gen: GeneradorCodigo
opt:Optimizador [1..3]
187
Estructura interna
Venta Ticket Vuelos
:AsignacionAsiento
normal:Venta
:GestionInventario
Prioridad:Venta
188
Estructura interna
Ventas por Catalogo
:Cumplimentar
:Inventario
:EncontrarItems
:EnviarItems
:CapturaPedido
GestionPedido
189
Conectores
Una conexin entre dos puertos se denomina conector y denota un enlace en una instancia del componente. Los componentes pueden ser conectados directamente o porque tienen interfaces compatibles. Un conector delegacin conecta un puerto interno a uno externo.
190
Componentes
191
Contenidos
Modelado del Comportamiento Diagramas de interaccin Diagramas de actividades Mquinas de estado Modelado de la Implementacin Artefactos y despliegue Diagramas de despliegue Colaboraciones Formalizacin de UML: MOF y metamodelo
192
Enlaces y Conectores
Un enlace es :
una conexin semntica entre objetos. comnmente es una instancia de una asociacin. un camino por el cual enviar un mensaje
193
Enlaces y Asociaciones
Persona calcularCom pensacion() asignar() +em pleado 1..* + patron *
Em presa
conector
irene:Persona
1: asignar(desarrollo) p:Persona :Em presa :Empresa UMU: Empresa
role mensaje
194
Enlaces y Asociaciones
Persona calcularCom pensacion() asignar() +em pleado 1..* + patron *
Em presa
enlace
p:Persona 1: asignar(desarrollo) :Em presa
objeto mensaje
195
Enlaces
Restricciones para expresar la naturaleza del enlace:
association self global local parameter
196
Diagrama de Objetos
: Cuenta
: Client e
: CodigoCuenta
: Tarjeta
: Transaccion
: Perfil
197
Diagrama de Objetos
: Curso
: Alumno : Profesor
: Tarjeta
: Departamento
: Expediente
: Tarjeta
director : Profesor
: GrupoInvestigacion
198
Interacciones y Mensajes
Interaccin: Comportamiento que comprende un
conjunto de mensajes intercambiados entre un conjunto de objetos dentro de un contexto para lograr un propsito.
199
Tipos de mensajes
Simple
Llamada de operacin o flujo anidado de control
Sncrono
El emisor espera hasta recibir el resultado
Asncrono
El emisor no espera a recibir el resultado
Retorno
Indica el retorno de una llamada
Creacin y destruccin
<<create>> y <<destroy>>
200
201
Diagramas de Interaccin
Describen una interaccin y hay dos tipos. Diagramas de Secuencia:
Destacan la ordenacin temporal de los mensajes
Diagramas de Comunicacin:
Destacan la organizacin estructural de los objetos participantes.
Equivalencia semntica
202
Diagramas de Secuencia
Incluye:
Objetos y su lnea de tiempo Focos de control o activacin Mensajes: a instancias o de creacin Mensaje self Informacin de control: condiciones y marcas de iteracin Indicar el objeto devuelto por el mensaje: return
(aadirlos slo cuando ayuden a clarificar la interaccin)
203
Mensajes
metodo(arg) <<create>> <<destroy>> [condicion] metodo(arg) * metodo(arg), [1..n] metodo(arg) v:= mtodo(arg) nmero del mensaje en la secuencia precedido por el nombre del proceso o hilo Numeracin jerrquica o secuencial o ninguna Simple: Creacin de objetos: Destruccin de objetos: Condicin: Iteracin: Asignacin: Identificar hilo:
204
Mensajes
Simple: Condicin: Iteracin: Asignacin: Identificar hilo: preparar(), addPedido(p) [condicion] metodo(arg) * preparar() hayStock:= eliminar() D3 : activar()
205
Diagrama de Secuencia
: GUIPedido :GUIPedido : ControladorPedidos :ControladorPedidos ::Pedido Pedido : LineaPedido :LineaPedido : Item :Item : ItemPedido : ItemEntregado preparar( ) preparar( ) preparar( )
:ItemPedido
[hayStock] <<create>>
:ItemEntregado
206
Diagrama de Comunicacin
1: preparar( ) : GUIPedido : ControladorPedidos 2: preparar( ) : Pedido 3: preparar( ) : LineaPedido
: ItemPedido 7: [pedir]<<create>>
: Item
: ItemEntregado
207
Diagrama de Secuencia
c:Cliente <<create>> establecerAcciones establecerValores :Transaccion p:ProxyODBC
tiempo
exito
establecerValores
Lnea de vida
<<destroy>>
Foco de control
208
Diagrama de Comunicacin
1: <<create>> 2: establecerAcciones 6: <<destroy>> c:Cliente t {local} proxy {global} 3: establecerValores 4: establecerValores :Transaccion {new}
p:ProxyODBC
209
Numeracin secuencial
2: m2()
1: m1 () :A :B
3: m3() :C
4: m4()
:D
Numeracin jerrquica
:A :B :C :D
m1( )
m2( ) m3( )
m4( )
211
Numeracin jerrquica
:A 1. m1() 1.1. m2 () :B :C :D
1.2. m3()
1.3. m4()
212
Numeracin jerrquica
1.1. m2( )
1. m1( ) :A :B
1.2. m3( ) :C
1.3. m4( )
:D
213
Numeracin jerrquica
:A 1. m1( ) 1.1. m2( ) 1.1.1. m3( ) :B :C :D
1.2. m4( )
214
Numeracin jerrquica
1.1. m2( )
1. m1( ) :A :B
1.1. 1. m3( ) :C
1.2. m4( )
:D
215
Numeracin jerrquica
1.1. m2()
1. m1 () :A :B
1.2. m3() :C
1.3. m4()
:D
216
Operadores de control
Ejecucin opcional (opt)
El cuerpo se ejecuta si se cumple una condicin
sd reintegro
us uario : Persona banco : CajeroAutomatico
loop(1,3)
[password incorrecto]
introducir (password)
verificar(password)
opt
[password valido]
par
introducir(cuenta)
introducir(cantidad)
entregar(dinero)
ref
Obtener password
opt
[password valido]
ref
Obtener dinero
221
222
Diagramas de Actividad
Representa una actividad. Una actividad especifica una coordinacin de ejecuciones de comportamientos subordinados a travs de un modelo de flujo de datos y de control. Incluye:
nodos actividad construcciones de control, como control de concurrencia y decisin objetos flujos de control y de objetos
Una actividad produce algn efecto que provoca algn cambio en el sistema o retorna un valor. 223
Flujo de control
inicio
Planificar Proceso
Asignar Tareas
Flujos
finalizacin
225
Bifurcacin
Obtener orden de trabajo
Volver a planificar
226
Divisin y Unin
Preparar conversacin
divisin
Descomprimir
unin
Limpiar
227
Elegir s it io
Contratar arquitecto
Realizar planos
Pedir ofertas
[ no aceptado ]
Construir
Trabajo administrativo
Finaliz ar construccin
Solicitar Producto
Enviar Pedido
Recibir Producto
Facturar al cliente
Pagar Factura
Cerrar Pedido
Cliente
Ventas
Almacn
Solicitar Producto
Enviar Pedido
Recibir Producto
Facturar al cliente
Calles
Pagar Factura Cerrar Pedido
Cliente
Solicitar Producto
Ventas
Almacn Objetos
Procesar Pedido
o: Pedido [completado]
Extraer Artculos
Enviar Pedido
Facturar al cliente
Pagar Factura
Cliente
Comercial
Jefe Tecnico
Inicio
Viable [si]
Aceptar Pedido
Ordenar Fabricacion
Planificar Produccion
Regiones de Expansin
234
Eventos
Un evento es la especificacin de un acontecimiento que ocupa un lugar en el tiempo y espacio. En una mquina de estado, un evento es un estmulo que dispara una transicin. Eventos externos vs. eventos internos. Tipos de eventos:
Seales (excepciones) Llamadas Paso de tiempo Cambio de estado
235
Seales
Modelado Excepciones
<<exception>> Excepcion establecerManejador() primerManejador() ultimoManejador()
<<exception>> Duplicado
<<exception>> Overflow
<<exception>> Underflow
<<send>>
<<send>>
<<send>>
Cambio
Representa un cambio de estado o que se satisface una condicin. when expresin-booleana when (saldo < 0)
238
Mquina de estados
Especifica la secuencia de estados por las que pasa un objeto a lo largo de su vida en respuesta a eventos, junto con sus respuestas a esos eventos. til si las instancias de una clase tienen un comportamiento que depende de su historia o que deben responder a eventos externos: objetos reactivos. Se representa mediante un diagrama de estados.
239
Estados
Un estado es una situacin en la vida de un objeto en la que satisface cierta condicin, realiza alguna actividad o espera algn evento. Elementos de un estado:
Nombre Acciones entrada/salida Transiciones internas Subestados Eventos diferidos
240
Transiciones
Una transicin de un estado A a un estado B, se produce cuando se origina el evento asociado y se satisface la condicin especificada, en cuyo caso se ejecuta la accin de salida de A, la accin de entrada a B y la accin asociada a la transicin. Elementos de una transicin:
Estados origen y destino Evento de disparo Condicin de guarda Accin
241
apagar
Inactivo
haceFrio(tempDeseada) haceCalor(tempDeseada) tempOK tempOK
Calentando
listo/encender() Activacin
Enfriando
haceCalor(tempDeseada)
haceFrio(tempDeseada)
Activo
ruido
Inactivo
Buscando
Configuracin
Rastreando
contactar
Acoplamiento
Partes de un estado
Rastreando entry/ activarModo(enRastreo) exit / activarModo(noRastreo) nuevoObjetivo/rastreador.adquirir do / seguirObjetivo autotest / defer
244
Espera Venta
introducirProducto
Introduccion Productos
245
enviarCargo (codigoCuenta,..)
Pago
rechazarPago
Pago No apobado
pagoAprobado
enviarCargo (codigoCuenta,..)
Envio
pedidoEntregado
Entregado
246
Subestados no ortogonales
introducirTarjeta
Activo
Validacin
Inactivo
cancelar mantener Seleccin
Mantenimiento
247
Subestados ortogonales
Mantenimiento
mantener Pruebas
Probar perifericos AutoDiagnosis
Inactivo
Manejo Ordenes
Espera
248
Subestados ortogonales
249
Contenidos
Modelado del Comportamiento Diagramas de interaccin Diagramas de actividades Mquinas de estado Modelado de la Implementacin Artefactos y despliegue Diagramas de despliegue Colaboraciones Formalizacin de UML: MOF y metamodelo
250
Artefactos
Un artefacto es una parte fsica de un sistema que existe a nivel de la plataforma de implementacin. Es una implementacin fsica de un conjunto de elementos lgicos tales como clases y componentes:
Relacin de dependencia estereotipada con manifest
251
Artefactos
artifact agente.java manifest artifact agenteFraudes.dll manifest AgenteFraudes PolticaFraudes PatrnBsqueda agenteFraudes manifest PolticaFraudes PatrnBsqueda artifact agenteFraudes.dll manifest
252
Artefactos
Despliegue
Necesarios y suficientes para formar un sistema ejecutable: libreras dinmicas (dll), ejecutables (exe),..
De ejecucin
Se crean durante la ejecucin: objeto .NET instanciado a partir de una DLL.
253
254
Modelado de ejecutables
artifact v.exe
Vwbas20.dll
Vwdev20.dll
Wscr20.dll
255
Nodos
Un nodo es un elemento fsico que existe en tiempo de ejecucin y representa un recurso computacional que puede tener memoria y capacidad de procesamiento. Los componentes se ejecutan en nodos Los nodos representan el despliegue fsico de los componentes.
256
Nodos
Ventas
artifact pos.exe artifact contacts.exe
manifest
manifest
Venta
Contrato
257
Diagramas de Despliegue
Muestra la configuracin de los nodos que participan en la ejecucin y de los componentes que residen en los nodos. Incluye nodos y arcos que representan conexiones fsicas entre nodos. Modelado de sistemas empotrados, sistemas clienteservidor, sistemas distribuidos.
258
Diagrama de Despliegue
terminal
<<10-T-Ethernet>>
servidor
Unidad RAID
<<RS-232>> Consola
259
Modem
internet
<<procesador> servidor
<<procesador>> servidor
<<procesador>> servidor
Contenidos
Modelado del Comportamiento Diagramas de interaccin Diagramas de actividades Mquinas de estado Modelado de la Implementacin Diagramas de componentes Diagramas de despliegue Colaboraciones Formalizacin de UML: MOF y metamodelo
261
Colaboraciones
Sociedad de clases, interfaces y otros elementos que colaboran para proporcionar un comportamiento cooperativo mayor que la suma de los comportamientos de los elementos. Parte estructural (diagrama de clases) y parte de comportamiento (diagrama de secuencia).
262
Colaboraciones
El ncleo de la arquitectura de un sistema est formado por un conjunto de colaboraciones que representan las decisiones de diseo ms importantes. Un sistema orientado a objetos bien estructurado se compone de un conjunto relativamente pequeo de colaboraciones. Modelado de un caso de uso, operacin o mecanismo (patrn o framework)
263
Gestin Pedidos
realizacin
264
Modelo Estructural
0..n
0..n
Modelo Comportamiento
: Usuario 11: recalcularTotal() 1: aadirItem(codigo) 4: aadirItem(codigo) 2: aadirItem(codigo) 3: [primer producto] crear()
: MostrarProductos
: Aadir
: CarroCompras
6: [!nuevoItem]incrementarUnidades()
10: [nuevoItem]put(codigo,i)
5: i:=getItemCarro(codigo)
7: [nuevoItem]p:=get(codigo)
9: [nuevoItem]i:=creaItem(p)
: ItemCarro
: Producto
Ejercicio
Disea una colaboracin de un mecanismo Object Trading que separa la representacin de una informacin de su presentacin y edicin; las clases que representan a los objetos informacin no conocen a las clases que representan editores y viceversa. Un mismo editor puede editar diferentes tipos de informacin y una misma informacin puede ser editada por diferentes editores. El propsito del mecanismo es seleccionar un editor que colaborar adecuadamente con el objeto informacin, crear un objeto editor y lo ligar con el objeto informacin. Un objeto cliente solicitar a un objeto Trader editar cierta informacin.
267
necesita editar 1..1 ObjetoInf ormacion 1..n 1.. n edita do con 1..n E ditor
268
p:= soportaInterfaz(i)
269
Colaboraciones Parametrizadas
Modelado de patrones de diseo
Subject Observer Observer Subject Observer
Alarma
Ventana
270
Observer Update()
+subject
271
272
Contenidos
Modelado del Comportamiento Diagramas de interaccin Diagramas de actividades Mquinas de estado Modelado de la Implementacin Diagramas de componentes Diagramas de despliegue Colaboraciones Formalizacin de UML: MOF y metamodelo
273
Lenguajes OMG
MOF (Meta Object Facility) UML OCL Action Semantics
Definir semntica de modelos de comportamiento Muy bajo nivel No define una sintaxis concreta
274
Lenguajes OMG
Perfiles UML (Profiles)
Subconjunto de UML con extensiones para un dominio concreto Perfiles estndar OMG: EDOC, Corba, EAI,..
QVT
Lenguaje estndar para definir transformaciones
275
Metamodelo UML
Cmo se define formalmente un lenguaje de modelado? UML es definido como un metamodelo escrito es un metalenguaje, MOF. Los cuatro niveles de modelado del OMG
Nivel MO: el sistema Nivel M1: el modelo del sistema Nivel M2: el modelo del modelo Nivel M3. el modelo de M2
276
MOF/UML
Generalizab leElement NameSpace isRoot : boolean isLeaf : boolean isAbstract : boolean
Operation concurrency : CallConcurrencyKind isRoot : boolean isLeaf : boolean isAbstract : boolean specification : String
Modelo de Clases
Usuario nombre 1 nif 1 0.. n Pedido id tot al 1 1..n
0..n
0..n
280
Level M3
Level M2
the SPEM MM
the UML MM
the CWM MM
a Pascal program P
Level M1
a UML model m
an execution X of program P
Level M0
a particular use of m
another use of m
281
MOF
Proporciona conceptos y herramientas para razonar sobre lenguajes de modelado y transformaciones. Repositorio MOF Define un formato de intercambio para modelos de M1 llamado XMI (XML Metadata Interchange), basado en XML.
282
MDA
Propuesta basada en estndares de OMG: UML, MOF, XMI, JMI, QVT,... Separa la especificacin de la funcionalidad del sistema de su implementacin sobre una plataforma concreta. Distincin entre PIM y PSM Basada en la arquitectura de cuatro niveles
MOF es el lenguaje de metamodelado
283
MDA
PIM
PSM
Cdigo
Transformaciones de modelos
PIM
TMM
PSM
TMC
Cdigo
L1
Definicin Transformacin
L2
Definicin Transformacin
L3
285
Pedido Desayuno direccin fecha hora descuento calcularPrecio() +pedido 1 Cliente +pedidos 1.. n +cliente 1 crearPedido() numeroCuent a direccion
+des ayuno
Desayuno Estandar nombre precio estilo 0.. n Comestible nombre cantidadMinima precio 1..n formaTransporte Parte cantidad
PIM
Cambio cantidad
0..n
Lenguajes de Modelado
Lenguajes especficos de un dominio
Definicin de modelos PSM
287
Sintaxis abstracta
table :Country do field :name, varchar(100),primary_key field :surface, integer table :Person do field :id, autoinc, primary_key field :name, varchar(200) field :country_id, varchar(100), foreign_key(:country) end
Sintaxis concreta
MainNode
* +source
Edge
290
Modelar conexiones entre elementos de un sistema de informacin conectados segn la topologa estrella
metaclass Class
stereotype Node
location: String
stereotype MainNode
291
Restricciones
context UML::InfrastructureLibrary::Core::Constructs::Association inv : self.isStereotyped(LocalEdge) implies self.connection->select(participant.isStereotyped(Node) or participant.isStereotyped(MainNode) ) -> forAll(n1, n2 | n1.location = n2.location) inv : self.isStereotyped(LocalEdge) implies self.connection-> exists(participant.isStereotyped(MainNode) and multiplicity.min=1 and multiplicity.max=1) inv : self.isStereotyped(Edge) implies self.connection->select(participant.isStereotyped(Node))->isEmpty and self.connection->select(participant.isStereotyped(MainNode) ) -> forAll(n1, n2 | n1.location <> n2.location)
292
Expresiones OCL
context c : Empresa inv suficientesEmpleados: c.numeroEmpleados > 50 context Empresa inv: self.empleados.select(p: Persona| p.edad>50)->notEmpty() context Trabajo inv: self.empleador.numeroEmpleados >= 1 inv: self.empleado.edad > 21
294
Expresiones OCL
context Person::cumpleaos() post: edad = edad@edad + 1 context Empresa::contratar(p : Persona) post: empleados = empleados@pre->including(p) and precioAccion() = precioAccion@pre() + 10 context Persona::getEsposoActual() : Persona pre: self.estaCasada = true body: self.matrimonios->select( m | m.fin = false ).esposo
295