Está en la página 1de 52

UML Fundamental

Mayo 2004
A pedido del pueblo

Ricardo Contreras A – M. Angélica Pinninghoff J.

1
Aspectos en Ing. de Software
„Identificamos los siguientes temas importantes
en ingeniería de software:
„ modelamiento
„ resolución de problemas
„ adquisición de conocimiento
„ desarrollo racional

Hoy, los aspectos del modelamiento se enfrentan, usando


UML (Unified Modeling Language)

2
UML Básico
„UML emerge como un lenguaje estándar para modelar,
particularmente para modelamiento “object-oriented”.
„Al desarrollar sistemas, usamos UML para representar
tres modelos diferentes del sistema:
„ el modelo funcional, representado vía diagramas de
casos de uso (sistema desde la perspectiva del usuario),
„ el modelo objeto, representado vía diagramas de
clase (estructura del sistema),
„ el modelo dinámico, representado vía diagramas de
secuencia , diagramas “statechart”, y diagramas de
actividad (comportamiento interno del sistema).

3
Diagramas de Casos de Uso

„Representan la funcionalidad del sistema.


„Un caso de uso es una función del sistema que lleva
a un resultado visible para un actor.
„Un actor es cualquier persona u objeto exterior al
sistema que interactúa con él.
„En los diagramas de casos de uso, los actores están
fuera de la frontera del sistema, y los casos de uso,
dentro.
„Los casos de uso se indican con óvalos (elipses).

4
Diagramas de Casos de Uso
„Ejemplo: Diagrama de casos de uso para un reloj
simple.
RelojSimple

LeeHora

Usuario AjustaHora Relojero

CambioPila

5
Diagramas de Clase
„Representan la estructura del sistema.
„Clases especifican la estructura común y el
comportamiento de un conjunto de objetos.
„Objetos

„ son instancias de las clases,

„ se crean, modifican, y destruyen durante la


ejecución del sistema,
„ tienen un estado.

„Diagramas de Clase describen el sistema en


términos de objetos, clases, atributos,
operaciones, y sus asociaciones.

6
Diagramas de Clases
„Ejemplo: Diagrama de Clases para un reloj simple.

RelojSimple
1 1 1 1
2 1 2 1

Botón Display Pila Hora

Los números de la segunda fila indican los links que cada


objeto tiene con un objeto de la clase dada.

7
Diagramas de Secuencia
„Muestran la comunicación entre objetos.
„Los objetos involucrados en un caso de uso se
llaman objetos participantes.
„Un diagrama de secuencia representa las
interacciones que tienen lugar entre esos objetos.
„En un diagrama de secuencia,
‰ columnas representan actividad de actores y
objetos,
‰ flechas rotuladas representan stimuli (mensajes)
que
se envían desde un actor a un objeto o entre
objetos.

8
Diagramas de Secuencia
„Ejemplo: DS para el caso de uso de AjustaHora.

:RelojSimple :Display :Hora

:Usuario
presionaBotón1() parpadeaHoras()

presionaBotón1() parpadeaMinutos()

presionaBotón2() incrementaMinutos()

refresh()

presionaBotones1y2() aceptaNuevaHora()
detieneParpadeo()

9
Diagramas “Statechart”
„Describenel comportamiento de un objeto individual
como un autómata de estado finito, es decir,
‰ un número finito de estados que el objeto puede asumir,
‰ transiciones entre esos estados.
„Aquí, un estado es un conjunto particular de valores
para un objeto.
„Los estados se representan por óvalos.

„Una transición representa un cambio de estado que


ocurre bajo una condición particular.
„Las transiciones se representan por flechas rotuladas
con la transición correspondiente.

10
Diagramas “Statechart”
„Ejemplo: Diagrama “Statechart” para
RelojSimple.
botón2Pulsado
botón1&2Pulsado ParpadeaHoras IncrementaHoras

