Escolar Documentos
Profissional Documentos
Cultura Documentos
Informtica y
Sistemas
Ingeniera en Informtica
Anlisis y Diseo de Software
Contenidos
Paquetes
Contenidos
Componentes
Modelado de la Implementacin
Diagramas de interaccin
Diagramas de actividades
Mquinas de estado
Artefactos y despliegue
Diagramas de despliegue
Colaboraciones
UML, Metamodelado y MDA
Bibliografa
Contenidos
Presentacin de UML
Modelado de Casos de Usos
Diagramas de casos de uso
Modelado Estructural
Diagramas de Clases
Paquetes
Coad/Yourdon
Champeaux
Martin/Odell
OOram
BON
Open
Y muchos ms!
Guerra
de
mtodos
!
Evolucin UML
Corba
UML y perfiles UML
OCL
MOF, XMI
MDA
Ventajas de la unificacin
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.
Qu es un modelo software?
Es una descripcin de un aspecto del sistema,
escrita en un lenguaje bien definido.
Usuario
nombre
1
nif
0..n
Pedido
id
total
1..n
0..n
1
CarroCompra
total
LineaPedido
unidades
0..n
ItemCarro
unidades
0..n
Producto
nombre
precio
descripcion
Participante
nombre
apellidos
numID
domicilio
direccionEnv io
telef ono
reputacion
Modelo de
Estructural
+p
PagoAnuncio
+pa
PujaOrdinaria
+pc
datosTarjeta
estado
+puja
Adjudicacion
+as
PagoCuota
+art
+as
Esto representa
la especif icacin
de un artculo.
+pujas
+adjudicaciones
AnuncioSubasta
EdicionSubasta
idEdicion
f echaInicio
f echaCierre
estado
+anuncios
+es
pv pRecomend
pujaMinima
cuota
gastosEnv io
plazo
f ormaPago
anticipo
Articulo
+articulos
ArticuloConcreto
codArticulo
+articulos
idEspec
caracteristicas
pv pRecomend
1. cerrarEdicionSubasta(es)
int numAjudicaciones =
Minimo(pujas.length(),
articulos.length());
:
ControladorAnuncios
: Sistema
2. cerrar()
5. numAdjs = calcularAdjudicaciones()
9. [1..numAdjs]* add(adj)
4. * cerrar()
: AnuncioSubasta
as :
AnuncioSubasta
: EdicionSubasta
adjudicaciones :
Adjudicacion
3. * as := get()
Se recorre la coleccin de
pujas obteniendo las pujas
ganadoras (consideramos
que la coleccin est
ordenada de mayor a menor
valor de puja).
adj :
Adjudicacion
: ArticuloConcreto
Modelo de
Comportamiento
Los modelos:
Por qu la mayora de
empresas no practican el
modelado?
Modelos en UML
Tipos de modelo
Contenidos
Presentacin de UML
Paquetes
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.
Elementos
Estructurales, Comportamiento, Agrupacin,
Anotacin
Relaciones
Diagramas
Establecen qu es un modelo bien formado
Mecanismos comunes
Elementos Estructurales
Ventana
origen
tamao
abrir()
cerrar()
mover()
dibujar()
colaboracin
<<Interface>>
IAvisable
IAvisable
interface
Gestin Pedidos
clase
RealizarCompra
caso de uso
Elementos Estructurales
Gestor Eventos
clase activa
FormularioPedido
suspender()
vaciarCola()
componente
<<artifact>>
window.dll
Servidor
nodo
artefacto
Elementos de Comportamiento
Son las partes dinmicas de UML.
Interaccin
Conjunto de mensajes intercambiados entre varios
objetos con un propsito particular.
cerrarPuja()
mensaje
Elementos de Comportamiento
Mquina de estados
Secuencia de estados por las que pasa un objeto durante
su vida en respuesta a eventos.
activado
estado
Elementos de Agrupacin
Son las partes de organizacin de los modelos UML
paquete
Elementos de Anotacin
Son las partes explicativas de los modelos UML
Retorna 0 si no
existe el valor
Nota
Relaciones
Dependencia
0..1
patron
*
empleado
Asociacin
Generalizacin
Realizacin
Cuenta
Domiciliacion
1
Ahorro
0..n
Corriente
Operacion
Periodica
Pedido Desayuno
direccin
fecha
+pedidos
hora
1..n
descuento
+cliente
Cliente
numeroCuenta
direccion
1
crearPedido()
calcularPrecio()
+pedido
+desayuno
Desayuno
Estandar
nombre
precio
estilo
1..n
Desayuno
numero
0..n
0..n
Cambio
cantidad
0..n
Comestible
nombre
cantidadMinima
precio
1..n
formaTransporte
Parte
cantidad
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
Modelos en UML
Modelado Estructural
Modelado de Comportamiento
Diagramas de Interaccin: Secuencia y Comunicacin
Diagramas de Estados
Modelado Implementacin
Diagramas de actividades
Diagrama de Componentes
Modelado de Despliegue
Diagramas de Artefactos
Diagramas de Despliegue
Responsable
Serv icio PE
Alumno
Sistema
Modelo del
Negocio
Registrar Curso
Aprobar Curso
Preinscripcin
Avisar
Admitidos
Matriculacin
Hay alumnos?
no
Cambiar
admitidos
Hay alumnos?
no
Cancelar Curso
Crear Proyecto
Cerrar Curso
Diagrama de
actividades
Modelo
Casos de Usos
Realizar puja ordinaria
Pujador
Rechazar adjudicacin
Sistema
Notif icar adjudicatario
Teleoperador
Participante
Administrador
Anular edicin de subasta
Diagrama de
casos de uso
Participante
nombre
apellidos
numID
domicilio
direccionEnv io
telef ono
reputacion
Diagrama
de clases
Modelo
Estructural
+p
PagoAnuncio
+pa
PujaOrdinaria
+pc
datosTarjeta
estado
+puja
Adjudicacion
+as
PagoCuota
+art
Esto representa
la especif icacin
de un artculo.
+as
+pujas
+adjudicaciones
AnuncioSubasta
EdicionSubasta
idEdicion
f echaInicio
f echaCierre
estado
+anuncios
+es
pv pRecomend
pujaMinima
cuota
gastosEnv io
plazo
f ormaPago
anticipo
Articulo
+articulos
ArticuloConcreto
codArticulo
+articulos
idEspec
caracteristicas
pv pRecomend
1. cerrarEdicionSubasta(es)
int numAjudicaciones =
Minimo(pujas.length(),
articulos.length());
:
ControladorAnuncios
Diagrama de
comunicacin
: Sistema
2. cerrar()
5. numAdjs = calcularAdjudicaciones()
9. [1..numAdjs]* add(adj)
4. * cerrar()
: AnuncioSubasta
as :
AnuncioSubasta
: EdicionSubasta
adjudicaciones :
Adjudicacion
3. * as := get()
Se recorre la coleccin de
pujas obteniendo las pujas
ganadoras (consideramos
que la coleccin est
ordenada de mayor a menor
valor de puja).
adj :
Adjudicacion
: ArticuloConcreto
Modelo de
Comportamiento
Mquina de Estado
Diagrama
de estado
introducirProducto
Espera Venta
introducirProducto
Introduccion
Productos
Terminar Venta
manejarRespuesta
efectuar Pago Efectivo
Autorizacion
Pago
efectuar Pago Tarjeta
Espera
Pago
Persona
nombre
direccion
telefono
Elena :
Persona
Elena :
Persona
: Persona
: Persona
IOrtografia
IDiccionario
asistenteOrtografico
IUnknown
cliente: Persona
Estereotipos
Valores etiquetados
Restricciones
Perfiles UML
<<Actor>>
Cliente
<<Interface>>
IComparator
compare()
Cliente
IComparator
<<Table>>
Cliente
Empleado
<<UniqueId>> id : String
nombre : String
Estereotipo: Table
Valores Etiquetados: key
apellido : String
<<Query>> findByLastName()
Estereotipo: BusinessEntity
Valores Etiquetados: UniqueID y Query
Restricciones
Se expresan en OCL
Permiten asociar informacin que no se puede
expresar en UML
Ejemplo: Dos tablas de un mismo esquema
relacional deben tener distinto nombre.
context Table
inv: tablasDistintoNombre
tablas -> forAll ( t1, t2 |
t1.name = t2.name implies t1 = t2)
end
Restricciones
Empresa
Cuenta
{xor}
restricciones
Persona
sexo
0..1
+esposo
0..1
+esposa
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()
Diagrama de Clases
Applet
HolaMundo
Graphics
(from awt)
paint()
Component
(from awt)
ImageObserver
(from image)
imageUpdate()
Container
(from awt)
Panel
(from awt)
Applet
HolaMundo
Graphics
(from awt)
paint()
Organizacin en Paquetes
HolaMundo
java
(from Logical View)
paint()
Organizacin en Paquetes
java
HolaMundo
applet
awt
lang
Diagrama de Secuencia
root : Thread
: Toolkit
: ComponentPeer
target : HolaMundo
run
callbackLoop
handleExpose
paint
Diagrama de Artefactos
HolaMundo
<<manifest>>
<<manifest>>
hola.java
<<artifact>>
HolaMundo.class
hola.html
hola.jpg
Contenidos
Presentacin de UML
Modelado de Casos de Usos
Paquetes
Casos de Uso
Casos de Uso
Casos de uso
Emisor
Centralita
Receptor
listo( )
tono
marcar_numero
tono_sonando
timbre_sonando
telefono_cogido
para_tono
para_timbre
Escenario
Cajero
caso de uso
Realizar Venta
asociacion
Flujo:
1. El cliente llega al TPV con los artculos.
2. El cajero registra el identificador de cada artculo.
3. El sistema obtiene el precio de cada artculo y aade la informacin a la
transaccin de venta.
4. Al acabar el cajero indica la finalizacin de la introduccin de artculos.
5. El sistema calcula el total de la compra y lo muestra.
Actores
Un actor representa un rol que juegan los agentes que
interactan con el sistema.
Actores
Identificacin de actores
Actores
Principal:
Requiere al sistema el cumplimiento de un objetivo
Secundarios:
El sistema necesita de ellos para satisfacer un objetivo
Principal y secundarios.
75
Realizar Venta
Cajero
Cliente
:Sistema
: Cajero
crearNuevaVenta()
* introducirItem(upc,cantidad)
finalizarVenta()
hacerPago(cantidad)
Interacciones
Responsable
Rebajar Mnimo
Aprobar curso
Servicio CPE
Cerrar curso
Crear proyecto
Servicio Contabilidad
Fin matriculacion
Realizar preinscripcin
Sistema
Avisar admitidos
Alumno
Matriculacin
Cancelar curso
Alumno
Actor
Principa
l
Realizar preinscripcin
Matriculacin
Gestin Expedientes
Entidad Bancaria
Actores
Secundarios
Reservar Libro
Prstamo revista
Profesor
Prstamo Libro
Devolver revista
Devolver libro
Actualizar catalogo
Socio
Extender Prstamo
Consultar
Bibliotecario
Socio
82
colaboracin
Hacer Pedido
Gestin Pedidos
realizacin
Inclusin
Extensin
Un
cdu
base
incorpora
implcitamente
el
comportamiento de otro cdu en el lugar especificado
indirectamente por este otro cdu
Generalizacin
Buscar Producto
Cliente
Buscar libro
Buscar CD
Ejemplo
Extensin
extend
Realizar Pedido
(establecer
prioridad)
include
Realizar Pedido
Urgente
Comprobar clave
Inclusin
Validar Usuario
Generalizacin
include
Consultar Pedido
Examinar retina
Relacin de inclusin
Relacin de extensin
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.
Relacin de extensin
Devolver Libro
Puntos de extensin
libro retrasado
extend
Poner multa
Bibliotecario
Relacin de extensin
Cuestiones Pendientes:
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.
Granularidad
Objetivo de un usuario
Ej. Realizar una compra
Granularidad
Segn la importancia
Recomendaciones
Recomendaciones
Recomendaciones
Recomendaciones
<<include>>
Aadir libro
<<include>>
Mantener libros
Eliminar libro
<<include>>
<<include>>
Aadir peticin
<<include>>
Bibliotecario
Gestionar biblioteca
Mantener peticiones
<<include>>
Eliminar peticin
<<include>>
<<include>>
Devolver libro
Mantener prestamos
<<include>>
Prestar libro
Contenidos
Presentacin de UML
Modelado Estructural
Diagramas de Clases
Paquetes
Modelado estructural
Clases
Interfaces
Relaciones de dependencia, realizacin, generalizacin
y asociacin (agregacin, composicin)
Tambin pueden incluir paquetes.
Modelado estructural
Diferentes perspectivas.
Modelado Conceptual
Modelo de Diseo
Modelo de Implementacin
Modelo
Conceptual
CriteriosSeleccion
Requisitos
1..n
Curso
nombre
responsable
Prof-Universidad
duracion
fecha
numAlumnos
costeMatricula
1..n
Presupuesto
ingresos
gastos
Catalogo
Cursos
Edicion Curso
fecha
ao
id
1..n
impartido
1..n
Profesor
nombre
1..n
depto
Matricula
fecha
Expediente
1..n
Alumno
nombre
dni
Prof-Empresa
Preincripcion
fecha
Alumno
nombre
dni
Profesor
Modelo
Anlisis
0..n
nombre
dni
CatalogoProfesor
ProfesorContratado
ProfesorUniversitario
empresa
cuentaBancaria
EspecificacionCurso
nombre
horario
duracion
numCreditos
corteMatricula
numMaxAlum
numMinAlum
programa
criterioSeleccion
numEdiciones
0..n
ParticipacionCurso
asignarCargaDocente()
registra
1..n
CatalogoEspecificaciones
0..n
CriterioPreinscripcion
1
0..n
comprobar()
1
posee
Expediente
ponerNota()
1
0..1
1
Alumno
Curso
fechaInicio
numEdicion
plazoMatriculacion
plazoPreinscripcion
0..n
Matricula
nota
1
nuevaMatricula()
nuevaPreinscripcion()
asignarCarga()
0..n
tiene
0..n
setNota()
0..n
realiza
1
addMatricula()
addPreinscripcion()
0..n
1
0..n
1
CatalogoCurso
nombre
dni
email
Preinscripcion
posee
matriculable
0..n
esAdmitido()
realiza
1
CatalogoAlumnos
Modelo de
diseo
IteradorCuenta
Cuenta
Domiciliacion
1
Ahorro
0..n
Corriente
Operacion
Periodica
11: enviarPago(pagoAlumno)
matric :
Matricula
: Catlogo
Curso
3: c := get(idCurso)
:SistemaContabilidad
esMatriculable indica si
el alumno puede
matricularse en el
curso segn los
criterios de seleccin
del mismo.
: Curso
1: realizarMatricula(idCurso,dniAlumno)
7: addMatricula(a)
9: matriculable:= esAdmitido()
c : Curso
: ControladorMatrculacionCurso
p : Preinscripcin
: Alumno
4: a := getAlumno(dniAlumno)
8: p:= get(a.dni)
13: addMatricula(matric)
12: add(matric)
: Alumno
: CatalogoAlumnos
14: add(matric)
: Alumno
6: create(datosAlumno)
: Preinscripcin
: Matricula
: Matricula
5: datosAlumno:= getDatosAlumno(dniAlum...
:SistemaGestinAcadmica
Si el alumno no est
en el catlogo se
piden sus datos, se
crea y se aade al
catlogo.
Modelo del
Comportamiento
Realizar Compra
Realizar Compra
Observer
+observers
1..*
1..1
Update()
ConcreteSubject
subjectState
getState()
setState()
+subject
ConcreteObserver
observerState
update()
observerState=
subject.getState()
o1 : Observer
1. setState()
1.1. notify()
1.1.1. update()
1.1.2. update()
o2 : Observer
Ingeniera directa
Ingeniera inversa
Clases
Cuenta
ultimoCodigo
codigo
cliente
saldo
ultimasOperaciones
getSaldo()
getUltimasOperaciones()
nuevoCodigo()
Atributo
s
Operacione
s
Clases
CatalogoPedidos 1
Figura
visualizar()
rotar()
trasladar()
pedidos
instance
addPedido()
removePedido()
getInstance()
Interfaces
<<Interface>>
Iterator
next()
hasNext()
Atributos
[visibilidad] nombre [: tipo] [[multiplicidad]] [= valor_inicial ]
[property-string {, property-string}]
visibilidad
+ =
# =
pblica
protegida
=
~ =
privada
package
nombre:
tipo:
Atributos : Ejemplos
origen
+ origen
origen : Punto
nombre : String [0..30]
origen : Punto = (0,0)
id : Integer {readOnly}
Operaciones
[visibilidad] nombre [(lista_parametros)] [: tipo_retorno]
[property-string {, property-string}]
visibilidad
+ =
# =
pblica
protegida
=
~ =
privada
package
propiedades:
Operaciones: Ejemplos
dibujar
+ dibujar
set (nombre : String)
getID(): Integer
arrancar() {guarded}
Formato parmetro:
[direccion] nombre : tipo [= valor-por-defecto]
direccion puede ser : in, out o inout
Clases Parametrizadas
G
Clase
Parametrizada
Tabla
count
capacity
put(G)
item() : G
Instanciacin
Tabla<Cliente>
bind <Empleado>
Empleados
Clases Estereotipadas
<<entity>>
Cuenta
Cuenta
Cuenta
<<control>>
Controlador Ingreso
Controlador Ingreso
Controlador Ingreso
<<boundary>>
JFrameBanco
JFrameBanco
JFrameBanco
Relaciones
Dependencia
Un cambio en la especificacin de un elemento
afecta a otro elemento
Window
parent
children
position
size
Lista
Nodo
<<friend>>
DigitalClock
open()
close()
move()
resize()
PlanDeCurso
aadir(c : Curso)
eliminar(c : Curso)
Curso
Relaciones
Generalizacin
Es-un-tipo-de
En el caso de un modelo de diseo o implementacin denota una relacin de herencia
Window
Cuenta
Cuenta Ahorro
Cuenta Corriente
TextWindow
BoxDialog
Relaciones
Asociacin
Persona
+empleado
1..n
+patron
trabaja para
Empresa
0..n
Multiplicidad (mnimo..mximo)
Ejemplos: 0..1, 1, 0..*, *, 1..*, 1..10, 2..25
Asociaciones
Agregacin
*
Departamento
Navegabilidad
contiene
1..n
ItemPedido
cantidad
describe
0..n
Producto
precio
descripcion
Navegabilidad
class Pedido {
private Hashtable _itemsPedido;
private Date fecha;
private boolean esCompleto;
...}
class ItemPedido {
private Producto producto;
private int cantidad;
...}
Class Producto {
private Money precio;
private String descripcin;
}
Navegabilidad indefinida
Navegable de A a B, de B a A indefinida
Navegable slo de A a B
Navegable slo de A a B
No se usa
No se usa
No se usa
Visibilidad
Pblica:
Protegida:
Privada:
Paquete:
+
#
propietario
propietario
propietario
propietario
GrupoUsuarios
Usuario
0..n
0..n
+propietario
1
-clave
0..n
Clave
Asociaciones calificadas
Pedido
fecha
esCompleto
contiene
ItemPedido
producto
1
cantidad
Asociaciones calificadas
Class Pedido {
private Hashtable
_lineasPedido;
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?
Composicin
Composicin
Window
1
agregado
+scrollbar
Slider
+title
2
Header
partes
1
+body
Panel
Clases Asociacin
+empleado
+patron
1..n
Empresa
0..n
Contrato
salario
descripcion
fechaContrato
Distinta
semntica
Contrato
Persona
1
salario
descripcion
0..n fechaContrato
Empresa
1..n
Asociaciones derivadas
recibe
Estudiante
Asignatura
/ensea
imparte
Profesor
Asociaci
n
Derivada
Departamento
*
Cuenta
{or}
Persona
{subset}
+miembro
1..*
Persona
+Director
1..1
0..1
empleado
Persona
patrn
0..1
Empresa
jefe
{ 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
Interfaces
Target
Interfaz requerida
Interfaz
proporcionada
TargetTracker
Observer
Target
TargetTracker
Observable
Observer
Target
id
posicionActual
setPosicion()
setVelocidad()
posicionEsperada()
<<Interface>>
Observer
update()
TargetTracker
Clases Estructuradas
0..n
Prestamo
+prestamos
0..n
1
Prestatario
+catalogo
Personal
0..n
1
Biblioteca
+prestatarios
0..n
Estudiante
Libro
libroPrestado
Bibliotecario
1
1..n
Clases Estructuradas
Estructura interna de una clase
Biblioteca
0..*
:Libro: [0..*] 1
0..*
:Bibliotecario [1..*]
biblioConectado:Bibliotecario [0..1]
0..*
Libro: [0..*]
0..*
:Bibliotecario [1..*]
biblioConectado:Bibliotecario [0..1]
Contenidos
Paquetes
Paquetes
Elemento organizativo
Puede agrupar elementos de cualquier tipo
Permite agrupar elementos relacionados semnticamente
Un elemento es exclusivo a un paquete:
Modelo
Modelo
+ Producto
+ CarroCompra
+ Comercio
Paquetes: Notacin
Importacin/Exportacin en paquetes
Importacin/Exportacin en paquetes
Cliente
+ FormularioPedido
+ FormularioDeSeguimiento
- Pedido
Servidor
+ BaseDeDatos
+ ServicioDeRegistro
<<import>>
Politicas
+ ReglasPedidos
+ GUI:Ventana
GUI
+ Ventana
+ Formulario
# GestorEventos
<<import>>
Auxiliary
<<access>>
ShoppingCart
WebShop
<<import>>
Types
<<import>>
Generalizacin de Paquetes
GUI
+ Ventana
+ Formulario
- GestorEventos
WindowsGUI
+ GUI:Ventana
+ Formulario
- GUI:GestorEventos
+ VBForm
MacGUI
Paquetes
ser cohesivo
estar poco acoplado
pocos anidamientos
conjunto equilibrado de elementos
Modelo de
Anlisis
<<framework>>
Struts
Modelo
Modelo
Vistas UML: 4 + 1
vocabulario
funcionalidad
ensamblado
gestion conf.
Vista de Implementacion
Vista de Diseo
comportamiento
Vista de Interaccin
capacidad de procesamiento
escalabilidad
rendimiento
Vista de Despliegue
topologa
entrega
distribucin
instalacin
Vistas UML: 4 +1
clases
interfaces
colaboraciones
componentes
Vista de Implementacion
Vista de Diseo
casos de uso
Vista de Interaccin
clases activas
Vista de Despliegue
nodos
Vistas UML
Diagramas de clase
Diagramas de interaccin
Diagramas de estado
Vista de Diseo
Diagramas de componentes
Diagrama de interaccin
Diagramas de estado
Vista de Implementacin
Vista de Interaccin
Diagramas de clase
Diagramas de interaccin
Diagramas de estado
Vista de Despliegue
Diagramas de despliegue
Contenidos
Componentes
Modelado de la Implementacin
Diagramas de interaccin
Diagramas de actividades
Mquinas de estado
Artefactos y despliegue
Diagramas de despliegue
Colaboraciones
UML, Metamodelado y MDA
Enlaces y Conectores
Un enlace es :
Enlaces y Asociaciones
Persona
calcularCompensacion()
asignar()
+empleado
+patron
1..*
Empresa
*
enlace
p:Persona
objeto
:Empresa
1: asignar(desarrollo)
mensaje
Enlaces
association
self
global
local
parameter
Diagrama de Objetos
: Cuenta
: Cliente
: Perfil
: CodigoCuenta
: Tarjeta
: Transaccion
Diagrama de Objetos
: Curso
: Alumno
: Profesor
: Tarjeta
: Expediente
: Departamento
director : Profesor
: GrupoInvestigacion
: Tarjeta
Diagrama de Objetos
: Curso
: Profesor
: Tarjeta
profesores *
alumnos *
: Expediente
: Departamento
grupos *
director : Profesor
: Alumno
:
GrupoInvestigacion
: Tarjeta
Interacciones y Mensajes
Lneas de Vida
Persona
calcularCompensacion()
asignar()
+empleado
+patron
1..*
umu: Empresa
lnea de
vida
Empresa
irene:Persona
asignar(desarrollo)
mensaje
Lneas de Vida
Persona
calcularCompensacion()
asignar()
+empleado
+patron
1..*
Empresa
*
conector
p:Persona
:Empresa
:Empresa
umu:
Empresa
irene:Persona
lnea de
vida
1: asignar(desarrollo)
mensaje
Tipos de mensajes
Sncrono
Asncrono
Retorno
Creacin y destruccin
<<create>> y <<destroy>>
Diagramas de estado
Diagramas de actividades
Diagramas de Interaccin
Diagramas de Comunicacin:
Equivalencia semntica
Diagramas de Secuencia
Incluye:
Mensajes
Simple:
Creacin de objetos:
Destruccin de objetos:
Asignacin:
Identificar hilo:
metodo(arg)
<<create>>
<<destroy>>
v:= mtodo(arg)
nmero del mensaje en la
secuencia precedido por el nombre
del proceso o hilo
Mensajes
Simple:
Condicin:
Iteracin:
Asignacin:
Identificar hilo:
preparar(), addPedido(p)
[condicion] metodo(arg)
* preparar()
hayStock:= eliminar()
D3 : activar()
Diagrama de Secuencia
sd Gestin Pedidos
: GUIPedido
:GUIPedido
: ControladorPedidos
:ControladorPedidos
preparar( )
preparar( )
::Pedido
Pedido
: LineaPedido
:LineaPedido
* preparar( )
: Item
:Item
: ItemPedido
: ItemEntre
hayStock:=check( )
[hayStock] eliminar( )
pedir:=checkPedir( )
[pedir]<<create>>
:ItemPedido
[hayStock] <<create>>
:Item
Entregado
Diagrama de Comunicacin
sd Gestin Pedidos
1: preparar( )
: GUIPedido
3: *preparar(
)
3:
preparar()
2: preparar( )
: ControladorPedidos
: Pedido
: LineaPedido
lneas *
4: hayStock:=check( )
5: [hayStock] eliminar( )
8: [hayStock]<<>create>
6: pedir:=checkPedir( )
: ItemPedido
: Item
7: [pedir]<<create>>
: ItemEntregado
Diagrama de Secuencia
c:Cliente
p:ProxyODBC
<<create>>
:Transaccion
establecerAcciones
establecerValores
establecerValores
tiempo
exito
<<destroy>>
Foco de
control
Lnea de vida
Diagrama de Comunicacin
1: <<create>>
2: establecerAcciones
6: <<destroy>>
:Transaccion {new}
c:Cliente
t {local}
proxy {global}
3: establecerValores
4: establecerValores
p:ProxyODBC
Operadores de control
sd reintegro
usuario : Persona
banco : CajeroAutomatico
loop(1,3)
[password incorrecto]
introducir (password)
verificar(password)
opt
[password valido]
par
introducir(cuenta)
introducir(cantidad)
entregar(dinero)
Fragmento
combinado
banco : CajeroAutomatico
ref
Obtener password
opt
[password valido]
ref
Obtener dinero
Numeracin secuencial
2: m2()
1: m1()
:A
3: m3()
:B
:C
4: m4()
:D
Numeracin jerrquica
:A
:B
m1( )
:C
m2( )
m3( )
m4( )
:D
Numeracin jerrquica
:A
:B
:C
1. m1()
1.1. m2()
1.2. m3()
1.3. m4()
:D
Numeracin jerrquica
1.1. m2( )
1. m1( )
:A
1.2. m3( )
:B
:C
1.3. m4( )
:D
Numeracin jerrquica
:A
:B
:C
1. m1( )
1.1. m2( )
1.1.1. m3( )
1.2. m4( )
:D
Numeracin jerrquica
1.1. m2( )
1. m1( )
:A
1.1.1. m3( )
:B
:C
1.2. m4( )
:D
Profesor
1
0..n
nombre
dni
CatalogoProfesor
Diagrama de
clases
ProfesorContratado
ProfesorUniversitario
empresa
cuentaBancaria
EspecificacionCurso
nombre
horario
duracion
numCreditos
corteMatricula
numMaxAlum
numMinAlum
programa
criterioSeleccion
numEdiciones
0..n
ParticipacionCurso
asignarCargaDocente()
registra
1..n
CatalogoEspecificaciones
0..n
CriterioPreinscripcion
1
0..n
comprobar()
1
posee
Expediente
ponerNota()
1
0..1
1
Alumno
Curso
fechaInicio
numEdicion
plazoMatriculacion
plazoPreinscripcion
0..n
Matricula
nota
1
nuevaMatricula()
nuevaPreinscripcion()
asignarCarga()
0..n
tiene
0..n
setNota()
0..n
realiza
1
addMatricula()
addPreinscripcion()
0..n
1
0..n
1
CatalogoCurso
nombre
dni
email
Preinscripcion
posee
matriculable
0..n
esAdmitido()
realiza
1
CatalogoAlumnos
11: enviarPago(pagoAlumno)
matric :
Matricula
: Catlogo
Curso
3: c := get(idCurso)
:SistemaContabilidad
esMatriculable indica si
el alumno puede
matricularse en el
curso segn los
criterios de seleccin
del mismo.
: Curso
1: realizarMatricula(idCurso,dniAlumno)
7: addMatricula(a)
9: matriculable:= esAdmitido()
c : Curso
: ControladorMatrculacionCurso
p : Preinscripcin
: Alumno
4: a := getAlumno(dniAlumno)
8: p:= get(a.dni)
13: addMatricula(matric)
12: add(matric)
: Alumno
: CatalogoAlumnos
14: add(matric)
: Alumno
6: create(datosAlumno)
: Preinscripcin
: Matricula
: Matricula
5: datosAlumno:= getDatosAlumno(dniAlum...
:SistemaGestinAcadmica
Si el alumno no est
en el catlogo se
piden sus datos, se
crea y se aade al
catlogo.
Diagrama de Colaboracin
UML 1.x
import java.io.*;
public class EjemHilo extends Thread {
static PrintWriter out = new PrintWriter (System.out, true);
int num;
public EjemHilo(String nombre, int n) {
super(nombre);
num = n;
}
public void run(){
for (int i=0; i<num;) {
out.println(getName()+":"+ ++i);
delay();
}
}
void delay() {
long t = System.currentTimeMillis() + 500;
while (System.currentTimeMillis() < t);
}
}
EjemHilo1.out:PrintWriter
t: TestHilo
new(Hilo 2, 4)
:h1: EjemHilo
inicio
new(Hilo 2, 6)
:h2: EjemHilo
println(preparados los dos hilos)
start()
run()
start()
run()
delay()
[1..6]
casos de uso
colaboraciones
patrones
frameworks
operaciones
Equivalencia semntica
Simples para comportamientos simples.
Si hay mucho comportamiento condicional,
usar diferentes escenarios.
Diagramas de secuencia muestran mejor el
orden en que se ejecutan los mensajes
Diagramas de colaboracin muestran
claramente los objetos a los que est
conectado un determinado objeto.
Permiten la generacin de cdigo
Diagramas de Actividad
Nodos de Actividad
Nodos de accin
Nodos de control
Nodos de objetos
Semntica actividades
Ejemplo
Fabricacin
productos
inicio
Planificar
tareas
Flujo
Asignar
tareas
Realizar
tareas
finalizacin
Bifurcacin
Obtener orden
de trabajo
Nodo de
decisin
[ material no disponible ]
[ material disponible ]
Asignar tareas
Nodo de
fusin
Obtener siguiente
orden de trabajo
Volver a
planificar
Divisin y Unin
Disear
producto
Comercializar
producto
divisin
Fabricar
producto
unin
Vender
producto
Ejemplo
Ejemplo
Elegir sitio
Contratar
arquitecto
Realizar planos
Pedir ofertas
[ no aceptado ]
Construir
Finalizar
construccin
Trabajo
administrativo
Certificado
Habitabilidad
[completado]
Solicitar Producto
Procesar Pedido
Extraer Artculos
Enviar Pedido
Recibir Producto
Pagar Factura
Facturar al cliente
Cerrar Pedido
Cliente
Ventas
Almacn
Solicitar Producto
Procesar Pedido
Extraer Artculos
Enviar Pedido
Recibir Producto
Pagar Factura
Facturar al cliente
Cerrar Pedido
Calles
Cliente
Ventas
Solicitar Producto
Procesar Pedido
Almacn
o: Pedido
[en progreso]
Objetos
Extraer Artculos
Enviar Pedido
o: Pedido
[completado]
Recibir Producto
Facturar al cliente
b: Factura
[impagada]
Pagar Factura
b: Factura
[pagada]
Cerrar Pedido
Calles
Particiones de actividades
Pins
Regiones de
Expansin
Recibir pedido
:Pedido
:LineaPedido
Obtener Item
Calcular coste
:Producto
:Dinero
:Envio
:Factura
Enviar pedido
Enviar factura
Otras cuestiones
Conectores
Enviar seales y aceptar eventos
Caractersticas avanzadas de flujo de objetos
Multidifusin y multireceptor
Conjuntos de parmetros
Nodo <<centralBuffer>>
Diagramas de
visin de
interaccin
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
Seales
Modelado Excepciones
<<exception>>
Excepcion
establecerManejador()
primerManejador()
ultimoManejador()
<<exception>>
Duplicado
Conjunto
aadir()
eliminar()
<<send>>
<<exception>>
Overflow
<<send>>
<<send>>
<<exception>>
Underflow
Tiempo
Cambio
Mquina de estados
Estados
Nombre
Acciones entrada/salida
Transiciones internas
Subestados
Eventos diferidos
Transiciones
apagar
Inactivo
haceFrio(tempDeseada)
haceCalor(tempDeseada)
tempOK
tempOK
Calentando
Enfriando
haceCalor(tempDeseada)
haceFrio(tempDeseada)
Activacin
listo/encender()
Activo
ruido
Inactivo
Buscando
objetivoEn(p)
[representaAmenaza]
/ t.aadirObjetivo(p)
Acoplamiento
Rastreando
contactar
Partes de un estado
accin entrada
transicin interna
evento diferido
Rastreando
entry/ activarModo(enRastreo)
exit / activarModo(noRastreo)
nuevoObjetivo/rastreador.adquirir
do / seguirObjetivo
autotest / defer
accin
salida
actividad
(accin)
Espera Venta
introducirProducto
Introduccion
Productos
Terminar Venta
manejarRespuesta
efectuar Pago Efectivo
Autorizacion
Pago
efectuar Pago Tarjeta
Espera
Pago
enviarCargo (codigoCuenta,..)
Pago
rechazarPago
Pago No
apobado
enviarCargo (codigoCuenta,..)
pagoAprobado
Envio
pedidoEntregado
Entregado
Subestados no ortogonales
introducirTarjeta
Activo
Inactivo
entry/leerTarjeta
exit/expulsarTarjeta
Validacin
cancelar
mantener
Mantenimiento
Seleccin
[continuar]
Procesando
[no continuar]
Impresin
Subestados ortogonales
Subestados ortogonales
Mantenimiento
mantener
Inactivo
Pruebas
Probar
perifericos
Manejo Ordenes
AutoDiagnosis
[continuar]
Orden
Espera
Pulsar tecla
[no continuar]
Contenidos
Componentes
Modelado de la Implementacin
Diagramas de interaccin
Diagramas de actividades
Mquinas de estado
Artefactos y despliegue
Diagramas de despliegue
Colaboraciones
UML, Metamodelado y MDA
Componentes
Componentes
Propiedades de un componente
Interfaz
Componente
1..*
Especificacin
Componente
1
*
Implementacin
Componente
1
*
Instancia
Componente
Instalacin
Componente
Propiedades de un componente
Componentes
Persona
AsignacionItem
<<component>>
Seguimiento
Pedido
Factura
ItemPedido
Interfaces
proporcionadas
Interfaces
requeridas
Componentes
<<Interface>>
Persona
findByNombre()
create()
getDetalles()
Interfaz
proporcionad
a
<<component>>
Pedido
<<Interface>>
ItemPedido
create()
validarDetalles()
addLineaPedido()
Interfaz
requerida
Componentes
JerarquaElementos
explorador.java
arbol.java
Componentes
Puertos
Puertos
ventas
normales
Ventas Ticket
atracciones
Vendedor Ticket
Tarjetas Crdito
cobros
ventas
prioritarias
Ventas Ticket
Conexin de componentes
:Inventario
:EncontrarItems
:EnviarItems
GestionPedido
Estructura interna
Compilador
lex:AnalizadorLexico
parse: Parser
gen: GeneradorCodigo
opt:Optimizador [1..3]
Compilar
Estructura interna
Venta Ticket Vuelos
:AsignacionAsiento
normal:Venta
:GestionInventario
Prioridad:Venta
Estructura interna
Ventas por Catalogo
:Cumplimentar
:Inventario
:EncontrarItems
:EnviarItems
:PasarPedido
:EntradaPedido
Cobro:Credito
:CapturaPedido
GestionPedido
Estructura Interna
<<component>>
A
I2
I1
b:B
I1
<<delegate>>
c:C
<<delegate>>
I2
Conectores
Componentes
Subsistemas
GUI
<<subsystem>>
Lgica del
Negocio
Contenidos
Artefactos
Artefactos
artifact
agente.java
artifact
agenteFraudes.dll
manifest
artifact
agenteFraudes.dll
manifest
AgenteFraudes
PolticaFraudes
PatrnBsqueda
manifest
manifest
agenteFraudes
PolticaFraudes
PatrnBsqueda
Tipos de Artefactos
Despliegue
De ejecucin
Estereotipos de Artefactos
Modelado de ejecutables
artifact
v.exe
artifact
Vwbas20.dll
artifact
Vwdev20.dll
artifact
Wscr20.dll
Nodos
Nodos
Ventas
artifact
pos.exe
artifact
contactos.exe
manifest
Venta
manifest
Contrato
Diagramas de Despliegue
Nodos
<<device>>
PC Windows
<<device>>
PC Linux
0..*
0..*
<<http>>
<<execution environment>>
FireFox
<<execution environment>>
Apache
Diagrama de Despliegue
terminal
<<10-T-Ethernet>>
servidor
<<RS-232>>
Consola
Unidad
RAID
Contenidos
Colaboraciones
Colaboraciones
realizacin
Modelo Estructural
Usuario
nombre
1
nif
0..n
Pedido
id
total
1..n
0..n
1
CarroCompra
total
LineaPedido
unidades
0..n
ItemCarro
unidades
0..n
Producto
nombre
precio
descripcion
Modelo Comportamiento
: Usuario
11: recalcularTotal()
1: aadirItem(codigo)
4: aadirItem(codigo)
2: aadirItem(codigo)
: MostrarProductos
: Aadir
: CarroCompras
6: [!nuevoItem]incrementarUnidades()
10: [nuevoItem]put(codigo,i)
5: i:=getItemCarro(codigo)
: ItemCarro
7: [nuevoItem]p:=get(codigo)
9: [nuevoItem]i:=creaItem(p)
: CatalagoProductos
i : ItemCarro
8: [nuevoItem]p:=buscar(codigo)
: 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.
Cli enteDeGestor
Trader
1..n
1..1
FactoriaEditor
1..1
1..n
1..1
0..n
especifica
necesita editar
1..1
editado con
ObjetoInformacion
1..n
1..n
1..n
Editor
: Trader
editar(info)
: FactoriaEditor
info :
ObjetoInformacion
* i:= getInterfaz()
p:= soportaInterfaz(i)
[p] crearEditor(info)
<<create>>
: Editor
Colaboraciones Plantilla
Modelado de patrones de diseo
Subject
Observer
Observer
Subject
Alarma
Observer
Ventana
Observer
+observers
1..*
1..1
Update()
ConcreteSubject
subjectState
getState()
setState()
+subject
ConcreteObserver
observerState
update()
observerState=
subject->getState()
: Subject
:Subject
o1
: Observer
o1:Observ
er
1. setEstado()
1.1. notify()
1.1.1. update()
1.1.2. update()
o2 : Observer
o2:Observ
er
Contenidos
Lenguajes OMG
QVT
Metamodelado
OMG
Metamodelado
Metamodelado
0..1
context StateMachine
inv: EstadosDistintoNombre
states-> forAll (s1 |
states->forAll (s2 |
s1.name = s2.name
implies s1 = s2))
end
StateMachine
0..1
Event
1
+top
0..n
0..1
+trigger
0..n
+transitions
Transition
0..n
0..n
State
+states
Sintaxis abstracta
de una mquina de
estados
0..1
CompositeState
0..n
Metamodelado
after (2 sec) send c.estaActivo
ruido
Inactivo
objetivoEn(p)
[representaAmenaza]
/ t.aadirObjetivo(p)
Buscando
Acoplamiento
Rastreando
contactar
Sintaxis concreta
de una mquina de
estados
Metamodelado
Clases y Atributos
Asociaciones en MOF y referencias entre objetos en
Ecore
Agregacin en MOF
Generalizacin
Paquetes
Independiente de la plataforma
MOF
Nivel
Descripcin
M3
MOF
M2
metamodelos, instancias de
los elementos MOF
M1
modelos, instancia de un
metamodelo MOF
M0
Ejemplo
Elementos
M3
MOF
Clase, Atributo,
Asociacin,..
M2
Metamodelo de UML
Clase, Atributo,
Asociacin, Estado,
Actividad, Caso de uso,
M1
M0
Instancias de elementos
en el modelo de clases
del TPV
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
Expresiones OCL
context Person::cumpleaos()
post: edad = edad@pre + 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
MDA
MDA
PIM
Modelo
independiente
de la plataforma
PSM
Cdigo
Modelo
especfico de la
plataforma
MDA
Transformaciones de modelos en MDA
PIM
Motor M2M
PS
M
L1
UML
Motor M2C
Cdigo
L3
L2
Definicin
Transformacin
L1 a L2
L4
Lenguaje M2M
UML
Definicin
Transformacin
L2 a L3
Java, C#
XML,
SQL,
L5
Lenguaje M2C
PIM
<<BusinessEntity>>
Cuenta
<<UniqueID>> codigo : Integer
0..n
saldo : Float
<<BusinessEntity>>
Cliente
<<UniqueId>> id : String
nombre : String
apellido : String
<<Query>> findByLastName()
PSM
<<EJBEntityBean>>
+cuenta
Cuenta
<<PrimaryKey>> codigo : Integer
0..n
saldo : Float
+cliente
1
<<EJBEntityBean>>
Cliente
<<PrimaryKey>> id : String
nombre : String
apellido : String
<<EJBFinderMethod>> findByLastName()
Cdigo
public interface Cuenta extends EJBObject {...}
public interface CuentaHome extends EJBHome {...}
public abstract class CuentaBean
implements EntityBean{...}
...
MDA
PIM
PSM
Relacional
Cdigo SQL
PSM
EJB
Cdigo EJB
PSM
Web
Cdigo
JSP/Servlets
307