Professional Documents
Culture Documents
Tema 2
Tema 2
El Lenguaje de
Modelado Unificado
Contenido
– Introducción
– Modelado estructural
– Modelado del comportamiento
– Modelado arquitectónico
UML: El Lenguaje
Clase Clase Colaboración
Interfaz atributos IInterfaz
Colaboración métodos Clase Act
Estructurales Caso de uso Caso de Uso
atributos
Clases activs métodos
Nodo Componente
Elementos
Componente Nodo
Interacción Interacción
Comportamiento
Máquina de estados Estado
Paquetes
Frameworks
Agrupación Paquete
Modelos
Subsistemas
UML: El Lenguaje
Relaciones Dependencia
0..1 *
Asociación
role1 role2
Generalización
Realización
Diagrama de clases
Diagrama de objetos
Diagrama de casos de uso
Diagramas
Diagrama de secuencia
Diagrama de colaboración
Diagrama de estados
Diagrama de actividades
Diagrama de componentes
Diagrama de despliegue
Departamento de Lenguajes y Ciencias de la
Computación. 7
Ingeniería del Software.
Especificación
UML: El Lenguaje
Nombres Cliente
nombre
Ámbito Elena:Cliente
Reglas
dirección
Visibilidad
preferencial() :Cliente
Integridad
Ejecución
IUnknown asistOrtog.dll
Especificaciones
Mecanismos
Adornos
Entidad IOrtografía
Divisiones comunes
Instancia «exception»
ColaEventos Overflow
Estereotipo {vers = 3.2
autor=eps}
Extensiones Valor etiquetado
Restricción añadir()
quitar()
Departamento de Lenguajes y Ciencias de la vaciar() {ordenado}
Computación. 8
Ingeniería del Software.
Especificación
Clases e Instancias
:Cliente
Cliente
José:Cliente
nombre
dirección
José Pérez
comprar
Claudia
Atributos y Operaciones
operaciones
Funciones o procedimientos
Cada operación tiene un objeto destino implícito
Se puede aplicar la misma operación a clases distintas
Opcionalmente, lista de argumentos y tipo devuelto (no omitir)
Punto
x: float :Punto
y: float
x=0
trasladar(dx:float, dy:float)
y=0
distancia(pto: Punto) : float
:Punto
:Punto
x=3.5
x=1 y=2.25
y=2
EEPROM
EEPStart
EEPStop
enviarDir(dir:Tparam) :EEPROM
EnviarByte(dato:Tvalor)
Control(accion:integer)
EEPAck
EEPNoAck
Combo
Protocolo
estado: TEstadoCombo
mensaje: TMensajeMovil movil_origen: TIdMovil
movil_origen: TIdMovil
MandarRegRx(c: Tcanal)
EntradaCombo(m: TMensajeMovil) MandarRegTx(c: Tcanal)
LIGBM() MandarReg0(c: Tcanal)
LL_ENT() MandarRegMode(c: Tcanal)
SILEN() MandarRegGain(c: Tcanal)
FIN_LIG() MandarRegRefP(c: Tcanal)
INTBM() LeerPortadora()
FIN_LLENT() LeerCabecera()
CODSEG() EscribirCabecera()
FININTB() EscribirDato(m: TMensajeBase)
LeerDato(m: TMensajeMovil)
SubirSquelch()
BajarSquelch()
RestituirSquelch()
Departamento de Lenguajes y Ciencias de la
Computación. 14
Ingeniería del Software.
Especificación
Enlaces y Asociaciones
Asociaciones
Clase Clase
atributos asociación atributos
operaciones operaciones
Multiplicidad 0o1
Muchos
n Exactamente n
m,n mon
m-n Entre m y n
n+ Más de n
Exactamente 1
Direccionalidad
Departamento de Lenguajes y Ciencias de la
Computación. 16
Ingeniería del Software.
Especificación
L1
P1:Punto L1:Línea P2
P1
L2
P2:Punto L2:Línea
L3
L4
P3:Punto L3:Línea
L4:Línea
P3
Departamento de Lenguajes y Ciencias de la
Computación. 17
Ingeniería del Software.
Especificación
GestorLEDs
inicializar()
llamadaEntrante()
leds tomaDeLínea()
colgar()
pilaBaja()
modoContestador()
6 ...
LED
ident: LEDID
parpadea(te:Duration, ta:Duration)
Proyecto Lenguaje
Persona
CentralNuclear:Proyecto Fortran:Lenguaje
Clase Clase
atributos atributos
operaciones operaciones
atributo
acceso
Fichero Usuario
permiso de acceso
trabajo
Empresa Persona
sueldo
puesto
Roles
Clase Clase
atributos rol rol atributos
operaciones asociación operaciones
propietario padre
Usuario Directorio
usuario_autorizado
subdirectorios
Protocolo
Combo
estado: TEstadoCombo mensaje: TMensajeMovil
movil_origen: TIdMovil movil_origen: TIdMovil
... EntradaCombo(m: TMensajeMovil)
LIGBM()
LL_ENT()
SILEN()
FIN_LIG()
INTBM()
CtrlCombo FIN_LLENT()
ultimoCanal: Tcanal CODSEG()
estado: TEstadoCtrlCombo FININTB()
inicioComunicación
finComunicación mensajes recepción
enviarMensaje(m:TMensajeBase)
noPortadora emisión
LED
ident: LEDID
parpadea(te:Duration, ta:Duration)
led_que_enciende
Temporización
tEncendido:Duration
tApagado: Duration
tSilencio: Duration
Restricciones en Asociaciones
Clase Clase
atributos {ordered} atributos
{ordered}
Ventana Pantalla
visibilidad
{sorted}
Alumnos Curso
calificación
Puerto Teclado
{ordered} ultimaTecla
Asociaciones Calificadas
Relacionan dos clases y un
calificador
El calificador es un atributo especial
que:
❈ reduce la multiplicidad de la asociación,
❈ clasifica el conjunto de objetos del extremo
“muchos”,
❈ puede considerarse como una asociación
ternaria.
Partición disjunta de la asociación
Clase Clase
atributos atributos
disminuye multiplicidad
Clase Clase
atributos atributos
calificador
operaciones asociación operaciones
contenido
Directorio File
contenido
Directorio nombre File
empleados
Empresa Persona
empleados
Empresa departamento Persona
LED
tEncendido:Duration parpadeoLed
tApagado: Duration
tSilencio: Duration
Restricciones
miembro
Persona {subconjunto} Comisión
presidente
Agregación
Clase Clase
atributos atributos
Puerto Teclado
3 {ordered}
ultimaTecla
puertosTeclado
leerNivel() ...
Display LED
InterfazExterno
Agregación
Fija (lámpara) Lámpara
– No es implementable eficientemente.
– En algunos casos puede llegar a no permitirse.
Departamento de Lenguajes y Ciencias de la
Computación. 42
Ingeniería del Software.
Especificación
Herencia
Generalización o Especialización
Encapsulamiento de características
comunes
Reutilización y Extensión
En la notación gráfica:
❈ Posible uso de “discriminadores”
❈ Herencia disjunta y no disjunta
❈ Redefinición de métodos
❈ Clases abstractas
❈ Herencia múltiple
Herencia con
SuperClase solapamiento
atributos
Herencia con
operaciones discriminador discriminador
Punto Figura
Polígono Elipse
Triángulo Cuadrado
Círculo
área(): float área(): float
Departamento de Lenguajes y Ciencias de la perímetro(): float
Computación. 45
Ingeniería del Software.
Especificación
LED GestorLEDs
leds
ident: LEDID
6 inicializar()
parpadea(te:Duration, ta:Duration) llamadaEntrante()
tomaDeLínea()
colagar()
pilaBaja()
modoContestador()
...
LEDPuerto LEDRegistro
encender()
apagar()
3
3 ledsRgto
ledsPto
Departamento de Lenguajes y Ciencias de la
Computación. 46
Ingeniería del Software.
Especificación
Herencia Múltiple
Computador Identificación
La herencia múltiple permite a una clase tener más de una
superclase, heredando las características de todos sus padres.
↓ Complica las jerarquías de herencia, que dejan de ser árboles para
convertirse en grafos.
↑ Incrementa las posibilidades de reutilización.
↓ Pérdida de simplicidad conceptual y de implementación.
Problemas: conflictos y herencia repetida.
Departamento de Lenguajes y Ciencias de la
Computación. 47
Ingeniería del Software.
Especificación
Herencia Repetida
Vehículo
Se puede
– Prohibir situaciones conflictivas (C++, Eiffel)
– Usar un heurístico para linealizar el árbol de herencia
(CommonLoops)
– Prohibir la herencia múltiple (Java)
Departamento de Lenguajes y Ciencias de la
Computación. 48
Ingeniería del Software.
Especificación
Relaciones de Dependencia
Dependencia=Relación de uso
origen * destino
Especificación de Atributos
Formato atributos
[visibilidad] nombre [multiplicidad] [:tipo]
[=valor inicial] [{propiedades}]
Propiedades predefinidas: changeable, addOnly, frozen
Tarjeta
- Saldo:long
- PIN [1..*] : int {addOnly}
# Límite:long = 25.000
+ GetSaldo: long
+ Recarga(long cant)
+ Comprobar(long cant):boolean
Especificación de Operaciones
Formato operaciones
[visibilidad] nombre [(lista parámetros)]
[:tipoDevuelto] [{propiedades}]
Propiedades predefinidas: isQuery, ...(para concurrencia)
Formato parámetros
[dirección] nombre : tipo [=valor defecto]
direcciones: in,out, inout
Tarjeta
- Saldo:long
- PIN [1..*] : int {addOnly}
# Límite:long = 25.000
+ GetSaldo: long {isQuery}
+ Recarga(long cant)
+ ComprobarPIN(int pinPrueba):boolean
Interfaces
Interfaz: colección de operaciones que se usa para
especificar un servicio de una clase o componente.
Si es necesario puede
representarse como una
Tarjeta Multifunción
clase estereotipada. No
tendrá atributos ni métodos;
sólo operaciones.
Las operaciones pueden
incluir adornos como IIdentificación IPago
estereotipos, valores <<interface>>
etiquetados, restricciones y IPago
propiedades de visibilidad y GetSaldo()
concurrencia. Recarga()
Departamento de Lenguajes y Ciencias de la
Computación. 54
Ingeniería del Software.
Especificación
Paquetes
Un paquete es un elemento de propósito general
para organizar elementos del modelo en grupos.
Puede contener clases, interfaces, nodos,
colaboraciones, casos de uso, diagramas e incluso
otros paquetes.
Un paquete forma un espacio de nombres.
Estereotipos estándar: Cliente
framework, subsystem, system
stub, facade +FormularioDePedido
+FormularioDeEstado
- Pedido
Paquetes
Visibilidad.
Importación y Exportación.
Cliente
Generalización.
+FormularioDePedido
GUI +FormularioDeEstado
- Pedido
+Ventana
+Formulario
#GestorEventos <<import>>
exportación
WinGUI
LinuxGUI
Consejos Prácticos
No lanzarse a dibujar clases y asociaciones sin sentido.
Intentar que el modelo sea simple, evitando complicaciones
innecesarias.
Los nombres deben ser significativos.
No incluir en los objetos punteros a otros objetos.
Utilizar, si es posible, asociaciones binarias. Utilizar
preferentemente asociaciones calificadas en vez de ternarias o
con atributos.
Dejar la definición de la multiplicidad para cuando se tenga un
mejor conocimiento del problema.
No incluir los atributos de las asociaciones en las clases.
Evitar las jerarquías de composición o generalización de
muchos niveles.
Revisar el modelo hasta que sea satisfactorio.
Documentar el modelo.
Utilizar sólo los elementos necesarios.
Departamento de Lenguajes y Ciencias de la
Computación. 57
Ingeniería del Software.
Especificación
Contenido
– Introducción
– Modelado estructural
– Modelado del comportamiento
• Modelado Básico
• Interacciones
• Diagramas de interacción
• Casos de uso y diagramas
• Diagramas de actividades
• Modelado Avanzado
– Modelado arquitectónico
Interacciones
Definición
Una interacción es un comportamiento que implica un
intercambio de de mensajes entre varios objetos en un
contexto determinado con un objetivo determinado
Se utilizan para expresar los aspectos dinámicos
de las colaboraciones
Las interacciones se llevan a cabo entre objetos
no entre clases
Un enlace es una conexión semántica entre
objetos
– Para que se pueda enviar un mensaje entre dos objetos
debe existir un enlace
– Un enlace es una instancia de una asociación entre
clases
Departamento de Lenguajes y Ciencias de la
Computación. 59
Ingeniería del Software.
Especificación
Interacciones
Persona Empresa
1..* *
Asociación
Asignar(desarrollo)
P:Persona :Empresa
Enlace
Departamento de Lenguajes y Ciencias de la
Computación. 60
Ingeniería del Software.
Especificación
Interacciones
Normalmente basta con indicar que existe un enalce, pero
se puede indicar el tipo de enlace utilizando los
estereotipos:
– Association
– Self
– Global
– Local
– Parameter
Los mensajes también pueden ser más o menos detallados
[Pre] 1:*(expr):mensaje(p,q):Valor
Precondición Valor de
Retorno
Nº secuencia Parámetros
Expresión Identificador
Iteración
Departamento de Lenguajes y Ciencias de la
Computación. 61
Ingeniería del Software.
Especificación
Diagramas de Interacción
Hay dos tipos:
– Diagramas de secuencia
– Diagramas de colaboración
Son dos de los cinco que se utilizan para
modelar el comportamiento dinámico de
los sistemas
Un diagrama de interacción consiste en:
– Un conjunto de objetos (no clases) y sus
relaciones
– Los mensajes que se pueden enviar entre ellos
Diagramas de Interacción
Un diagrama de secuencia es un diagrama en el
que se destaca la ordenación temporal de los
eventos
Un diagrama de colaboración destaca la
organización estructural de los objetos que
envían y reciben los mensajes
Son semánticamente equivalentes
– Se puede generar uno a partir del otro, sin perdida de
información
– Visualmente, sin embargo, esta información puede ser
más difícil de percibir
Diagramas de Secuencia
Los diagramas de secuencia se suelen asociar a los casos de
uso, mostrando como estos se realizan a través de
interacciones entre sociedades de objetos
Consola BD
: Instructor Instructor instructores
Foco de
1: login(usuario)
2: leer(usuario) Control
Línea de
3: usuario correcto
Vida
4: iniciar sesion
5: usuario aceptado
Diagramas de Secuencia
Los mensajes se
corresponden Cliente Interfaz
generalmente a : Alumno
Aplicación Cliente
Diagramas de Secuencia
Diagramas de Colaboración
Destacan la organización de los objetos que
participan en una interacción
Diagramas de Colaboración
Hay dos características que los distinguen
de los diagramas de secuencia:
– El camino
• Para indicar como se enlazan los objetos se utilizan
estereotipos en los extremos de los enlaces (local,
global y self)
– El número de secuencia
• Para indicar la ordenación de los mensajes se utiliza
la numeración decimal de Deway (1, 1.1,.....)
Diagramas de Colaboración
Consola BD
1: login(usuario) : Instructor Instructor instructores
Consola
Instructor
3: usuario correcto
2: leer(usuario)
4: iniciar sesion
BD 5: usuario aceptado
instructores
Diagramas de Interacción
Diagramas de Interacción
Consola BD
: Instructor Instructor instructores
inicio 1: login(usuario)
2: leer(usuario)
3: usuario correcto
4: iniciar sesion
{Iniciar sesion.executionTime<5s}
5: usuario aceptado
fin
{inicio-fin<10s}
Casos de Uso
Se utilizan para especificar el comportamiento
deseado del un sistema o subsistema
– Describe el conjunto de secuencias de acciones que
lleva a cabo el sistema para producir un resultado para
un actor.
– Capturan el comportamiento deseado del sistema, sin
especificar como se lleva a cabo dicho comportamiento
Principalmente son un medio de comunicación
para que los desarrolladores y los usuarios
lleguen a un consenso en la especificación
Ayudan a validar el sistema durante el desarrollo
Casos de Uso
Los casos de uso son principalmente
descripciones textuales
La notación gráfica de UML (diagrama de
casos de uso) solo muestra los nombres y
sus relaciones
Al ser textuales, son informales y no son
buenas para razonar acerca del sistema
– Es mejor utilizar los diagramas de interacción
resultantes de su formalización
Casos de Uso
Un caso de uso es una descripción de las
posibles secuencias de interacción entre
el sistema y actores externos en relación
a el objetivo de un actor particular
Un caso de uso sigue normalmente
cuatro fases:
1. El actor envía al sistema una petición y los datos
necesarios para llevarla a cabo
2. El sistema valida la petición y los datos
3. El sistema altera su estado interno
4. El sistema devuelve el resultado al actor
Casos de Uso
Los casos de uso se pueden detallar a muy
distintos niveles de granularidad
Se suelen distinguir los siguientes niveles:
– Nivel de resumen: muestran ciclo de vida de la
secuencia de objetivos directamente relacionadas.
• Se pueden considerar como una tabla de contenidos de
casos de uso de niveles más detallados
– Nivel de usuario: describen el objetivo del actor cuando
intenta llevar a cabo una acción sobre el sistema
– Nivel de subfunción: son casos de uso requeridos para
llevar a cabo los de usuario, con un mayor nivel de
detalle
• Pueden ser considerados prácticamente como manuales
de operación
Casos de Uso
Un actor representa un conjunto
coherente de roles que los usuarios de los
casos de uso juegan al interactuar con
ellos
– Normalmente representan a una persona, un
dispositivo hardware u otro sistema al
interactuar con el nuestro
Se pueden definir categorías generales de
actores y especializarlos a través de la
relaciones de generalización
Los actores se conectan a los casos de
uso mediante asociaciones.
Departamento de Lenguajes y Ciencias de la
Computación. 77
Ingeniería del Software.
Feb 10, 2008
Especificación
Casos de Uso
logout
<<include>> modificar parámetros
<<include>>
acciones instructor
login controlCI
Instructor
control backtrack
sesión alumno
Extensión
– Se utilizan para modelar la parte de un caso de
uso que puede ser vista como un
comportamiento opcional
– También se pueden utilizar para modelar un
subflujo separado que solo se ejecuta bajo
ciertas condiciones
• Un ejemplo es el modelado de varios flujos que se
puedan dar en un punto dado por la interacción
explicita con un actor
identificación
<<include>>
Acciones de Alumno
Nacional
<<includes>>
Marcar Número
<<extends>> Internacional
Realizar Llamada
Llamante
<<extends>>
<<extends>>
Numero no existe
<<extends>>
Numero Incorrecto
Comunicando
Recibir Llamada
Llamado
<<extends>> No hay linea
Llamada no atendida
Departamento de Lenguajes y Ciencias de la
Computación. 84
Ingeniería del Software.
Especificación
Identificar Cliente Identificar Cliente y Cuenta en
Cajero Automático
<<includes>>
<<includes>> <<includes>>
<<includes>>
Obtener un Balance
Ingresar Dinero Transferir Dinero Sacar Dinero
<<includes>>
<<includes>>
<<includes>>
Correo
Ciclo de Vida Cuenta
Casos de Uso
Niveles:
– Resumen
• Ciclo de vida Cuenta
– Usuario
• Ingresar Dinero
• Transferir Dinero
• Obtener un Balance
• Sacar Dinero
– Subfunción
• Identificar Cliente
• Identificar Ciente y Cuenta en Cajero Automático
Extensiones: ...
Extensiones:
Condición especial ":" Descripción de acción
| sub-caso de uso
Ejemplo
Ejemplo
Ejemplo
Escenario de Éxito Principal:
Los pasos del 5 al 8 son opcionales,
individualmente repetibles y pueden ocurrir en
cualquier orden
Ejemplo
Extensiones:
4a. El sistema informa que el cliente ya tiene una cuenta
de este tipo abierta
4a.1. El sistema solicita al cajero que confirme la
creación de la cuenta
4a.2a. El cajero confirma la creación y el caso de
uso continua por el paso 3
4a.2b. El cliente decide no crearla y el caso de
uso finaliza sin ningún efecto sobre el
estado
........
Contenido
– Introducción
– Modelado estructural
– Modelado del comportamiento
• Modelado Básico
• Interacciones
• Diagramas de interacción
• Casos de uso y diagramas
• Diagramas de actividades
• Modelado Avanzado
– Modelado arquitectónico
Diagramas de Actividades
Sepueden considerar un caso especial de
máquina de estados en la que:
– La mayoría de los estados son actividades
– La mayoría de las transiciones se disparan
implícitamente por la terminación de acciones
Diferencias con un diagrama de estados.
– Un diagrama de actividad se usa para modelar
una secuencia de acciones en un proceso
– Un diagrama de estados para modelar los
estados discretos de un objeto a lo largo de su
ejecución.
Diagramas de Actividades
Solicitar
Producto
Procesar Extraer
Pedido Artículos
Enviar Pedido
Recibir Facturar al
Pedido Cliente
Pagar
Factura
Cerrar Pedido
Diagramas de Actividad
Elementos Básicos
Estado
Transición
Estado sin Disparador
Actividad
Condición
División Unión
Diagramas de Actividad
Estados:
– Las acciones son un tipo especial de estado
– UML no impone un lenguaje para expresar las acciones,
pero se suele utilizar la sintaxis y semántica de un
lenguaje de programación
Transiciones:
– Son transiciones sin disparadores o de terminación
– El flujo de control pasa inmediatamente al siguiente
estado después de finalizar la tarea del estado origen
– El flujo continua indefinidamente hasta que se
encuentra un estado de parada (puede haber flujos
infinitos)
Diagramas de Actividad
Bifurcación:
– Tienen una entrada y dos o más salidas
– En cada transición de salida se incluye una guarda
– Se puede dejar una salida sin especificar (else)
– UML no impone el lenguaje de las guardas (también se
suele utilizar un lenguaje de programación especifico)
Seleccionar
Trabajos
Replanificar
[Hay Materiales]
Asignar Tareas
Calles
– Representan una división de actividades en grupos,
normalmente asignados a objetos o subsistemas
– Cada calle tiene un nombre único en un diagrama
– Existe una relación entre calles y flujos concurrentes
Flujos de Objetos
– Se pueden asignar objetos concretos a actividades y
reflejarlos en el diagrama
– También se puede indicar como cambian sus atributos, su
estado y sus roles a lo largo del flujo
Procesar Extraer
Pedido Artículos
Enviar Pedido
Pagar
Factura
Cerrar Pedido
Diagramas de Actividad
Modelado de una operación
return
Punto(x,y)
Contenido
– Introducción
– Modelado estructural
– Modelado del comportamiento
• Modelado Básico
• Modelado Avanzado
• Eventos y Señales
• Máquinas de Estados
• Procesos y Hebras
• Modelado arquitectónico
Eventos y Señales
Eventos y Señales
Declaración de un evento
<<Signal>>
Colgar Inactivo
<<signal>>
Colgar / cortarConexion()
Activo
Eventos
Tipos:
– Externos: entre el sistema y sus actores
(interrupción, pulsación de una tecla,...)
– Internos: entre los objetos del sistema
Se pueden modelar 4 tipos de eventos:
– Señales
– Eventos de llamada
– Paso del tiempo
– Cambio de estado
Señales
Señales
La relación entre una operación y los eventos
que puede generar se modela con una relación
de dependencia estereotipada como send.
Agente de movimiento
(from eventos)
posición
velocidad
fuerza : Float
Eventos de Llamada
Representan la invocación de una
operación de un objeto
Son eventos síncronos
Cuando un objeto invoca una operación
sobre otro objeto que tiene una máquina
de estados:
– el control pasa del emisor al receptor
– el evento dispara la transición
– la operación acaba
– el receptor pasa a un nuevo estado y el control
regresa al emisor
Departamento de Lenguajes y Ciencias de la
Computación. 114
Ingeniería del Software.
Especificación
Eventos de Llamada
Inactivo
Activo
gestor de Teclado
estado
tipo
reset()
Señales
pulsarBoton(b:boton)
encendido
apagado
Señal de robot
Abstractas
fallo hardware
colision
sensor : integer
Atasco Motor
Modelado de Excepciones
Cuando se especifica un interfaz o una clase,
además de atributos y operaciones, es
conveniente especificar las excepciones
Modelado de Excepciones
Excepción
establecerManejador()
primerManejador()
ultimoManejador()
Duplicado
Overflow
Conjunto
<<send>> <<send>> Underflow
añadir()
eliminar()
<<send>>
Contenido
– Introducción
– Modelado estructural
– Modelado del comportamiento
• Modelado Básico
• Modelado Avanzado
• Eventos y Señales
• Máquinas de Estados
• Procesos y Hebras
• Diagramas de estados
• Modelado arquitectónico
Máquinas de Estados
Una máquina de estados especifica la secuencia
de estados por la que pasa un objeto durante su
vida
Máquinas de estados
Relación con otros diagramas:
– Diagramas de interacción. Modelan el
comportamiento de una sociedad de objetos,
mientras que la máquina de estados modela el
comportamiento de un objeto individual
– Diagramas de actividades. Se centran en el
flujo de control entre actividades, no en el flujo
de control entre estados.
• El evento para pasar de una actividad a otra es la
finalización de la anterior actividad
Máquinas de estados
Elementos:
– Estado: condición o situación de un objeto durante la
cual:
• se satisface alguna condición
• se realiza alguna actividad
• se espera algún evento
– Evento: especificación de un acontecimiento
significativo que ocupa un lugar en el tiempo y en el
espacio
• en el contexto de las máquinas de estados, un estímulo
que puede disparar una transición entre estados
– Transición: relación entre dos estados que indica como
los objetos cambian de estado (eventos+condiciones)
– Actividad:ejecución no atómica en curso dentro de una
máquina de estados
– Acción: computación atómica ejecutable que produce
un cambio de estado en el modelo o devuelve un valor
Departamento de Lenguajes y Ciencias de la
Computación. 127
Ingeniería del Software.
Especificación
Activo
Timeout
after( 15 seg )
tecla( t )[ completo ]
tecla( t )[ invalido ]
descuelga / tono de marcado
Invalido
Inactivo
do/ Mensaje invalido Conexión
cuelga / desconectar
Espera ocupado
Comunicando
conectado
do/ tono comunicando
usr. llamado cuelga
Hablando Sonando
Estados
Elementos:
– Nombre (puede ser anónimo)
– Acciones de entrada/salida (al entrar y salir del
estado)
– Transiciones internas (se manejan sin cambiar
de estado)
– Subestados: estructura anidada que engloba
subestados:
• Secuenciales: subestados disjuntos, es decir activos
secuencialmente
• Concurrentes: activos concurrentemente
– Eventos diferidos: lista de eventos que no se
manejan en eses estado, pero que no se
pierden
Departamento de Lenguajes y Ciencias de la
Computación. 129
Ingeniería del Software.
Especificación
Estados
Estados
Acciones de entrada/salida:
– Se utilizan cuando al entrar o salir de un
estado se requiere realizar una acción
– Son independientes de la transición por la que
se llega o por la que se abandona el estado
– Se puede lograr el mismo efecto con una
máquina de estados plana, pero sería
necesario especificar estas acciones en cada
entrada y salida
– No pueden tener parámetros, ni guardas
– Se representan con entry/acción, exit/acción
dentro del estado
Departamento de Lenguajes y Ciencias de la
Computación. 131
Ingeniería del Software.
Especificación
Estados
Transiciones Internas:
– Son transiciones como respuesta a eventos
que deben ser manejados sin abandonar el
estado
– Son distintas de las autotransiciones:
• En las autotransiciones, se abandona el estado y se
vuelve a él
• Se ejecutan las acciones de entrada y de salida
• Pueden tener eventos con parámetros y guardas
• Son básicamente interrupciones
– Se representan mediante transición/acción,
dentro del estado
Estados
Actividades:
– Cuando un objeto esta en un estado, puede no
estar ocioso, sino ejecutando alguna tarea
– Estas tareas son las actividades y se ejecutan
de forma continuada hasta que se recibe un
evento
– Para representarlas se utiliza la transición
do/actividad
– Se pueden especificar secuencias do/a1;a2;a3
– En este caso las acciones no se interrumpen,
pero la actividad se puede interrumpir entre
acciones.
Departamento de Lenguajes y Ciencias de la
Computación. 133
Ingeniería del Software.
Especificación
Estados
Eventos diferidos:
– En UML, sólo los eventos especificados son tratados
– Si un evento llega y no esta especificado el
comportamiento en ese estado, se pierde
– Si se quiere conservar un evento, pero no se quiere
tratar, hay que especificarlo como diferido
– Existe una cola interna donde se almacenan estos
eventos
– Son tratados tan pronto como el objeto entra en un
estado que no difiere estos eventos
– Se especifica nombre_evento/defered, dentro del estado
Estados
Transiciones
Una transición tiene cinco partes
– Estado orígen
– Evento de disparo
– Condición de guarda
– Acción
– Estado destino
Una transición puede tener:
– Muchos Orígenes (join): unión de estados
concurrentes
– Muchos Destinos (fork): división en múltiples
estados concurentes
Departamento de Lenguajes y Ciencias de la
Computación. 136
Ingeniería del Software.
Especificación
Transiciones
Registration
Cancelled
Cancel course [ Count = 10 ]
^CourseReport.Create
Closed
Subestados
Ayudan a simplificar las máquinas
complejas
Pueden ser concurrentes y secuenciales
Subestados secuenciales:
– Sólo un estado dentro del subestado está
activo al mismo tiempo
– Se pueden especificar transiciones comunes a
todos los subestados (cancelar en el ejemplo)
– Pueden tener o no un estado inicial
– Cómo máximo pueden tener un estado inicial y
otro final
Departamento de Lenguajes y Ciencias de la
Computación. 138
Ingeniería del Software.
Especificación
Subestados
idle Cargar IC
cargar nueva IC
freeze
En Ejecución
comando simulación
run Interpretar
comando
H* Esperar
Enviar Confirmación
Información
Subestados
Estados de historia
– Cuando una transición entra en un subestado
compuesto, por defecto, la máquina anidada
empieza de nuevo su ejecución, a menos que
la transición sea a directa
– A veces se requiere recordar el último
subestado que estaba activo antes de
abandonar el subestado compuesto
– Ej. ¿Cómo se podría hacer con una máquina
plana?
– En UML un estado de historia permite que se
recuerde el último subestado
Departamento de Lenguajes y Ciencias de la
Computación. 140
Ingeniería del Software.
Especificación
Subestados
Subestados
Subestados concurrentes:
– Permiten especificar dos o más submáquinas que se
ejecutan en paralelo en el contexto del objeto
– Para describir un subestado concurrente es necesario
especificar un estado por cada submáquina
En lugar de dividir el estado de un objeto en
estados concurrentes se pueden definir dos
objetos activos, con su propia máquina
Si el comportamiento de uno de los objetos
depende del estado del otro es mejor usar
subestados
Subestados
Si los comportamientos dependen sólo de los
mensajes, es mejor utilizar objetos activos
Si hay poca o ninguna comunicación es
indiferente usar uno u otro, aunque en general es
más claro usar objetos activos
Inactivo
mantener
Mantenimiento
Probar Autodiagno
Perifericos sis
continuar
Espera Orden
tecla pulsada
Contenido
– Introducción
– Modelado estructural
– Modelado del comportamiento
• Modelado Básico
• Modelado Avanzado
• Eventos y Señales
• Máquinas de Estados
• Procesos y Hebras
• Modelado arquitectónico
Procesos y Hebras
Procesos y Hebras
Cada flujo de control independiente se modela
como un objeto activo
Distinguimos dos tipos de objetos activos:
– Procesos: Flujo pesado, que se ejecuta
concurrentemente con otros procesos y que,
normalmente, dispone de un espacio de direcciones
independiente
– Hebras: Flujo que se ejecuta dentro de un proceso. Un
mismo proceso puede tener varios flujos de control que
comparte el espacio de direcciones
Esta distinción coincide con la existente en la
mayoría de los sistemas operativos actuales
(POSIX, NT)
Procesos y Hebras
Procesos y Hebras
Representación Gráfica:
<<active>>
Control comunicacion
Control comunicacion
estado estado
Ultimo mensaje Ultimo mensaje
reset() reset()
Señales Señales
mensaje recibido mensaje recibido
error_enviar error_enviar
error_recibir error_recibir
Procesos y Hebras
Procesos y Hebras
Los estereotipos pueden
tener iconos asignados o
no
Además se puede mostrar
el nombre o el icono o no
distinguirlos de los
elementos normales de
UML
Para definir estereotipos
permanentes es necesario
modificar:
– DefaultStereotypes.ini
– Especificar un nuevo
icono
Procesos y Hebras
Procesos y Hebras
En Rational Rose los objetos activos se pueden especificar
en la definición de la clase, pero no como estereotipo:
2: asincrona
A : proceso B : proceso
active active
5: timeout
4: normal
G:
proceso
1: sincrona active
3: balking
F : otro
sequential
D:
proceso 6: periódico
active
C:
H:
proceso
proceso
active
Sincronización
Aparte de en los mensajes, que ayudan a
especificar la sincronización inherente a la
aplicación, es necesario resolver el
problema de los accesos múltiples
Aparece cuando existe más de un flujo de
control en un objeto:
– Máquinas de estados concurrentes
– Invocaciones de un objeto pasivo por varios
activos
Laclave en este caso es tratar un objeto
como una sección crítica
Departamento de Lenguajes y Ciencias de la
Computación. 157
Ingeniería del Software.
Especificación
Sincronización
– Existen tres enfoques:
• Secuencial: Los emisores
deben de coordinarse
fuera del objeto
• Con guardas: La
integridad del objeto se
garantiza tratando
secuencialmente las
llamadas a las
operaciones con guardas
• Concurrente: La
integridad se garantiza
porque la operación se
ejecuta siempre de forma
atómica
Vistas de procesos
Además de las vistas de casos de uso y lógicas,
es conveniente tener también una vista de
procesos del sistema
valvula :
proceso
visualizar :
leer_temperatura : proceso
proceso
p2: abrir valvula active
active
v1:
c1: actualizar
t1: temp datos compartidos :
controlador :
otro
proceso
guarded
p1: presion
e1:
leer_presion :
estadistica :
proceso
proceso
active
active
t2: calentar
calentador :
proceso
Contenido
– Introducción
– Modelado estructural
– Modelado del comportamiento
– Modelado Arquitectónico
• Componentes y diagramas de componentes
• Diagramas de despliegue
• Patrones y marcos de trabajo
Componentes
Se utilizan para modelar los elementos
físicos que pueden hallarse en un nodo
• Ejecutables
• Bibliotecas
• Tablas
• Archivos
• Documentos
Deben definir abstracciones precisas con
interfaces bien definidos y que permitan la
reemplazabilidad
Componentes
Un componente es una parte física y
reemplazable de un sistema que
implementa un conjunto de interfaces
Gráficamente se representa por
Componente
Componentes
Enmuchos sentidos los componentes son
como las clases:
– Ambos tienen nombre
– Ambos pueden realizar un conjunto de
interfaces
– Ambos pueden participar en relaciones de
dependencia, generalización y asociación
– Ambos pueden anidarse
– Ambos pueden participar en interacciones
Sin embargo, hay diferencias
significativas
Departamento de Lenguajes y Ciencias de la
Computación. 164
Ingeniería del Software.
Especificación
Componentes
Diferencias entre componentes y clases:
– Las clases representan abstracciones lógicas
y los componentes elementos físicos
(secuencias de bits)
– Los componentes residen directamente en un
nodo
– Los componentes representan el
empaquetamiento físico de elementos lógicos
(de un distinto nivel de abstracción)
– Las clases tienen atributos y operaciones
directamente accesibles, los componentes
sólo tienen operaciones alcanzables a través
de sus interfaces
Componentes
La relación entre un componente y las clases que
representa puede especificarse explícitamente
Interfaz CORBA
Cliente
Simulación
(.exe)
Ejecutivo Laminas
Dataview
Componentes e Interfaces
Un interfaz es una colección de operaciones que
se utiliza para especificar un servicio de una
clase o componente
Este concepto a dado lugar a los sistemas
basados en componentes (COM, CORBA, Java
Beans)
Representación standard:
realización
visualizador
Interfaz
dependencia
Departamento de Lenguajes y Ciencias de la
Computación. 167
Ingeniería del Software.
Especificación
Componentes e Interfaces
La existencia de los interfaces rompe la
dependencia entre los componentes
– Un componente que utiliza una interfaz determinada
funcionará adecuadamente independientemente del
componente que realice la interfaz
– El componente que realiza la interfaz es siempre
sustituible por un componente o conjunto de
componentes que implementen dicha interfaz
– Un componente puede utilizarse en un contexto
determinado si y sólo si todas sus interfaces de
importación son suministradas por otros componentes
Tipos de Componentes
Componentes de despliegue
– Los necesarios y suficientes para formar un
sistema ejecutable
• Bibliotecas dinámicas (DLLs) y ejecutables
Componentes producto del trabajo
– Productos finales del proceso de desarrollo
• Archivos de código fuente y archivos de datos a
partir de los cuales se crean los componentes de
despliegue
Componentes de ejecución
– Se crean como consecuencia de un sistema en
ejecución
• Un proceso que se crea a partir de un ejecutable
Tipos de Componentes
Todos los mecanismos de extensibilidad se
pueden aplicar a los componentes (incluidos los
estereotipos)
Especificación de Componentes
parent
interp.cpp signal.cpp
irq.h device.cpp
Contenido
– Introducción
– Modelado estructural
– Modelado del comportamiento
– Modelado Arquitectónico
• Componentes y diagramas de componentes
• Diagramas de despliegue
• Patrones y marcos de trabajo
Despliegue
Los nodos al igual que los componentes son un
elemento fundamental en el modelado físico de
un sistema
Un nodo es un elemento físico que existe en
tiempo de ejecución y representa un recurso
computacional
– Un nodo representa un procesador o un dispositivo
sobre el que se pueden desplegar los componentes
UML proporciona una representación gráfica de
un nodo genérico que se puede particularizar
para representar procesadores y dispositivos
específicos
Diagramas de Despliegue
Un diagrama de despliegue muestra:
– los distintos dispositivos y su interconexión
– la asignación de componentes (procesos, ficheros,...) a
dispositivos
Debe existir un solo diagrama de despliegue por
modelo
Procesador 1 Procesador 2
Dispositivo
Diagramas de Despliegue
Son especialmente utiles para:
– Describir sistemas empotrados, en los que hay gran
cantidad de software interactuado con el hardware
– Modelar sistemas distribuidos, en los que la asignación de
componentes a procesadores puede ser importante
terminal
preemptive
user.exe
10-T Ethernet
Servidor Unidad
RAID
preemptive
dbadmin
tktmstr
RS-232
Consola
Especificación de Procesadores
Especificación de Procesos
Dispositivos y Conexiones
Contenido
– Introducción
– Modelado estructural
– Modelado del comportamiento
– Modelado Arquitectónico
• Componentes y diagramas de componentes
• Diagramas de despliegue
• Patrones y marcos de trabajo
Colaboraciones
Son el elemento básico para describir patrones
de diseño.
Colaboraciones
Una colaboración tiene dos aspectos:
– Estructural: especifica las clases, interfaces o
componentes
• Se organizan utilizando las relaciones normales de UML
(asociaciones, generalizaciones y dependencias)
• Al contrario que los paquetes o subsistemas, no contienen
a sus elementos.
• Puede hacer referencia o utilizar elementos declarados en
distintos sitios
• Se trata de un bloque conceptual de la arquitectura del
sistema
– Comportamiento: dinámica de cómo interactúan estos
elementos
• Se representa mediante diagramas de interacción
• Debe ser consistente con la visión estructural
Colaboraciones
Agente de Transporte
emisor
recibido
IDistribuido
enviarMensaje()
1
1
Cola Mensaje
ID
añadirMensaje() cabecera
quitarMensaje() cuerpo
contar()
colaDeEntrada colaDeSalida
Colaboraciones
1: crear
Colaboraciones
Representación
Paso de Mensajes
Colaboraciones
Colaboraciones
Mecanismos
Un mecanismo o patrón de diseño se modela
como una colaboración parametrizada
Se representan en UML de forma parecida a
como se representan las clases plantilla
Cola Tareas
Sujeto
Sujeto
Observador
BarraDesplazamiento Observador
Observador
Marcos de Trabajo
Es un patrón arquitectónico que proporciona una
plantilla extensible para aplicaciones dentro de
un dominio
Marcos de Trabajo
Un marco de trabajo es algo más grande que un
mecanismo
Se puede concebir como una microarquitectura
que incluye un conjunto de mecanismos que
colaboran para resolver un problema en un
dominio común
Un marco de trabajo se especifica como un
paquete estereotipado.
– Dentro del paquete se pueden ver mecanismos
existentes en cualquiera de las vistas del sistema
– No sólo hay mecanismo, también pueden incluirse
casos de uso, colaboraciones simples,....
Marcos de Trabajo
<<framework>>
Ejecutivo Cíclico
Cliente
Gestor
Gestor de Eventos
Eventos Comunes
Marcos de Trabajo