botón1Pulsado
botón2Pulsado
botón1&2Pulsado ParpadeaMinutos IncrementaMinutos

botón1&2Pulsado botón1Pulsado

botón2Pulsado
DetieneParpadeo ParpadeaSegundos IncrementaSegundos

11
Diagramas de Actividad

„Describen un sistema en términos de actividades.

„Actividades se muestran como estados que representan la


ejecución de un conjunto de operaciones.

„Después de completar una o más actividades, otras


actividades se inician.

„Estos diagramas son similares a los diagramas de flujo.


Representan actividades como óvalos y transiciones entre
actividades como flechas.

12
Diagramas de Actividad
„Ejemplo: Diagrama de Actividad para incidentes
Asignar
Recursos

Abrir Coordinar Archivar


Incidente Recursos Incidente

Documentar
Incidente

Las barras representan la sincronización del flujo de


control.

13
Sistemas, Modelos, y Vistas

„Un sistema es un conjunto estructurado de partes


interactuantes que cumplen un propósito específico.
„Por ejemplo, un robot humanoide consiste de un torso,
una cabeza, dos brazos y dos piernas.
„A su vez estas partes pueden ser consideradas
subsistemas.
„Por ejemplo, la cabeza puede tener un marco metálico,
dos cámaras, dos micrófonos, y un parlante.
„Podemos aplicar esta descomposición
recursivamente para determinar la jerarquía de los
subsistemas.

14
Sistemas, Modelos, y Vistas
„Modelamiento es la forma de tratar con la alta
complejidad de ciertos sistemas.
„Tales sistemas se describen a menudo con múltiples
modelos, donde cada uno representa un aspecto
particular del sistema.
„En general, un modelo se enfoca en aspectos
particulares de un sistema e ignora detalles irrelevantes.
„Debemos construir modelos que son lo suficientemente
simples como para ser fácilmente entendidos por una
sola persona.

15
Sistemas, Modelos, y Vistas
„Podemos usar una vista para visualizar un subconjunto de
un modelo.

U. de Concepción

Depto. de Ingeniería Informática


Departamento de
Ing. Eléctrica Estudiantes
Clases
Profesores

Ejemplo: Vista de un subconjunto de la U. de Concepción


16
Conceptos y Fenómenos
„Un fenómeno es un objeto del mundo como es
percibido, por ejemplo:
„ Clase Grafos y Algoritmos

„ Profesora María Angélica Pinninghoff

„ 6 de mayo de 2004

„Un concepto es una abstracción que describe un


conjunto de fenómenos, por ejemplo:
„ Salas de clases

„ Profesores de la U. de Concepción

„ Fechas

17
Conceptos y Fenómenos
„Un concepto se define como una 3-tupla:
„ su nombre (identifica el concepto),

„ su propósito (las propiedades que determinan si


un fenómeno es o no parte del concepto),
„ sus miembros (el conjunto de fenómenos que
forman parte del concepto).
„Ejemplo:

„ Universidad es el nombre del concepto.


„ Formación de profesionales es el propósito de
una universidad.
„ U. de Concepción y Universidad de Harvard
son miembros del concepto de universidad.

18
Conceptos y Fenómenos
„Abstracción es la clasificación del fenómeno en
conceptos.

„Modelamiento es el desarrollo de abstracciones que


pueden usarse para responder preguntas específicas
sobre un conjunto de fenómenos.

„Modelamiento es lo que usted hace como ingeniero de


software cuando diseña un sistema software.

„Usted abstrae conceptos desde el dominio de la


aplicación (el ambiente del sistema) y desde el dominio
solución (tecnologías) para derivar un modelo simple
que sea fácil de entender.
19
Tipos de Datos e Instancias
„En los lenguajes de programación, los tipos de
datos se usan como conceptos:
„ Un tipo de dato tiene un nombre que lo
identifica,
„ Un tipo de dato tiene un propósito (estructura y
operaciones sobre sus miembros),
„ Un tipo de dato tiene miembros.

