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

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<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!