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 Informtica g Universidad Autnoma de Madrid

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

Introduccin
Unified Modeling Language Estndar de la OMG Language. (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
Lenguaje grfico para visualizar, especificar, construir y L j fi i li ifi t i documentar partes de un sistema software desde p distintos puntos de vista. 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 de , g negocio, modelado de procesos, etc.
Adaptacin/Extensin mediante perfiles.
3 4

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

Modelos
Familia de notaciones, tiles para describir p distintos aspectos de un sistema:
Esttico. 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 Uso. usuario.
6

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

Modelos
Tipos de Diagramas

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

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

Vista de Concurrencia Vi t d C i
Comunicaciones y sincronizacin

UML

Vista de Despliegue Vi t d D li
Arquitectura fsica
7

Modelos
8

Tipos de Diagramas

Tipos de Diagramas
Cmo estamos seguros de que la g q 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
Los diagramas d Cl L di de Clases y d Obj t son l principales de Objetos los 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: double t d bl -centroy: double +Area(): double +Permetro(): double

Diagrama de clases l
Carbono

visibilidad

Atributos At ib t Operaciones

:Hidrgeno

:Hidrgeno

Diagrama de objetos

:Hidrgeno

:Carbono

:Carbono

:Hidrgeno

Nombre del bj d l objeto

unCirculo: Circulo radio = 3.4 centrox = 2 0 2.0 centroy = 2.0

Clase del objeto Valores de los atributos

:Hidrgeno

:Hidrgeno

13

14

Clases
Atributos
Notacin para atributos: p

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} height: Integer = 5 h i ht I t width: Integer # pos: Point

/ indica que el atributo es derivado. La multiplicidad va entre [ ] y por defecto vale 1. Propiedades vlidas: {readOnly} {union} {subsets <property {readOnly}, {union}, <propertyname>}, {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] ) : [{propiedad}] ] [ p ] [{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 container: Container [0 1]): Window Coordinates, [0..1]): +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 (cardinalidad) M lti li id d ( di lid d)
Crculo centro 1 Punto
navegacin g

Asociaciones
Ejemplos de Navegacin y Cardinalidad

Ejemplos de cardinalidad: Ej l d di lid d


1..* 0..* 0 * 0..1 1,2,4 124 3 mnimo 1, no hay mximo mnimo 0, no hay mximo 0 mnimo 0, mximo 1 uno, uno dos o cuatro 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 (c ase) je c c o (clase)


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 cada artculo. d i de d t l El autor de correspondencia de los artculos aceptados enva una versin final, dentro de un plazo. Los artc los estn descritos por un tt lo a tores res men y artculos n ttulo, autores, resumen 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 pero no artculos, 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. q g No olvidar que el diagrama de clases es un 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 S id L Servidores y PC pueden generar mensajes, con una cierta PCs d j i t longitud. Los Hubs tienen un nmero de puertos, algunos de los cuales puede usarse para conectar con otros Hubs Tienen cierta Hubs. probabilidad de perder mensajes. Las impresoras pueden averiarse, con cierta probabilidad, durante cierto tiempo tiempo. Entrega individual el da 2 de Noviembre.
27

Equipo E i

equipo

pichichi

Jugador J d

29

Ms sobre asociaciones
Adornos en asociaciones y fin de asociacin.

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

