12.05.2013 Views

Modelado de Software con UML2.0 - Universidad Autónoma de ...

Modelado de Software con UML2.0 - Universidad Autónoma de ...

Modelado de Software con UML2.0 - Universidad Autónoma de ...

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

<strong>Mo<strong>de</strong>lado</strong> <strong>de</strong> <strong>Software</strong> <strong>con</strong><br />

<strong>UML2.0</strong><br />

Introducción<br />

http://uml.org<br />

Esther Guerra, Juan <strong>de</strong> Lara<br />

{Esther.Guerra, Juan.<strong>de</strong>Lara}@uam.es<br />

Ingeniería g Informática<br />

<strong>Universidad</strong> <strong>Autónoma</strong> <strong>de</strong> Madrid<br />

Unified Mo<strong>de</strong>ling Language Language. Estándar <strong>de</strong> la OMG<br />

(http://www.uml.org)<br />

Notación estándar para<br />

orientados a objetos, a<br />

mo<strong>de</strong>lado más <strong>con</strong>ocidos:<br />

Booch - OOD.<br />

Rumbaugh -OMT.<br />

la <strong>de</strong>scripción<br />

partir <strong>de</strong> los<br />

<strong>de</strong> sistemas<br />

lenguajes <strong>de</strong><br />

Jacobson - OOSE y Objectory Objectory.<br />

Combina las mejores propieda<strong>de</strong>s <strong>de</strong>:<br />

Conceptos <strong>de</strong> mo<strong>de</strong>los <strong>de</strong> datos (ERD)<br />

Mo<strong>de</strong>los <strong>de</strong> negocios (workflow)<br />

Mo<strong>de</strong>los <strong>de</strong> Objetos j<br />

Mo<strong>de</strong>los <strong>de</strong> Componentes<br />

1<br />

3<br />

Indice<br />

Introducción.<br />

Diagramas g <strong>de</strong> Clases y Objetos. j<br />

Otros Diagramas.<br />

OCL<br />

Acción Semántica.<br />

Perfiles.<br />

Bibliografía<br />

Lecturas sugeridas/ejercicios.<br />

Introducción<br />

LLenguaje j gráfico áfi para visualizar, i li especificar, ifi <strong>con</strong>struir t i y<br />

documentar partes <strong>de</strong> un sistema software <strong>de</strong>s<strong>de</strong><br />

distintos puntos p <strong>de</strong> vista.<br />

Pue<strong>de</strong> utilizarse:<br />

Con cualquier proceso <strong>de</strong> <strong>de</strong>sarrollo.<br />

A lo largo <strong>de</strong> todo el ciclo <strong>de</strong> vida.<br />

Con distintas tecnologías <strong>de</strong> implementación<br />

Uso también en otras áreas, , como la ingeniería g <strong>de</strong><br />

negocio, mo<strong>de</strong>lado <strong>de</strong> procesos, etc.<br />

Adaptación/Extensión mediante perfiles.<br />

2<br />

4


Introducción<br />

No es un método, método ni un proceso ni una metodología.<br />

metodología<br />

No establece qué mo<strong>de</strong>los <strong>con</strong>struir en el proceso <strong>de</strong><br />

<strong>de</strong>sarrollo.<br />

PPara un óptimo ó ti aprovechamiento, h i t d<strong>de</strong>be b ser usado d en un<br />

proceso:<br />

guiado por casos <strong>de</strong> uso,<br />

centrado en la arquitectura<br />

arquitectura,<br />

iterativo e incremental.<br />

Vistas<br />

Vi Vista t d<strong>de</strong> CCasos d<strong>de</strong> UUso<br />

Funcionalidad externa <strong>de</strong>l sistema<br />

Vi Vista t Ló Lógica i<br />

Estructura estática y <strong>con</strong>ducta dinámica <strong>de</strong>l sistema<br />

Vi Vista t d<strong>de</strong> CComponentes t<br />

Organización modular en componentes<br />

Vi Vista t d<strong>de</strong> CConcurrencia i<br />

Comunicaciones y sincronización<br />

Vi Vista t d<strong>de</strong> DDespliegue li<br />

Arquitectura física<br />

5<br />

7<br />

Mo<strong>de</strong>los<br />

Familia <strong>de</strong> notaciones, útiles para <strong>de</strong>scribir<br />

distintos aspectos p <strong>de</strong> un sistema:<br />

Estático Estático. Describe los elementos <strong>de</strong>l sistema y<br />

sus relaciones.<br />

Dinámico. Describe el comportamiento <strong>de</strong>l<br />

sistema a lo largo <strong>de</strong>l tiempo tiempo.<br />

Casos Casos <strong>de</strong> Uso Uso. Des<strong>de</strong> el punto <strong>de</strong> vista <strong>de</strong>l usuario usuario.<br />

Mo<strong>de</strong>los<br />

Tipos <strong>de</strong><br />

Diagramas<br />

Mo<strong>de</strong>los<br />

UML<br />

6<br />

8


Tipos <strong>de</strong> Diagramas<br />

Indice<br />

Introducción<br />

Introducción.<br />

Diagramas <strong>de</strong> Clases y Objetos.<br />

Otros Diagramas.<br />

OCL.<br />

Acción Semántica.<br />

Perfiles Perfiles.<br />

Bibliografía<br />

Lecturas sugeridas/ejercicios.<br />

9<br />

11<br />

Tipos <strong>de</strong> Diagramas<br />

¿Cómo ¿ estamos seguros g <strong>de</strong> que q la<br />

composición <strong>de</strong> un <strong>con</strong>junto <strong>de</strong> diagramas es<br />

correcta, es <strong>de</strong>cir, que los mo<strong>de</strong>los son<br />

<strong>con</strong>sistentes?<br />

<strong>con</strong>sistentes?.<br />

¿Cómo po<strong>de</strong>mos comprobar ciertas<br />

propieda<strong>de</strong>s <strong>de</strong> nuestro sistema global?<br />

¿Cuál es la semántica precisa <strong>de</strong> los diagramas<br />

y <strong>de</strong> sus combinaciones?<br />

UML vs. Lenguajes Específicos <strong>de</strong> Dominio.<br />

Clases y Objetos<br />

LLos di diagramas d<strong>de</strong> Cl Clases y d<strong>de</strong> Obj Objetos t son llos principales i i l<br />

modos <strong>de</strong> representar los aspectos estructurales en UML.<br />

Diagramas <strong>de</strong> clases. Estructura <strong>de</strong>l sistema.<br />

Clases.<br />

Atributos: Tipos, valores iniciales.<br />

Operaciones: visibilidad.<br />

Relaciones <strong>con</strong> otras clases: Asociaciones<br />

Diagramas <strong>de</strong> objetos. Estructura <strong>de</strong>l sistema en tiempo<br />

<strong>de</strong> ejecución.<br />

Objetos. Instancias <strong>de</strong> una Clase.<br />

Atributos (valores actuales) actuales).<br />

Links. Relaciones entre objetos, instancias <strong>de</strong> asociaciones.<br />

10<br />

12


Clases y Objetos<br />

Diagrama <strong>de</strong><br />

clases l<br />

Diagrama <strong>de</strong><br />

objetos<br />

Clases<br />

Atributos<br />

Carbono<br />

Notación para p atributos:<br />

Elemento<br />

:Hidrógeno<br />

Hidrógeno<br />

:Hidrógeno<br />

:Hidrógeno :Carbono :Carbono<br />

:Hidrógeno<br />

:Hidrógeno :Hidrógeno<br />

[visibilidad] [/] nombre [: tipo] [multiplicidad] [= valor] [{ propiedad }]<br />

Visibilidad (opcional):<br />

Pública: +<br />

Privada: -<br />

Protegida: #<br />

Paquete: ~<br />

“/” indica que el atributo es <strong>de</strong>rivado.<br />

La multiplicidad va entre [ ] y por <strong>de</strong>fecto vale 1.<br />

Propieda<strong>de</strong>s válidas: {readOnly} {readOnly}, {union} {union}, {subsets },<br />

{re<strong>de</strong>fines }, {or<strong>de</strong>red}, {bag}, {seq},<br />

{sequence}, y {composite}.<br />

Un atributo subrayado es estático.<br />

13<br />

15<br />

Clases y Objetos<br />

Nombre<br />

<strong>de</strong> la clase<br />

visibilidad<br />

Circulo<br />

-radio: double<br />

-centrox: t double d bl<br />

-centroy: double<br />

+Area(): double<br />

+Perímetro(): double<br />

At Atributos ib t<br />

Operaciones<br />

Nombre<br />

d<strong>de</strong>l l objeto bj<br />

unCirculo: Circulo<br />

Clase<br />

<strong>de</strong>l objeto<br />

radio = 3.4<br />

centrox = 20 2.0<br />

centroy = 2.0<br />

Valores <strong>de</strong><br />

los atributos<br />

Clases<br />

Ejemplo atributos<br />

ClaseA<br />

name: String<br />

shape: Rectangle<br />

+ size: Integer [0..1]<br />

/ area: Integer {readOnly}<br />

hheight: i ht IInteger t = 5<br />

width: Integer<br />

# pos: Point<br />

ClaseB<br />

id: {re<strong>de</strong>fines name}<br />

shape: Square<br />

14<br />

16


Clases<br />

Métodos<br />

NNotación t ió para métodos: ét d<br />

[visibilidad] [ ] nombre ( [lista-parametros] [ p ] ) : [{propiedad}]<br />

[{p p }]<br />

Visibilidad (opcional).<br />

nombre <strong>de</strong>l método<br />

lista <strong>de</strong> parámetros formales, separados por coma:<br />

direccion nombre : tipo [multiplicidad] = valor [{propiedad}]<br />

Los métodos estáticos se subrayan.<br />

Ejemplos:<br />

display ()<br />

-hi<strong>de</strong> ()<br />

