Está en la página 1de 35

Indice

Modelado de Software con UML2.0


http://uml.org

Esther Guerra, Juan de Lara {Esther.Guerra, Juan.deLara}@uam.es Ingeniera g Informtica Universidad Autnoma de Madrid

Introduccin. g de Clases y Objetos. j Diagramas Otros Diagramas. OCL Accin Semntica. Perfiles. Bibliografa Lecturas sugeridas/ejercicios.
1 2

Introduccin
Unified Modeling Language. Language Estndar de la OMG (http://www.uml.org) Notacin estndar para la descripcin de sistemas orientados a objetos, a partir de los lenguajes de modelado ms conocidos:
Booch - OOD. Rumbaugh - OMT. Jacobson - OOSE y Objectory. Objectory

Introduccin
L Lenguaje j grfico fi para visualizar, i li especificar, ifi construir t i y documentar partes de un sistema software desde puntos de vista. distintos p Puede utilizarse:
Con cualquier proceso de desarrollo. A lo largo de todo el ciclo de vida. Con distintas tecnologas de implementacin

Combina las mejores propiedades de:


Conceptos de modelos de datos (ERD) Modelos de negocios (workflow) Modelos de Objetos j Modelos de Componentes

Uso tambin en otras reas, , como la ingeniera g de negocio, modelado de procesos, etc.
Adaptacin/Extensin mediante perfiles.
3 4

Introduccin
No es un mtodo, mtodo ni un proceso ni una metodologa. metodologa No establece qu modelos construir en el proceso de desarrollo. P Para un ptimo ti aprovechamiento, h i t d debe b ser usado d en un proceso:
guiado por casos de uso, centrado en la arquitectura arquitectura, iterativo e incremental.
5

Modelos
Familia de notaciones, tiles para describir p de un sistema: distintos aspectos
Esttico. Describe los elementos del sistema y sus relaciones. Dinmico. Describe el comportamiento del sistema a lo largo del tiempo. tiempo
Casos de Uso. Desde el punto de vista del usuario. usuario
6

Vistas
Vista Vi t d de Casos C d de U Uso
Funcionalidad externa del sistema

Modelos
Tipos de Diagramas

Vista Vi t Lgica L i
Estructura esttica y conducta dinmica del sistema

Vista Vi t d de Componentes C t
Organizacin modular en componentes

Vista Vi t d de Concurrencia C i
Comunicaciones y sincronizacin

UML

Vista Vi t d de Despliegue D li
Arquitectura fsica
7

Modelos
8

Tipos de Diagramas

Tipos de Diagramas
Cmo estamos seguros g de q que la composicin de un conjunto de diagramas es correcta, es decir, que los modelos son consistentes?. consistentes? Cmo podemos comprobar ciertas propiedades de nuestro sistema global? Cul es la semntica precisa de los diagramas y de sus combinaciones? UML vs. Lenguajes Especficos de Dominio.
9 10

Indice
Introduccin. Introduccin

Clases y Objetos
L Los di diagramas d de Cl Clases y d de Obj Objetos t son l los principales i i l modos de representar los aspectos estructurales en UML. Diagramas de clases. Estructura del sistema.
Clases.
Atributos: Tipos, valores iniciales. Operaciones: visibilidad.

Diagramas de Clases y Objetos.


Otros Diagramas. OCL. Accin Semntica. Perfiles. Perfiles Bibliografa Lecturas sugeridas/ejercicios.
11

Relaciones con otras clases: Asociaciones

Diagramas de objetos. Estructura del sistema en tiempo de ejecucin.


Objetos. Instancias de una Clase.
Atributos (valores actuales) actuales).

Links. Relaciones entre objetos, instancias de asociaciones.

12

Clases y Objetos
Elemento

Clases y Objetos
Nombre de la clase
Hidrgeno

Circulo
-radio: double -centrox: t double d bl -centroy: double +Area(): double +Permetro(): double

Diagrama de clases l
Carbono

visibilidad

At ib t Atributos Operaciones

:Hidrgeno

:Hidrgeno

Diagrama de objetos

:Hidrgeno

:Carbono

:Carbono

:Hidrgeno

Nombre del d l objeto bj

unCirculo: Circulo radio = 3.4 centrox = 2.0 20 centroy = 2.0

Clase del objeto Valores de los atributos

:Hidrgeno

:Hidrgeno

13

14

Clases
Atributos
Notacin p para atributos:

Clases
Ejemplo atributos
ClaseA

[visibilidad] [/] nombre [: tipo] [multiplicidad] [= valor] [{ propiedad }] Visibilidad (opcional):


Pblica: + Privada: Protegida: # Paquete: ~

name: String shape: Rectangle + size: Integer [0..1] / area: Integer {readOnly} h i ht I height: Integer t =5 width: Integer # pos: Point

/ indica que el atributo es derivado. La multiplicidad va entre [ ] y por defecto vale 1. Propiedades vlidas: {readOnly} {readOnly}, {union} {union}, {subsets <property<property name>}, {redefines <property-name>}, {ordered}, {bag}, {seq}, {sequence}, y {composite}. Un atributo subrayado es esttico.
15

ClaseB
id: {redefines name} shape: Square
16

Clases
Mtodos
Notacin N t i para mtodos: t d [visibilidad] [ ] nombre ( [lista-parametros] [ p ] ) : [{propiedad}] [{p p }] Visibilidad (opcional). nombre del mtodo lista de parmetros formales, separados por coma:

Asociaciones: Composicin
Un Crculo contiene un Punto Se representa con una Composicin

Crculo

Punto

direccion nombre : tipo [multiplicidad] = valor [{propiedad}] Los mtodos estticos se subrayan.
Ejemplos:
display () -hide () +createWindow (location: Coordinates Coordinates, container: Container [0 [0..1]): 1]): Window +toString (): String 17

Relacin del tipo todo/parte


El todo es el Crculo La parte es el Punto

Es una relacin fuerte


Si el Crculo se destruye o copia, tambin lo es el Punto La cardinalidad en la parte del todo es 0..1 o 1.
18

Asociaciones: Navegacin, Roles y Cardinalidad


Las asociaciones pueden tener etiquetas:
Roles en la relacin Multiplicidad M lti li id d ( (cardinalidad) di lid d)
Crculo centro 1 Punto
navegacin g

Asociaciones
Ejemplos de Navegacin y Cardinalidad

Ejemplos Ej l de d cardinalidad: di lid d