„Un tipo abstracto de dato es un tipo de dato


cuya estructura e implementación permanece
oculta al resto del sistema.
„Una instancia es cualquier miembro de un TD
específico.

20
Clases
„En LPs orientados a objetos, las clases se usan
como conceptos (abstracciones).
„Clases son como TAD en términos de
encapsulamiento de la estructura y comportamiento.
„A diferencia de los TAD, las clases se pueden
derivar de otras clases usando generalización.
„Imaginemos que desarrollamos un reloj para
“surfear” en la Web.
„Entonces la clase WebReloj podría ser un
refinamiento de la clase Reloj.

21
Clases
„Este tipo de relación entre dos clases se llama
generalización.
„La clase base (Reloj) se llama superclase, y la clase
refinada se llama subclase (WebReloj).
„La subclase refina la superclase agregando
atributos y operaciones (o modificando las
existentes).
„En los diagramas de clase de UML, clases y
objetos se muestran como cajas con tres
compartimentos que contienen
„ el nombre de la clase u objeto (object:Class),

„ sus atributos,

„ sus operaciones.

22
Clases
Reloj

hora
fecha WebReloj
AjusteFecha(d)
URLactual

IngreseURL(u)
VirusScan()

„En UML el triángulo apunta a la superclase, y el otro


extremo de la flecha a la subclase.
„Los compartimentos 2 y 3 pueden ser omitidos.

23
Clases
„Un objeto es una instancia de una clase; cada objeto
pertenece exactamente a una clase.
„En UML, los nombres de las instancias se subrayan.

<<instanceOf>>
miReloj:Reloj Reloj

<<instanceOf>>
miRelojChoro:WebReloj WebReloj

24
Clases eventos, Eventos, y Mensajes

„Clases Eventos representan eventos para los


cuales el sistema tiene una respuesta común.
„Un evento es una ocurrencia relevante en el
sistema.
„Por ejemplo, eventos son stimuli desde un actor
o mensajes enviados desde un objeto a otro.
„Un mensaje consiste de un nombre y un número
de argumentos.
„Al enviar un mensaje, un objeto solicita la
ejecución de una operación particular en el objeto
receptor.

25
Clases eventos, Eventos, y Mensajes
„Ejemplo: Diagrama de secuencia para envío de mensajes.

:RelojSimple :Hora :HoraZona

:Usuario
pulsaBotón3() ObtieneHora()

HoraGMT

obtieneDeltaHora()

DeltaHora

26
Alto para un breve resumen
„UML surge como un lenguaje estándar, particularmente
para modelamiento OO.
„Para desarrollar sistemas, se usa UML para representar
tres modelos diferentes del sistema:
„ el modelo funcional, representado vía diagramas de
casos de uso (sistema desde la perspectiva del usuario),
„ el modelo objeto, representado vía diagramas de
clase (estructura del sistema),
„ el modelo dinámico, representado vía diagramas de
secuencia, diagramas de estado, y diagramas de
actividad (comportamiento interno del sistema).

27
UML Detallado : Diagramas de Casos de Uso
„Ejemplo: Diagrama de casos de uso para un reloj
simple.
RelojSimple

LeeHora

Usuario AjustaHora Relojero

CambiaPila

28
UML Detallado : Diagramas de Casos de Uso

„ Se usa durante la detección de los requerimientos para


representar el comportamiento externo
„ Actores representan roles, o sea, un tipo de usuario del
sistema.
„ Casos de Uso representan una secuencia de interacciones
para un tipo de funcionalidad.
„ El modelo de casos de uso es el conjunto de todos los casos
de uso. Es una descripción completa de la funcionalidad del
sistema y su ambiente

29
Actores
„Unactor modela una entidad externa que se
comunica con el sistema:
‰ Usuario
‰ Sistema externo
‰ Ambiente físico
„ Un actor tiene un nombre único y una descripción
opcional.
„Ejemplos:

„ Pasajero: Una persona en el tren


„ Satélite GPS: Suministra al sistema las coordenadas
GPS

30
Casos de Uso
„Un caso de uso representa una clase de funcionalidad
provista por el sistema como un evento flujo.

„ Un caso de uso consiste de:


‰ Un nombre único
‰ Actores participantes
‰ Condiciones de entrada
‰ Flujo de eventos
‰ Condiciones de salida
‰ Requerimientos especiales

31
Casos de Uso: Ejemplo
„Nombre: Flujo eventos:
„Compra de pasaje 1. Pasajero selecciona el número
de zonas por las que viajará.
„Actor paricipante: 2. Distribuidor indica el monto
Pasajero
del pasaje.
3. Pasajero inserta dinero al
„Condic. de entrada: menos por el monto.
„Pasajero parado frente
4. Distribuidor da vuelto.
a la ventanilla.
5. Distribuidor entrega pasaje.
„Pasajero tiene suficiente
dinero para comprar el
pasaje.

32
La relación <<extend>>

„La relación <<extend>> representa casos


excepcionales o muy raramente invocados.
„Los flujos de eventos excepcionales, por claridad,
se expresan fuera del flujo principal.
„Los casos de uso que representan flujos
excepcionales pueden extenderse a más de un
caso de uso.
„La dirección de una relación <<extend>> es hacia
el caso de uso extendido.

33
La relación <<extend>>

Pasajero

CompraPasaje

<<extend>> <<extend>>

<<extend>>

Error <<extend>> TiempoExcedido

Cancelar SinVuelto

34
La relación <<include>>

„Una relación <<include>> representa un comportamiento


considerado fuera de los casos de uso.

„Un <<include>> representa comportamiento considerado


aparte para poder ser reusado, no porque sea una
excepción.

„La dirección de una relación <<include>> es desde el


caso de uso (a diferencia de la relación <<extend>>).

35
La relación <<include>>

Pasajero

CompraPasajeMúltiple

CompraPasajeSimple
<<include>>
<<include>>

<<extend>> RecibeDinero <<extend>>

SinVuelto Cancela

36
UML en Detalle: Diagramas de Clase

„Ejemplo: Diagrama de clase para un reloj simple.

RelojSimple
1 1 1 1
2 1 2 1
PulsaBotón Display Pila Hora

37
UML en Detalle: Diagramas de Clase

„ Representan la estructura del sistema.


„ Se usan
‰ durante el análisis de requisitos para modelar conceptos del
dominio del problema,
‰ durante el diseño del sistema para modelar subsistemas e
interfaces,
‰ durante el diseño de objetos para modelar clases.

38
Clases
„Una clase representa un concepto.
„Una clase encapsula estados (atributos) y
comportamiento (operaciones).
„Cada atributo tiene un tipo.

„Cada operación tiene una signature


‰ (la tupla constituida por los tipos de sus parámetros y el tipo
del valor retornado)
„El nombre de la clase es la única información obligatoria.

TarifaSchedule TarifaSchedule
Tabla zona2precio zona2precio TarifaSchedule
Enumeración obtieneZonas() obtieneZonas()
Precio obtienePrecio(Zona) obtienePrecio()

39
Instancias
Una instancia representa un fenómeno.
El nombre de una instancia va subrayado y puede
contener la clase de la instancia.
Los atributos son representados por sus valores.

tarifa_2004:TarifaSchedule

zona2precio = {
{‘1’, .20},
{‘2’, .40},
{‘3’, .60}}

40
Asociaciones
Asociaciones denotan relaciones entre clases.
La multiplicidad de una asociación final denota cuántos
objetos puede referenciar legítimamente el objeto fuente.

Tiene-capital
País Ciudad
1 1
nombre:String nombre:String
asociación
1-a-1

Polígono Punto
1 *
x:Integer
dibuja() asociación y:Integer
1-a-muchos