+createWindow (location: Coordinates Coordinates, <strong>con</strong>tainer: Container [0 [0..1]): 1]): Window<br />

+toString (): String<br />

Asociaciones: Navegación, Roles y<br />

Cardinalidad<br />

Las asociaciones pue<strong>de</strong>n tener etiquetas:<br />

Roles en la relación<br />

MMultiplicidad lti li id d ( (cardinalidad) di lid d)<br />

centro<br />

Círculo Punto<br />

1<br />

Ej Ejemplos l <strong>de</strong> d cardinalidad: di lid d<br />

1..* mínimo 1, no hay máximo<br />

0 0..* * mínimo 0, 0 no hay máximo<br />

0..1 mínimo 0, máximo 1<br />

124 1,2,4 uno uno, dos o cuatro<br />

3 exactamente tres<br />

navegación g<br />

N Navegación: ió<br />

Unidireccional<br />

Bidireccional<br />

No especificado.<br />

No navegable (x)<br />

17<br />

19<br />

Asociaciones: Composición<br />

Un Círculo <strong>con</strong>tiene un Punto<br />

Se representa <strong>con</strong> una Composición<br />

Círculo Punto<br />

Relación <strong>de</strong>l tipo todo/parte<br />

El todo es el Círculo<br />

La parte es el Punto<br />

Es una relación fuerte<br />

Si el Círculo se <strong>de</strong>struye o copia, también lo es el Punto<br />

La cardinalidad en la parte <strong>de</strong>l todo es 0..1 o 1.<br />

Asociaciones<br />

Ejemplos <strong>de</strong> Navegación y Cardinalidad<br />

18<br />

20


Asociaciones: Agregación<br />

Cuando la relación todo/parte no es tan<br />

fuerte, , se utiliza Agregación g g<br />

susFiguras<br />

Ventana Figura<br />

0 0.. *<br />

La ventana <strong>con</strong>tiene figuras,<br />

pero cada una pue<strong>de</strong> existir sin la otra<br />

Clases Asociativas<br />

Asociación <strong>con</strong> atributos propios.<br />

Empleado<br />

1<br />

casado <strong>con</strong><br />

1<br />

Persona<br />

Matrimonio<br />

testigos 2<br />

fecha<br />

0 0.. *<br />

Clase Asociativa<br />

21<br />

23<br />

Asociaciones y Depen<strong>de</strong>ncia.<br />

Depen<strong>de</strong>ncia<br />

Existen relaciones <strong>de</strong> <strong>con</strong>ocimiento entre clases que no<br />

implican una relación todo/parte<br />

titular<br />

cuentas<br />

Cliente Cuenta<br />

1 1.. *<br />

0 0.. *<br />

Depen<strong>de</strong>ncia: relación muy débil.<br />

MMuchas h veces no se hhace explícita. lí it<br />

Ejemplo<br />

Ventana<br />

suContexto<br />

ContextoDibujo<br />

susFiguras<br />

0..*<br />

Cliente<br />

Or<strong>de</strong>n<br />

nombre 1 0..* fecha<br />

dirección estado<br />

Pago<br />

1..* 1<br />

monto 1<br />

calcImpuesto<br />

calcTotal<br />

calcPesoTotal<br />

Figura<br />

Draw(ContextoDibujo)<br />

Depen<strong>de</strong>ncia<br />

línea 1..*<br />

Crédito Efectivo Cheque DetalleOr<strong>de</strong>n Item<br />

fecha<br />

número<br />

moneda<br />

nombre<br />

i<strong>de</strong>ntifBanco<br />

cantidad<br />

tipoImpuesto<br />

0 0.. * 1 peso<br />

<strong>de</strong>scripción<br />

tipo<br />

autorizado<br />

calcSubtotal<br />

precioPorCantidad<br />

autorizado<br />

calcPeso<br />

obtenerPeso<br />

22<br />

24


Clases y Objetos j<br />

Estilo<br />

Los atributos no <strong>de</strong>ben ser objetos (utilizar<br />

relaciones en tal caso).<br />

En los diagramas <strong>de</strong> clases no suelen aparecer:<br />

Constructores<br />

Métodos <strong>de</strong> acceso (“get/set”)<br />

Métodos <strong>de</strong> gestión <strong>de</strong> elementos <strong>de</strong> una asociación o<br />

agregación (por ejemplo, “add/remove”)<br />

Ya que son <strong>de</strong>talles <strong>de</strong> implementación y no <strong>de</strong><br />

diseño.<br />

No olvidar que q el diagrama g <strong>de</strong> clases es un<br />

mo<strong>de</strong>lo, y por tanto una abstracción.<br />

Ejercicio (entrega)<br />

Especificar un diagrama <strong>de</strong> clases que <strong>de</strong>scriba re<strong>de</strong>s <strong>de</strong><br />

or<strong>de</strong>nadores.<br />

d d<br />

Los elementos que se pue<strong>de</strong>n incluir en la red son:<br />

Servidor, PC, Impresora.<br />

Hub, Cable <strong>de</strong> red.<br />

Los PCs pue<strong>de</strong>n <strong>con</strong>ectarse <strong>con</strong> un único Hub, los servidores <strong>con</strong><br />

uno o varios.<br />

LLos SServidores id y PC PCs pue<strong>de</strong>n d generar mensajes, j <strong>con</strong> una cierta i t<br />

longitud.<br />

Los Hubs tienen un número <strong>de</strong> puertos, algunos <strong>de</strong> los cuales<br />

pue<strong>de</strong> usarse para <strong>con</strong>ectar <strong>con</strong> otros Hubs Hubs. Tienen cierta<br />

probabilidad <strong>de</strong> “per<strong>de</strong>r” mensajes.<br />

Las impresoras pue<strong>de</strong>n averiarse, <strong>con</strong> cierta probabilidad, durante<br />

cierto tiempo tiempo.<br />

Entrega individual el día 2 <strong>de</strong> Noviembre.<br />

25<br />

27<br />

Ejercicio je c c o (c (clase) ase)<br />

Un sistema sencillo <strong>de</strong> revisión <strong>de</strong> <strong>con</strong>ferencias científicas<br />

El sistema pue<strong>de</strong> gestionar varias <strong>con</strong>ferencias a la vez.<br />

Cada <strong>con</strong>ferencia tiene uno o dos chairs.<br />

Los autores envian artículos, <strong>de</strong>ntro <strong>de</strong> un plazo. Uno <strong>de</strong> los autores<br />

es el autor “<strong>de</strong> correspon<strong>de</strong>ncia”.<br />

Estos son revisados por 3 revisores, <strong>de</strong>ntro <strong>de</strong> un plazo.<br />

En base a las revisiones, los chairs <strong>de</strong>ci<strong>de</strong>n aceptar o rechazar los<br />

artículos. Para ello, envían una notificación a los autores <strong>de</strong><br />

correspon<strong>de</strong>ncia d i d<strong>de</strong> cada d artículo. tí l<br />

El autor <strong>de</strong> correspon<strong>de</strong>ncia <strong>de</strong> los artículos aceptados envía una<br />

versión final, <strong>de</strong>ntro <strong>de</strong> un plazo.<br />

Los artíc artículos los están <strong>de</strong>scritos por un n tít título, lo aautores, tores res resumen men y<br />

cuerpo <strong>de</strong>l artículo.<br />

Autores, revisores y chairs están <strong>de</strong>scritos por un nombre, afiliación<br />

y correo correo.<br />

Las revisiones están compuestas por una nota (<strong>de</strong>l 0 al 5) y una<br />

sección <strong>de</strong> comentarios.<br />

Los revisores <strong>de</strong> una <strong>con</strong>ferencia pue<strong>de</strong>n enviar artículos artículos, pero no<br />

revisar sus propios artículos. Los chairs <strong>de</strong> la <strong>con</strong>ferencia no<br />

pue<strong>de</strong>n enviar artículos.<br />

Más sobre asociaciones<br />

Asociaciones n-arias<br />

Asociaciones entre más <strong>de</strong> dos clases:<br />

Año<br />

temporada d<br />

EEquipo i equipo<br />

JJugador d<br />

pichichi<br />

29


Más sobre asociaciones<br />

Adornos en asociaciones y fin <strong>de</strong> asociación.<br />

AAsociaciones i i d<strong>de</strong>rivadas i d ( (<strong>con</strong> un “/” d<strong>de</strong>lante l t d<strong>de</strong>l l nombre). b )<br />

Propieda<strong>de</strong>s, cerca <strong>de</strong>l nombre <strong>de</strong> la asociación.<br />

Los finales <strong>de</strong> la asociación pue<strong>de</strong>n adornarse <strong>con</strong>:<br />

Multiplicidad.<br />

Nombre (rol). ( )<br />

Propieda<strong>de</strong>s:<br />

{subsets }.<br />

{re<strong>de</strong>fined }<br />

}.<br />

{union}.<br />

{or<strong>de</strong>red} (un <strong>con</strong>junto or<strong>de</strong>nado).<br />

{bag} (<strong>con</strong>junto <strong>con</strong> repetición) repetición).<br />

{sequence} o {seq} (bag or<strong>de</strong>nado).<br />

Más sobre asociaciones<br />

Asociaciones Cualificadas<br />

Un cualificador <strong>de</strong>clara una partición <strong>de</strong>l <strong>con</strong>junto <strong>de</strong> instancias asociadas <strong>con</strong><br />

respecto a la instancia cualificada.<br />

Banco<br />

NumCuenta<br />

*<br />

0..1<br />

Tablero<br />

Ajedrez<br />

fila: Fila<br />

col: Colum<br />

1<br />

1<br />

Persona Casilla<br />

Dado un objeto cualificado, el número <strong>de</strong> objetos al otro lado <strong>de</strong> la asociación<br />