1..* 0 * 0..* 0..1 124 1,2,4 3 mnimo 1, no hay mximo mnimo 0, 0 no hay mximo mnimo 0, mximo 1 uno dos o cuatro uno, exactamente tres

Navegacin: N i
Unidireccional Bidireccional No especificado. No navegable (x)
19 20

Asociaciones: Agregacin
Cuando la relacin todo/parte no es tan fuerte, , se utiliza Agregacin g g

Asociaciones y Dependencia. Dependencia


Existen relaciones de conocimiento entre clases que no implican una relacin todo/parte
Cliente titular 1 * 1.. cuentas 0 * 0.. Cuenta

Ventana

susFiguras 0 * 0..

Figura

Dependencia: relacin muy dbil.


Muchas M h veces no se h hace explcita. l it
Ventana susFiguras 0..*
Draw(ContextoDibujo)

Figura

La ventana contiene figuras, pero cada una puede existir sin la otra
21

suContexto ContextoDibujo
22

Dependencia

Clases Asociativas
Asociacin con atributos propios.
Empleado
casado con

Ejemplo
Cliente
nombre direccin

Orden 1 0..*
fecha estado calcImpuesto calcTotal calcPesoTotal

1 Matrimonio
fecha

Persona
Pago
monto

testigos 2

1..*

0 * 0..
lnea 1..* Crdito
fecha nmero tipo autorizado
23

Clase Asociativa

Efectivo
moneda

Cheque
nombre identifBanco autorizado

DetalleOrden
cantidad tipoImpuesto calcSubtotal calcPeso

Item 0 * 0.. 1
peso descripcin precioPorCantidad obtenerPeso
24

Clases y Objetos j
Estilo

Ejercicio je c c o (c (clase) ase)


Un sistema sencillo de revisin de conferencias cientficas El sistema puede gestionar varias conferencias a la vez. Cada conferencia tiene uno o dos chairs. Los autores envian artculos, dentro de un plazo. Uno de los autores es el autor de correspondencia. Estos son revisados por 3 revisores, dentro de un plazo. En base a las revisiones, los chairs deciden aceptar o rechazar los artculos. Para ello, envan una notificacin a los autores de correspondencia d i de d cada d artculo. t l El autor de correspondencia de los artculos aceptados enva una versin final, dentro de un plazo. Los artculos artc los estn descritos por un n ttulo, tt lo autores, a tores resumen res men y cuerpo del artculo. Autores, revisores y chairs estn descritos por un nombre, afiliacin y correo. correo Las revisiones estn compuestas por una nota (del 0 al 5) y una seccin de comentarios. Los revisores de una conferencia pueden enviar artculos, artculos pero no revisar sus propios artculos. Los chairs de la conferencia no pueden enviar artculos.

Los atributos no deben ser objetos (utilizar relaciones en tal caso). En los diagramas de clases no suelen aparecer:
Constructores Mtodos de acceso (get/set) Mtodos de gestin de elementos de una asociacin o agregacin (por ejemplo, add/remove)

Ya que son detalles de implementacin y no de diseo. que el diagrama g de clases es un No olvidar q modelo, y por tanto una abstraccin.

25

Ejercicio (entrega)
Especificar un diagrama de clases que describa redes de ordenadores. d d Los elementos que se pueden incluir en la red son:
Servidor, PC, Impresora. Hub, Cable de red.

Ms sobre asociaciones
Asociaciones n-arias

Asociaciones entre ms de dos clases:


Ao
temporada d

Los PCs pueden conectarse con un nico Hub, los servidores con uno o varios. Los L S id Servidores y PCs PC pueden d generar mensajes, j con una cierta i t longitud. Los Hubs tienen un nmero de puertos, algunos de los cuales puede usarse para conectar con otros Hubs. Hubs Tienen cierta probabilidad de perder mensajes. Las impresoras pueden averiarse, con cierta probabilidad, durante cierto tiempo. tiempo Entrega individual el da 2 de Noviembre.
27

E i Equipo

equipo

pichichi

J Jugador d

29

Ms sobre asociaciones
Adornos en asociaciones y fin de asociacin.

Ms sobre asociaciones
Adornos en asociaciones y fin de asociacin: Ejemplos

A Asociaciones i i d derivadas i d ( (con un / d delante l t d del l nombre). b ) Propiedades, cerca del nombre de la asociacin. Los finales de la asociacin pueden adornarse con:
Multiplicidad. Nombre (rol). ( ) Propiedades:
{subsets <nombre-prop>}. {redefined <nombre-fin-asoc>} <nombre-fin-asoc>}. {union}. {ordered} (un conjunto ordenado). {bag} (conjunto con repeticin) repeticin). {sequence} o {seq} (bag ordenado).

a 0..1

b
{ordered}

d 1 0..1
{subsets b}

Para un objeto de tipo C, la coleccin d es un subconjunto de la coleccin b.


30 31

Ms sobre asociaciones
Asociaciones Cualificadas
Un cualificador declara una particin del conjunto de instancias asociadas con respecto a la instancia cualificada.

Pre y Post PrePost- Condiciones, Condiciones Notas


pre-condicin

Banco
NumCuenta

Tablero Ajedrez
fila: Fila col: Colum

* 0..1

1 1

body-condition

Persona

Casilla

Dado un objeto cualificado, el nmero de objetos al otro lado de la asociacin viene i d dado d por l la multiplicidad lti li id d d declarada. l d
0..1 : el valor del cualificador es nico. 0..* : el conjunto de instancas asociadas se particiona en subconjuntos. Similar a un array asociativo, asociativo map o tabla hash hash.
32

post-condicin
33

Interfaces
Clase <<interface>> MiInterfaz mtodos Clase MiInterfaz Clase MiInterfaz

Plantillas

Una clase annima ligada:


Farray<T -> Point>
34

T -> Point K -> 10

35

Persona
- nombre - edad + mostrar()

Objetos
Empleado
subordinados - sueldo_bruto + mostrar () + calcular_salario_neto() l l l i t () empleados

Indice
Cliente
- nombre_empresa - telefono_de_contacto +mostrar() clientes

Directivo
- categoria + mostrar ()

Introduccin. Diagramas de Clases y Objetos.

Empresa
- nombre

Otros Diagramas. Diagramas


Diagramas Estructurales. Casos de Uso. Uso Diagramas de Comportamiento.
OCL. Accin Semntica. P fil Perfiles. Bibliografa Lecturas sugeridas/ejercicios. sugeridas/ejercicios
37

