Professional Documents
Culture Documents
UML
Contenidos
Modelado del software
Presentacin de UML
Modelado de Casos de Usos
Diagramas de casos de uso
Modelado Estructural
Diagramas de Clases
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
Contenidos
Modelado del software
Presentacin de UML
Modelado de Casos de Usos
Diagramas de casos de uso
Modelado Estructural
Diagramas de Clases
Introduccin
Programas y Modelos
Qu significa modelar?
Un modelo es una representacin
simplificada. Incluye caractersticas
que se consideran importantes para
el que lo usa, a la vez que desecha
otras que no lo son.
Por ejemplo, un modelo de un auto
de plstico para un nio, muestra
los detalles del exterior y las ruedas,
pero obvia por completo el motor y
la transmisin, una versin ms
sofisticada puede incluir un motor
que funcione y unos detalles muy
realistas en el interior. Por
supuesto, mientras ms realista y
detallado sea el modelo, ms
costosa ser su creacin
Introduccin Objetos,
Comportamiento y Clases
Los elementos del modelo en los programas Orientado por
Objetos se llama Objetos.
Los objetos que comparten cierto comportamiento se pueden
agrupar en distintas categoras llamadas clases.
Objetos:
Veamos la siguiente comparacin:
Modelo de la Encargada
Modelo Java
La encargada del
mantenimiento modela cada
uno de los 43 mecnicos con
un alfiler
Ejemplo
Servicio de Mantenimiento
1
1
13
Mecnicos
17
21
Clientes
25
13
17
21
Ejemplo
Servicio de Mantenimiento
Mecnicos
Mecnico
Clientes
Cliente
Ejemplo
Servicio de Mantenimiento
Jorge Castro
X: 6 , Y: 7
INETI S.A.
X: 6 , Y: 12
Calle (X)
Carrera (Y)
Pedro Perez
X: 17 , Y: 12
Ejemplo
Servicio de Mantenimiento
Mecnicos
Mecnico
Nombre: Jorge Castro
X: 6
Y: 7
Mecnico
Nombre: Luis Diaz
X: 1
Y: 22
Clientes
Cliente
Nombre: INETI S.A.
X: 6
Y: 12
Cliente
Nombre: KAOS S.A.
X: 19
Y: 17
Mecnico
Nombre: Pedro Perez
X: 17
Y: 12
Ejemplo
Servicio de Mantenimiento
Jorge Castro
X: 6 , Y: 7
INETI S.A.
X: 6 , Y: 12
Accin externa
Comportamiento asociado
mover()
Pedro Perez
X: 17 , Y: 12
KAOS S.A.
X: 19 , Y: 17
Luis Diaz
X: 1 , Y: 22
Accin externa
Comportamiento asociado
mover()
Ejemplo
Servicio de Mantenimiento
Jorge Castro
X: 6 , Y: 12
INETI S.A.
X: 6 , Y: 12
Pedro Perez
X: 19 , Y: 17
KAOS S.A.
X: 19 , Y: 17
Luis Diaz
X: 1 , Y: 22
Ejemplo
Servicio de Mantenimiento
Clase que representa
Mecnicos
Mecnico
Mecnico
Mecnico
mover(6, 12)
mover( , )
mover(19, 17)
Clientes
Cliente
Nombre: INETI S.A.
X: 6
Y: 12
Cliente
Nombre: KAOS S.A.
X: 19
Y: 17
Ejemplo
Servicio de Mantenimiento
Jorge Castro
X: 6 , Y: 12
INETI S.A.
X: 6 , Y: 12
Pedro Perez
X: 19 , Y: 17
NOVA A.G.
X: 10 , Y: 15
KAOS S.A.
X: 19 , Y: 17
Luis Diaz
X: 1 , Y: 22
Ejemplo
Servicio de Mantenimiento
Clase que representa
Mecnicos
Mecnico
Mecnico
Mecnico
mover(6, 12)
mover( , )
mover(19, 17)
Clientes
Cliente
Nombre: INETI S.A.
X: 6
Y: 12
Cliente
Nombre: KAOS S.A.
X: 19
Y: 17
Cliente
Nombre: NOVA A.G.
X: 10
Y: 15
Ejemplo
Servicio de Mantenimiento
Jorge Castro
X: 6 , Y: 12
INETI S.A.
X: 6 , Y: 12
Pedro Perez
X: 19 , Y: 17
NOVA A.G.
X: 10 , Y: 15
KAOS S.A.
X: 19 , Y: 17
Luis Diaz
X: 1 , Y: 22
Ejemplo
Servicio de Mantenimiento
Jorge Castro
X: 6 , Y: 12
Luis Diaz
X: 10 , Y: 15
INETI S.A.
X: 6 , Y: 12
Pedro Perez
X: 19 , Y: 17
NOVA A.G.
X: 10 , Y: 15
KAOS S.A.
X: 19 , Y: 17
Ejemplo
Servicio de Mantenimiento
Clase que representa
Mecnicos
Mecnico
Mecnico
Mecnico
mover(6, 12)
mover( 10, 15 )
mover(19, 17)
Clientes
Cliente
Nombre: INETI S.A.
X: 6
Y: 12
Cliente
Nombre: KAOS S.A.
X: 19
Y: 17
Cliente
Nombre: NOVA A.G.
X: 10
Y: 15
Introduccin
Programas y Modelos
Caractersticas de los modelos:
Ya sea un modelo del mundo real o uno hipottico, comparten
las siguientes caractersticas:
Los elementos del modelo representan otras entidades ms complejas;
por ejemplo, alfileres que se utilizan como representacin del personal
de mantenimiento en un mapa.
Estos elementos exhiben un comportamiento consistente;
por ejemplo, los alfileres indican posicin, y se pueden mover
Los elementos del modelo se pueden agrupar en categoras diferentes
basndose en su comportamiento comn;
por ejemplo, las chinchetas aparecen y desaparecen. Una vez que se
han pinchado en el mapa, no se mueven hasta que se quitan. Por el
contrario, los alfileres permanecen todo el tiempo en el mapa pero se
pueden mover. (esto refleja el hecho de que el personal de
mantenimiento viaja, pero las localizaciones de los clientes, bien
necesitan un servicio, o bien no).
Acciones externas sobre los elementos del modelo les hacen exhibir el
comportamiento asociado a los mismos;
por ejemplo, una mano mueve el alfiler.
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.
Modelos de Negocio y de
Software
Modelo del Negocio
describe
derivado de
Modelo Software
describe
Empresa
Sistema
software
Sistema de
la empresa
El modelado es la
parte esencial de
todas las actividades
que conducen a la
produccin de
software de calidad
Escribimos cdigo
directamente?
Construimos software de
calidad?
Modelado es la solucin?
Conceptos de Programacin
Orientada a Objetos
DEFINICIONES DE OBJETO
OBJETO = ESTADO +
MTODOS
ESTADO
MTODOS
Conjunto de Atributos
Condicin actual del
objeto
Vara dinmicamente
No es accesible desde
afuera
No es directamente
modificable desde afuera
Mecnico
Nombre: Pedro Perez
X: 19
Y: 17
mover(19, 17)
Qu es la Programacin
Orientada a Objetos?
Es la manera standard actual de enfocar la
programacin.
Un programa contiene objetos que
responden a los mensajes que se les envan.
Un Mensaje (llamada a una funcin) es una
peticin a un objeto para que haga algo.
A las acciones que realizan los objetos se les
llama Mtodos.
Definicin de Clase
Eventos:
Aterrizaje, Suspensin, Venta, Devolucin, ...
Interaccin:
Prstamo, Matrcula, Registro Pblico, ...
Organizaciones:
Financiera, Sindicato, ...
Localizaciones:
Punto de Venta, Bodega, Oficina, ...
Visibles en la interfaz:
Icono, Imagen, Ventana, ...
Dispositivos:
Sensor, Lector de Tarjeta, Teclado, Pantalla,
...
Caractersticas Programacin OO
Encapsulacin
Caja Negra
Polimorfismo
Permitir un usar un nombre para especificar
una clase general de acciones
Herencia
Un objeto puede adquirir las propiedades de
otro
Claves en Desarrollo de SI
I. Introduccin: Modelado de SWI
Notacin
Herramientas
Proceso
Item
envo
Proceso de Negocios
Sistema Computacional
Mltiples Sistemas
Servidor de BDs
(C++ & SQL, ..)
Modelar el sistema
independientemente
del lenguaje de implementacin
Componentes
Reutilizados
Promover la Reutilizacin
Introduccin: UML
Qu es UML?
UML = Unified Modeling Language
Un lenguaje de propsito general para el
modelado orientado a objetos
Documento OMG Unified Modeling
Language Specification
UML combina notaciones provenientes
desde:
Situacin de Partida
Diversos mtodos y tcnicas OO, con muchos
aspectos en comn pero utilizando distintas
notaciones
Historia de UML
Comenz como el Mtodo Unificado, con
la participacin de Grady Booch y Jim
Rumbaugh. Se present en el
OOPSLA95
El mismo ao se uni Ivar Jacobson. Los
Tres Amigos fueron socios en la
compaa Rational Software. Herramienta
CASE Rational Rose
Historia de UML
UML 2.0
2004
2003
UML 1.5
UML 1.4
2000
1999
1998
Nov 97
UML 1.3
UML aprobado por el OMG
UML 1.2
Revisiones menores
MCI Systemhouse
Microsoft
ObjecTime
Oracle Corp.
Platinium Technology
Sterling Software
Taskon
Texas Instruments
Unisys
Jacobson
Odell
Meyer
Pre- and Post-conditions
Shlaer-Mellor
Object life cycles
UML
Harel
State Charts
Embly
Singleton classes
Wirfs-Brock
Fusion
Operation descriptions,
message numbering
Responsabilities
Aspectos Novedosos
Definicin semi-formal del Metamodelo de
UML
Inconvenientes en UML
Definicin del proceso de desarrollo usando
UML.
UML no es una metodologa
Perspectivas de UML
UML es el lenguaje de modelado orientado a
objetos estndar predominante los prximos
aos
Razones:
Participacin de metodlogos influyentes
Participacin de importantes empresas
Aceptacin del OMG como notacin estndar
Evidencias:
Herramientas que proveen la notacin UML
Edicin de libros
Congresos, cursos, camisetas, etc.
Contenidos
Modelado del software
Presentacin de UML
Modelado de Casos de Usos
Diagramas de casos de uso
Modelado Estructural
Diagramas de Clases
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.
Relaciones
Diagramas
Mecanismos comunes
Especificaciones, Extensibilidad, Dicotoma
clase-instancia, Dicotoma interfaz-realizacin
Elementos Estructurales
Partes estticas de un modelo
Ventana
origen
tamao
abrir()
cerrar()
mover()
dibujar()
clase
<<Interface>>
IAvisable
IAvisable
Interface
ValidarTransaccion
caso de uso
Elementos Estructurales
Gestor Eventos
Hola
Mundo.class
clase activa
suspender()
vaciarCola()
componente
colaboracin
Gestin Pedidos
Servidor
nodo
Elementos de Comportamiento
dibujar
mensaje
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
Elementos de Agrupacin
Son las partes de organizacin de los modelos
UML
Modelo del Negocio
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
Ejemplo
IteradorCuenta
Cuenta
Domiciliacion
1
Ahorro
0..n
Corriente
Operacion
Periodica
Diagramas de UML
Diagramas de Estados
Diagramas de Actividades
Diagramas de Componentes
Diagramas de Despliegue
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
Serv icio PE
Alumno
Sistema
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
Pujador
Rechazar adjudicacin
Sistema
Notif icar adjudicatario
Teleoperador
Participante
Administrador
Anular edicin de subasta
Diagrama
de casos
de uso
Modelo
Estructural
Diagrama
de clases
Modelo de Comportamiento
1. cerrarEdicionSubasta(es)
Diagrama
de
colaboracin
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
Se crean tantas adjudicaciones
como pujas ganadoras haya.
Cada adjudicacin se asocia
con un ArticuloConcreto, una
puja adjudicataria y con la
subasta.
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
Adornos
La notacin grfica bsica de cada elemento
puede incluir adornos textuales o grficos
para resaltar algunas propiedades de la
especificacin.
Persona
nombre
direccion
telefono
Elena
Elena :
Persona
: Persona
asistente
Ortografico.dll
IOrtografia
Mecanismos de extensibilidad de
UML
Estereotipos
Extienden el vocabulario de UML, permiten definir
nuevos tipos elementos y relaciones a partir de los
existentes.
Algunos son predefinidos en UML
Valores etiquetados
Extienden las propiedades de un elemento,
aadiendo nueva informacin.
Par etiqueta/valor: { etiqueta = valor }
Restricciones
Restricciones semnticas a elementos o relaciones.
Definidos por el modelador o incluidos en UML.
Ejemplo: { emp.vacaciones < 28 }
Cliente
<<Actor>>
Cliente
Cliente
Clase
Clase
estereotipada
IComparator
Clase
estereotipada
Mecanismos de extensibilidad de
UML
valor etiquetado
estereotipo
<<Exception>>
Overflow
aadir()
quitar()
vaciar()
{ordenado}
restriccin
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
Organizacin en Paquetes
Organizacin en Paquetes
java
HolaMundo
Applet
awt
lang
Diagrama de Secuencia
: Thread
: Toolkit
1. run()
: ComponentPeer
target : HolaMundo
1.1. callbackLoop()
1.1.1. handleExpose()
1.1.1.1. paint()
Diagrama de Componentes
HolaMundo.clas
s
hola.html
hola.jpg
hola.java
Contenidos
Modelado del software
Presentacin de UML
Modelado de Casos de Usos
Diagramas de casos de uso
Modelado Estructural
Diagramas de Clases
ESCENARIO
Emisor
Centralita
Receptor
listo( )
tono
marcar_numero
tono_sonando
timbre_sonando
telefono_cogido
para_tono
para_timbre
actor
caso de uso
Gestionar Prstamos
Responsable
Prestamos
asociacion
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 por el sistema)
No forman parte del sistema
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.
Actores
A. Cockburn distingue dos tipos de
actores:
Primarios:
Requieren al sistema el cumplimiento de un
objetivo
Secundarios:
El sistema necesita de ellos para satisfacer un
objetivo
6.
7.
8.
9.
Cajero
Comprar Articulos
Cliente
:Sistema
: Cajero
introducirItem(upc,cantidad)
finalizarVenta()
hacerPago(cantidad)
Rebajar Mnimo
Aprobar curso
Servicio CPE
Responsable
Cerrar curso
Crear proyecto
Servicio Contabilidad
Fin matriculacion
Realizar preinscripcin
Sistema
Avisar admitidos
Alumno
Matriculacin
Cancelar curso
Alumno
Realizar preinscripcin
Gestin Expedientes
Actor
Principal
Matriculacin
Entidad Bancaria
Reservar Libro
Prestamo revista
Profesor
Prestamo Libro
Devolver revista
Devolver libro
Actualizar catalogo
Socio
Extender Prestamo
Consultar
Bibliotecario
Socio
caso de uso
colaboracin
Hacer Pedido
Gestin Pedidos
realizacin
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
Ejemplo
Relacin de extensin
extend
Hacer Pedido
(establecer
prioridad)
include
Relacin de
inclusin
Hacer Pedido
Urgente
Comprobar clave
Validar Usuario
Generalizacin
Seguir Pedido
include
Examinar retina
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 caso de uso Hacer Pedido:
Obtener y verificar el nmero de pedido.
Include (Validar usuario). Examinar el estado
de cada parte del pedido y preparar un
informe para el usuario.
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
identificador / historia
objetivo a conseguir
lista de actores
condiciones que deben
cumplirse
interacciones entre los actores
y el sistema necesarias para
obtener el objetivo
cualquier variacin en los
pasos
lista requisitos no funcionales
lista de cuestiones que
permanecen por resolver
Actor Principal
Personas involucradas e Intereses
Precondiciones
Postcondiciones
Escenario Principal (Flujo Bsico)
Extensiones (Flujos Alternativos)
Requisitos especiales
Tecnologa y Lista Variaciones de datos
Frecuencia
Cuestiones abiertas
Granularidad
Diferente granularidad
Un caso de uso puede describir:
Un objetivo o propsito del usuario
Una interaccin con el sistema
Granularidad
(A. Cockburn)
mbito
Caso de
uso
Sistema
Funcionalidad requerida del sistema
Organizacin
Caso de
uso del
negocio
Especificidad
Objetivo del usuario
cdu
Colecciones de objetivos de usuario
cdu
negocio
Subfunciones
inclusin de cdu
Granularidad
(A. Cockburn)
Especificidad
Objetivo del usuario
Tarea del usuario o proceso de negocio elemental
Subfunciones
Un paso en la descripcin de un caso de uso (validar,
buscar, log on)
Detalle de la interaccin
Interfaz de dialogo o Interfaz semntica
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
Recomendaciones
Qu granularidad es apropiada para un
caso de uso?
En un sistema de venta por internet,
Aadir producto al carro de la compra
Introducir datos facturacin
son casos de uso?
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!
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 no-funcionales.
Referencias
http://alistair.cockburn.us/usecases/usecases.html
Writing effective uses case, Alistair Cockburn, Addison-Wesley,
2000
C. Larman, UML y Patrones: Una introduccin al anlisis y diseo
orientado a objetos y al proceso unificado, Prentice-Hall, 2003.
Contenidos
Modelado del software
Presentacin de UML
Modelado de Casos de Usos
Diagramas de casos de uso
Modelado Estructural
Diagramas de Clases
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
Modelo Conceptual
Modelo de diseo
IteradorCuenta
Cuenta
Domiciliacion
1
Ahorro
0..n
Corriente
Operacion
Periodica
Modelo Conceptual
o de Anlisis?
Modelo de
Comportamiento
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
Se crean tantas adjudicaciones
como pujas ganadoras haya.
Cada adjudicacin se asocia
con un ArticuloConcreto, una
puja adjudicataria y con la
subasta.
: 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
Observer
+observers
1..*
1..1
Detach()
Update()
Notify()
for all o in observers
{o.update()}
ConcreteSubject
subjectState
getState()
setState()
ConcreteObserver
+subject
observerState
observerState=
update()
subject.getState()
: Subject
o1 : Observer
1. setState()
1.1. notify()
1.1.1. update()
1.1.2. update()
o2 : Observer
Ingeniera inversa
Obtener un modelo a partir de cdigo.
Ms difcil ya que hay prdida de informacin
al pasar de los modelos al cdigo.
Atributos
visibilidad
+ = pblica
# = protegida
- = privada
Atributos
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
Operaciones
[visibilidad] nombre [(lista_parametros)] [: tipo_retorno]
[{propiedades}]
visibilidad
+ = pblica
# = protegida
- = privada
tipo retorno:
propiedades:
Operaciones
Atributos
Operaciones
Clases Parametrizadas
Clase
Parametrizada
Tabla
count
capacity
put(G)
item() : G
bind <Empleado>
Empleados
Instanciacin
Tabla<Cliente>
Otras propiedades
Clases y mtodos diferidos
Multiplicidad
Variables y mtodos de clase
<<abstract>>
Figura
rotar()
trasladar()
visualizar()
Clases Estereotipadas
<<metaclass>>
MetaclaseCuenta
<<exception>>
FueraRango
Relaciones
Dependencia
Un cambio en la especificacin de un elemento
afecta a otro
PlanDelCurso
Window
position
parent
children
size
open()
close()
move()
resize()
Curso
aadir(c : Curso)
eliminar(c : Curso)
Clock
Nodo
Lista
<<friend>>
friend:
dependencia de clase amiga
refine:
relacin de refinamiento
use:
relacin de uso
import:
un paquete importa los elementos de otro.
extend:
para casos de uso
include:
para casos de uso
Relaciones
Generalizacin
Es-un-tipo-de
Cuenta
CuentaAhorro
Window
CuentaCorriente
TextWindow
BoxDialog
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
Asociacin
Asociacin
Relacin estructural que especifica que los
objetos de un tipo estn conectados con los
de otro.
Persona
+empleado
+patron
1..*
Empresa
impartido
Curso
*
Profesor
1..*
Asociaciones
Agregacin
Caso especial de asociacin
Relacin estructural parte-de
Empresa
1..1
*
Departamento
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
Asociaciones
Especificacin:
class Pedido {
public Cliente getCliente();
public Set
getLineaPedido();... }
Implementacin
class Pedido {
private Cliente
private HashSet
_cliente;
_lineasPedido;
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
impartido
Curso
*
Profesor
1..*
Visibilidad
Pblica:
Protegida:
Privada:
+propietario
#propietario
-propietario
GrupoUsuarios
Usuario
*
+propietario
1..1
-clave
*
Clave
Asociaciones calificadas
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
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
Es un caso particular de agregacin:
exclusiva y dependiente
Las partes pueden crearse despus del agregado
compuesta al que pertenecen, pero una vez
creadas viven y mueren con ella.
La parte slo puede formar parte de un
agregado.
El agregado gestiona la creacin y destruccin
de las partes.
Las partes se pueden eliminar antes de eliminar
el agregado.
Composicin
Ventana
agregado /todo
1..1
composicin
*
Marco
parte
Composicin
POLIGONO
1
Relleno:Diseo
{ordered}
{ordered} 3..*
Punto
Clases Asociacin
Una asociacin que tambin es una clase
Una clase asociacin aade una restriccin:
Slo puede existir una instancia de la asociacin
entre cualquiera par de objetos participantes
Asociaciones derivadas
Asociacin
Derivada
Asociaciones derivadas
recibe
Estudiante
Asignatura
/ensea
imparte
Profesor
Asociacin
Derivada
Empresa
Cuenta
{or}
Persona
Departamento
*
{subconjunto}
+miembro
1..*
Persona
+Director
1..1
operario
*
0..1
empleado
Persona
patrn
0..1
jefe
{Persona.patrn=
Persona.jefe.patrn }
Compaia
Realizacin
Relacin entre clasificadores:
un clasificador especifica un contrato que otro
clasificador garantiza que cumplir.
<<Interface>>
IPila
Pila
push()
pop()
top()
Pila
IPila
Interfaz
InputStream
(from io)
InputStreamReader
(from io)
DataInput
(from io)
Clase
Abstracta
FilterInputStream
(from io)
DataInputStream
(from io)
InputStream
<<Interface>>
DataInput
(from io)
(from io)
Interfaz
FilterInputStream
(from io)
DataInputStream
(from io)
InputStreamReader
(from io)
Paquetes
Elemento organizativo
Puede agrupar elementos de cualquier tipo.
Un elemento es exclusivo a un paquete.
Establece un espacio de nombres
Posibilidad de anidar paquetes.
Modelo
Modelo
+ Producto
+ CarroCompra
+ Comercio
Importacin/Exportacin en
paquetes
Los paquetes permiten controlar la complejidad del
manejo de un gran nmero de abstracciones,
controlando los accesos mediante la importacin.
Relaciones de importacin, acceso y
generalizacin
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.
Cliente
+ FormularioPedido
+ FormularioDeSeguimiento
- Pedido
Servidor
+ BaseDeDatos
+ ServicioDeRegistro
<<import>>
Politicas
+ ReglasPedidos
+ GUI:Ventana
GUI
+ Ventana
+ Formulario
# GestorEventos
<<import>>
Generalizacin de Paquetes
GUI
+ Ventana
+ Formulario
# GestorEventos
WindowsGUI
+ GUI:Ventana
+ Formulario
# GUI:GestorEventos
+ VBForm
MacGUI
Paquetes
Un paquete bien estructurado debe:
ser cohesivo
estar poco acoplado
pocos anidamientos
conjunto equilibrado de elementos
<<subsystem>>
Pedidos
<<model>>
Diseo
<<layer>>
Servicios
Bsicos
<<framework>>
Struts
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.
Vistas UML
vocabulario
funcionalidad
ensamblado
gestion conf.
Vista de Implementacion
Vista de Diseo
comportamiento
Vista de Procesos
Funcionamiento
escalabilidad
rendimiento
Vista de Despliegue
topologa
entrega
distribucin
instalacin
Vistas UML
clases
interfaces
colaboraciones
componentes
Vista de Implementacion
Vista de Diseo
casos de uso
Vista de Procesos
clases activas
Vista de Despliegue
nodos
Vistas UML
Diagramas de clase
Diagramas de interaccin
Diagramas de estado
Vista de Implementacin
Vista de Diseo
Vista de Procesos
Diagramas de clase
Diagramas de interaccin
Diagramas de estado
Diagramas de componentes
Diagrama de interaccin
Diagramas de estado
Vista de Despliegue
Diagramas de despliegue
Diagrama de interaccin
Diagramas de estado
Diagrama de Objetos
: Cuenta
: Cliente
: Perfil
: CodigoCuenta
: Tarjeta
: Transaccion
Diagrama de Objetos
: Curso
: Alumno
: Profesor
: Tarjeta
: Expediente
: Departamento
director : Profesor
: GrupoInvestigacion
: Tarjeta
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
Enlaces y Asociaciones
Un enlace es :
una conexin semntica entre objetos.
una instancia de una asociacin.
un camino por el cual enviar un mensaje
enlace
p:Persona
:Empresa
1: asignar(desarrollo)
mensaje
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.
Mensaje:
Especificacin de una comunicacin entre
objetos que transmite informacin, con la
expectativa de desencadenar una actividad.
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
Diagramas de Secuencia
Incluye:
Mensajes
Simple:
Creacin de objetos:
Condicin:
Iteracin:
Asignacin:
metodo(arg)
<<create>>
[cond] metodo()
* metodo()
v:= getObjeto()
Diagramas de Secuencia
:
:
: Pedido
: LineaPedido
: Item
InterfacePedido
ControladorPedido
1: preparar()
2: preparar()
3: * preparar()
4: hayStock:=check()
5: [hayStock] eliminar()
6: pedir?:= necesarioPedir()
7: [pedir?] <<create>>
: ItemPedido
8:
9: [hayStock] <<create>>
: ItemEntregado
Diagramas de Colaboracin
1: preparar()
:
InterfacePedido
2: preparar()
: ControladorPedido
6: pedir?:= necesarioPedir()
3: * preparar()
4: hayStock:=check()
5: [hayStock] eliminar()
: Item
7: [pedir?] <<create>>
: ItemPedido
: Pedido
:
LineaPedido
8: [hayStock] <<create>>
:
ItemEntregado
Diagrama de Secuencia
c:Cliente
p:ProxyODBC
<<create>>
:Transaccion
establecerAcciones
establecerValores
Lnea de vida
establecerValores
tiempo
exito
<<destroy>>
Foco de
control
Diagrama de Colaboracin
1: <<create>>
2: establecerAcciones
6: <<destroy>>
c:Cliente
:Transac
cion
5: exito
3: establecerValores
4: establecerValores
p:Proxy
ODBC
Diagrama de Secuencia
c:Cliente
a:Ayuda
Planificacion
<<create>>
:AgenteBilletes
establecerItinerario(i)
calcularRuta
ruta
<<destroy>>
notificar
Diagrama de Colaboracin
3: calcularRuta
1: <<create>>
2: establecerItinerario(i)
5: <<destroy>>
c:Cliente
:Agente
Billetes
4: ruta
6: notificar
a:Ayuda
Planificacion
Numeracin secuencial
2: m2()
1: m1()
:A
3: m3()
:B
:C
4: 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
Numeracin jerrquica
1.1. m2()
1. m1()
:A
1.2. m3()
:B
:C
1.3. m4()
:D
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
: Cliente
:ReceptorPedidos
:AgenteTarjeta
Credito
:GestionPedido
:AgenteFacturacion
enviarPedido
procesarTarjeta
tramitarPedido
confirmarPedido
emitirFactura
: Technical
Responsible
: Launch
Manufacturing GUI
:OrderManager
:EvaluatedOrders
o : Order
: OrderLine
: Product
selectOrder()
selectOrder(cod)
o:=find(cod)
launchManufacturing()
launchManufacturing(cod)
launch manufacturing()
*generateWO()
tpl:=getTemplate()
createWO(tpl)
: WorkOrder
viajero: Empleado
encargado: Empleado
contable : Empleado
pagador : Empleado
solicitudPermisoViaje()
PermisoViaje()
informeGastos(unInforme)
OKgastos(unInforme)
solicitudPago(viajero)
: JefeTecnico
: Comercial
darCursoPedido()
: JefeProduccion
estudiarPedido()
* analizarFabricacionProducto()
planificarFabricacion()
informarAnalisisPedido()
acceptarPedido()
Diagramas de Actividades
Muestran un flujo de actividades.
Es un caso especial de mquina de estados.
Incluye:
estados actividad y estados accin
transiciones
objetos
Procesar
Pedido
Transiciones
estado inicial
Planificar
Proceso
Asignar Tareas
transiciones
estado final
Bifurcacin
Planificar
Proceso
[ no hay materiales ]
[ hay materiales ]
Asignar Tareas
Volver a
Planificar
Divisin y Unin
Preparar conversacin
divisin
Descomprimir
Gesticular
Mover boca
Emitir audio
unin
Limpieza
Solicitar Producto
Procesar Pedido
Extraer Articulos
Enviar Pedido
Recibir Producto
Pagar Factura
Facturar al cliente
Cerrar Pedido
Cliente
Ventas
Almacen
Solicitar Producto
Procesar Pedido
Extraer Articulos
Enviar Pedido
Recibir Producto
Pagar Factura
Facturar al cliente
Cerrar Pedido
Calles
Cliente
Ventas
Almacen
Solicitar Producto
Procesar Pedido
Extraer Articulos
o: Pedido
[en progreso]
Recibir Producto
Facturar al cliente
b: Factura
[impagada]
Pagar Factura
Cerrar Pedido
Enviar Pedido
o: Pedido
[completado]
: Cliente
: Comercial
: JefeTecnico
: JefeProduccion
:Catalogo
Rellenar Pedido
p:Pedido
[propuesto]
:Plantilla de
Produccion
p:Pedido
[en_evaluacion]
Cursar pedido
Analizar viabilidad
p:Pedido
[evaluado]
Mucha
informacin
[ NO ]
Notificar rechazo
de pedido
:Producto
Especial
Viable ?
[ SI ]
Fin KO
p:Pedido
[rechazado]
Notificar aceptacion
de pedido
:Plantilla de
Produccion
Ordenar fabricacion
:Orden de
Trabajo
[pendiente]
Planificar produccion
p:Pedido
[aceptado]
Fin OK
Cliente
Comercial
Jefe Tecnico
Jefe Produccion
Inicio
Introducir
Pedido
Analizar Pedido
Viable
Cursar Pedido
Denegar Pedido
Viable
[no]
[si]
Aceptar Pedido
Ordenar
Fabricacion
Planificar
Produccion
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
Seales
Modelado Excepciones
<<exception>>
Excepcion
establecerManejador()
primerManejador()
ultimoManejador()
<<exception>>
Duplicado
Conjunto
aadir()
eliminar()
<<send>>
<<exception>>
Overflow
<<send>>
<<send>>
<<exception>>
Underflow
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
Estados
Rastreando
accin entrada
transicin interna
evento diferido
entry/ activarModo(enRastreo)
exit / activarModo(noRastreo)
nuevoObjetivo/rastreador.adquirir
do / seguirObjetivo
autotest / defer
accin salida
actividad
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:
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.
ruido
Inactivo
objetivoEn(p)
[representaAmenaza]
/ t.aadirObjetivo(p)
Buscando
Configuracin
Acoplamiento
Rastreando
contactar
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 secuenciales
introducirTarjeta
Activo
entry/leerTarjeta
exit/expulsarTarjeta
Inactivo
Validacin
cancelar
[continuar]
mantener
Seleccin
Mantenimiento
Procesando
[no continuar]
Impresin
Subestados concurrentes
Mantenimiento
mantener
Inactivo
Pruebas
Probar
perifericos
Manejo Ordenes
AutoDiagnosis
[continuar]
Orden
Espera
Pulsar tecla
[no continuar]
Subestados Concurrentes
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
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, archivos,
documentos,..
Propiedades de un componente
Propiedades de un componente
Interfaz
Componente
1..*
Componente
1
*
realizacin
Implementacin
Componente
1
*
Instancia
Componente
instancia
instalacin
Instalacin
Componente
Componentes
<<EXE>>
Explorador
agenteFraudes.dll
Realiza
agenteFraudes
politicaFraudes
busquedaPatrones
Componentes
explorador.java
JerarquaElementos
arbol.java
El componente
arbol.java
Componentes
AsignacionAula.exe
AsignaturaUSP
Asignacion
AulaUSP
Reserva
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.
Diagrama de Componentes
Modelado de ejecutables y bibliotecas
Modelado de cdigo fuente
Modelado de una API
Modelado de ejecutables
v.exe
Vwbas20.dll
vwdev20.dll
vwsrc20.dll
Interfaces
proporcionadas
Interfaces
requeridas
Interfaz
proporcionada
Interfaz
requerida
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.
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
cliente-servidor, sistemas distribuidos.
Diagrama de Despliegue
terminal
<<10-T-Ethernet>>
servidor
<<RS-232>>
Consola
Unidad
RAID
Modem
<<procesador>>
servidor cache
<<procesador>
servidor cache
internet
<<procesador>
servidor
principal
<<procesador>
servidor
<<procesador>>
servidor
<<procesador>>
servidor
Deployment Diagram
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
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.
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)
caso de uso
colaboracin
Hacer Pedido
Gestin Pedidos
realizacin
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.
ClienteDeGestor
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
Mecanismo trading
(Comportamiento)
: ClienteDeGestor
: Trader
: FactoriaEditor
info :
ObjetoInformacion
editar(info)
* i:= getInterfaz()
p:= soportaInterfaz(i)
[p] crearEditor(info)
<<create>>
: Editor
Mecanismo trading
(Comportamiento)
2: * i:= getInterfaz()
4: [p] crearEditor(info)
1: editar(info)
:
Cliente...
: Trader
3: p:= soportaInterfaz(i)
info :
ObjetoInformacion
: FactoriaEditor
5: <<create>>
: Editor
Colaboraciones Parametrizadas
Subject
Alarma
Observer
Ventana
Subject
subjectState
Attach()
Detach()
Notify()
Observer
+observers
1..*
1..1
Update()
ConcreteSubject
subjectState
getState()
setState()
+subject
ConcreteObserver
observerState
update()
observerState=
subject->getState()
: Subject
one : Observer
another : Observer
SetState( )
Notify( )
Update( )
GetState( )
Update( )
GetState( )
Contenidos
Modelado del Comportamiento
Diagramas de interaccin
Diagramas de actividades
Mquinas de estado
Modelado de la Implementacin
Diagramas de componentes
Diagramas de despliegue
Colaboraciones
FIN