viene i ddado d por lla multiplicidad lti li id d d<strong>de</strong>clarada. l d<br />

0..1 : el valor <strong>de</strong>l cualificador es único.<br />

0..* : el <strong>con</strong>junto <strong>de</strong> instancas asociadas se particiona en sub<strong>con</strong>juntos.<br />

Similar a un array asociativo, asociativo map o tabla hash hash.<br />

30<br />

32<br />

Más sobre asociaciones<br />

Adornos en asociaciones y fin <strong>de</strong> asociación: Ejemplos<br />

a b<br />

A B<br />

0..1 *<br />

{or<strong>de</strong>red}<br />

C D<br />

d<br />

1 0..1<br />

{subsets b}<br />

Para un objeto <strong>de</strong> tipo C, la colección d es un sub<strong>con</strong>junto <strong>de</strong> la colección b.<br />

Pre Pre- yPost y Post- Condiciones Condiciones, Notas<br />

pre-<strong>con</strong>dición<br />

body-<strong>con</strong>dition<br />

post-<strong>con</strong>dición<br />

31<br />

33


Interfaces<br />

Clase<br />

Objetos<br />

<br />

MiInterfaz<br />

métodos<br />

e2 : Empleado<br />

e1 : Empleado<br />

-nombre=“María”<br />

- nombre=“Pedro”<br />

- edad=25 edad 25<br />

- edad=23 edad 23<br />

- sueldo_bruto=36000<br />

- sueldo_bruto=30000<br />

subordinados empleados empleados<br />

Clase<br />

Clase<br />

d1 : Directivo<br />

-nombre=“Luis”<br />

-edad=35 d d 35<br />

- sueldo_bruto=36000<br />

empleados<br />

Empresa<br />

- nombre=“HGJ”<br />

-categoria=“C1”<br />

clientes<br />

c1 : Cliente<br />

-nombre=“Luis”<br />

- edad=35<br />

- nombre_empresa=“Macroware”<br />

- telefono_<strong>de</strong>_<strong>con</strong>tacto=91555666<br />

MiInterfaz<br />

MiInterfaz<br />

Persona<br />

-nombre<br />

-edad<br />

+ mostrar()<br />

Empleado Cliente<br />

subordinados<br />

-sueldo_bruto -nombre_empresa<br />

+ mostrar ()<br />

- telefono_<strong>de</strong>_<strong>con</strong>tacto<br />

+ calcular_salario_neto()<br />

l l l i t ()<br />

+mostrar()<br />

empleados clientes<br />

Directivo<br />

-categoria<br />

+ mostrar ()<br />

34<br />

Empresa<br />

-nombre<br />

36<br />

Plantillas<br />

Indice<br />

Farray Point><br />

Introducción.<br />

Diagramas <strong>de</strong> Clases y Objetos.<br />

Una clase anónima ligada:<br />

T -> Point<br />

K -> 10<br />

Otros Otros Diagramas<br />

Diagramas.<br />

Diagramas Estructurales.<br />

Casos <strong>de</strong> Uso Uso.<br />

Diagramas <strong>de</strong> Comportamiento.<br />

OCL.<br />

Acción Semántica.<br />

PPerfiles. fil<br />

Bibliografía<br />

Lecturas sugeridas/ejercicios<br />

sugeridas/ejercicios.<br />

35<br />

37


Diagramas Estructurales<br />

Clases y Objetos (ya vistos) vistos).<br />

Componentes.<br />

Módulos <strong>con</strong> interfaces.<br />

EEstructuras t t CCompuestas. t<br />

Clases <strong>con</strong> estructura interna.<br />

Paquetes.<br />

Estructura <strong>de</strong> la aplicación.<br />

Despliegue.<br />

Vista física.<br />

Componentes<br />

Interfaces<br />

que ofrece<br />

Interfaces<br />

que requiere<br />

40<br />

Componentes<br />

CComponente=“Unidad t “U id d MModular d l <strong>con</strong> iinterfaces t f<br />

bien <strong>de</strong>finidos que es reemplazable en su<br />

entorno” entorno .<br />

ÉÉnfasis f i enreutilización tili ió y encapsulamiento. l i t<br />

Servicios que provee y requiere (interfaces).<br />

Componentes lógicos (componentes <strong>de</strong> negocio,<br />

<strong>de</strong> proceso) y físicos (EJB, CORBA, COM+, .NET,<br />

…)<br />

Componentes<br />

Vi Vista t d<strong>de</strong> caja j bl blanca<br />

39<br />

41


Estructuras Compuestas<br />