e2 : Empleado
- nombre=Mara - edad edad=25 25 - sueldo_bruto=36000 empleados subordinados

e1 : Empleado
- nombre=Pedro - edad edad=23 23 - sueldo_bruto=30000 empleados

d1 : Directivo
nombre=Luis edad=35 d d 35 sueldo_bruto=36000 categoria=C1

empleados

Empresa
- nombre=HGJ

clientes

c1 : Cliente
nombre=Luis edad=35 nombre_empresa=Macroware telefono_de_contacto=91555666
36

Diagramas Estructurales
Clases y Objetos (ya vistos). vistos) Componentes.
Mdulos con interfaces.

Componentes
Componente C t = Unidad U id d Modular M d l con interfaces i t f bien definidos que es reemplazable en su entorno. nfasis f i en reutilizacin tili i y encapsulamiento. l i t Servicios que provee y requiere (interfaces). Componentes lgicos (componentes de negocio, de proceso) y fsicos (EJB, CORBA, COM+, .NET, )
39

Estructuras E t t C Compuestas t .
Clases con estructura interna.

Paquetes.
Estructura de la aplicacin.

Despliegue.
Vista fsica.

Componentes
Interfaces que ofrece Interfaces que requiere

Componentes
Vi t d Vista de caja j bl blanca

40

41

