Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Elemento organizativo Puede contener elementos de cualquier tipo. Un elemento es exclusivo a un paquete. Posibilidad de anidar paquetes.
Modelo
Modelo
Paquetes
Un paquete bien estructurado debe:
ser cohesivo estar poco acoplado poco anidamientos conjunto equilibrado de elementos
Importacin/Exportacin en paquetes
Los paquetes permiten controlar la complejidad del manejo de un gran nmero de abstracciones, controlando los accesos mediante la importacin.
La parte pblica de un paquete son sus exportaciones. Las partes pblicas son visibles en los paquetes que importan al paquete contenedor. La importacin no es transitiva. Los paquetes anidados pueden ver todo lo que ven los paquetes que los contienen.
3
import
Politicas + ReglasPedidos + GUI:Ventana
import
Generalizacin de Paquetes
GUI + Ventana + Formulario # GestorEventos
MacGUI
Un modelo es un paquete que incluye todos los elementos que constituyen una particular vista del sistema modelado.
6
Vistas UML
vocabulario funcionalidad ensamblado gestin conf.
Vista de Implementacin
Vista de Diseo
comportamiento
Vista de Procesos
Vista de Despliegue
Vistas UML
clases interfaces colaboraciones
Vista de Implementacin
componentes
Vista de Diseo
casos de uso
Vista de Procesos
Vista de Despliegue
clases activas
nodos
Vistas UML
Diagramas de clase Diagramas de interaccin Diagramas de estado Diagramas de componentes Diagrama de interaccin Diagramas de estado
Vista de Implementacin
Vista de Diseo
Vista de Procesos
Vista de Despliegue
Diagrama de Objetos
d:DiagramaClases
:Relacion :Clase
:Metodo :Atributo
:Clase
:Clase
11
Diagrama de Objetos
:U nivers idad
:P rofes or
:A s ignatur a
12
Enlaces y Asociaciones
Un enlace es :
una conexin semntica entre objetos. una instancia de una asociacin. un camino por el cual enviar un mensaje
Persona calcularCom pensacion() asignar() +em pleado 1..* + patron * Em presa
enlace
p:Persona 1: asignar(desarrollo) :Em presa
mensaje
13
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.
14
Diagramas de Interaccin
Describen una interaccin. Dos tipos: Diagramas de Secuencia y Colaboracin Diagramas de Secuencia:
Destacan la ordenacin temporal de los mensajes
Diagramas de Colaboracin:
Destacan la organizacin estructural de los objetos participantes.
Equivalencia semntica
16
Diagramas de Secuencia
Representan escenarios. Incluye:
Objetos y su lnea de tiempo Mensajes : argumentos y self-delegation Informacin de control: condiciones y marcas de iteracin Indicar el objeto devuelto por el mensaje: return
(aadirlos slo cuando ayuden a clarificar la interaccin)
17
Sincronizacin
Envo de mensaje simple: Un solo hilo de ejecucin El objeto activo pasa el control al objeto pasivo
Un cliente : Envo simple Otro objeto
18
Sincronizacin
Envo de mensaje sncrono: Slo se desencadena la operacin cuando el servidor acepta el mensaje El cliente se bloquea hasta que el servidor lo acepta o rechaza
Un cliente
: Envo sncrono
Otro objeto
19
Sincronizacin
Envo de mensaje asncrono: Un mensaje asncrono no interrumpe la ejecucin del cliente El cliente enva el mensaje sin saber cundo ni si se llevar a cabo
: Envo asncrono
Un cliente
Otro objeto
20
Diagrama de secuencia
Un objeto puede enviarse a s mismo un mensaje:
a
Puede representar tambin la entrada por parte del objeto en cierta actividad de ms bajo nivel
Diagrama de secuencia
Grficamente tambin se puede indicar cundo el mensaje es para crear el objeto (va dirigido al rectngulo del objeto o etiquetado con new) o para destruirlo (va dirigido a la lnea del objeto pero el final de la flecha es una cruz)
Diagrama de secuencia
Normalmente no es necesario indicar el retorno del control, cuando el envo es sncrono:
a b
Diagrama de secuencia
En el caso asncrono el retorno, si existe, se debe representar:
a : aa b : aa
Media punta de flecha indica mensaje asncrono (desde UML 1.3; en UML 1.5 ya no se distingue, aunque se acepta) La flecha discontinua indica retorno del control
Tipos de Control
El Diagrama de Secuencia refleja de manera indirecta las opciones de control Un control centralizado tiene una forma como esta:
Tipos de control
Un control descentralizado tiene una forma como sta:
Estructuras de control
Podemos representar iteraciones en el envo de mensajes mientras, p.e., se cumpla una condicin:
Estructuras de control
La iteracin puede expresarse tambin como parte del mensaje:
Estructuras de control
Las bifurcaciones condicionales pueden representarse de esta forma:
Diagrama de secuencia
Diagrama de Secuencia
c:Comprador <<create>> asignarrAcciones asignarValores :Transaccion p: ServidorWeb
tiemp o
exito <<destroy>>
asignarValores
Foco de control
Foco de control:Muestra el periodo de tiempo que un objeto est realizando una accin (perodos de actividad del objeto). La parte superior indica cundo se inicia la accin y la inferior cundo se termina (puede estar marcada con un mensaje de respuesta -return-, indicando que se devuelve el control al objeto destino -se indica con flecha discontinua-)
Diagrama de Colaboracin
1: <<create>> 2: establecerAcciones 6: <<destroy>> c:Cliente 5: exito :Transac cion
3: establecerValores 4: establecerValores
p:Proxy ODBC
31
Diagrama de Secuencia
c:Cliente
<<create>> :AgenteBilletes
a:Ayuda Planificacion
<<destroy>>
notificar
32
Diagrama de Colaboracin
3: calcularR uta
a:Ay ud a Planificacion
33
Diagramas de Secuencia
:Interface Entrada Pedido preparar *preparar hayStock:=comprobar [hayStock] eliminar pedir?:=necesarioPedir [pedir?]<<create>> :Pedido :LineaDe Pedido :Item
PedidoItem ItemEntregado
[hayStock] <<create>>
34
Diagramas de Colaboracin
1: preparar :Interface Entrada Pedido :Pedido 2: *preparar :LineaDe Pedido
:Item
6: [pedir?]<<crea te>>
35
36
37
1: iniciarCompra() 2 : nu evoC arroCompra(clie nte ) 3: seleccProducto(cantidad) 5 : ca rga rPro d(cliente,pro d,c an tid ad ) 6: confirmarCompra() 7: confirmarCompraDe(cliente) : Interfaz : Carro : Cliente Compra Compra
38
Diagrama de Secuencia
:OrderManager
:EvaluatedOrders
o : Order
: OrderLine
: Product
: WorkOrder
selectOrder(cod) o:=find(cod)
launchManufacturing()
launchManufacturing(cod)
createWO(tpl)
39
travelPermissionRequest()
travelPermission()
40
darCursoPedido()
estudiarPedido() * analizarFabricacionProducto()
41
Patrn Observer
Subject subjectState Attach() Detach() Notify()
Observer Update()
+subject
42
Patrn Observer
: Subject SetState( ) Notify( ) one : Observer another : Observer
43
Patrn Observer
2: Notify( )
6 : GetS tate ( )
5: Update( )
another : Observer
44
Colaboracin
ClienteDeGestor 1..* 0..* especifica necesita editar 1..1 editado con 1..* 1..* Editor 1..1 Gestor 1..1 1..* 1..1 FabricaDeEditor
ObjetoInformacion 1..*
45
Colaboracin
: ClienteDeGestor : Gestor : FabricaDeEditor : ObjetoInformacion : Editor
crearEditorCon(objInfo) Crear&IniciarCon(objInfo)
46
: Cliente
:R eceptorPedido
:RealizacionPedido
enviarPedido
tra mi tarP ed id o
confirmarPedido
47
: C li en te
:ReceptorPedidos enviarPedido
:AgenteTarjeta Credito
:RealizacionPedido
procesarTarjeta
tra mi tarPedido
emitirFactura
confirmarPedido
48
49
: Usuario
: Base Datos
Encontrar Pe did o ()
visualizarPedido (p)
new
new
Activacin
new
ok
Todo comprobado?
x
ok
validacin
Todo comprobado?
Objeto Autoeliminado
x
51
52
Diagramas de Actividades
Muestran un flujo de actividades. Es un caso especial de mquina de estados. Incluye:
estados actividad y estados accin transiciones objetos
Una actividad realiza alguna accin que produce algn cambio en el sistema o retorna un valor.
53
Transiciones
estado inicial transiciones
Planificar proceso
Asignar tareas
estado final
55
Bifurcacin
Planificar proceso
[materiales no disponibles]
Volver a planificar
[materiales disponibles]
Asignar tareas
56
Divisin y Unin
Preparar conversacin
divisin
Descomprimir
unin
Limpieza
57
Solicitar Producto
Enviar Pedido
Recibir Producto
Facturar al cliente
Pagar Factura
Cerrar Pedido
Cliente
Ventas
Almacen
Solicitar Producto
Enviar Pedido
Recibir Producto
Facturar al cliente
Calles
Pagar Factura Cerrar Pedido
Cliente
Ventas
Almacen
Solicitar Producto
Enviar Pedido
Recibir Producto
Facturar al cliente
b: Factura [impagada]
o: Pedido [completado]
Pagar Factura
Cerrar Pedido
Ejemplo
Pasajero Vendedor Airline
Solicitar pasaje
Seleccionar vuelo
Emitir billete 61
: Cliente
: Comercial :Catalogo
: JefeTecnico
: JefeProduccion
Rellenar Pedido
Analizar viabilidad
:Producto Especial
:Plantilla de Produccion
Ordenar fabricacion
Fin OK
Modelado de flujos de trabajo (workflow) como son los procesos de negocio (business processes). Se puede asociar a cualquier elemento de modelado, pero lo ms normal es asociarlo a una operacin: diagrama de flujo de las acciones.
63
Statecharts
Modelan los aspectos dinmicos del sistema Cada objeto sigue el comportamiento descrito en el Statechart asociado a su clase Cada objeto est en un estado en cierto instante El estado est caracterizado parcialmente por los valores de los atributos del objeto Los Statecharts de UML son deterministas La transicin entre estados es instantnea y se debe a la ocurrencia de eventos La suposicin bsica es que una mquina de estados procesa un evento cada vez y termina con todas las consecuencias del evento antes de procesar otro. Si ocurren dos eventos simultneamente se procesan como si se hubieran producido en cualquier orden, sin prdida de generalidad
Eventos
Un evento es un acontecimiento que ocupa un lugar en el tiempo y espacio. Un evento es un estmulo que dispara una transicin en una mquina de estados. Eventos externos vs. Eventos internos. Tipos de eventos:
Seales (excepciones) Llamadas Paso de tiempo Cambio de estado
66
Tipos de eventos
llamada: la recepcin de una peticin para invocar una operacin. Normalmente un evento de llamada es modelado como una operacin del objeto receptor, manejado por un mtodo del receptor y se implementa como una accin o transicin de la mquina de estados seal: la recepcin de una seal, que es una entidad a la que se ha dado nombre explcitamente (clase estereotipada), prevista para la comunicacin explcita - y asncrona- entre objetos. Es enviada por un objeto a otro objeto o conjunto de objetos. Las seales con nombre que puede recibir un objeto se modelan designndolas en un compartimento extra de la clase de ese objeto. Normalmente una seal es manejada por la mquina de estados del objeto receptor y puede disparar una transicin en la mquina de estados tiempo: representa el paso del tiempo (ocurrencia de un tiempo absoluto respecto de un reloj real o virtual o el paso de una cantidad de tiempo dada desde que un objeto entra en un estado). Palabra clave after: after (2 segundos); after 1 ms desde la salida de devInactivo cambio: evento que representa un cambio en el estado o el cumplimiento de alguna condicin. Palabra clave when, seguida de una expresin booleana, que puede ser de tiempo o de otra clase: when (hora = 11:30); when ( altitud < 1000)
Tipos de eventos
Evento de llamada (se representa igual que el de seal)
Manual
evento parmetro
iniciarPilotoAutomtico (normal)
Automtico
Activo
evento de tiempo evento de cambio
Modelado Excepciones
<<exception>> Excepcion establecerManejador() primerManejador() ultimoManejador()
<<exception>> Duplicado
<<exception>> Overflow
<<exception>> Underflow
<<send>>
<<send>>
<<send>>
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
70
Estados
71
Estado inicial
Se trata de un pseudoestado que indica el punto de partida por defecto para una transicin cuyo destino es el lmite de un estado compuesto El estado inicial del estado de nivel ms alto representa la creacin de una nueva instancia de la clase Slo puede haber un estado inicial (directamente) dentro de cada estado No se permiten compuesto disparadores de evento, s
Transicin al estado inicial estado inicial acciones
Y
e/a /c entry/b
Transicin directa a un estado interior Si estando en X se produce e, la transicin pasa al estado Y. Se ejecuta la accin de entrada b y el estado inicial queda activado. La transicin saliente se dispara inmediatamente, ejecutando la accin c y pasando al estado Z. Si estando en X se produce f, se ejecuta d, se ejecuta b, al entrar a Y, y se pasa a Z, sin ejecutar c, pues el estado inicial ya no est implicado f/d
Estado final
Estado especial dentro de un estado compuesto que, cuando est activo, indica que la ejecucin del estado compuesto ha terminado y que una transicin de finalizacin que sale del estado compuesto est activada. Un estado final no es un pseudoestado. Puede ser activado por un periodo de tiempo, a diferencia del inicial que transita inmediatamente a su sucesor, p.ej., mientras espera la terminacin de otros subestados concurrentes en el mismo estado compuesto Las transiciones entrantes son transiciones normales
X Y
e estado final
El evento e causa la transicin al estado final, que causa la transicin de finalizacin hacia Z
Estado final
Slo puede ocurrir un estado final (directamente) dentro de un estado compuesto. El smbolo de estado final puede repetirse dentro de un estado, pero cada copia representa el mismo estado final. Si un objeto alcanza su estado final de nivel superior, la mquina de estados termina y se destruye el objeto Es posible que no haya estado final, indicando una actividad continua (comn por ejemplo en sistemas empotrados)
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
75
estado destino
estado activo tras completarse la transicin
evento de disparo.
cuando se produce un evento, afecta a todas las transiciones que lo contienen en su etiqueta. Todas las apariciones de un evento en la misma mquina de estados deben tener la misma signatura
condicin de guarda
expresin booleana. Si es falsa, la transicin no se dispara, y si no hay otra transicin etiquetada con el mismo evento que pueda dispararse, ste se pierde
accin
computacin atmica ejecutable. Puede incluir llamadas a operaciones sobre el objeto que contiene la mquina de estados (o sobre otros visibles), creacin o destruccin de objetos, o envo de una seal a otro objeto
Accin: computacin atmica ejecutable que produce un cambio en el estado del modelo o que devuelve un valor. Puede ser realizada mediante el envo de un mensaje a un objeto provocando la modificacin de un enlace o del valor de un atributo en un objeto. Puede incluir llamadas a operaciones (sobre el objeto que contiene la mquina de estados, as como sobre otros objetos visibles), creacin o destruccin de objetos, o el envo de una seal a un objeto
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.
80
Ejemplo de Statechart
Asociado a la clase Persona:
contratar en el paro perder empleo jubilarse
estado inicial
en activo
jubilarse jubilado
transicin estado final
estado
Ejemplo de Statechart
Enabled Position Close Visualisation Disabled Background Selected Open ReadyFor Writing
evento de tiempo
envo de seal
transicin sin disparador: (denota una transicin final: que se dispara automtica-mente cuando el estado origen termina su actividad)
autotransicin
Buscando
ruido
Configuracin
Inactivo
evento de disparo
Rastreando
objetivoEn(p) [representaAmenaza] / t.aadirObjetivo(p) evento de disparo con parmetros
contactar
Acoplamiento
condicin de guarda
accin
Modificar hoja
Finaliza S.A.D.
Pendiente de aceptacin
No aceptada
Envo a factora
En realizacin
Realizada
Inicio
Envo a Bualgas
Pendiente de anlisis
Factible[ Analizado ]
Viable
No factible[ Analizado ]
Envo a jefe
Rechazado
Comunicacion de Rechazo a Central
No aprobado[ Estudiado ] Modificar hoja Administrador rechaza hoja Asignado a Hoja de Rutas Modificar hoja
Envo a factora
Pendiente de aprobacin
Aprobado[ Estudiado ]
Aprobado
Finaliza S.A.D
No realizado[ Hoja Rutas realizada ]
Aprobado
Pendiente de realizacin
No realizado
Realizado
Subestados secuenciales
introducirTarjeta Activo entry/leerTarjeta exit/expulsarTarjeta [continuar]
Procesando
Inactivo
Validacin
cancelar mantener
Seleccin
Mantenimiento
[no continuar]
Impresin
86
Subestados secuenciales
Siguiente_item [No todo items chequeado]
Esperando
Item Recibido [algn item no disponible] cancelado
Cancelado
Entregado
87
Subestados concurrentes
Mantenimiento mantener Pruebas
Probar perifericos AutoDiagnosis
Inactivo
Manejo Ordenes
Espera
88
Componentes
Un componente es una parte fsica y reemplazable de un sistema, que conforma con un conjunto de interfaces y proporciona su implementacin. Modela artefactos tales como: ejecutables, bibliotecas, tablas, ficheros, documentos,.. Representa el empaquetamiento fsico de elementos lgicos tales como clases, interfaces,.. Residirn en los nodos del sistema
89
Componentes
explorador.java
agenteFraudes.dll
90
Componentes
explorador.java
JerarquaElementos
arbol.java
El componente arbol.java puede ser reemplazado por otro que proporcione la interfaz JerarquaElementos. Estereotipos: executable, library, file, table, document
91
Tipos de componentes
Despliegue
Necesarios y suficientes para formar un sistema ejecutable: libreras dinmicas(dll), ejecutables (exe),..
De ejecucin
Se crean durante la ejecucin: objeto COM, instanciado a partir de una dll.
92
Diagrama de Componentes
Modelado de ejecutables y bibliotecas Modelado de cdigo fuente Modelado de una API
93
Modelado de ejecutables
v.exe
Vwbas20.dll
vwdev20.dll
vwsrc20.dll
94
Ejemplo
Control y Anlisis Interfaz de Terminal Comm Comm
Acceso a BD Comm
95
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.
96
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.
97
Diagrama de Despliegue
terminal
<<10-T-Ethernet>>
servidor
Unidad RAID
<<RS-232>> Consola
98
Modem
internet
<<procesador> servidor
<<procesador>> servidor
<<procesador>> servidor
99
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 interaccin).
100
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)
101
Gestin Pedidos
realizacin
102
FabricaDeEditor
ObjetoInformacion 1..*
103
obtenerEditorPara(objInfo)
obtenerInterfazSoportada() soportaInterfaz(nombreInterfaz)
crearEditorCon(objInfo)
Crear&IniciarCon(objInfo)
104
Colaboraciones Parametrizadas
Modelado de patrones de diseo
Subject Observer Observer Subject Observer
Alarma
Ventana
105
Observer Update()
+subject
106
107
Uso de OCL
OCL puede ser usado con distintos fines:
Para especificar invariantes sobre clases y tipos en el modelo de clases. Para especificar pre y post-condiciones sobre operaciones y mtodos. Para describir guardas (en statecharts y otros elementos). Como lenguaje de navegacin. Para especificar restricciones sobre operaciones.
Tipos predefinidos
Tipos Bsicos: Existen una serie de tipos bsicos predefinidos (y operaciones sobre ellos) en OCL, que son: Boolean, Integer, Real, String.
Propiedades: Atributos
Ejemplo: la edad de una Persona se escribe como self.age:
context Person inv: self.age > 0
El valor de la subexpresin self.age es el valor del atributo age sobre el objeto self. El tipo de esta subexpresin es el tipo del atributo age (en este caso tipo bsico Integer)
El invariante de arriba est expresando que la edad de una persona es siempre mayor que cero
Propiedades: Operaciones
Ejemplo: un objeto persona tiene una operacin income que es funcin de fecha (Date). Para un persona aPerson y una fecha aDate, esta operacin sera accedida como: aPerson.income(aDate) La operacin puede ser definida con una postcondicin. El objeto devuelto por sta (el resultado) se denomina result: context Person::income (d: Date) : Integer post: result = age * 1000 Se ponen parntesis aunque la operacin o mtodo no tenga argumentos: context Company inv: self.stockPrice() > 0
OCL. Ms ejemplos
Atributos:
BANCO PERSONA
esCasado: Booleano fechaNacimiento:Fecha edad:Integer nombre: String sexo: enum{mas,fem} ingreso(fecha):Integer
Esposo 0..1
context Persona inv: Empleados:Integer self.edad>0 context Banco inv lmEmpleados: 0..1 Cliente self.empleados < 100 Opcionalmente, la restriccin puede 0..* tener un nombre, en este caso Esposa lmEmpleados 0..1
OCL. Ms ejemplos
Operaciones:
context Persona::ingreso(fecha):Integer post: result > 1000 context Person::birthdayHappens() post: age = age@pre + 1
El valor de una propiedad en una postcondicin es el valor despus de haberse completado la operacin. Para referirse al valor de la propiedad al principio de la operacin, se usa el postfijo @pre, detrs del nombre de la propiedad.
OCL. Colecciones
Operaciones de las Colecciones.
Seleccionar y Descartar (Select, Reject)
context Banco inv: self.cliente->select(edad>50) --cto de personas --mayores de 50
Recolectar (Collect)
context Banco inv: self.cliente->collect(fechaNacimiento) -- bolsa con --las fechas de nacimiento de los empleados
OCL. Colecciones
ParaTodos (ForAll)
context Banco inv: self.cliente->forAll(Nombre=Juan) -- verdadero si --todos los clientes se llaman Juan
Existe (Exists)
context Company inv: self.employee->exists( forename = 'Jack' ) context Company inv: self.employee->exists( p | p.forename = 'Jack' ) context Company inv: self.employee->exists( p : Person | p.forename = 'Jack' )
Estas expresiones se evaluan a true si la caracterstica forename de al menos un empleado es igual a Jack.