Asociaciones d i d ( A i i derivadas (con un / d l t d l nombre). delante del 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- Post- Condiciones, Pre y Post 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 d d por l multiplicidad d l d i dado la lti li id d declarada.
0..1 : el valor del cualificador es nico. 0..* : el conjunto de instancas asociadas se particiona en subconjuntos. Similar a un array asociativo, map o tabla hash asociativo 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. Perfiles. P fil Bibliografa Lecturas sugeridas/ejercicios sugeridas/ejercicios.

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

e1 : Empleado
- nombre=Pedro - edad=23 edad 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

37

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

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

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

Paquetes.
Estructura de la aplicacin.

Despliegue.
Vista fsica.

Componentes
Interfaces que ofrece Interfaces que requiere

Componentes
Vista de j blanca Vi t d caja bl

40

41

Estructuras Compuestas
Composicin d elementos ( l ifi d C i i de l t (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.
Estructura i t E t t interna d una colaboracin. de 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. Unin (merge). q ( 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 l arquitectura d ejecucin d un sistema. D fi la it t de j i de 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 qu h D ib hace el sistema d d el punto l i t desde l t de vista de un observador externo. Ponen nfasis en qu hace el sistema, no en cmo l h lo hace. 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 sistema l i t


51

Casos de Uso
Actor Algo A t = Al con comportamiento ( t i t (persona, otro t programa, organizacin...), que interactua con el sistema. sistema Escenario (i t E i (instancia d i de caso d de uso) = ) Secuencia de acciones e interacciones entre los actores y el sistema sistema.

Casos de Uso: Ejemplo

Cajero

Caso d U = C l C de Uso Coleccin d escenarios ( it y i de i (xito fracaso) que describen actores que usan el sistema para conseguir un objetivo objetivo.
52

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: Quiere que el pago sea rpido con el mnimo esfuerzo. Q i Cli t Q i l id l i f 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. 4 El sistema registra el elemento y presenta una d i t i t l l t t descripcin d l mismo, su precio y i i del i i total actual. Se calcula el precio de una lista de reglas. j p p q y El cajero repite los pasos 3-4 hasta que no hay ms elementos. 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. 7 El cliente paga y el sistema procesa el pago 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. 7b Pago con tarjeta 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 Actividad d A ti id d de Ventas

Casos de Uso: Ejemplo


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

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

Scheduler S h d l

Check Patient Record

Analizar Actividad ... Gestionar Seguridad Gestionar Usuarios

Patient

Request Medication
<<extend>>

Defer Payment

Doctor

actor Sistema de contabilidad

Pay P Bill
Extensions Points More Treatment
58

Clerk
Bill Insurance
59

Administrador del sistema

Casos de Uso: Ejemplo


Son tiles S til 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 d I t Di de Interaccin. i
Comunicacin. Secuencia. j Visin de conjunto de la interaccin. 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 d l participantes E t t de los ti i t
Diagramas de Comunicacin

Patrones de comunicacin
Diagramas de Comunicacin Diagramas de Secuencia

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

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

aplicaciones

con
62

Estructuracin de las interacciones


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

Diagramas de Comunicacin
Llamadas anidadas:
realizarPago(cantidad)

Diagramas de Comunicacin g
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.1a: 0 1 1 1 r0:= position() i i ()


:Random

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

:Line {new} Li { }

left:Bead
64

right:Bead g
65

Diagramas de Secuencia
Representa conjunto de mensajes entre roles R t j t d j t l (o instancias) en una interaccin Dos dimensiones:
Tiempo (generalmente vertical); puede ser una escala si el sistema es de tiempo real Diferentes instancias (generalmente horizontal); el Dif t i t i ( l t h i t l) 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]. Pueden existir t P d i ti trazas no i l id incluidas en l los 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: di l digit dial 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 de Secuencia g
Operadores sobre interacciones.
Fragmentos combinados operadores (i): combinados,
Alternativa (alt).
Eleccin (mediante una guarda) de una interaccin interaccin.

Diagramas de Secuencia g
Operadores sobre interacciones.
Secuenciacin dbil (seq) (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 secuencia especificada por el operador es la nica vlida. a secue c a espec cada po e ope ado a ca 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 de Secuencia g
Operadores sobre interacciones. Alternativa.

Diagramas de Secuencia g
Operadores sobre interacciones. Opcin.

72

73

Diagramas de Secuencia g
Operadores sobre interacciones. Regin Crtica.

Diagramas de Secuencia g
Negative.

74

75

Diagramas de Secuencia g
Loop.

Diagramas de Secuencia g
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


Define l i t D fi las interacciones a t d una i travs de 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 interacciones i t i donde d d 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 [Harel] St t h t [H l] Representan el comportamiento de entidades ( p e p.e. 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 echo invisible t / t h i i ibl exit/set echo normal character/handle character help/display help

Nombre Transiciones internas


86

Start
entry/start dial tone y 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 - estados: P d 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 de Estados q
Estado Histrico
B

Mquinas de Estados q
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 de Estados q
Estado Histrico. Ejercicio.

Mquinas de Estados
Pseudo - estados: Junction.

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

Pseudo - estados: Choice.

95

Ejemplo. Reproductor CDs.

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

InterfazUsuario I f U i ... ...

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

ListaCanciones Li C i ... + 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: Cancion, desde: Tiempo) l ( t C i d d Ti ) + stop() : Tiempo + detectarDisco() : InfoDisco () g + detectarAbierto() : Logico + 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
Modelar l M d l el comportamiento reactivo d un reloj d pulsera. t i t ti de l j de 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 que se mantiene luz, 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 en el que se muestra la hora en formato reloj, HH:MM:SS. En el modo crono, el tiempo discurrido se muestra en formato MM:SS:CC ( (CC son centsimas de segundo). Inicialmente el crono empieza en g ) p 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 j Pulsando el botn inferior izquierdo resetea el crono a 00:00:00 si el reloj 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 ()/ d driver.abrir () (

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 bi di t bindings

Active

Eventos de botones recibidos:


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

wmQuit

exitButton

100

102

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

Mquinas de Estados q
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 de Estados q
Ejemplo. Herramienta de Dibujo (iv)
Modes modeSelect(Insert)/ Canvas.Insert modeSelect(Move)/ Canvas.Move

Mquinas de Estados
Canvas

Ejemplo. Ejemplo Herramienta de Dibujo (v)


[Shapes in Circle]/ Inserting g drawCircle(x,y) d 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)/ Canvas.Move C 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 de Actividad g
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 cuando se completan estas p p 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) p ( til en DSDM: modelos precisos (no anotaciones en 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: Identificador S S 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

Person P
name: String

Reglas adicionales:

Cmo se expresa el hecho de que en ningn vuelo puede haber p j q ms pasajeros que asientos tiene el avin? 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
Context Hipoteca C t t Hi t Inv: aval.propietario = contratante Context Hipoteca Inv: fechaInicio < fechaFin

Las restricciones OCL se L ti i 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 d l valor i i i l y d i d d atributos/association ends: E ifi i del l inicial derivado de t ib t / i ti d
context Person::income : Integer init: parents.income->sum() * 1% -- pocket allowance derived:if d i d if self.age < 18 lf 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( v | expresion-logica-con-v) l i l t( i l i ) coleccion->select( v : Type | expresion-logica-con-v) context C t t Company 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( self employee >collect( birthDate ) >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 ) inv: self.employee->forAll( p : Person | p.isUnemployed = F l ) i lf l >f All( P i U l d False
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) ( ; g{} g( p p y)) collection->iterate(x : T; acc : T2 = Bag{} | acc->including(x.property)) aade un elemento a una coleccin 122

Colecciones. Colecciones Otras Operaciones Operaciones.


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

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

source collectNested(iterators|body) source->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, resulta en un OrderedSet source
123 124

Accin Semntica
Una parte del meta modelo de UML contiene la meta-modelo 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 implementacin. i l i Se persigue un modo estndar independiente de la estndar, plataforma y de la implementacin de especificar comportamientos detallados. Primer paso hacia la ejecutabilidad de modelos UML?
125

Accin Semntica
Acciones y Actividades. A i 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). Las acciones estn contenidas en actividades, que l L i t t id ti id d les 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
Mecanismos d extensin (i M i de t i (i.e. no modificacin) para difi i ) declarar nuevas construcciones dentro de UML, p p adaptadas a un dominio especfico. 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>>
<<stereotype>> MiComponente {<<taggedvalue>> transactional}

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 Modelos M d l UML
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 0 UML2.0


Formalmente seguimos realizando l extensin F l t i li d la 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 de UML) meta-modelo 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. Flow Composition M d l (FCM) Fl C iti Model UML Profile for Patterns UML Profile for ECA UML Profile for Meta Object Facility UML Profile for Relationships P fil f 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 Schedulability, Performance and Time 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 2002 Componentes Wesley, 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 Applying UML and Patterns . Prentice Hall 2002 Larman. Applying Patterns Hall. 2002.

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

Actividades Acciones: A ti id d y A 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 2 no 6 pp 7-23 Technology vol. 2, no. 6, pp. 7-23. http://www.jot.fm/issues/issue_2003_11/column1 Conrad Bock: UML 2 Activity and Action Models Part 4: Object Nodes, in Journal of Object Technology, vol. 3 no. 1 pp. 27 N d i J l f Obj t T h l l 3, 1, 27140 41. http://www.jot.fm/issues/issue_2004_01/column3

139

Bibliografa: Statecharts
Harel D On Visual Formalisms Communications of the D. Formalisms. 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 Vol 5 No 4 Oct 1996 Methodology, Vol. 5, No. 4, Oct. 1996, pp.: 293-233. David Harel D id H l and E d Eran G Gery. E Executable object bl bj modeling with statecharts. IEEE Computer, pages 31-42, 1997.

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

141

142

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

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

También podría gustarte