Estructuras Compuestas
Composicin C i i de d elementos l t ( l ifi d (clasificadores o colaboraciones) Instancias en tiempo de ejecucin que colaboran a travs de enlaces para alcanzar objetivos comunes. Colaboraciones: a travs de roles. Se aade a las clases estructura internas y puertos.
42

Estructuras Compuestas
Estructura interna de una clase. clase

Estructura interna de una clase. Multiplicidades.

43

Estructuras Compuestas p
Colaboracin.
E t t Estructura i interna t d de una colaboracin. l b i

Paquetes
Un paquete es un contenedor que agrupa elementos relacionados. Los diagramas de paquetes muestran la estructura de alto nivel de la aplicacin. aplicacin

44

45

Paquetes
Un paquete puede extender a otro uniendo sus contenidos.

Paquetes. q Unin (merge). ( g )

El contenido del paquete target se une con el contenido del paquete source por medio de especializacin y redefinicin donde sea aplicable (elementos ( del mismo nombre). )

46

47

Paquetes Plantillas Paquetes. Plantillas.

Despliegue
Definen D fi l la arquitectura it t d de ejecucin j i d de un sistema. i t Representa la asignacin de artefactos software a nodos nodos. Nodos = elementos hardware, o entornos de ejecucin software. Artefactos = elementos concretos (p.e.: ficheros) que son el resultado del proceso de desarrollo.
48 49

Despliegue p g
Relaciones entre artefactos.

Casos de Uso
Describen D ib qu hace h el l sistema i t d d el desde l punto t de vista de un observador externo. Ponen nfasis en qu hace el sistema, no en cmo l hace. lo h Un escenario es una instancia particular de un diagrama de casos de uso.
Manifestacin de elementos a travs de artefactos
50

Ejemplo de lo que ocurre cuando alguien interacta con el l sistema i t


51

Casos de Uso
Actor A t = Algo Al con comportamiento t i t (persona, ( otro t programa, organizacin...), que interactua con el sistema. sistema Escenario E i (i t (instancia i d de caso de d uso) ) = Secuencia de acciones e interacciones entre los actores y el sistema. sistema Caso C d Uso de U = Coleccin C l i de d escenarios i (xito ( it y fracaso) que describen actores que usan el sistema para conseguir un objetivo. objetivo
52

Casos de Uso: Ejemplo

Cajero

Terminal Punto de Venta (TPV)


53

Casos de Uso: Ejemplo


CASO DE USO 1: Procesar venta Actor Primario:
Cajero. C j

Casos de Uso: Ejemplo


Garanta de xito (Postcondiciones):
Se registra la compra en el sistema. Se calcula el impuesto aplicable. Se actualizan los sistemas de inventario y de contabilidad. Se registran las comisiones. Se genera un recibo. Se registran las aprobaciones de pago por tarjeta.

Interesados y objetivos:
Cajero: Quiere anotaciones precisas y rpidas de precios, sin errores. Cliente: Cli t Q Quiere i que el l pago sea rpido id con el l mnimo i esfuerzo. f Q i Quiere una prueba de compra para justificar devoluciones. Compaa: Quieren almacenar las transacciones y satisfacer los intereses de los clientes. Comercial: Quiere que se le actualicen sus comisiones por venta. Agencias de impuestos gubernamentales: Quieren recolectar impuestos de cada venta. Puede que haya varias agencias (nacionales, regionales, etc.) t ) Servicios de Autorizacin de Pagos (por tarjetas de crdito): Quiere recibir peticiones digitales de autorizaciones en el formato y protocolo correcto.

Escenario principal de Exito: 1. Llega un clienta al TPV con bienes o servicios que comprar. 2. El cajero comienza una nueva compra. 3. El cajero introduce un identificador de producto. 4 El sistema 4. i t registra i t el l elemento l t y presenta t una descripcin d i i del d l mismo, i su precio i y total actual. Se calcula el precio de una lista de reglas. j repite p los p pasos 3-4 hasta q que no hay y ms elementos. El cajero 5. El sistema presenta el total con los impuestos calculados. 6. El cajero le dice el total al cliente, y le pide que pague. 7 El cliente paga y el sistema procesa el pago. 7. pago 8. El sistema registra la venta completada y manda la informacin a los sistemas externos de inventario y contabilidad. 9. El sistema genera el recibo. 10. El cliente se va.
55

Precondiciones:
El cajero se ha identificado y autentificado.

54

Casos de Uso: Ejemplo


Extensiones (Flujos alternativos): a*. En cualquier momento, el sistema falla. 3a. Identificador invlido. 1. El sistema seala un error y rechaza la entrada. 7a. Pago en efectivo. ... 7b Pago con tarjeta 7b. tarjeta. ... Requisitos especiales: Pantalla tctil en panel grande y plano. El texto debe ser visible desde un metro. Respuesta de autorizacin de crdito en menos de 30 secs, el 90% de las veces. Recuperacin robusta cuando el acceso a sistemas externos (tales como el inventario, impuestos, etc.) falla. Posibilidades de internazionalizacin de texto. Reglas de negocio insertables en los pasos 3 y 7. ...
56

Casos de Uso: Ejemplo


Lista de variaciones de tecnologa y datos: 3a. Se introduce el identificador del elemento mediante escner de cdigo de barras o mediante el teclado. 3b. Distintos esquemas de identificadores: UPC, EAN, JAN o SKU. 7a. La informacin sobre el pago con tarjeta se puede introducir mediante el teclado o lector. 7b. Se pide firma en papel. En dos aos, creemos que muchos clientes van a querer captura de firma digital. Frecuencia de ocurrencia: Puede ser casi continua. Temas abiertos: Cules son las posibles variaciones en las leyes sobre impuestos? Explorar el tema de recuperacin en caso de fallo de sistemas externos. Qu modificaciones se necesitan para negocios distintos? Debe el cajero extraer el cajn con la recaudacin al terminar? Puede el cliente usar directamente el lector de tarjetas o es el cajero el que lo hace?
57

Casos de Uso: Ejemplo


TPV
Procesar Venta cajero Procesar Devoluciones
actor Analizador de A ti id d de Actividad d Ventas

Casos de Uso: Ejemplo


Cancel Appointment
Servicio de Autorizacin de Pagos
actor Calculador de Impuestos p

Make Appointment
<<include>> <<incl de>> <<include>>

S h d l Scheduler

Check Patient Record

Analizar Actividad ... Gestionar Seguridad Gestionar Usuarios

Patient

Request Medication
<<extend>>

Defer Payment

Doctor

actor Sistema de contabilidad

P Bill Pay
Extensions Points More Treatment
58

Clerk
Bill Insurance
59

Administrador del sistema

Casos de Uso: Ejemplo


Son S til tiles en t tres reas:
Especificacin de requisitos Comunicacin con los clientes
Su simplicidad los convierte en excelentes medios de comunicacin

Diagramas de Comportamiento Comportamiento.


Diagramas Di d Interaccin de I t i .
Comunicacin. Secuencia. j de la interaccin. Visin de conjunto Tiempo.

Diagrama de Estados (Statecharts). Diagrama de Actividad.


60

Generacin de casos de prueba


A partir de los escenarios de un Caso de Uso

Diagramas de Interaccin
Diagrama de Comunicacin
Muestra un contexto y una interaccin. interaccin

Diagramas de Interaccin
Estructura E t t d de l los participantes ti i t
Diagramas de Comunicacin

Patrones de comunicacin
Diagramas de Comunicacin Diagramas de Secuencia

Diagrama Di d Secuencia de S i
Representacin explcita de comunicaciones, eje temporal. Es ms apropiado para interacciones complicadas la secuencia de

Temporizacin p de la comunicacin.
Diagramas de Secuencia Diagramas de Tiempo.

aplicaciones

con
62

Estructuracin de las interacciones


Diagrama g de visin de conjunto j de la interaccin.
63

Diagramas de Comunicacin
Llamadas anidadas:
realizarPago(cantidad)

Diagramas g de Comunicacin
Ejemplo.
redisplay()

:Controller
:Registro
1: realizarPago(cantidad)

:Window

:Venta

1.1: crear(cantidad)

1:displayPositions(window) 1.1*[i:=1..n]: drawSegment(i)

1.1.3.1:add(self) contents {new}

:Pago

wire

wire:Wire
<< self >>

<< local >>

line

Iteraciones:
Ejectuar() :Simulador 1*[i:=1..N]: num:= nextInt()

i-1 1 1 1 r0:= 1.1.1a: 0 position() i i ()


:Random

1.1.2: create(r0,r1) 1.1.3: display(window) 1 1 1b r1:= 1.1.1b: 1 position() i i ()

:Line Li {new} { }

left:Bead
64

right:Bead g
65

Diagramas de Secuencia
R Representa t conjunto j t de d mensajes j entre t roles l (o instancias) en una interaccin Dos dimensiones:
Tiempo (generalmente vertical); puede ser una escala si el sistema es de tiempo real Diferentes Dif t instancias i t i (generalmente ( l t horizontal); h i t l) el l orden relativo no tiene importancia

Diagramas de Secuencia
Traza:secuencia de ocurrencias de eventos <e1 e2 ...en> La semntica de una interaccin es un par de conjuntos de trazas (vlidas e invlidas) [P, I]. P Pueden d existir i ti trazas t no incluidas i l id en los l d dos conjuntos j t anteriores. Equivalencia de interacciones, si sus conjuntos de trazas son iguales. Una interaccin se puede especializar: se aaden ms j trazas al conjunto.
66 67

Se muestra la existencia y duracin de las instancias, pero no sus relaciones

Diagramas de Secuencia
:caller :exchange a: lift receiver b: dial tone :receiver

Diagramas de Secuencia

Objetos Focos de Control Mensajes

c: dial di l digit di it ... d: route ringing tone phone rings answer phone stop tone stop ringing
68

Gate (formal), con nombre out Unlock out_Unlock


69

Diagramas g de Secuencia
Operadores sobre interacciones.
Fragmentos combinados, combinados operadores (i):
Alternativa (alt).
Eleccin (mediante una guarda) de una interaccin. interaccin

Diagramas g de Secuencia
Operadores sobre interacciones.
Secuenciacin dbil (seq). )
Define un conjunto de trazas que cumple:
1. Se mantiene el orden de eventos de los operandos 2. Eventos de otras lneas de vida de otros operandos pueden venir en cualquier orden. 3. Eventos de la misma lnea de vida de otros operandos se ordenan de tal manera que cualquier evento del primer operando va antes que el del segundo.

Asercin (assert).
La a secue secuencia c a espec especificada cada po por e el ope operador ado es la a nica ca vlida. da

Opcin (opt).
Equivalente a un operador alt con un solo fragmento.

Secuenciacin estricta (strict).


Secuenciacin estricta en el orden de los eventos de los operandos.

Ruptura (break).
El operando se ejecuta en lugar del resto de la interaccin englobada en el fragmento padre. padre .

Negativa (neg).
Define trazas invlidas.

Paralelo (par).
Mezcla de las trazas de los operandos (cualquier entrelazado es vlido mientras preserve el orden de los eventos de cada operando). operando)
70

Regin crtica (critical).


Los eventos del operando no pueden mezclarse con ningn otro.
71

Diagramas g de Secuencia
Operadores sobre interacciones. Alternativa.

Diagramas g de Secuencia
Operadores sobre interacciones. Opcin.