CComposición i ió d<strong>de</strong> elementos l t ( (clasificadores l ifi d o<br />

colaboraciones)<br />

Instancias en tiempo <strong>de</strong> ejecución que colaboran<br />

a través <strong>de</strong><br />

comunes.<br />

enlaces para alcanzar objetivos<br />

Colaboraciones: a través <strong>de</strong> roles.<br />

Se aña<strong>de</strong> a las clases estructura internas y<br />

puertos.<br />

Estructuras Compuestas p<br />

Colaboración.<br />

Et Estructura t it interna d<strong>de</strong> una colaboración. lb ió<br />

42<br />

44<br />

Estructuras Compuestas<br />

Paquetes<br />

Estructura interna <strong>de</strong> una clase. clase<br />

Estructura interna <strong>de</strong> una clase. Multiplicida<strong>de</strong>s.<br />

Un paquete es un <strong>con</strong>tenedor que agrupa elementos<br />

relacionados.<br />

Los diagramas <strong>de</strong> paquetes muestran la estructura <strong>de</strong> alto<br />

nivel <strong>de</strong> la aplicación. aplicación<br />

43<br />

45


Paquetes<br />

Un paquete pue<strong>de</strong> exten<strong>de</strong>r aotrouniendosus<br />

<strong>con</strong>tenidos.<br />

El <strong>con</strong>tenido <strong>de</strong>l paquete “target” se une <strong>con</strong> el<br />

<strong>con</strong>tenido <strong>de</strong>l paquete “source” por medio <strong>de</strong><br />

especialización y re<strong>de</strong>finición don<strong>de</strong> sea<br />

aplicable ( (elementos <strong>de</strong>l mismo nombre). )<br />

Paquetes Paquetes. Plantillas Plantillas.<br />

46<br />

48<br />

Paquetes. q Unión (merge). ( g )<br />

Despliegue<br />

DDefinen fi lla arquitectura it t d<strong>de</strong> ejecución j ió d<strong>de</strong> un sistema. i t<br />

Representa la asignación <strong>de</strong> artefactos software a nodos nodos.<br />

Nodos = elementos hardware, o entornos<br />

<strong>de</strong> ejecución software.<br />

Artefactos = elementos <strong>con</strong>cretos (p.e.:<br />

ficheros) que son el resultado <strong>de</strong>l proceso<br />

<strong>de</strong> <strong>de</strong>sarrollo.<br />

47<br />

49


Despliegue p g<br />

Relaciones entre artefactos.<br />

Casos <strong>de</strong> Uso<br />

“Manifestación” <strong>de</strong><br />

elementos a través <strong>de</strong><br />

artefactos<br />

AActor t = Al Algo <strong>con</strong> comportamiento t i t ( (persona, otro t<br />

programa, organización...), que interactua <strong>con</strong> el<br />

sistema sistema.<br />

EEscenario i (i (instancia t i d<strong>de</strong> caso d <strong>de</strong> uso) ) =<br />

Secuencia <strong>de</strong> acciones e interacciones entre los<br />

actores y el sistema sistema.<br />

CCaso d<strong>de</strong> UUso = CColección l ió d<strong>de</strong> escenarios i (é (éxito it y<br />

fracaso) que <strong>de</strong>scriben actores que usan el<br />

sistema para <strong>con</strong>seguir un objetivo objetivo.<br />

50<br />

52<br />

Casos <strong>de</strong> Uso<br />

DDescriben ib quéé hhace ell sistema it d<strong>de</strong>s<strong>de</strong> d ell punto t<br />

<strong>de</strong> vista <strong>de</strong> un observador externo.<br />

Ponen énfasis en qué hace el sistema, no en<br />

cómo ó llo hhace.<br />

Un escenario es una instancia particular <strong>de</strong> un<br />

diagrama <strong>de</strong> casos <strong>de</strong> uso.<br />

Ejemplo <strong>de</strong> lo que ocurre cuando alguien interactúa <strong>con</strong><br />

ell sistema i t<br />

Casos <strong>de</strong> Uso: Ejemplo<br />

Cajero Terminal<br />

Punto <strong>de</strong> Venta<br />

(TPV)<br />

51<br />

53


Casos <strong>de</strong> Uso: Ejemplo<br />

CASO DE USO 1: Procesar venta<br />

Actor Primario:<br />

CCajero. j<br />

Interesados y objetivos:<br />

Cajero: Quiere anotaciones precisas y rápidas <strong>de</strong> precios, sin errores.<br />

Cli Cliente: t QQuiere i que ell pago sea rápido á id <strong>con</strong>ell mínimo í i esfuerzo. f QQuiere i<br />

una prueba <strong>de</strong> compra para justificar <strong>de</strong>voluciones.<br />

Compañía: Quieren almacenar las transacciones y satisfacer los<br />

intereses <strong>de</strong> los clientes.<br />

Comercial: Quiere que se le actualicen sus comisiones por venta.<br />

Agencias <strong>de</strong> impuestos gubernamentales: Quieren recolectar impuestos<br />

<strong>de</strong> cada venta. Pue<strong>de</strong> que haya varias agencias (nacionales, regionales,<br />

etc.) t )<br />

Servicios <strong>de</strong> Autorización <strong>de</strong> Pagos (por tarjetas <strong>de</strong> crédito): Quiere<br />

recibir peticiones digitales <strong>de</strong> autorizaciones en el formato y protocolo<br />

correcto.<br />

Pre<strong>con</strong>diciones:<br />

54<br />

El cajero se ha i<strong>de</strong>ntificado y autentificado.<br />

Casos <strong>de</strong> Uso: Ejemplo<br />

Extensiones (Flujos alternativos):<br />

a*. En cualquier momento, el sistema falla.<br />

3a. I<strong>de</strong>ntificador inválido.<br />

1. El sistema señala un error y rechaza la entrada.<br />

7a. Pago en efectivo.<br />

...<br />

7b 7b. Pago <strong>con</strong> tarjeta tarjeta.<br />

...<br />

Requisitos especiales:<br />

Pantalla táctil en panel gran<strong>de</strong> y plano. El texto <strong>de</strong>be ser visible <strong>de</strong>s<strong>de</strong> un metro.<br />

Respuesta <strong>de</strong> autorización <strong>de</strong> crédito en menos <strong>de</strong> 30 secs, el 90% <strong>de</strong> las veces.<br />

Recuperación robusta cuando el acceso a sistemas externos (tales como el inventario,<br />

impuestos, etc.) falla.<br />

Posibilida<strong>de</strong>s <strong>de</strong> internazionalización <strong>de</strong> texto.<br />

Reglas <strong>de</strong> negocio insertables en los pasos 3 y 7.<br />

...<br />

56<br />

Casos <strong>de</strong> Uso: Ejemplo<br />

Garantía <strong>de</strong> éxito (Post<strong>con</strong>diciones):<br />

Se registra la compra en el sistema. Se calcula el impuesto aplicable. Se actualizan los sistemas <strong>de</strong><br />

inventario y <strong>de</strong> <strong>con</strong>tabilidad. Se registran las comisiones. Se genera un recibo. Se registran las<br />

aprobaciones <strong>de</strong> pago por tarjeta.<br />

Escenario principal <strong>de</strong> Exito:<br />

1. Llega un clienta al TPV <strong>con</strong> bienes o servicios que comprar.<br />

2. El cajero comienza una nueva compra.<br />

3. El cajero introduce un i<strong>de</strong>ntificador <strong>de</strong> producto.<br />

44. El sistema it registra i t ell elemento l t ypresenta t una<strong>de</strong>scripción d i ió d<strong>de</strong>l l mismo, i su precio i y<br />

total actual. Se calcula el precio <strong>de</strong> una lista <strong>de</strong> reglas.<br />

El cajero j repite p los pasos p 3-4 hasta que q no hayy más elementos.<br />

5. El sistema presenta el total <strong>con</strong> los impuestos calculados.<br />

6. El cajero le dice el total al cliente, y le pi<strong>de</strong> que pague.<br />

77. El cliente paga y el sistema procesa el pago pago.<br />

8. El sistema registra la venta completada y manda la información a los sistemas<br />

externos <strong>de</strong> inventario y <strong>con</strong>tabilidad.<br />

9. El sistema genera el recibo.<br />

10. El cliente se va.<br />

Casos <strong>de</strong> Uso: Ejemplo<br />

Lista <strong>de</strong> variaciones <strong>de</strong> tecnología y datos:<br />

3a. Se introduce el i<strong>de</strong>ntificador <strong>de</strong>l elemento mediante escáner <strong>de</strong> código <strong>de</strong> barras o<br />

mediante el teclado.<br />

3b. Distintos esquemas <strong>de</strong> i<strong>de</strong>ntificadores: UPC, EAN, JAN o SKU.<br />

7a. La información sobre el pago <strong>con</strong> tarjeta se pue<strong>de</strong> introducir mediante el teclado o<br />

lector.<br />

7b. Se pi<strong>de</strong> firma en papel. En dos años, creemos que muchos clientes van a querer<br />

captura <strong>de</strong> firma digital.<br />

Frecuencia <strong>de</strong> ocurrencia:<br />

Pue<strong>de</strong> ser casi <strong>con</strong>tinua.<br />

Temas abiertos:<br />

¿Cuáles son las posibles variaciones en las leyes sobre impuestos?<br />

Explorar el tema <strong>de</strong> recuperación en caso <strong>de</strong> fallo <strong>de</strong> sistemas externos.<br />

¿Qué modificaciones se necesitan para negocios distintos?<br />

¿Debe el cajero extraer el cajón <strong>con</strong> la recaudación al terminar?<br />

¿Pue<strong>de</strong> el cliente usar directamente el lector <strong>de</strong> tarjetas o es el cajero el que lo hace?<br />

55<br />

57


Casos <strong>de</strong> Uso: Ejemplo<br />

cajero<br />

TPV<br />

Procesar<br />

Venta<br />

Procesar<br />

Devoluciones<br />

Servicio<br />

<strong>de</strong> Autorización<br />

<strong>de</strong> Pagos<br />

«actor»<br />

Analizar<br />

«actor»<br />

Analizador <strong>de</strong><br />

Atiiddd Actividad <strong>de</strong><br />

Ventas<br />

Actividad<br />

Calculador <strong>de</strong><br />

Impuestos p<br />

...<br />

«actor»<br />

Administrador<br />

<strong>de</strong>l sistema<br />

Gestionar<br />

Seguridad<br />

Gestionar<br />

Usuarios<br />

Casos <strong>de</strong> Uso: Ejemplo<br />

SSon útil útiles en ttres ááreas:<br />

Especificación <strong>de</strong> requisitos<br />

Sistema <strong>de</strong><br />

<strong>con</strong>tabilidad<br />

Comunicación <strong>con</strong> los clientes<br />

Su simplicidad los <strong>con</strong>vierte en excelentes medios <strong>de</strong><br />

comunicación<br />

Generación <strong>de</strong> casos <strong>de</strong> prueba<br />

A partir <strong>de</strong> los escenarios <strong>de</strong> un Caso <strong>de</strong> Uso<br />

58<br />

60<br />

Casos <strong>de</strong> Uso: Ejemplo<br />

Cancel Appointment<br />

Make Appointment<br />

<br />

Patient Request Medication<br />

PPay Bill<br />

Extensions Points<br />

More Treatment<br />

<br />

<br />

Check Patient Record<br />

Defer Payment<br />

Bill Insurance<br />

Shdl Scheduler<br />

Doctor<br />

Diagramas <strong>de</strong> Comportamiento<br />

Comportamiento.<br />

Diagramas Di d<strong>de</strong> IInteracción. t ió<br />

Comunicación.<br />

Secuencia.<br />

Visión <strong>de</strong> <strong>con</strong>junto j <strong>de</strong> la interacción.<br />

Tiempo.<br />

Diagrama <strong>de</strong> Estados (Statecharts).<br />

Diagrama <strong>de</strong> Actividad.<br />

Clerk<br />

59


Diagramas <strong>de</strong> Interacción<br />

Diagrama <strong>de</strong> Comunicación<br />

Muestra un <strong>con</strong>texto y una interacción interacción.<br />

Di Diagrama d<strong>de</strong> SSecuencia i<br />

Representación explícita <strong>de</strong> la secuencia <strong>de</strong><br />

comunicaciones, eje temporal.<br />

Es más apropiado para aplicaciones <strong>con</strong><br />

interacciones complicadas<br />

Diagramas <strong>de</strong> Comunicación<br />

Llamadas anidadas:<br />

realizarPago(cantidad) 1: realizarPago(cantidad)<br />

:Registro :Venta<br />

Iteraciones:<br />

1.1: crear(cantidad)<br />

:Pago<br />

Ejectuar() 1*[i:=1..N]: num:= nextInt()<br />

:Simulador :Random<br />

62<br />

64<br />

Diagramas <strong>de</strong> Interacción<br />

EEstructura t t d<strong>de</strong> llos participantes ti i t<br />

Diagramas <strong>de</strong> Comunicación<br />

Patrones <strong>de</strong> comunicación<br />

Diagramas <strong>de</strong> Comunicación<br />

Diagramas <strong>de</strong> Secuencia<br />

Temporización p <strong>de</strong> la comunicación.<br />

Diagramas <strong>de</strong> Secuencia<br />

Diagramas <strong>de</strong> Tiempo.<br />

Estructuración <strong>de</strong> las interacciones<br />

Diagrama g <strong>de</strong> visión <strong>de</strong> <strong>con</strong>junto j <strong>de</strong> la<br />

interacción.<br />

Diagramas g <strong>de</strong> Comunicación<br />

Ejemplo.<br />

redisplay()<br />

1.1*[i:=1..n]: drawSegment(i)<br />

><br />

:Controller :Window<br />

wire:Wire<br />

i-1 i<br />

1:displayPositions(window) 1.1.3.1:add(self)<br />

wire<br />

111 1.1.1a: r0:= 0 position() ii () 111b 1.1.1b: r1:= 1 position() ii ()<br />

left:Bead right:Bead g<br />

> line<br />

1.1.2: create(r0,r1)<br />

1.1.3: display(window)<br />

:Line Li {new} { }<br />

63<br />

<strong>con</strong>tents {new}<br />

65


Diagramas <strong>de</strong> Secuencia<br />

RRepresenta t <strong>con</strong>junto j t <strong>de</strong> d mensajes j entre t roles l<br />

(o instancias) en una interacción<br />

Dos dimensiones:<br />

Tiempo Tiempo (generalmente vertical); pue<strong>de</strong> ser una escala si<br />

el sistema es <strong>de</strong> tiempo real<br />

Dif Diferentes t instancias i t i (generalmente ( l t horizontal); h i t l) el l<br />

or<strong>de</strong>n relativo no tiene importancia<br />

Se muestra la existencia y duración <strong>de</strong> las<br />

instancias, pero no sus relaciones<br />

Diagramas <strong>de</strong> Secuencia<br />

:caller :exchange :receiver<br />

a: lift receiver<br />

b: dial tone<br />

Objetos<br />

c: di dial l digit di it<br />

...<br />

Focos <strong>de</strong><br />

d: route<br />

Control<br />

ringing tone phone rings<br />

Mensajes<br />

answer phone<br />

stop tone stop ringing<br />

66<br />

68<br />

Diagramas <strong>de</strong> Secuencia<br />

Traza:secuencia <strong>de</strong> ocurrencias <strong>de</strong> eventos La semántica <strong>de</strong> una interacción es un par <strong>de</strong> <strong>con</strong>juntos<br />

<strong>de</strong> trazas (válidas e inválidas) [P, I].<br />

PPue<strong>de</strong>n d existir i ti ttrazas no iincluidas l id en llos ddos <strong>con</strong>juntos j t<br />

anteriores.<br />

Equivalencia <strong>de</strong> interacciones, si sus <strong>con</strong>juntos <strong>de</strong> trazas<br />

son iguales.<br />

Una interacción se pue<strong>de</strong> especializar: se aña<strong>de</strong>n más<br />

trazas al <strong>con</strong>junto. j<br />

Diagramas <strong>de</strong> Secuencia<br />

67<br />

Gate (formal),<br />

<strong>con</strong> nombre<br />

out out_Unlock<br />

Unlock<br />

69


Diagramas g <strong>de</strong> Secuencia<br />

Operadores sobre interacciones.<br />

Fragmentos combinados combinados, operadores (i):<br />

Alternativa (alt).<br />

Elección (mediante una guarda) <strong>de</strong> una interacción interacción.<br />

Aserción (assert).<br />

Laa secuencia secue c a especificada espec cada por po el e operador ope ado es laa única ú ca válida. áda<br />

Opción (opt).<br />

Equivalente a un operador alt <strong>con</strong> un solo fragmento.<br />

Ruptura (break).<br />

El operando se ejecuta en lugar <strong>de</strong>l resto <strong>de</strong> la interacción englobada en el<br />

fragmento “padre”. padre .<br />

Paralelo (par).<br />

Mezcla <strong>de</strong> las trazas <strong>de</strong> los operandos (cualquier entrelazado es válido<br />

mientras preserve el or<strong>de</strong>n <strong>de</strong> los eventos <strong>de</strong> cada operando) operando).<br />

Diagramas g <strong>de</strong> Secuencia<br />

Operadores sobre interacciones. Alternativa.<br />

70<br />

72<br />

Diagramas g <strong>de</strong> Secuencia<br />

Operadores sobre interacciones.<br />

Secuenciación débil (seq) (seq).<br />

Define un <strong>con</strong>junto <strong>de</strong> trazas que cumple:<br />

1. Se mantiene el or<strong>de</strong>n <strong>de</strong> eventos <strong>de</strong> los operandos<br />

2. Eventos <strong>de</strong> otras líneas <strong>de</strong> vida <strong>de</strong> otros operandos pue<strong>de</strong>n venir en cualquier<br />

or<strong>de</strong>n.<br />

3. Eventos <strong>de</strong> la misma línea <strong>de</strong> vida <strong>de</strong> otros operandos se or<strong>de</strong>nan <strong>de</strong> tal<br />

manera que cualquier evento <strong>de</strong>l primer operando va antes que el <strong>de</strong>l<br />

segundo.<br />

Secuenciación estricta (strict).<br />

Secuenciación estricta en el or<strong>de</strong>n <strong>de</strong> los eventos <strong>de</strong> los operandos.<br />

Negativa (neg).<br />

Define trazas inválidas.<br />

Región crítica (critical).<br />

Los eventos <strong>de</strong>l operando no pue<strong>de</strong>n mezclarse <strong>con</strong> ningún otro.<br />

Diagramas g <strong>de</strong> Secuencia<br />

Operadores sobre interacciones. Opción.<br />

71<br />

73


Diagramas g <strong>de</strong> Secuencia<br />

Operadores sobre interacciones. Región Crítica.<br />

Diagramas g <strong>de</strong> Secuencia<br />

Loop.<br />

74<br />

76<br />

Diagramas g <strong>de</strong> Secuencia<br />

Negative.<br />

Diagramas g <strong>de</strong> Secuencia<br />

Tiempo<br />

Restricciones temporales (duración)<br />

Duración <strong>de</strong> mensajes y señales (duration)<br />

Intervalos <strong>de</strong> tiempo ({t..t+3}) y restricciones temporales.<br />

Observaciones temporales (tiempo actual, now)<br />

77<br />

Asignación <strong>de</strong> instantes a variables (t=now), restricciones sobre estas.<br />

75


Visión <strong>de</strong> Conjunto <strong>de</strong> la Interacción<br />

DDefine fi las l interacciones i t i a ttravés é d<strong>de</strong><br />

una<br />

variante <strong>de</strong> los diagramas <strong>de</strong> actividad.<br />

Visión general <strong>de</strong>l flujo <strong>de</strong> <strong>con</strong>trol.<br />

Usa elementos <strong>de</strong> los diagramas <strong>de</strong> actividad<br />

para especificar:<br />

Alternativas entre interacciones.<br />

Paralelismo <strong>de</strong> interacciones.<br />

Bucles <strong>de</strong> interacciones.<br />

Tiempo<br />

Muestran M t iinteracciones t i ddon<strong>de</strong> d es<br />

importante razonar sobre el tiempo.<br />

Representa Representa <strong>con</strong>diciones que cambian en<br />

una o varias líneas <strong>de</strong> vida, en un eje<br />

lineal <strong>de</strong> tiempo tiempo.<br />

Cambios en el estado <strong>de</strong> un objeto <strong>con</strong> el<br />

tiempo en respuesta a eventos.<br />

78<br />

80<br />

Visión <strong>de</strong> Conjunto <strong>de</strong> la Interacción<br />

Tiempo<br />

Diagrama temporal<br />

correspondiente p<br />

a la interacción<br />

79<br />

81


Tiempo<br />

Máquinas <strong>de</strong> Estados<br />

“St “Statecharts” t h t ”[H [Harel] l]<br />

Representan el comportamiento <strong>de</strong> entida<strong>de</strong>s ( pe p.e.<br />

instancias <strong>de</strong> clases).<br />

Especifican reacción ante eventos<br />

Describen posibles secuencias <strong>de</strong> estados y acciones<br />

por las que pue<strong>de</strong>n pasar las entida<strong>de</strong>s.<br />

De comportamiento vs. <strong>de</strong> protocolo.<br />

82<br />

84<br />

Tiempo<br />

Máquinas <strong>de</strong> Estados<br />

Comienzo Estados<br />

Fin<br />

digit(n)<br />

start Partial Dial<br />

Transiciones<br />

digit(n)<br />

83<br />

85


Máquinas <strong>de</strong> Estados<br />

Un estado tiene:<br />

Nombre<br />

Transiciones internas: lista <strong>de</strong> acciones ejecutadas en ese<br />

estado (entry/exit/do)<br />

( y )<br />

Ejemplo: j p<br />

Typing Password<br />

entry/set t / t echo h invisible i i ibl<br />

exit/set echo normal<br />

character/handle character<br />

help/display help<br />

Máquinas <strong>de</strong> Estados<br />

Componentes Ortogonales:<br />

Incomplete<br />

lab done<br />

Lab1 Lab2<br />

Nombre<br />

Transiciones<br />

internas<br />

Term<br />

Project<br />

project done<br />

Passed<br />

Final<br />

Test<br />

fail<br />

pass<br />

Failed<br />

86<br />

88<br />

Máquinas <strong>de</strong> Estados<br />

Start<br />

entry/start dial tone<br />

exit/stop dial tone<br />

digit(n)<br />

Partial Dial<br />

entry/number.append(n)<br />

Estado compuesto:<br />

Dialing<br />

Start<br />

entry/start y dial tone<br />

exit/stop dial tone<br />

digit(n)<br />

Máquinas <strong>de</strong> Estados<br />

PPseudo d - estados: t d<br />

Fork / Join.<br />

Initial.<br />

Deep History / Shallow History. H* H<br />

Junction.<br />

Choice.<br />

Entry / Exit point.<br />

Terminate.<br />

digit(n)<br />

Partial Dial [number.isValid()]<br />

entry/number.append(n)<br />

y pp ( )<br />

A1 A2<br />

digit(n)<br />

Setup Cleanup<br />

B1 B2<br />

Fork Join<br />

87<br />

89


Máquinas q <strong>de</strong> Estados<br />

Estado Histórico<br />

I<br />

t1: ev0<br />

t4: ev2<br />

B12<br />

t3: ev1<br />

H<br />

t4<br />

B1 B2<br />

B11<br />

Máquinas q <strong>de</strong> Estados<br />

Estado Histórico. Ejercicio.<br />

t2<br />

Mo<strong>de</strong>lar el comportamiento <strong>de</strong> una<br />

ca<strong>de</strong>na <strong>de</strong> música. Esta pue<strong>de</strong> p estar<br />

encendida (ON) o apagada (Standby). La<br />

ca<strong>de</strong>na tiene reproductor <strong>de</strong> CD CD, Radio y<br />

Cinta. Se cambia <strong>de</strong> uno a otro <strong>con</strong> el<br />

botón “mo<strong>de</strong>” mo<strong>de</strong> . Cuando se encien<strong>de</strong> la<br />

ca<strong>de</strong>na se recuerda el último estado en el<br />

que estuvo.<br />

B<br />

B21<br />

t3<br />

90<br />

92<br />

Máquinas q <strong>de</strong> Estados<br />

Estado Histórico (ii)<br />

I<br />

t1: ev0<br />

t4: ev2<br />

B12<br />

t3: ev1<br />

H* H<br />

t4<br />

B1 B2<br />

B11<br />

Máquinas <strong>de</strong> Estados<br />

Pseudo - estados: Junction.<br />

Pseudo - estados: Choice.<br />

t2<br />

B<br />

B21<br />

t3<br />

91<br />

95


Máquinas <strong>de</strong> Estados<br />

UUn ttransición i ió pue<strong>de</strong> d ttener:<br />

[not driver.<br />

<strong>de</strong>tectarAbierto()]<br />

C<br />

[drriver.<strong>de</strong>tectarrAbierto()]<br />

eject e ()/<br />

driver.abrir d () (<br />

Evento.<br />

Eventos Eventos temporales: tm(n)<br />

Acción.<br />

pre-<strong>con</strong>diciones (guardas) y post- <strong>con</strong>diciones.<br />

[guard] evt/action [post-]<br />

A1 A2<br />

Símbolos especiales para el envío y recepción <strong>de</strong><br />

señales (normalmente usados en diagramas <strong>de</strong><br />

actividad). )<br />

Ejemplo. Diagrama <strong>de</strong> estados para la<br />

clase ReproductorCD<br />

p<br />

Cerrado<br />

eject ()/<br />

driver.cerrarr<br />

()<br />

Abierto<br />

[(info=driver.<strong>de</strong>tectarDisco())!=NULL]/<br />

disco=buscaDisco(info)<br />

NumActual = 1;<br />

actual = disco.obtenerCancion(or<strong>de</strong>nActual)<br />

( )<br />

eject ()/<br />

driver.stop();<br />

driver.abrir()<br />

Play()/<br />

Stop driver.play(actual, 0) Play<br />

stop()/<br />

driver.stop();<br />

NumActual=1<br />

NumActual 1<br />

actual=<br />

disco.obtenerCancion(NumActual)<br />

Play()/<br />

driver.pllay(actual,<br />

Tppausa)<br />

apagar ()/<br />

driver.stop();<br />

driver.apagar()<br />

endOfSong()/<br />

NumActual+=1<br />

Pause() )/<br />

