Introducción al
Lenguaje de Modelado
UML
Prof. Roxana Giandini
LIFIA
-
Facultad de Informática - UNLP
Prof. R. Giandini Setiembre 2015
Unified Modeling Language
Prof. R. Giandini Setiembre 2015
M
odelos en Ingeniería
• Todas las ingenierías han usado y usan modelos
científicos (matemáticos, físicos, etc.) para
alcanzar mayor confiabilidad con mucho éxito.
• Sin embargo, en las ingenierías “clásicas” la
Prof. R. Giandini Setiembre 2015
M
odelos en
Software
•Usamos modelos con diferentes propósitos:
•Para entender
•Para comunicar
•Para documentar, bosquejar y planear
Modelos como “Bosquejos”
•Para analizar y predecir
Modelos como “Guías”
•Eventualmente para producir software
Prof. R. Giandini Setiembre 2015
Ayudan a la comprensión de sistemas complejos
Indican QUE hará el sistema pero NO COMO lo hará
Ayuda a la corrección de errores
Ayuda a la evolución y reuso
Esencial para la comunicación entre miembros de un equipo
Prof. R. Giandini Setiembre 2015
U
nificado
Un poco de historia
• A mediados de los noventa existían muchos métodos de
Análisis y Diseño OO
Mismos conceptos con distinta notación
Mucha confusión
No existía un lenguaje líder de modelado
• En 1994 deciden unificar sus
métodos:
U
nified
M
odeling
L
anguage (UML)
• Proceso de estandarización promovido por OMG en 1997
G. Booch (Método Booch)
J. Rumbaugh (OMT)
Prof. R. Giandini Setiembre 2015
• En la unificación se adopta un
Lenguaje Gráfico estándar
• Como toda definición de Lenguaje, posee:
Sintaxis:
determina las reglas de construcción de los diagramas de modelado.
Provee base formal para los diagramas (metamodelo, OCL).
Semántica:
otorga la descripción detallada del significado conceptual de cada
elemento de modelado.
Prof. R. Giandini Setiembre 2015
¿ Qué es entonces
UML ?
UML
es un lenguaje estándar para:
visualizar
especificar
construir
documentar
los artefactos de un sistema.
Prof. R. Giandini Setiembre 2015
•Útil en las diferentes etapas del ciclo de vida del desarrollo
de sistemas.
Prof. R. Giandini Setiembre 2015
• Independiente del proceso de desarrollo de software.
L
enguaje
U
nificado de
M
odelado
Prof. R. Giandini Setiembre 2015
• Independiente del lenguaje de implementación.
L
enguaje
U
nificado de
M
odelado
Prof. R. Giandini Setiembre 2015
•Un estilo
•Un lenguaje
•Un proceso
•Herramientas
O.O.
UML
UP
Together / UMLet /
Rational Modeler/ EA
Prof. R. Giandini Setiembre 2015
Utilidades de UML
UML permite:
• Definir los límites del sistema y sus principales funciones,
mediante Casos de Uso y actores.
• Ilustrar el funcionamiento de un caso de uso mediante
Diagramas de Interacción
• Representar la estructura de un sistema mediante
Diagramas de Clases.
Prof. R. Giandini Setiembre 2015
Utilidades de UML
UML permite:
• Describir la arquitectura de la implementación física con
Diagramas de Componentes y Despliegue.
• Extender la funcionalidad de elementos estándar mediante
estereotipos.
Prof. R. Giandini Setiembre 2015
Diagramas de UML 2.0
Diagrama de Estructura Compuesta Diagrama de Estructura Paquete Diagrama de Componentes Diagrama de Despliegue Diagrama de Objetos Diagrama de Clases Diagrama de Secuencias
Diagrama General de Interacción
Diagrama de Tiempos
Diagrama de Comunicación
Diagrama de Máquina De Estados
Diagrama de Actividad
Prof. R. Giandini Setiembre 2015
• Elementos
• Relaciones
• Diagramas
UML: bloques de construcción
Clase - Interfaz - Estructura Compuesta - Caso de Uso Clase Activa - Componente - Nodo
Interacción - Máquina de Estados - Actividad
Paquetes - Frame
Notas Dependencia Asociación Generalización Estructurales De Comportamiento De Agrupación De Anotación
De Instancia Objetos
Diagrama de Clases Diagrama de Objetos
Diagrama de Estructura Compuesta Diagrama de Paquetes
Diagrama de Componente Diagrama de Despliegue Diagrama de Casos de Uso
Diagrama de Máquina de Estados Diagrama de Actividades
Prof. R. Giandini Setiembre 2015
Diagramas de Casos de Uso
Diagramas Estáticos
Diagrama de Clases
Diagrama de Objetos
Diagrama de Estructuras Compuesta
Diagrama de Paquetes
Diagramas de Comportamiento
Diagrama de Máquina de Estados
Diagrama de Actividades
Diagrama de Interacción:
Diagramas de Secuencia
Diagramas de Comunicación
Diagramas de Tiempo
Diagramas de Vista Global
Diagramas de Implementación
Diagrama de Componentes
Diagrama de Despliegue
Prof. R. Giandini Setiembre 2015
Definición
:
Un diagrama de interacción describe una
interacción, que consta de un conjunto de objetos y
sus relaciones, incluyendo los mensajes que se
pueden enviar, para realizar un comportamiento.
•
Diagramas de Colaboración:
•
Diagramas de Secuencia:
Diagramas de Interacción: tipos
•Objetos
•Enlaces
•Mensajes
•
Pueden contener:
notas y restricciones.
Diagramas de Interacción: contenido
•Los objetos que participan en una interacción son o
bien elementos concretos o bien elementos
prototípicos.
•
Ejemplos
:
Cuenta cuenta:CuentaInstancia
anónima
Instancia con
nombre
Diagramas de Interacción: objetos
•Un enlace es una conexión semántica entre objetos.
•
Ejemplos
Persona
+calcularCompensacion
+asignar(d:Departamento
Empresa
1..* empleado * patrónp:Persona
:Empresa
clase
clase
asociación
operaciones
enlace
objeto con
nombre
objeto
anónimo
Diagramas de Interacción: enlaces
Diagramas de Interacción
Diagrama de Secuencia
•
Definición:
Un diagrama de secuencia destaca la ordenación
temporal de los mensajes.
Diagrama de Secuencia
•Cada objeto cuenta con una
línea de vida
, que muestra
el tiempo de vida del mismo.
•La
activación
de un objeto representa la ejecución de
una operación que realiza el mismo, a través del envío
de un
mensaje
.
•
Notación:
objetoA:ClaseA
objeto
tiempo de vida
activación
Mensajes
objetoA:ClaseA
:ClaseB
Invocación
Local
Mensaje Sincrónico
Mensaje
Asíncrono
Linea de Retorno
(opcional)
Mensajes
Mensaje sincrónico
•
Sintaxis:
[Número de secuencia] [condición] * [expresión iteración] [valor de
retorno :=] nombre del mensaje (parámetros)
• Puede indicarse el fin de su ejecución con una línea
punteada del objeto receptor al emisor:
Línea Retorno/
Resultado
Esta línea es
OPCIONAL
(en caso que se
especifique correctamente la
Activación
del objeto
Receptor).
• El
Resultado o Valor de Retorno
también puede
especificarse a izquierda del nombre del mensaje, en una
asignación (ver
Sintaxis
), en caso que No se haya
especificado la línea Retorno.
Bifurcaciones
objetoA:ClaseA
:ClaseB
:ClaseC
[cond1] mensajeCond1()
[cond2] mensajeCond2()
Iteración o bucle
•
Sintaxis:
* [expresión-iteración ] mensaje
•
Ejemplo:
v:Vendedor
:LíneaProducto
*[1..8] verificarLínea()
Diagrama de Secuencia: construcción
•
Primer Paso:
Se colocan los objetos que participan en
la interacción en la parte superior del diagrama.
•
Ejemplo
a:AyudaPlanificación
:Cliente
Diagrama de Secuencia: construcción
•
Segundo Paso:
se colocan los mensajes que estos
objetos envían y reciben, en orden de sucesión en el
tiempo, desde arriba hasta abajo.
•
Ejemplo
a:AyudaPlanificación :Cliente :AgenteViaje notificar() objeto establecerItinerario() calcularRuta() mensaje destrucción <<destroy>> retorno <<create>> creación mensaje mensaje (invocación local)•Se encierra en un rectángulo y se le agrega una
etiqueta con
sd
seguido del nombre.
borra
sd Nombre
:Objeto1
:Objeto2
crea
mensaje
autodelegación
Diagrama de Secuencia: notación
•
Definición
:
mecanismo a través del cual se puede realizar la
especificación de bloques repetitivos, opcionales,
alternativos, entre otros.
•
Operadores más utilizados:
- ref opt alt loop
Diagrama de Secuencia: fragmentos
Fragmento: alternativa
•
Notación
: se encierra en un rectángulo (
frame
), se le
agrega una etiqueta con el operador
alt
y se colocan
las guardas.
•
Ejemplo
[guard 1]
sd Nombre
:Clase1 :Clase2Mensaje4
alt
Mensaje3
Mensaje2
Mensaje1
[guard 2]
•
Notación
: se encierra en un rectángulo (
frame
), se le
agrega una etiqueta con el operador
loop
y la cantidad
de iteraciones (opcional).
•
Ejemplo
Fragmento: bucle
:Clase1 :Clase2
Mensaje1
Mensaje2
Mensaje3
Mensaje4
Loop 1..7
sd Nombre
Diagrama de Secuencia: ejemplo
Estudiante
:Registrador :AdmDeEstudiantes :AdmDeCursos
tomarUnCurso(e,c)
p:= obtenerPreRequisitos(c)
ok:= validarCondicEstudiante(e,c)
informarRechazo (mensaje1)
<<destroy>>
ok2:= validarEstadoCurso (c) [notok2]
informarRechazo(msg2)
sd Tomar un
Curso
alt [not ok]
[ok]
Prof. R. Giandini Setiembre 2015
Ejemplo: Depósito bancario
:Banco
unaCuenta: CuentaBancaria
depositar:unMonto
depositar:unMonto
Prof. R. Giandini Setiembre 2015
Ejemplo: Transferencia bancaria
:CuentaBancaria
otraCuenta: CuentaBancaria
extraer:unMonto
depositar:unMonto
transferir:unMonto
Prof. R. Giandini Setiembre 2015
Diagrama de Clases
Definición:
Un diagrama de clases muestra las clases del sistema
y sus relaciones. Describe la vista estática de un
sistema.
Prof. R. Giandini Setiembre 2015
•
¿Qué es una clase?
Una clase es una descripción de un conjunto de
objetos
que
comparten los mismos atributos, operaciones, relaciones y
semántica.
•
Estructura:
NombreClase
Atributos
Operaciones
Prof. R. Giandini Setiembre 2015
•
¿Cómo podemos proteger los datos?
El encapsulado es el principio para ocultar datos
(data hiding
).
La visibilidad puede ser:
Privada (-): objetos donde está definido el atributo u
operación.
Protegida (#): objetos de las subclases.
Pública (+): objetos de cualquier clase.
Prof. R. Giandini Setiembre 2015
Clase: atributo
Sintaxis
[visibilidad] nombre [multiplicidad][:tipo][=valor inicial][{lista_propiedades}]
Propiedades:
- changeable
- addOnly
- frozen
Ejemplos
id nombre responsable géneroRepresentación
-id: Integer {frozen} +nombre:String
responsable [1..2]:String #genero:String=musical
Prof. R. Giandini Setiembre 2015
Clase: operación
•
Sintaxis
[visibilidad] nombre[(lista de parámetros)][:tipo de retorno][{propiedades}]
• Declaración de un parámetro:
[dirección] nombre :tipo [multiplicidad][=valor]
• Donde dirección puede ser:
-
in
: la operación puede modificar el parámetro y el que
llama no necesita volver a verlo.
-
out
: la operación coloca o cambia el parámetro y lo
devuelve al que llama.
Prof. R. Giandini Setiembre 2015
Clase: operación
Propiedades
– isQuery
– ….
Ejemplos
Representación
nuevaRep() nombreRep() estaVigente()
Representación
+nuevaRep(in nombre:String) #nombreRep()
Prof. R. Giandini Setiembre 2015
Diagrama de clases: relaciones
¿Qué son las relaciones entre clases?
Una relación es una conexión semántica entre objetos.
Proveen un camino de comunicación entre ellos.
¿Qué tipos de relaciones existen?
• Asociación
Prof. R. Giandini Setiembre 2015
Diagrama de clases: relaciones
•
Notación:
• Asociación
• Agregación
• Composición
• Generalización
• Dependencia
Prof. R. Giandini Setiembre 2015
Relaciones: Asociación
¿Qué es una Asociación?
Es una relación estructural que especifica que los objetos de
un elemento están conectados con los objetos de otro.
Prof. R. Giandini Setiembre 2015
Asociación: propiedades (cont.)
Multiplicidad:
indica “cuántos” objetos pueden conectarse
a través de una instancia de una asociación.
•
Se puede indicar una multiplicidad de:
–
Exactamente Uno:
–
Cero o Uno:
–
Muchos:
–
Uno o Más:
–
Número Exacto:
–
Lista:
–
Rango:
A
A
A
A
A
A
B
B
B
B
B
B
1 0..1 0..* 1..* 3 0..1,3..5,7..9Prof. R. Giandini Setiembre 2015
•
Rol: son las caras que presentan las clases a las demás.
•
Navegabilidad: sirve para limitar la navegación a una sola
dirección.
•
Visibilidad: sirve para limitar la visibilidad a trav
é
s de esta
asociaci
ó
n relativa a los objetos externos a ella.
•
P
ú
blica (+)
•
Protegida (#)
•
Privada (-)
Asociación: propiedades
Usuario
1 propietario *Clave
GrupoUsuarios
* *Usuario
1 *Clave
Prof. R. Giandini Setiembre 2015
Asociación: propiedades (cont.)
Agregación:
es una asociación especial, una relación del tipo
“todo/parte” dentro de la cual una o más clases son partes de
un todo.
Ejemplo:
Equipo
Miembro
Todo
Parte1
Parte2
Todo
Parte1
Parte2
Prof. R. Giandini Setiembre 2015
Asociación: propiedades (cont.)
Composición:
es una forma de agregación, con fuerte
sentido de posesión y tiempo de vida coincidentes de las
partes con el conjunto.
– Una parte puede pertenecer solamente a una
composición (un
todo
).
– Cuando el todo desaparece, también lo hacen sus
partes.
Todo
Prof. R. Giandini Setiembre 2015
Asociación: propiedades (cont.)
Ejemplos de Agregación y Composición
Polígono
Estilo
Color estáLleno
Punto
Círculo
radio
3..*
*
1 1
* 1..*
Prof. R. Giandini Setiembre 2015
Asociación: notación accesoria
•
Nombre: indica la naturaleza de la asociación. Puede estar
acompañado de un triángulo que apunta en la dirección que
debe leerse.
•
Ejemplo
Espectador
compraEntrada
FormaDePago
Prof. R. Giandini Setiembre 2015
¿Qué es una Generalización?
Es una relación entre un elemento general (llamado
superclase o padre) y un caso más específico de ese
elemento (llamado subclase o hijo).
Ejemplo
Relaciones: Generalización
Representación
nombreRep() vigenteHasta()Recital
vigenteHasta()ObraDeTeatro
vigenteHasta()MuestraArtística
vigenteHasta()Prof. R. Giandini Setiembre 2015
Generalización
•
Ejemplo con discriminador
Vehículo
PorViento
propulsión
PorMotor
SobreAgua
SobreTierra
Tractor
Velero
propulsión
Prof. R. Giandini Setiembre 2015
Elementos de anotación
•
¿Qué es una nota?
Es un símbolo para mostrar restricciones y comentarios
junto a un elemento o una colección de elementos.
•
Ejemplo
Persona
empleado * trabajo 1Compañia
jefe
1..* 1
{
Persona.trabajo = Persona.jefe.trabajo
}
Prof. R. Giandini Setiembre 2015