72

73

Diagramas g de Secuencia
Operadores sobre interacciones. Regin Crtica.

Diagramas g de Secuencia
Negative.

74

75

Diagramas g de Secuencia
Loop.

Diagramas g de Secuencia
Tiempo
Restricciones temporales (duracin)

76

Duracin de mensajes y seales (duration) Intervalos de tiempo ({t..t+3}) y restricciones temporales. Observaciones temporales (tiempo actual, now) 77 Asignacin de instantes a variables (t=now), restricciones sobre estas.

Visin de Conjunto de la Interaccin


D Define fi las l interacciones i t i at travs d de una variante de los diagramas de actividad. Visin general del flujo de control. Usa elementos de los diagramas de actividad para especificar:
Alternativas entre interacciones. Paralelismo de interacciones. Bucles de interacciones.
78

Visin de Conjunto de la Interaccin

79

Tiempo
Muestran M t i t interacciones i d d donde importante razonar sobre el tiempo. es

Tiempo
Diagrama temporal p correspondiente a la interaccin

Representa condiciones que cambian en una o varias lneas de vida, en un eje lineal de tiempo. tiempo Cambios en el estado de un objeto con el tiempo en respuesta a eventos.
80 81

Tiempo

Tiempo

82

83

Mquinas de Estados
Statecharts St t h t [H [Harel] l] Representan el comportamiento de entidades ( p.e. pe instancias de clases).

Mquinas de Estados
Comienzo Estados
digit(n)

Fin

start

Partial Dial

Especifican reaccin ante eventos Describen posibles secuencias de estados y acciones por las que pueden pasar las entidades. De comportamiento vs. de protocolo.
84

digit(n)

Transiciones
85

Mquinas de Estados
Un estado tiene:
Nombre Transiciones internas: lista de acciones ejecutadas en ese estado (entry/exit/do) ( y )

Mquinas de Estados
Start
entry/start dial tone exit/stop dial tone

digit(n)

Partial Dial
entry/number.append(n)

Estado compuesto: Dialing

digit(n)

Ejemplo: j p
Typing Password
entry/set t / t echo h invisible i i ibl exit/set echo normal character/handle character help/display help

Nombre Transiciones internas


86

Start
entry/start y dial tone exit/stop dial tone

digit(n)

Partial Dial
entry/number.append(n) y pp ( )

[number.isValid()]

digit(n)

87

Mquinas de Estados
Componentes Ortogonales: Incomplete
Lab1 Term Project Final Test
fail lab done

Mquinas de Estados
Pseudo P d - estados: t d Fork / Join. Initial. Deep History / Shallow History. H* Junction. Choice. Entry / Exit point. Terminate. Passed A1 A2 Cleanup B1 B2 Setup

Lab2

project done

pass

Failed

88

Fork

Join

89

Mquinas q de Estados
Estado Histrico
B

Mquinas q de Estados
Estado Histrico (ii)
B

H
t4 I B1 t1: ev0 B12 t3: ev1 B11 t2

H H*
t4 B2 B21 t3 t3: ev1 I B1 t1: ev0 B12 B11 t2

B2 B21 t3

t4: ev2

t4: ev2

90

91

Mquinas q de Estados
Estado Histrico. Ejercicio.

Mquinas de Estados
Pseudo - estados: Junction.

Modelar el comportamiento de una cadena de msica. Esta p puede estar encendida (ON) o apagada (Standby). La cadena tiene reproductor de CD CD, Radio y Cinta. Se cambia de uno a otro con el botn mode mode . Cuando se enciende la cadena se recuerda el ltimo estado en el que estuvo.
92

Pseudo - estados: Choice.

95

Ejemplo. Reproductor CDs.

Mquinas de Estados
Un U t transicin i i puede d t tener:
Evento.
Eventos temporales: tm(n)

I InterfazUsuario f U i ... ...

ReproductorCD p - Tpausa: Tiempo - NumActual: Entero 1 disco 1

Li C i ListaCanciones ... + obtenerCancion(Orden: Entero): Cancion + numCanciones(): Entero ....

Accin. pre-condiciones (guardas) y post- condiciones.


[guard] evt/action [post-]

+ stop() t () + pause() + play() 1 j () + eject() + apagar() + finCancion() - buscaDisco(d: InfoDisco): ListaCanciones player 1 driver 1 ControladorCD ... + play(act: l ( t Cancion, C i desde: d d Tiempo) Ti ) + stop() : Tiempo + detectarDisco() : InfoDisco () : Logico g + detectarAbierto() + abrir() + cerrar() + apagar()

pista 0..* 1 actual Cancion - titulo: Cadena p - duracion: Tiempo - Artista: Cadena - Orden: Entero ...

A1

A2

Smbolos especiales para el envo y recepcin de seales (normalmente usados en diagramas de actividad). )
96

97

Ejemplo. Diagrama de estados para la p clase ReproductorCD


[(info=driver.detectarDisco())!=NULL]/ disco=buscaDisco(info) [not driver. detectarAbierto()] NumActual = 1; C actual = disco.obtenerCancion(ordenActual) ( ) [dr river.detectar rAbierto()]

Ejercicio
M Modelar d l el l comportamiento t i t reactivo ti de d un reloj l j de d pulsera. l El valor del tiempo se debe actualizar cada segundo, incluso cuando no se muestra (p.ej. crono encendido). El botn de la parte superior derecha enciende la luz, luz que se mantiene encendida tanto como el botn est apretado, una vez que se suelta, la luz est encendida durante 2 segundos ms y se apaga. El botn superior izquierdo alterna entre el modo de crono y de reloj. El sistema empieza en el modo reloj, reloj en el que se muestra la hora en formato HH:MM:SS. En el modo crono, el tiempo discurrido se muestra en formato MM:SS:CC (CC son centsimas de segundo). ( g ) Inicialmente el crono empieza p en 00:00:00. El botn inferior derecho se usa para activar el crono. ste se actualiza en incrementos de 1/100 segundos. Presionando el botn inferior derecho pausa o continua el crono (si el reloj est en modo crono). q resetea el crono a 00:00:00 si el reloj j Pulsando el botn inferior izquierdo est en modo crono y el crono ha sido pausado antes. El crono continua corriendo (si est corriendo) o mantiene su valor (si est en pausa) incluso cuando el reloj est en un modo de display distinto (por ejemplo, cuando se muestra la hora). ENTREGA: 9 NOVIEMBRE
99