Tpausa = driver.stopp()<br />

Pause<br />

C<br />

96<br />

[NumActual


Ejercicio<br />

Interface provisto por el <strong>con</strong>trolador:<br />

getTime() : Devuelve la hora actual.<br />

refreshTimeDisplay() : Repinta la hora en el visor <strong>con</strong> la hora interna actual. El<br />

visor no necesita limpiarse antes <strong>de</strong> llamar a esta función. Por ejemplo, si se está<br />

visualizando el crono, se borrará antes <strong>de</strong> pintar la hora.<br />

refreshChronoDisplay() :verrefreshTimeDisplay(). resetChrono() : Resetea el crono interno a 00:00:00.<br />

increaseTime() : Incrementa la hora en un segundo. Los minutos y horas se<br />

modificarán a<strong>de</strong>cua<strong>de</strong>mente, (por ejemplo, si se llama a increaseTime () a las<br />

11:59:59, la nueva hora será 12:00:00).<br />

increaseChrono () : Incrementa el crono en 1/100 segundos.<br />

setLight() : Encien<strong>de</strong> la luz <strong>de</strong>l visor.<br />

unsetLight() : Apaga la luz <strong>de</strong>l visor visor.<br />

Eventos <strong>de</strong> botones recibidos:<br />

topRightPressed.<br />

topRightReleased.<br />

p g<br />

topLeftPressed.<br />

topLeftReleased.<br />

bottomRightPressed.<br />

bottomRightReleased<br />

bottomRightReleased.<br />

bottomLeftPressed.<br />

100<br />

bottomRightReleased.<br />

Máquinas q <strong>de</strong> Estados<br />

Ejemplo. Herramienta <strong>de</strong> Dibujo (ii)<br />

Shapes Canvas<br />

Mo<strong>de</strong>s<br />

103<br />

Máquinas <strong>de</strong> Estados<br />

Ejemplo. Herramienta <strong>de</strong> Dibujo (i)<br />

wmQuit<br />

/setup widgets<br />

setup t bi bindings di<br />

Active<br />

exitButton<br />

Máquinas q <strong>de</strong> Estados<br />

Ejemplo. Herramienta <strong>de</strong> Dibujo (iii)<br />

Shapes<br />

shapeSelected(Triangle)<br />

shapeSelected(Rectangle)<br />

Triangle<br />

shapeSelected(Circle)<br />

shapeSelected(Triangle)<br />

p ( g )<br />

Rectangle<br />

shapeSelected(Circle)<br />

h S l t d(Ci l )<br />

shapeSelected(Rectangle)<br />

Circle<br />

102<br />

104


Máquinas q <strong>de</strong> Estados<br />

Ejemplo. Herramienta <strong>de</strong> Dibujo (iv)<br />

Mo<strong>de</strong>s<br />

mo<strong>de</strong>Select(Insert)/<br />

Canvas.Insert<br />

mo<strong>de</strong>Select(Move)/<br />

Canvas.Move<br />

Insert<br />

mo<strong>de</strong>Select(Delete)/<br />

Canvas.Delete<br />

mo<strong>de</strong>Select(Insert)/<br />

Canvas.Insert<br />

Move<br />

mo<strong>de</strong>Select(Delete)/ ( )/<br />

Canvas.Delete<br />

Delete<br />

mo<strong>de</strong>Select(Move)/<br />

CCanvas.Move M<br />

Diagramas <strong>de</strong> Actividad<br />

Refinamiento <strong>de</strong> los diagramas <strong>de</strong> estados estados.<br />

Los estados representan p la ejecución j <strong>de</strong> acciones o<br />

subactivida<strong>de</strong>s<br />

Las transiciones son disparadas p cuando se completan p estas<br />

acciones o subactivida<strong>de</strong>s<br />

Semántica basada en tokens.<br />

Flujos dirigidos por procesamiento interno (en los<br />

diagramas <strong>de</strong> estados normales son dirigidos por eventos<br />

externos).<br />

Semántica basada en Re<strong>de</strong>s <strong>de</strong> Petri. No obstante no se<br />

107<br />

da una transformación a Re<strong>de</strong>s <strong>de</strong> Petri.<br />

105<br />

Canvas<br />

onDrawingMouse1Press(x,y)<br />

Idle<br />

move<br />

insert<br />

Máquinas <strong>de</strong> Estados<br />

Ejemplo Ejemplo. Herramienta <strong>de</strong> Dibujo (v)<br />

Idle<br />

[Shapes in Circle]/<br />

Insertingg<br />

ddrawCircle(x,y) Ci l ( )<br />

[Shapes in Rectangle]/<br />

drawRectangle(x,y)<br />

[Shapes in Triangle]/<br />

drawTriangle(x,y)<br />

C<br />

Moving<br />

<strong>de</strong>lete<br />

insert<br />

Idle<br />

Deleting<br />

onDrawingMouse1Press(x,y)/<br />

movingObject=find_closest(x,y)<br />

i Obj t fi d l t( ) onDrawingMouse1Click(x,y)/<br />

D i M 1Cli k( )/<br />

find_closest(x,y).<strong>de</strong>l()<br />

onDrawingMouse1Release(x,y)<br />

Moving<br />

onDrawingMouse1Motion(x,y)/<br />

oldCoords=coords(movingObject)<br />

move(movingObject, distance(oldCoords, (x,y)))<br />

Diagramas g <strong>de</strong> Actividad<br />

Ejemplo<br />

[found<br />

coffee]<br />

Find<br />

Beverage g<br />

Put Coffee<br />

Put Filter<br />

in Filter in Machine<br />

Add Water<br />

to Reservoir<br />

move<br />

Turn on<br />

Machine<br />

Brew<br />

coffee<br />

<strong>de</strong>lete<br />

106<br />

/ coffeePot.turnOn<br />

[no coffee]<br />

Get<br />

Cups<br />

light goes out<br />

Pour<br />

Coffee<br />

[found cola] Get cans<br />

of cola<br />

[no cola]<br />

Drink<br />

108


Diagramas <strong>de</strong> Actividad<br />

Swimlanes<br />

Indice<br />

Introducción.<br />

Diagramas <strong>de</strong> Clases y Objetos.<br />

Otros Diagramas. g<br />

OCL.<br />

Acción Semántica Semántica.<br />

Perfiles.<br />

Bibliografía g<br />

Lecturas sugeridas/ejercicios.<br />

109<br />

111<br />

Diagramas <strong>de</strong> Actividad<br />

Flujos <strong>de</strong> Objetos: Objectflows<br />

OCL: Object Constraint Language<br />

Lenguaje <strong>de</strong> restricciones para expresar <strong>con</strong>diciones<br />

adicionales que no po<strong>de</strong>mos expresar <strong>con</strong> diagramas y<br />

cardinalida<strong>de</strong>s.<br />

Combinar diagramas y especificaciones textuales.<br />

Lenguaje preciso, no ambiguo, <strong>de</strong>clarativo, tipado, basado<br />

en matemáticas<br />

<strong>con</strong>juntos) <strong>con</strong>juntos).<br />