41
Agregación
Una agregación es un caso especial de asociación que
denota una jerarquía “consiste de”.
El agregado es la clase padre, los componentes son las
clases hijas.

Sistema Vapor

1 0..2
Calentador Cañería

42
Generalización
„Las relaciones de generalización denotan herencia
entre clases.
„Las clases hijas heredan los atributos y operaciones
de la clase padre.
„La generalización simplifica el modelo al eliminar
redundancias.

Botón

BotónCancelar BotónZona

43
UML en detalle: Diagramas de secuencia
„Ej: Diagrama de secuencia para el caso de uso MiHora.

:RelojSimple :Display :Hora

:RelojUsuario
presionaBotón1() parpadeaHoras()

presionaBotón1() parpadeaMinutos()

presionaBotón2() incrementaMinutos()

refresh()

presionaBotones1y2() aceptaNuevaHora()
detieneParpadeo()

44
UML en Detalle: Diagramas de Secuencia

„ Se usa durante el análisis de requerimientos


‰ para refinar las descripciones de casos de uso,
‰ para encontrar objetos adicionales (“objetos participantes”)
„ Se usa durante el diseño del sistema para refinar las
interfaces de los subsistemas.
„ Clases se representan por columnas

„ Mensajes se representan por flechas

„ Activaciones se representan por rectángulos delgados

„ Lifelines se representan por líneas punteadas

45
Observaciones a Diagramas de Secuencia

„ Diagramas de secuencia en UML representan comportamiento


en términos de interacciones.
„ Complementan los diagramas de clase que representan
estructura.
„ Utiles para encontrar objetos participantes.

„ Consumen tiempo en su construcción pero son valiosos.

46
UML en Detalle: Diagramas de Estado
„Ejemplo: Diagrama de Estado para RelojSimple.

Botón2Presionado
botones1&2Presionados
ParpadeaHoras IncrementaHoras

botón1Presionado

botón2Presionado
botones1&2Presionados
ParpadeaMinutos IncrementaMinutos

botones1&2Presionados botón1Presionado

botón2Presionado
DetieneParpadeo ParpadeaSegundos IncrementaSegundos

47
Diagramas de Actividad
„Ejemplo: Diagrama de actividad para manejar incidentes

Atribuye
Recursos

Abre Coordina Archiva


Incidente Recursos Incidente

Documenta
Incidente

Las barras celestes representan la sincronización del flujo


de control

48
Diagramas de Actividad
„Un diagrama de actividad muestra flujo de control en un sistema
„Un diagrama de actividad es un caso especial de un diagrama de
estados donde los estados son actividades (“funciones”)
„Dos tipos de estado:

‰ Estado acción:
„ No puede ser descompuesto

„ Ocurre “instantáneamente” con respecto al nivel


de abstracción usado en el modelo
‰ Estado actividad:
„ No puede ser descompuesto

„ La actividad es modelada por otro diagrama de


actividad

49
Diagramas de Actividad: Decisiones de
Modelamiento
Abre [bajaPrioridad] Asigna
Incidente Recursos
[fuego & altaPrioridad]

[no fuego & altaPrioridad]


Notifica Jefe
de Bomberos

Notifica Jefe
de Policía

Las decisiones se representan con rombos con una o más


flechas llegando y múltiples flechas saliendo

50
Modelamiento con UML: Resumen
„UML suministra gran variedad de notaciones para
representar muchos aspectos del desarrollo de software
„ Es un lenguaje complejo pero poderoso

„ Puede ser mal usado generando modelos ilegibles

„ Dificulta la comprensión si se usan muchas


características “exóticas”
„Es necesario concentrarse en pocos elementos:
„ Modelo funcional: diagramas casos de uso

„ Modelo objeto: diagrama de clase

„ Modelo dinámico: diagramas de secuencia, de estados


y de actividad

51
Fin

„ Ojalá les sirva…

52