Cerrado
eject ()/ driver.cerrar r () e eject ()/ driver.abrir ( d ()

endOfSong()/ NumActual+=1

Stop

Play()/ driver.play(actual, 0) Play()/ driver.pl lay(actual, Tp pausa)

Play
Pause() )/ Tpausa = driver.stop p()

C
[NumActual<= disco.numCanciones()]/ actual= t l disco.obtenerCancion (NumActual) driver.play(actual,0)

Abierto

eject ()/ driver.stop(); stop()/ driver.abrir() driver.stop(); NumActual=1 NumActual 1 actual= disco.obtenerCancion(NumActual)

Pause

apagar ()/ driver.stop(); driver.apagar()

98

Ejercicio
Interface provisto por el controlador:
getTime() : Devuelve la hora actual. refreshTimeDisplay() : Repinta la hora en el visor con la hora interna actual. El visor no necesita limpiarse antes de llamar a esta funcin. Por ejemplo, si se est visualizando el crono, se borrar antes de pintar la hora. refreshChronoDisplay() : ver refreshTimeDisplay(). resetChrono() : Resetea el crono interno a 00:00:00. increaseTime() : Incrementa la hora en un segundo. Los minutos y horas se modificarn adecuademente, (por ejemplo, si se llama a increaseTime () a las 11:59:59, la nueva hora ser 12:00:00). increaseChrono () : Incrementa el crono en 1/100 segundos. setLight() : Enciende la luz del visor. unsetLight() : Apaga la luz del visor. visor

Mquinas de Estados
Ejemplo. Herramienta de Dibujo (i)

/setup widgets setup t bi bindings di

Active

Eventos de botones recibidos:


topRightPressed. p g topRightReleased. topLeftPressed. topLeftReleased. bottomRightPressed. bottomRightReleased bottomRightReleased. bottomLeftPressed. bottomRightReleased.

wmQuit

exitButton

100

102

Mquinas q de Estados
Ejemplo. Herramienta de Dibujo (ii)
Shapes Canvas

Mquinas q de Estados
Ejemplo. Herramienta de Dibujo (iii)
Shapes

shapeSelected(Triangle) shapeSelected(Rectangle)

Triangle

shapeSelected(Circle)

shapeSelected(Triangle) p ( g ) Modes

Rectangle

shapeSelected(Circle) h S l t d(Ci l ) shapeSelected(Rectangle)

Circle

103

104

Mquinas q de Estados
Ejemplo. Herramienta de Dibujo (iv)
Modes modeSelect(Insert)/ Canvas.Insert modeSelect(Move)/ Canvas.Move

Mquinas de Estados
Canvas

Ejemplo Herramienta de Dibujo (v) Ejemplo.


[Shapes in Circle]/ Inserting g d drawCircle(x,y) Ci l ( ) [Shapes in Rectangle]/ drawRectangle(x,y) [Shapes in Triangle]/ drawTriangle(x,y)

Idle
onDrawingMouse1Press(x,y)

Insert

modeSelect(Delete)/ Canvas.Delete
move insert

C
delete insert

modeSelect(Insert)/ Canvas.Insert

Moving

Deleting

Idle Move
modeSelect(Delete)/ ( )/ Canvas.Delete modeSelect(Move)/ C Canvas.Move M
105

Delete
Idle

onDrawingMouse1Press(x,y)/ movingObject=find_closest(x,y) i Obj t fi d l t( )


onDrawingMouse1Release(x,y)

onDrawingMouse1Click(x,y)/ D i M 1Cli k( )/ find_closest(x,y).del()

Moving
move delete
106

onDrawingMouse1Motion(x,y)/ oldCoords=coords(movingObject) move(movingObject, distance(oldCoords, (x,y)))

Diagramas de Actividad
Refinamiento de los diagramas de estados. estados
Los estados representan p subactividades la ejecucin j de acciones o

Diagramas g de Actividad
Ejemplo
Put Coffee in Filter Put Filter in Machine Turn on Machine Add Water to Reservoir / coffeePot.turnOn Brew coffee light goes out Pour Coffee [found cola] Get cans of cola Drink [no cola]

[found coffee] Find Beverage g [no coffee]

Las transiciones son disparadas p cuando se completan p estas acciones o subactividades Semntica basada en tokens.

Get Cups

Flujos dirigidos por procesamiento interno (en los diagramas de estados normales son dirigidos por eventos externos). Semntica basada en Redes de Petri. No obstante no se 107 da una transformacin a Redes de Petri.

108

Diagramas de Actividad
Swimlanes

Diagramas de Actividad
Flujos de Objetos: Objectflows

109

110

Indice
Introduccin. Diagramas de Clases y Objetos. g Otros Diagramas.

OCL: Object Constraint Language


Lenguaje de restricciones para expresar condiciones adicionales que no podemos expresar con diagramas y cardinalidades. Combinar diagramas y especificaciones textuales. Lenguaje preciso, no ambiguo, declarativo, tipado, basado en matemticas (lgica de predicados y teora de conjuntos). conjuntos) precisos ( (no anotaciones en til en DSDM: modelos p lenguaje natural). Se utiliza fundamentalmente junto a los diagramas de 112 clases.

OCL.
Accin Semntica Semntica. Perfiles. g Bibliografa Lecturas sugeridas/ejercicios.

111

Ejemplos
Flight
Flightnr: Integer availableSeats(): Integer flights 0.. 0 * passengers 0..* 0 * 0.. flights 1 plane

Ejemplos
Airplane
numberOfSeats: Integer

Casa
valor: Dinero aval 1

Persona
0 * 0.. casas 1 numSegSoc: S S Identificador Id ifi d propietario sueldo: Dinero contratarHipoteca(sum: Dinero, aval: Casa) ) 1 contratante 0..* hipotecas

Hipoteca Tambin es un lenguaje de consultas (mismo poder expresivo que SQL).


Context Flight::availableSeats(): Integer body: plane.numberOfSeats passengers->size() principal: Dinero 0..* mensual: Dinero hipotecas fechaInicio: Fecha fechaFinal: Fecha

P Person
name: String

Reglas adicionales:

Cmo se expresa el hecho de que en ningn vuelo puede haber pasajeros j que asientos tiene el avin? q ms p Restriccin OCL:
Context Flight Inv: passengers->size() <= plane.numberOfSeats
113

1. 2 2. 3. 4. 5.