(lógica <strong>de</strong> predicados y teoría <strong>de</strong><br />

Útil en DSDM: mo<strong>de</strong>los precisos p (no ( anotaciones en<br />

lenguaje natural).<br />

Se utiliza fundamentalmente junto a los diagramas <strong>de</strong><br />

clases.<br />

112<br />

110


Ejemplos<br />

Flight<br />

Flightnr: Integer<br />

availableSeats(): Integer<br />

0 0.. *<br />

flights<br />

1<br />

plane<br />

Airplane<br />

numberOfSeats: Integer<br />

flights 0 0.. *<br />

passengers<br />

0..*<br />

PPerson<br />

name: String<br />

También es un lenguaje <strong>de</strong> <strong>con</strong>sultas (mismo<br />

po<strong>de</strong>r expresivo que SQL).<br />

Context Flight::availableSeats(): Integer<br />

body: plane.numberOfSeats – passengers->size()<br />

¿Cómo se expresa el hecho <strong>de</strong> que en ningún vuelo pue<strong>de</strong> haber<br />

más pasajeros p j que q asientos tiene el avión?<br />

Restricción OCL:<br />

Context Flight<br />

Inv: passengers->size() isUnique(numSegSoc)<br />

Context Persona::<strong>con</strong>tratarHipoteca(sum: Dinero, aval: Casa)<br />

pre: self.hipotecas.mensual->sum()+sum = aval.hipotecas.principal->sum()<br />

113<br />

115<br />

Ejemplos<br />

Casa<br />

Persona<br />

valor: Dinero<br />

0 0.. *<br />

casas<br />

1 numSegSoc: S S I<strong>de</strong>ntificador<br />

Id ifi d<br />

propietario sueldo: Dinero<br />

aval 1<br />

Hipoteca<br />

principal: Dinero<br />

<strong>con</strong>tratarHipoteca(sum: Dinero,<br />

aval: Casa) )<br />

1 <strong>con</strong>tratante<br />

0..* mensual: Dinero 0..*<br />

hipotecas fechaInicio: Fecha<br />

fechaFinal: Fecha<br />

hipotecas<br />

Reglas adicionales:<br />

1. Una persona pue<strong>de</strong> tener una hipoteca sobre una casa sólo si es el<br />

propietario.<br />

22. La fecha <strong>de</strong> inicio <strong>de</strong> cada hipoteca ha <strong>de</strong> ser menor que la <strong>de</strong> final final.<br />

3. El número <strong>de</strong> la seguridad social <strong>de</strong> cada persona ha <strong>de</strong> ser único.<br />

4. Sólo es posible <strong>con</strong>tratar una nueva hipoteca si el salario <strong>de</strong> la persona<br />

es suficiente.<br />

5. Sólo es posible <strong>con</strong>tratar una nueva hipoteca si el valor <strong>de</strong> la casa aval<br />

es suficiente.<br />

Ejemplos<br />

“Los PCs pue<strong>de</strong>n <strong>con</strong>ectarse <strong>con</strong> un único Hub, los servidores <strong>con</strong> uno o varios”<br />

Context PC<br />

Inv: cable_equipo->size() = 1<br />

Context Servidor<br />

Inv: cable_equipo->size() >= 1<br />

114<br />

116


Ejercicio<br />

“Un Hub no pue<strong>de</strong> <strong>con</strong>ectarse <strong>con</strong>sigo mismo a través <strong>de</strong><br />

un puerto”<br />

Context Cable_Hubs<br />

Inv: Puerto_Hub.hub->asSet()->size() = 2<br />

Ejemplos<br />

EEspecificación ifi ió d<strong>de</strong>l l valor l iinicial i i l y d<strong>de</strong>rivado i d d<strong>de</strong> atributos/association t ib t / i ti ends: d<br />

<strong>con</strong>text Person::income : Integer<br />

init: parents.income->sum() * 1% -- pocket allowance<br />

d<strong>de</strong>rived:if i d if self.age lf < 18<br />

then parents.income->sum() * 1% -- pocket allowance<br />

else job.salary -- income from regular job<br />

endif<br />

Subexpresiones (let):<br />

<strong>con</strong>text Person inv:<br />

let income : Integer = self.job.salary->sum() in<br />

if isUnemployed then<br />

income < 100<br />

else<br />

income >= 100<br />

endif<br />

117<br />

119<br />

Ejemplos<br />

parents<br />

0..*<br />

children 0..*<br />

Ejemplos Ejemplos. Colecciones.<br />

Colecciones<br />

Tipos: Set, Or<strong>de</strong>redSet, Bag, Sequence.<br />

Operaciones <strong>de</strong> bucle <strong>con</strong> colecciones:<br />

select(expr): selecciona los elementos que cumplan una <strong>con</strong>dición.<br />

coleccion->select( expresion-logica )<br />

coleccion->select( l i l t( v | expresion-logica-<strong>con</strong>-v)<br />

i l i )<br />

coleccion->select( v : Type | expresion-logica-<strong>con</strong>-v)<br />

<strong>con</strong>text t t CCompany iinv:<br />

self.employee->select(age < 25)->notEmpty()<br />

<strong>con</strong>text Company inv:<br />

self.employee->select(gen<strong>de</strong>r=female)->notEmpty()<br />

118<br />

120


Ejemplos Ejemplos. Colecciones.<br />

Colecciones<br />

collect(expr): <strong>de</strong>vuelve la colección que resulta <strong>de</strong> evaluar expr<br />

para cada elemento <strong>de</strong> la colección fuente.<br />

self self.employee->collect( employee >collect( birthDate ) )->asSet() >asSet()<br />

forAll(expr): <strong>de</strong>vuelve verda<strong>de</strong>ro si expr es verda<strong>de</strong>ro en cada<br />

elemento <strong>de</strong> la colección.<br />

coleccion->forAll( expresion-logica )<br />

coleccion->forAll( v | expresion-logica-<strong>con</strong>-v )<br />

coleccion->forAll( v : Type | expresion-logica-<strong>con</strong>-v )<br />

<strong>con</strong>text Company<br />

inv: self.employee->forAll( isUnemployed = False )<br />

inv: self.employee->forAll( p | p.isUnemployed = False )<br />

iinv: self.employee->forAll( lf l >f All( p : Person P | p.isUnemployed i U l d = FFalse l )<br />

Colecciones Colecciones. Otras Operaciones<br />

Operaciones.<br />

Otras operaciones p <strong>de</strong> bucle:<br />

source->any(iterator|body)<br />

source->select(iterator|body)->asSequence()->first()<br />

source->collectNested(iterators|body)<br />

source collectNested(iterators|body)<br />

Bag <strong>de</strong> elementos que resultan <strong>de</strong> aplicar body a cada elemento <strong>de</strong><br />

source.<br />

source->isUnique(iterators|body)<br />

( | y)<br />

True si body se evalua a un valor diferente para cada elemento <strong>de</strong><br />

source.<br />

source->one(expr)<br />

Devuelve true si existe exactamente un elemento <strong>de</strong> source que cumple<br />

la <strong>con</strong>dición.<br />

source->reject(expr)<br />

Devuelve una colección <strong>con</strong> los elementos <strong>de</strong> source que no cumplen la<br />

<strong>con</strong>dición.<br />

source->sortedBy(expr)<br />

Or<strong>de</strong>na source, source resulta en un Or<strong>de</strong>redSet<br />

121<br />

123<br />

Ejemplos Ejemplos. Colecciones.<br />

Colecciones<br />

exists(expr): <strong>de</strong>vuelve true si al menos hay un elemento en la<br />

colección para el que expr es verda<strong>de</strong>ra verda<strong>de</strong>ra.<br />

coleccion->exists( expresion-logica )<br />

coleccion->exists( v | expresion-logica-<strong>con</strong>-v )<br />

coleccion->exists( v : Type | expresion-logica-<strong>con</strong>-v )<br />

<strong>con</strong>text Company<br />

inv: self.employee->exists( age > 50 )<br />

inv: self.employee->exists( p | p.age > 50 )<br />

inv: self.employee->exists( p : Person | p.age > 50 )<br />

iterate(…): itera sobre todos los elementos <strong>de</strong> una colección.<br />

coleccion->iterate( elem : Type; acc : Type = | expresion-logica-<br />

<strong>con</strong>-elem-y-acc l )<br />

collection->collect(x : T | x.property)<br />

collection->iterate(x ( : T; ; acc : T2 = Bag{} g{} | acc->including(x.property))<br />

g( p p y))<br />

Indice<br />

Introducción.<br />

Diagramas <strong>de</strong> Clases y Objetos.<br />

Otros Diagramas. g<br />

OCL.<br />

Acción Acción Semántica.<br />

Perfiles.<br />

Bibliografía g<br />

Lecturas sugeridas/ejercicios.<br />

aña<strong>de</strong> un elemento a una colección<br />

122<br />

124


Acción Semántica<br />

Una parte <strong>de</strong>l meta meta-mo<strong>de</strong>lo mo<strong>de</strong>lo <strong>de</strong> UML <strong>con</strong>tiene la<br />

especificación <strong>de</strong> un lenguaje para la manipulación <strong>de</strong><br />

mo<strong>de</strong>los (i.e. sólo la sintaxis abstracta).<br />

Mo<strong>de</strong>los similares a los <strong>de</strong> flujo <strong>de</strong> datos.<br />

Permite <strong>de</strong>scribir el <strong>con</strong>tenido <strong>de</strong> métodos, y acciones<br />

ejecutables en un lenguaje abstracto, antes <strong>de</strong> la<br />

iimplementación. l ió<br />

Se persigue un modo estándar estándar, in<strong>de</strong>pendiente <strong>de</strong> la<br />

plataforma y <strong>de</strong> la implementación <strong>de</strong> especificar<br />

comportamientos <strong>de</strong>tallados.<br />

125<br />

¿Primer paso hacia la “ejecutabilidad” <strong>de</strong> mo<strong>de</strong>los UML?<br />

Acción Semántica<br />

Activida<strong>de</strong>s. Ejemplo.<br />

Sintaxis abstracta<br />

(parcial)<br />

127<br />

(De C. Bock)<br />

Acción Semántica<br />

AAcciones i y Activida<strong>de</strong>s.<br />

A ti id d<br />

Acción: Unidad fundamental <strong>de</strong> comportamiento.<br />

p<br />

Convierte un <strong>con</strong>junto <strong>de</strong> entradas en un <strong>con</strong>junto <strong>de</strong><br />

salidas salidas.<br />

Las entradas pue<strong>de</strong>n ser salidas <strong>de</strong> otras acciones<br />

(dataflow).<br />

LLas acciones i están tá <strong>con</strong>tenidas t id en activida<strong>de</strong>s, ti id d que lles<br />

proporcionan un <strong>con</strong>texto, así como restricciones <strong>de</strong><br />

secuencialidad y <strong>con</strong>trol, y mecanismos <strong>de</strong> estructuración<br />

anidada. id d<br />

Lenguaje <strong>de</strong> acción semántica: acciones<br />

primitivas+mecanismos <strong>de</strong> estructuración <strong>de</strong> 126 las<br />

activida<strong>de</strong>s.<br />

Acción Semántica<br />

Activida<strong>de</strong>s. Ejemplo.<br />

Sintaxis abstracta<br />

(parcial)<br />

128


Indice<br />

Introducción.<br />

Diagramas <strong>de</strong> Clases y Objetos.<br />

Otros Diagramas. g<br />

OCL.<br />

Acción Semántica.<br />

Perfiles.<br />

Bibliografía g<br />

Lecturas sugeridas/ejercicios.<br />

Perfiles<br />

En UML1.x: estereotipos y etiquetas<br />

<br />

UML::Class<br />

<br />

Desventajas:<br />

Las etiquetas no tienen tipo, son Strings.<br />

No es posible <strong>de</strong>clarar nuevas asociaciones.<br />

<br />

MiComponente<br />

{ transactional}<br />

Formalmente la extensión se realiza en el nivel M1. “Semanticamente”<br />

en el M2. 2<br />

M0<br />

M3 MOF Meta-mo<strong>de</strong>lo <strong>de</strong> MOF<br />

M2 UML Meta-mo<strong>de</strong>lo <strong>de</strong> UML<br />

M1<br />

MMo<strong>de</strong>los d l UML<br />

Datos/Tiempo ejecución<br />

129<br />

131<br />

Perfiles<br />

MMecanismos i d<strong>de</strong> extensión t ió (i (i.e. no modificación) difi ió ) para<br />

<strong>de</strong>clarar nuevas <strong>con</strong>strucciones <strong>de</strong>ntro <strong>de</strong> UML,<br />

adaptadas p a un dominio específico. p<br />

Útiles para: p<br />

Dar una terminología adaptada a un dominio específico (p.ej.:<br />

EJBs, CORBA, Servicios web, etc).<br />

Dar una sintaxis para elementos que no tienen notación (p (p.ej.: ej :<br />

acciones).<br />

Dar una notación distinta para un símbolo existente.<br />

Añadir “semántica” que no se especifica en el meta meta-mo<strong>de</strong>lo. mo<strong>de</strong>lo<br />

Añadir restricciones adicionales.<br />

Añadir información adicional útil para transformaciones.<br />

Ejemplo j p<br />

Un perfil sencillo para EJB<br />

130<br />

132


Ejemplo j p<br />

Definiendo un perfil<br />

Sintaxis <strong>con</strong>creta <strong>de</strong> un stereotype<br />

Sintaxis abstracta <strong>de</strong> un stereotype<br />

Ejemplo<br />

Perfil para servicios web<br />

http://www.ibm.com/<strong>de</strong>veloperworks/rational/library/05/419_<br />

133<br />

135<br />

Ejemplo j p<br />

Aplicación <strong>de</strong> perfiles<br />

Clases como<br />

tipos <strong>de</strong> las<br />

propieda<strong>de</strong>s <strong>de</strong>l<br />

stereotype<br />

Perfiles en UML2 <strong>UML2.0</strong> 0<br />

FFormalmente l t seguimos i realizando li d lla extensión t ió<br />

en el nivel M1.<br />

Mejor soporte <strong>de</strong> propieda<strong>de</strong>s y asociaciones<br />

que en la versión 1.x.<br />

¿Cuándo realizar un profile y cuándo crear un<br />

meta-mo<strong>de</strong>lo basado en MOF?.<br />

Este mecanismo no sería necesario <strong>con</strong><br />

herramientas más potentes <strong>de</strong> meta-mo<strong>de</strong>lado<br />

(que permitan acce<strong>de</strong>r al meta meta-mo<strong>de</strong>lo mo<strong>de</strong>lo <strong>de</strong> UML) UML).<br />

136<br />

134


Perfiles<br />

Multitud <strong>de</strong> perfiles “no estándar”.<br />

Perfiles promovidos por la OMG:<br />

CORBA.<br />

CORBA Component Mo<strong>de</strong>l (CCM).<br />

Enterprise Application Integration (EAI). (EAI)<br />

Enterprise Distributed Object Computing (EDOC) (UML 1.4):<br />

Enterprise Collaboration Architecture (ECA).<br />

Metamo<strong>de</strong>l and UML Profile for Java and EJB.<br />

Fl Flow Composition C iti MMo<strong>de</strong>l d l (FCM)<br />

UML Profile for Patterns<br />

UML Profile for ECA<br />

UML Profile for Meta Object Facility<br />

UML Profile P fil for f Relationships<br />

R l ti hi<br />

Real-Time Embed<strong>de</strong>d Systems (MARTES).<br />

QoS and Fault Tolerance Characteristics and Mechanisms<br />

Schedulability, y Performance and Time<br />

System on a Chip (SoC).<br />

<strong>Software</strong> Radio.<br />

Voice.<br />

Systems Engineering (SysML). (SysML)<br />

Testing.<br />

Otros: SPEM.<br />

Bibliografía: UML<br />

Web <strong>de</strong> la OMG sobre UML: http://www.uml.org<br />

UML 2.0 in a Nutshellby Dan Pilone; Neil Pitman. O'Reilly. June 2005<br />

Perdita Stevens, Rob Pooley. “Utilización <strong>de</strong> UML en Ingeniería <strong>de</strong>l<br />

<strong>Software</strong> <strong>con</strong> Objetos y Componentes” Componentes . Addison Wesley Wesley, 2002 2002.<br />

Grady Booch, James Rumbaugh, Ivar Jacobson. “The Unified Mo<strong>de</strong>ling<br />

Language User Gui<strong>de</strong>”. Addison-Wesley, 1999.<br />

UML 2 Toolkit. Eriksson, H. E., Penker, M., Lyons, B., Fado, D. OMG<br />

Press, Wiley. 2004.<br />

Craig Larman Larman. “Applying Applying UML and Patterns Patterns” . Prentice Hall Hall. 2002 2002.<br />

137<br />

139<br />

Indice<br />

Introducción.<br />

Diagramas <strong>de</strong> Clases y Objetos.<br />

Otros Diagramas. g<br />

OCL.<br />

Acción Semántica.<br />

Perfiles.<br />

Bibliografía. g<br />

Lecturas sugeridas/ejercicios.<br />

Bibliografía<br />

UML:<br />

Infraestructura y Superestructura:<br />

http://www.omg.org/technology/documents/formal/uml.htm<br />

Atiidd Activida<strong>de</strong>s y AAcciones: i<br />

Conrad Bock: “UML 2 Activity and Action Mo<strong>de</strong>ls”, in Journal of<br />

Object Technology, vol. 2, no. 4, July-August 2003, pp. 43-53.<br />

http://www.jot.fm/issues/issue_2003_07/column3<br />

Conrad Bock: “UML 2 Activity and Action Mo<strong>de</strong>ls Part 2:<br />

Actions”, Actions , in inJournal Journal of Object Technology, vol. 2, no. 5, pp. 41 41-<br />

56. http://www.jot.fm/issues/issue_2003_09/column4<br />

“UML 2 Activity and Action Mo<strong>de</strong>ls Part 3: Control No<strong>de</strong>s”, in<br />

Journal of Object Technology, Technology vol vol. 22, no no. 66, pp pp. 7-23 7-23.<br />

http://www.jot.fm/issues/issue_2003_11/column1<br />

Conrad Bock: “UML 2 Activity and Action Mo<strong>de</strong>ls Part 4: Object<br />

NNo<strong>de</strong>s”, d ” iin JJournal lof fObj Object tT Technology, h l vol. l 33, no. 11, pp. 27 27-<br />

41. http://www.jot.fm/issues/issue_2004_01/column3<br />

138<br />

140


Bibliografía: Statecharts<br />

Harel D D. “On Visual Formalisms” Formalisms”. Communications of the<br />

ACM. Vol 31, No. 5. Pp.: 514-530. Mayo 1988.<br />

Harel D., Naamad A. “The STATEMATE Semantics of<br />

Statecharts”. ACM Transactions on <strong>Software</strong><br />

Engineering and Methodology Methodology, Vol Vol. 55, No No. 44, Oct Oct. 1996 1996,<br />

pp.: 293-233.<br />

DDavid id HHarel l andd EEran GGery. EExecutable bl object bj<br />

mo<strong>de</strong>ling with statecharts. IEEE Computer, pages 31-42,<br />

1997.<br />

Bibliografía<br />

Perfiles UML.<br />

Lista <strong>de</strong> perfiles p estándar:<br />

http://www.omg.org/technology/documents/profile_catalog.htm#UML_for_EDOC<br />

141<br />

143<br />

Bibliografía<br />

OCL<br />

The Object Constraint Language 2nd Edition. Getting your<br />

Mo<strong>de</strong>ls Ready for MDA. MDA Warmer, Warmer Kleppe Kleppe. Addison Addison-Wesley. Wesley<br />

2003.<br />

Especificación <strong>de</strong> OCL 2.0: http://www.omg.org/docs/ptc/03-<br />

10-14.pdf<br />

Lecturas Recomendadas<br />

D. D Th Thomas. “UML – UUnified ifi d or UUniversal i l<br />

Mo<strong>de</strong>ling Language?”. Journal of Object<br />

Oi Oriented t d TTechnology. h l VVoll 2 (1) (1), JJanuary-<br />

February 2003.<br />

S. S. Anonsen. “Experiences Experiences in Mo<strong>de</strong>ling for a<br />

Domain Specific Language”. UML’04<br />

Satelite Activities, LNCS 3297, pp.: 187- 187<br />

197, Springer (2005).<br />

142<br />

144

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!