Una persona puede tener una hipoteca sobre una casa slo si es el propietario. La fecha de inicio de cada hipoteca ha de ser menor que la de final final. El nmero de la seguridad social de cada persona ha de ser nico. Slo es posible contratar una nueva hipoteca si el salario de la persona es suficiente. Slo es posible contratar una nueva hipoteca si el valor de la casa aval 114 es suficiente.

Ejemplos
C t t Hipoteca Context Hi t Inv: aval.propietario = contratante Context Hipoteca Inv: fechaInicio < fechaFin

L Las restricciones ti i OCL se escriben en el contexto de una instancia de un tipo especfico.

Ejemplos

self hace referencia instancia del contexto.

la

Context Persona Inv: Persona::allInstances()->isUnique(numSegSoc) Context Persona::contratarHipoteca(sum: Dinero, aval: Casa) pre: self.hipotecas.mensual->sum()+sum <= self.sueldo * 0.70 Los PCs pueden conectarse con un nico Hub, los servidores con uno o varios Context Persona::contratarHipoteca(sum: Dinero, aval: Casa) pre: aval.valor >= aval.hipotecas.principal->sum()
115

Context PC Inv: cable_equipo->size() = 1 Context Servidor Inv: cable_equipo->size() >= 1


116

Ejercicio
Un Hub no puede conectarse consigo mismo a travs de un puerto
Context Cable_Hubs Inv: Puerto_Hub.hub->asSet()->size() = 2

Ejemplos

parents 0..* children 0..*

117

118

Ejemplos
Especificacin E ifi i d del l valor l i inicial i i lyd derivado i d d de atributos/association t ib t / i ti ends: d
context Person::income : Integer init: parents.income->sum() * 1% -- pocket allowance d i d:if self.age derived lf < 18 then parents.income->sum() * 1% -- pocket allowance else job.salary -- income from regular job endif

Ejemplos Colecciones. Ejemplos. Colecciones


Tipos: Set, OrderedSet, Bag, Sequence. Operaciones de bucle con colecciones:
select(expr): selecciona los elementos que cumplan una condicin.
coleccion->select( expresion-logica ) coleccion->select( l i l t( v | expresion-logica-con-v) i l i ) coleccion->select( v : Type | expresion-logica-con-v) context t t Company C i : inv self.employee->select(age < 25)->notEmpty() context Company inv: self.employee->select(gender=female)->notEmpty()

Subexpresiones (let):
context Person inv: let income : Integer = self.job.salary->sum() in if isUnemployed then income < 100 else income >= 100 endif
119

120

Ejemplos Colecciones. Ejemplos. Colecciones


collect(expr): devuelve la coleccin que resulta de evaluar expr para cada elemento de la coleccin fuente.
self employee >collect( birthDate ) self.employee->collect( )->asSet() >asSet()

Ejemplos Colecciones. Ejemplos. Colecciones


exists(expr): devuelve true si al menos hay un elemento en la coleccin para el que expr es verdadera. verdadera
coleccion->exists( expresion-logica ) coleccion->exists( v | expresion-logica-con-v ) coleccion->exists( v : Type | expresion-logica-con-v ) context Company inv: self.employee->exists( age > 50 ) inv: self.employee->exists( p | p.age > 50 ) inv: self.employee->exists( p : Person | p.age > 50 )

forAll(expr): devuelve verdadero si expr es verdadero en cada elemento de la coleccin.


coleccion->forAll( expresion-logica ) coleccion->forAll( v | expresion-logica-con-v ) coleccion->forAll( v : Type | expresion-logica-con-v ) context Company inv: self.employee->forAll( isUnemployed = False ) inv: self.employee->forAll( p | p.isUnemployed = False ) i : self.employee->forAll( inv lf l >f All( p : Person P | p.isUnemployed i U l d=F False l )
121

iterate(): itera sobre todos los elementos de una coleccin.


coleccion->iterate( elem : Type; acc : Type = <expresion> | expresion-logicacon-elem-y-acc l ) collection->collect(x : T | x.property) ( : T; ; acc : T2 = Bag{} g{} | acc->including(x.property)) g( p p y)) collection->iterate(x aade un elemento a una coleccin 122

Colecciones Otras Operaciones Colecciones. Operaciones.


Otras operaciones p de bucle:
source->any(iterator|body)
source->select(iterator|body)->asSequence()->first()

Indice
Introduccin. Diagramas de Clases y Objetos. g Otros Diagramas. OCL.

source source->collectNested(iterators|body) collectNested(iterators|body)


Bag de elementos que resultan de aplicar body a cada elemento de source.

source->isUnique(iterators|body) ( | y)
True si body se evalua a un valor diferente para cada elemento de source.

Accin Semntica.
Perfiles. g Bibliografa Lecturas sugeridas/ejercicios.

source->one(expr)
Devuelve true si existe exactamente un elemento de source que cumple la condicin.

source->reject(expr)
Devuelve una coleccin con los elementos de source que no cumplen la condicin.

source->sortedBy(expr)
Ordena source, source resulta en un OrderedSet
123 124

Accin Semntica
Una parte del meta-modelo meta modelo de UML contiene la especificacin de un lenguaje para la manipulacin de modelos (i.e. slo la sintaxis abstracta). Modelos similares a los de flujo de datos. Permite describir el contenido de mtodos, y acciones ejecutables en un lenguaje abstracto, antes de la i l implementacin. i Se persigue un modo estndar, estndar independiente de la plataforma y de la implementacin de especificar comportamientos detallados. Primer paso hacia la ejecutabilidad de modelos UML?
125

Accin Semntica
A i Acciones y Actividades. A ti id d
Accin: Unidad fundamental de comportamiento. p Convierte un conjunto de entradas en un conjunto de salidas. salidas Las entradas pueden ser salidas de otras acciones (dataflow). L Las acciones i estn t contenidas t id en actividades ti id d , que les l proporcionan un contexto, as como restricciones de secuencialidad y control, y mecanismos de estructuracin anidada. id d Lenguaje de accin primitivas+mecanismos de actividades. semntica: estructuracin acciones de 126 las

Accin Semntica
Actividades. Ejemplo.

Accin Semntica
Actividades. Ejemplo.

Sintaxis abstracta (parcial)

Sintaxis abstracta (parcial)

127

128

(De C. Bock)

Indice
Introduccin. Diagramas de Clases y Objetos. g Otros Diagramas. OCL. Accin Semntica.

Perfiles
M Mecanismos i d extensin de t i (i.e. (i no modificacin) difi i ) para declarar nuevas construcciones dentro de UML, p a un dominio especfico. p adaptadas tiles para: p
Dar una terminologa adaptada a un dominio especfico (p.ej.: EJBs, CORBA, Servicios web, etc). Dar una sintaxis para elementos que no tienen notacin (p.ej.: (p ej : acciones). Dar una notacin distinta para un smbolo existente. Aadir semntica que no se especifica en el meta-modelo. meta modelo Aadir restricciones adicionales. Aadir informacin adicional til para transformaciones.
129 130

Perfiles.
Bibliografa g Lecturas sugeridas/ejercicios.

Perfiles
En UML1.x: estereotipos y etiquetas
<<metaclass>> UML::Class

Ejemplo j p
Un perfil sencillo para EJB
<<stereotype>> MiComponente {<<taggedvalue>> transactional}

<<stereotype>>

Desventajas:
Las etiquetas no tienen tipo, son Strings. No es posible declarar nuevas asociaciones.

Formalmente la extensin se realiza en el nivel M1. Semanticamente en el M2. 2


M3 MOF M2 M1 M0 UML M d l UML Modelos
131 132

Meta-modelo de MOF Meta-modelo de UML

Datos/Tiempo ejecucin

Ejemplo j p
Definiendo un perfil

Ejemplo j p
Aplicacin de perfiles

Sintaxis concreta de un stereotype

Sintaxis abstracta de un stereotype

133

Clases como tipos de las propiedades del stereotype

134

Ejemplo Perfil para servicios web

Perfiles en UML2 UML2.0 0


Formalmente F l t seguimos i realizando li d la l extensin t i en el nivel M1. Mejor soporte de propiedades y asociaciones que en la versin 1.x. Cundo realizar un profile y cundo crear un meta-modelo basado en MOF?. Este mecanismo no sera necesario con herramientas ms potentes de meta-modelado (que permitan acceder al meta-modelo meta modelo de UML). UML)
135 136

http://www.ibm.com/developerworks/rational/library/05/419_

Perfiles
Multitud de perfiles no estndar. Perfiles promovidos por la OMG:
CORBA. CORBA Component Model (CCM). Enterprise Application Integration (EAI). (EAI) Enterprise Distributed Object Computing (EDOC) (UML 1.4):
Enterprise Collaboration Architecture (ECA). Metamodel and UML Profile for Java and EJB. Fl Flow Composition C iti M Model d l (FCM) UML Profile for Patterns UML Profile for ECA UML Profile for Meta Object Facility UML Profile P fil for f Relationships R l ti hi

Indice
Introduccin. Diagramas de Clases y Objetos. g Otros Diagramas. OCL. Accin Semntica. Perfiles.

Bibliografa. g
Lecturas sugeridas/ejercicios.

Real-Time Embedded Systems (MARTES). QoS and Fault Tolerance Characteristics and Mechanisms y Performance and Time Schedulability, System on a Chip (SoC). Software Radio. Voice. Systems Engineering (SysML). (SysML) Testing. Otros: SPEM.

137

138

Bibliografa: UML
Web de la OMG sobre UML: http://www.uml.org UML 2.0 in a Nutshellby Dan Pilone; Neil Pitman. O'Reilly. June 2005 Perdita Stevens, Rob Pooley. Utilizacin de UML en Ingeniera del Software con Objetos y Componentes. Addison Wesley Wesley, 2002 2002. Grady Booch, James Rumbaugh, Ivar Jacobson. The Unified Modeling Language User Guide. Addison-Wesley, 1999. UML 2 Toolkit. Eriksson, H. E., Penker, M., Lyons, B., Fado, D. OMG Press, Wiley. 2004. Craig Larman Larman. Applying UML and Patterns. Prentice Hall Hall. 2002 2002.

Bibliografa
UML:
Infraestructura y Superestructura:
http://www.omg.org/technology/documents/formal/uml.htm

Actividades A ti id d y A Acciones: i
Conrad Bock: UML 2 Activity and Action Models, in Journal of Object Technology, vol. 2, no. 4, July-August 2003, pp. 43-53. http://www.jot.fm/issues/issue_2003_07/column3 Conrad Bock: UML 2 Activity and Action Models Part 2: Actions, Actions , in Journal of Object Technology, vol. 2, no. 5, pp. 41 4156. http://www.jot.fm/issues/issue_2003_09/column4 UML 2 Activity and Action Models Part 3: Control Nodes, in Journal of Object Technology, vol. vol 2 2, no no. 6 6, pp pp. 7-23 7-23. http://www.jot.fm/issues/issue_2003_11/column1 Conrad Bock: UML 2 Activity and Action Models Part 4: Object N d i Nodes, in Journal J l of f Object Obj t Technology T h l , vol. l 3 3, no. 1 1, pp. 27 27140 41. http://www.jot.fm/issues/issue_2004_01/column3

139

Bibliografa: Statecharts
Harel D. D On Visual Formalisms. Formalisms Communications of the ACM. Vol 31, No. 5. Pp.: 514-530. Mayo 1988. Harel D., Naamad A. The STATEMATE Semantics of Statecharts. ACM Transactions on Software Engineering and Methodology, Methodology Vol. Vol 5, 5 No. No 4, 4 Oct. Oct 1996, 1996 pp.: 293-233. D David id Harel H l and d Eran E G Gery. E Executable bl object bj modeling with statecharts. IEEE Computer, pages 31-42, 1997.

Bibliografa
OCL
The Object Constraint Language 2nd Edition. Getting your Models Ready for MDA. MDA Warmer, Warmer Kleppe Kleppe. Addison Addison-Wesley. Wesley 2003. Especificacin de OCL 2.0: http://www.omg.org/docs/ptc/0310-14.pdf

141

142

Bibliografa
Perfiles UML.
Lista de p perfiles estndar:
http://www.omg.org/technology/documents/profile_catalog.htm#UML_for_EDOC

Lecturas Recomendadas
D. D Thomas. Th UML Unified U ifi d or Universal U i l Modeling Language?. Journal of Object O i t d Technology. Oriented T h l V l 2 (1), Vol (1) JanuaryJ February 2003. S. Anonsen. Experiences Experiences in Modeling for a Domain Specific Language. UML04 Satelite Activities, LNCS 3297, pp.: 187 187197, Springer (2005).
143 144

También podría gustarte