5_UML_rev1

download 5_UML_rev1

of 206

Transcript of 5_UML_rev1

  • UMLUML:Lenguaje Unificado deLenguaje Unificado de Modelado http://uml.org

    Tema 4

    TACC II1

    TACC IICurso 2008/09

  • IntroduccinIntroduccin

    z Similitud:z Similitud: { Arquitectos, edificios, planos{ Ing. Inf., programas, diagramas

    z UML { Unified Modeling Language. Versin 2.0 (finales 2004){ Diagramas (ing inf ){ Diagramas (ing. inf.)z Usados como esquemas y menos con informacin rigurosa (planos

    de arquitectos)z Dos modos:

    Ingeniera inversa: a partir de cdigo hacer diagramas Ingeniera directa: hacer diagramas y luego implementar

    z Dominio{Mundo en el que hay definido un problema

    z Modelo:{ Abstraccin de un problema

    2

    { Abstraccin de un problema{ Formado por objetos

  • IndiceIndice

    zDiagramas de Casos de Uso.zDiagramas de EstructurazDiagramas de Estructura.zDiagramas de Comportamiento.zOCL.zH i tzHerramientas.zEjemplos.j pzBibliografa.

    3

  • Casos de UsoCasos de Uso

    z D ib h l i t d d l tz Describen qu hace el sistema desde el punto de vista de un observador externo.

    z Ponen nfasis en qu hace el sistema, no en cmo lo hace.cmo lo hace.

    z Un escenario es una instancia particular de unUn escenario es una instancia particular de un diagrama de casos de uso.

    {Ejemplo de lo que ocurre cuando alguien interacta con el sistema

    4

  • Casos de UsoCasos de Uso

    z A t Al t i t ( tz Actor = Algo con comportamiento (persona, otro programa, organizacin...), que interactua con el sistema.sistema.

    z Escenario (instancia de caso de uso) =Escenario (instancia de caso de uso) Secuencia de acciones e interacciones entre los actores y el sistema.

    z Caso de Uso = Coleccin de escenarios (xito y fracaso) que describen actores que usan elfracaso) que describen actores que usan el sistema para conseguir un objetivo.

    5

  • Casos de Uso

    zP

    Casos de Uso

    zPasos:

    { Identificar los lmites del sistema.

    { Identificar los actores principales.

    { Para cada uno, identificar sus objetivos.

    { Definir casos de uso que satisfagan susobjetivos.

    6

  • EjemploEjemploAplicacin para una Galera de Arte

    Te encargan realizar una aplicacin para la compra-venta de cuadros. En cuanto a la compra de cuadros, una vezque el agente introduce unos datos bsicos sobre el cuadro el sistema debe proporcionar el precio recomendadoque el agente introduce unos datos bsicos sobre el cuadro, el sistema debe proporcionar el precio recomendadoque el agente de la galera debera pagar. Si el vendedor del cuadro acepta la oferta, entonces el agente de lagalera introduce ms detalles (sobre el vendedor del cuadro y la venta).

    Los datos bsicos incluyen el nombre y apellidos del artista, el ttulo y fecha de la obra, sus dimensiones, la tcnicay y p , y , ,(leo, acuarela u otras tcnicas), el tema (retrato, naturaleza muerta, paisaje, otro) y la clasificacin (obra maestra,obra representativa, otro tipo). Si es obra maestra, el precio recomendado se calcula comparando el cuadrointroducido con los que hay en el registro de cuadros, tomando el ms parecido y aplicando un algoritmo que tieneen cuenta la coincidencia de tema, la tcnica y las dimensiones del cuadro. El sistema debe utilizar informacin desubasta de todo el mundo que ahora la galera recibe en un CD de manera mensual. Para una obra representativa,el precio recomendado se calcula como si fuera una obra maestra y luego se aplica una correccin. Para una obrade otro tipo, se calcula utilizando el rea del cuadro y un coeficiente de moda para el artista. Si no hay coeficiente demoda para un artista, el agente tiene por norma no comprar el cuadro. El coeficiente de moda varia de mes a mes.

    Si el cuadro finalmente se compra, se introducen datos adicionales.

    En cuanto a la venta de cuadros por parte de la galera, el sistema simplemente registra la fecha de venta, el nombrey direccin del comprador y el precio de venta real.y p y p

    El sistema tambin deber detectar nuevas tendencias en el mercado de arte tan pronto como sea posible. La ideaes detectar secuencias de compras por valores mayores que los esperados por la obra de un artista determinado, detal manera que tu cliente pueda comprar cuadros de ese artista antes de que otros detecten la tendencia. Con el

    7

    objetivo de detectar cundo el precio de venta es mayor que el precio esperado cuando tu cliente compr el cuadro,se debe mantener un registro de todas las compras y todas las ventas.

    Se quieren generar tres informes: compras y ventas realizadas durante un ao, y artistas de moda.

  • Comprar unaEjemplo pObra maestraComprar una

    O

    Ejemplo

    VendedorObra representativa

    Comprar unaObra de Otro Tipo

    Vender uncuadro

    Obra de Otro Tipo

    Agente

    Producir Informecompras

    Comprador

    AgenteGalera Producir Informe

    ventas

    Producir Informetendencias

    8Actualizar

    Coeficiente de moda

  • EjemploActores primarios:

    Caso de uso: comprar una obra maestra

    EjemploActores primarios:

    Agente Galera, vendedorInteresados y Objetivos:

    Agente: quiere obtener una recomendacin lo ms acertada posible del precio i d d d idmximo recomendado de manera rpida.

    Vendedor: quiere vender el cuadro a un precio razonable de manera rpida.Precondiciones:

    El agente ha entrado en la aplicacin.El agente ha entrado en la aplicacin.Garanta de xito (post-condiciones):

    Se registra la venta.Escenario Principal de xito:

    1 El t i t d l d i i d l d1. El agente introduce la descripcin del cuadro.2. El sistema busca el cuadro ms parecido del mismo autor.3. El sistema presenta el precio recomendado.4. El agente hace una propuesta por debajo del precio recomendado, y el vendedor age e ace u a p opues a po debajo de p ec o eco e dado, y e e dedoacepta la oferta.5. El agente introduce informacin de la venta.

    Extensiones:2 N h i d id d l i t l i t t

    9

    2a. No hay ningn cuadro parecido del mismo autor, as que el sistema no presenta una recomendacin.4a. El vendedor no acepta la oferta y la venta no se produce.

  • Ejemplo

    TPV

    EjemploTerminal Punto de Venta

    TPVProcesar

    VentaServicio

    cajeroProcesar

    Devoluciones

    Serviciode Autorizacin

    de Pagos

    actor

    Calculador de

    AnalizarActividad

    actorAnalizador deA ti id d d pImpuestos

    actor

    Actividad deVentas

    ...

    Sistema decontabilidad

    GestionarSeguridad

    10Administradordel sistema

    GestionarUsuarios

  • Diagramas de Caso de UsoDiagramas de Caso de UsoRelaciones

    R l i t d dz Relaciones entre dos casos de uso{Generalizacinz E ti l d z Es un caso particular de zHerencia de clases en POO (overriding)zTambin se puede tener esta relacin entre dos actoresTambin se puede tener esta relacin entre dos actores

    {Inclusin (include)z Implica hacer tambin

    {Extensin (extend)z Se insertar en un determinado punto (llamado punto de

    extensin) dependiendo de una condicinextensin) dependiendo de una condicin. zSi un caso de uso depende de varios casos de uso mediante

    extend tendr un punto de extensin para cada uno.

    11

  • EjemploEjemploGestin de Pacientes

    Cancel Appointment

    Make AppointmentScheduler

    Patient Request Medication

    Check Patient Record

    DoctorDefer Payment

    Clerk

    Pay Bill

    Extensions PointsMore Treatment

    12Bill InsuranceMore Treatment

  • EjemploEjemploGestin de Proyectos

    13

  • Casos de UsoCasos de Uso

    z Son tiles en tres reas:

    { Especificacin de requisitos

    { Comunicacin con los clienteszSu simplicidad los convierte en excelentes medios de

    comunicacin

    { Generacin de casos de prueba{ Generacin de casos de pruebazA partir de los escenarios de un Caso de Uso

    14

  • IndiceIndicez Diagramas de Casos de Uso.Diagramas de Casos de Uso.z Diagramas de Estructura.{Clases y Objetos.{Clases y Objetos.{Componentes.{Estructuras Compuestas.{Estructuras Compuestas.{Despliegue.{Paquetes.q

    z Diagramas de Comportamiento.z OCL.z Herramientas.z Ejemplos.

    15z Bibliografa.

  • Clases y ObjetosClases y Objetos

    z Los diagramas de Clases y de Objetos son losz Los diagramas de Clases y de Objetos son los principales modos de representar los aspectos estructurales en UML.

    z Diagramas de clases. Estructura del sistema.{Clases{Clases.

    z Atributos: Tipos, valores iniciales.z Operaciones: visibilidad.

    {Relaciones con otras clases: Asociaciones{Relaciones con otras clases: Asociaciones

    z Diagramas de objetos. Estructura del sistema en ti d j itiempo de ejecucin.{Objetos. Instancias de una Clase.

    z Atributos (valores actuales).

    16{ Links. Relaciones entre objetos, instancias de asociaciones.

  • Clases y ObjetosClases y Objetos

    Elemento

    Diagrama de

    HidrgenoCarbono

    ag a a declases

    :Hidrgeno:Hidrgeno

    Di d:Hidrgeno :Hidrgeno:Carbono :Carbono

    Diagrama deobjetos

    17:Hidrgeno :Hidrgeno

  • Clases y ObjetosNombre

    Clases y ObjetosEn cursiva si es

    abstractaCirculo

    -radio: doublet d bl

    Nombre de la clase

    At ib t

    abstracta

    -centrox: double-centroy: double

    Atributosvisibilidad

    +Area(): double+Permetro(): double Operaciones

    Nombre d l bj

    Clase unCirculo: Circulo

    radio = 3.4centrox = 2 0

    del objeto del objeto

    Valores de18

    centrox 2.0centroy = 2.0 los atributos

  • Clases

    z Notacin para atributos:Atributos

    p

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

    z Visibilidad (opcional): { Pblica: +{ Privada: -{ Protegida: #{ Paquete: ~

    z / indica que el atributo es derivado.z La multiplicidad va entre [ ] y por defecto vale 1.z Propiedades vlidas: {readOnly} {union} {subsets

  • ClasesEjemplo atributos

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

    ClaseBid: {redefines name}

    20

    id: {redefines name}shape: Square

  • Clases

    z N t i t d

    Mtodos

    z Notacin para mtodos:

    [visibilidad] nombre ( [lista-parametros] ) : [{propiedad}][ ] ( [ p ] ) [{p p }]

    z Visibilidad (opcional).z nombre del mtodoz nombre del mtodoz lista de parmetros formales, separados por coma:

    direccion nombre : tipo [multiplicidad] = valor [{propiedad}]z Los mtodos estticos se subrayan.

    z Ejemplos:z Ejemplos:display ()-hide ()+createWindow (location: Coordinates container: Container [0 1]): Window

    21

    +createWindow (location: Coordinates, container: Container [0..1]): Window+toString (): String

  • Asociaciones

    z Un Crculo contiene un PuntoComposicin

    z Un Crculo contiene un Puntoz Se representa con una Composicin

    Crculo Punto

    z Relacin del tipo todo/partez Relacin del tipo todo/parte{ El todo es el Crculo{ La parte es el Punto

    z Es una relacin fuerte{ Si el Crculo es destruido o copiado, tambin lo es el Punto{ La cardinalidad en la parte del todo es 0..1 o 1.

    22

    { La cardinalidad en la parte del todo es 0..1 o 1.

  • Asociaciones

    z Las asociaciones pueden tener etiquetas:Navegacin, Roles, Cardinalidadz Las asociaciones pueden tener etiquetas:{ Nombre{ Roles en la relacin{ Multiplicidad (cardinalidad) navegacin

    z Ej l d di lid dCrculo Punto

    centro1zN iz Ejemplos de cardinalidad:

    1..* mnimo 1, no hay mximo0..* mnimo 0, no hay mximo

    zNavegacin:UnidireccionalBidireccional0.. mnimo 0, no hay mximo

    0..1 mnimo 0, mximo 11,2,4 uno, dos o cuatro3 exactamente tres

    BidireccionalNo especificado.No navegable (x)

    23

    3 exactamente tres No navegable (x)

  • AsociacionesEjemplos de Navegacin y Cardinalidad

    24

  • EjercicioEjercicioz Representa mediante un diagrama de clases la siguientez Representa mediante un diagrama de clases la siguiente

    especificacin:{ Una aplicacin necesita almacenar informacin sobre

    empresas, sus empleados y sus clientes.{ Ambos se caracterizan por su nombre y edad.{ L l d ti ld b t l l d{ Los empleados tienen un sueldo bruto, los empleados que

    son directivos tienen una categora, as como un conjunto deempleados subordinados.p

    { De los clientes adems se necesita conocer su telfono decontacto.

    { L li i it t l d t d l d{ La aplicacin necesita mostrar los datos de empleados yclientes.

    25

  • EjercicioEjercicioPersonaPersona

    + mostrar()

    - nombre- edad

    + mostrar()

    - nombre- edad

    t ()

    - sueldo_bruto - nombre_empresa- telefono_de_contacto

    Empleado Clientesubordinados

    t ()

    - sueldo_bruto - telefono_de_contacto

    Empleado Clientesubordinados

    0..*

    +mostrar()

    + mostrar ()+ calcular_salario_neto()

    empleados clientes+mostrar()

    + mostrar ()+ calcular_salario_neto()

    1..*0..*

    - categoria

    DirectivoEmpresa

    b

    empleados

    - categoria

    DirectivoEmpresa

    b1

    1..*

    0..*

    26+ mostrar ()- nombre

    + mostrar ()- nombre

  • Asociaciones: AgregacinAsociaciones: Agregacin

    zCuando la relacin todo/parte no es tan fuerte, se utiliza Agregacin, g g

    Ventana FigurasusFiguras

    0 *0..

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

    27

  • Asociaciones y DependenciaAsociaciones y Dependencia.

    z Existen relaciones de conocimiento entre clases que no implican una relacin todo/parte

    Cliente Cuentatitular1 *

    cuentas0 *1.. 0..

    z Dependencia: relacin muy dbil.Ventana

    susFiguras0..*

    Figura

    Draw(ContextoDibujo)

    suContexto

    28

    ContextoDibujo

    Dependencia

  • Clases AsociativasClases Asociativas

    zAsociacin con atributos propios.Nombre asociacin

    Empleado Persona1

    casado con >1

    Matrimoniofecha

    2testigos

    fecha0..*

    29Clase Asociativa

  • Clases y Objetosy jEstilo

    z Los atributos no deben ser objetos (utilizar relaciones en tal caso).

    z En los diagramas de clases no suelen aparecerEn los diagramas de clases no suelen aparecer (son detalles de implementacin y no de diseo):diseo): {Constructores{Mtodos de acceso (get/set){Mtodos de acceso ( get/set ){Mtodos de gestin de elementos de una asociacin o

    agregacin (por ejemplo, add/remove)

    30

  • EjemploEjemplo

    Cliente

    nombre

    Orden

    fecha1 0..*direccin estado

    calcImpuestocalcTotalcalcPesoTotalPago

    1..* 1 calcPesoTotalPago

    monto 1

    EfectivoCrdito Cheque DetalleOrden Item

    1..*

    0 * 1

    lnea

    monedafechanmerotipo

    autorizado

    nombreidentifBanco

    autorizado

    cantidadtipoImpuesto

    calcSubtotalcalcPeso

    pesodescripcin

    precioPorCantidadobtenerPeso

    0.. 1

    31

    autorizado

  • EjercicioEjercicioz Especificar un diagrama de clases que describa redes

    de ordenadores.z Los elementos que se pueden incluir en la red son:{S id PC I{Servidor, PC, Impresora.{Hub, Cable de red.

    z Los PCs pueden conectarse con un nico Hub losz Los PCs pueden conectarse con un nico Hub, losservidores con uno o varios.

    z Los Servidores y PCs pueden generar mensajes, conuna cierta longitud.

    z Los Hubs tienen un nmero de puertos, algunos de loscuales puede usarse para conectar con otros Hubscuales puede usarse para conectar con otros Hubs.Tienen cierta probabilidad de perder mensajes.

    z Las impresoras pueden averiarse, con cierta32

    Las impresoras pueden averiarse, con ciertaprobabilidad, durante cierto tiempo.

  • Ejercicio Posible SolucinEjercicio. Posible Solucin.

    33Los PCs pueden conectarse con un nico Hub, los servidores con uno o variosPodemos modelarlo como una restriccin OCL, o bien aadir asociaciones desde Servidor y PC

  • Ms sobre asociacionesMs sobre asociacionesAsociaciones n-arias

    zAsociaciones entre ms de dos clases:

    Aod

    E i J d

    temporada

    Equipo Jugadorpichichiequipo

    34

  • Ms sobre asociaciones

    z A i i d i d ( / d l t d l b )

    Ms sobre asociacionesAdornos en asociaciones y fin de asociacin.

    z Asociaciones derivadas (con un / delante del nombre).z Propiedades, cerca del nombre de la asociacin.z Los finales de la asociacin pueden adornarse con:z Los finales de la asociacin pueden adornarse con:{ Multiplicidad.{ Nombre (rol).( ){ Propiedades:z {subsets }.z {redefine }z {redefine }.z {union}.z {ordered} (un conjunto ordenado).z {bag} (conjunto con repeticin)z {bag} (conjunto con repeticin).z {sequence} o {seq} (bag ordenado).

    35

  • Ms sobre asociacionesMs sobre asociacionesAdornos en asociaciones y fin de asociacin: Ejemplos

    A Ba b

    A B0..1 *{ordered}

    C D1 0..1

    d

    {subsets b}{subsets b}

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

    36

  • Ms sobre asociaciones

    z Un cualificador declara una particin del conjunto de instancias asociadas con

    Ms sobre asociacionesAsociaciones Cualificadas

    z Un cualificador declara una particin del conjunto de instancias asociadas con respecto a la instancia cualificada.

    Banco TableroBancoNumCuenta

    *

    Ajedrezfila: Filacol: Colum

    1

    Persona

    *0..1

    Casilla

    11

    z Dado un objeto cualificado, el nmero de objetos al otro lado de la asociacin i d d l lti li id d d l d

    Persona Casilla

    viene dado por la multiplicidad declarada.{ 0..1 : el valor del cualificador es nico.{ 0..* : el conjunto de instancas asociadas se particiona en subconjuntos.

    z Similar a un array asociativo map o tabla hash37

    z Similar a un array asociativo, map o tabla hash.

  • Pre y Post Condiciones NotasPre- y Post- Condiciones, Notas

    pre-condicin

    body-condition

    post-condicin

    38

  • InterfacesInterfaces

    ClaseClase MiInterfaz

    mtodos MiInterfaz

    ClaseMiInterfaz

    39

  • PlantillasPlantillas

    FArray Point>Una clase annima ligada:{T -> Point

    40{K -> 10

  • EjercicioExamen Junio 2008.

    Realiza el diseo de una aplicacin para la gestin de pedidos. La aplicacin debermanejar clientes (se guarda su nombre, direccin, telfono y e-mail), que puedenrealizar pedidos de productos, de los cuales se anota la cantidad en stock. Unp p ,cliente puede tener una o varias cuentas para el pago de los pedidos. Cadacuenta est asociada a una tarjeta de crdito, y tiene una cierta cantidaddisponible de dinero, que el cliente debe aumentar peridicamente para poderrealizar nuevos pedidos.realizar nuevos pedidos.

    Un cliente puede empezar a realizar un pedido slo si tiene alguna cuenta con dinerodisponible. Al realizar un pedido, un cliente puede agruparlos en pedidos simpleso compuestos. Los pedidos simples estn asociados a una sola cuenta de pago y(por restricciones en la distribucin) contienen un mximo de 20 unidades del(por restricciones en la distribucin) contienen un mximo de 20 unidades delmismo o distinto tipo de producto. A su vez, un pedido compuesto contiene dos oms pedidos, que pueden ser simples o compuestos. Como es de esperar, elsistema debe garantizar que todos los pedidos simples que componen un pedidocompuesto se paguen con cuentas del mismo cliente Adems slo es posiblecompuesto se paguen con cuentas del mismo cliente. Adems, slo es posiblerealizar peticiones de productos en stock.

    Existe una clase (de la cual debe haber una nica instancia en la aplicacin)responsable del cobro, orden de distribucin y confirmacin de los pedidos. Elp y pcobro de los pedidos se hace una vez al da, y el proceso consiste en comprobartodos los pedidos pendientes de cobro, y cobrarlos de la cuenta de pagocorrespondiente. Si una cuenta no tiene suficiente dinero, el pedido se rechaza (sies parte de un pedido compuesto, se rechaza el pedido entero). Una vez que el

    41

    p p p , p ) qpedido est listo para servirse, se ordena su distribucin, y una vez entregado,pasa a estar confirmado.

    Se pide un diagrama de clases de diseo.

  • Solucin

    42

  • Solucion (ii)Solucion (ii)z Nota: pedidos_simples es una asociacin derivada. El atributo total de

    Pedido es derivadoPedido es derivado.z Habra que incluir las siguientes restricciones OCL:

    C t t li didContext realizar_pedido:pre: self.cuentas->exists(c | c.disponible > 0)

    Context Pedido Compuesto:Context Pedido Compuesto:inv: self.pedidos_simples->cuenta->cliente->asSet()->size() = 1

    Context Pedido:Context Pedido:inv: self.t_productos.num->sum() =num

    z Se usa el composite y el singleton (para la clase Controlador43

    z Se usa el composite y el singleton (para la clase Controlador Pedidos, aunque esto no queda reflejado en el diseo a este nivel de abstraccin).

  • Ejercicio: BibliotecaEjercicio: Biblioteca

    z Una biblioteca tiene copias de libros Estos ltimos sez Una biblioteca tiene copias de libros. Estos ltimos se caracterizan por su nombre, tipo (novela, teatro, poesa, ensayo), editorial, ao y autor.

    z Los autores se caracterizan por su nombre, nacionalidad y fecha de nacimiento.

    z Cada copia tiene un identificador y puede estar en laz Cada copia tiene un identificador, y puede estar en la biblioteca, prestada, con retraso o en reparacin.

    z Los lectores pueden tener un mximo de 3 libros en prstamoprstamo.

    z Cada libro se presta un mximo de 30 das, por cada da de retraso, se impone una multa de dos das sin pposibilidad de coger un nuevo libro.

    z Realiza un diagrama de clases y aade los mtodos necesarios para realizar el prestamo y devolucin denecesarios para realizar el prestamo y devolucin de libros.

  • LibroCopia

    - id : Identifier- estado: estadoCopia

    Libro- titulo : string- tipo: tipoLibro- editorial: string

    i t

    libro11..*

    ejemplar

    Prestamo

    0..3 prestamos - anyo: intobras1..*

    - inicio: Date- fin: Date

    0..1 lector Autorb t i

    autor1fechas

    Lector- nSocio : Identifier- nombre: string

    - nombre: string- nacionalidad: string- fechaNacimiento: Date

    - telefono: string- direccion: string

    tipoLibro

    novelateatro

    i

    + devolver(id: Identifier, fechaAct: Date){precondition: prestamos.notEmpty()}

    1

    estadoCopia

    poesiaensayo

    Multa

    {precondition: prestamos.notEmpty()}+ prestar(id: Identifier, fechaAct: Date){precondition: multa==0}- multar(dias : int)

    0..1multa

    prestadoretrasobibliotecareparacion

    - fInicio: Date- fFin: Date

  • Objetos+ mostrar()

    - nombre- edad

    Persona

    + mostrar()

    - nombre- edad

    Persona

    Objetos+ mostrar ()+ l l l i t ()

    - sueldo_bruto - nombre_empresa- telefono_de_contacto

    Empleado Clientesubordinados

    + mostrar ()+ l l l i t ()

    - sueldo_bruto - nombre_empresa- telefono_de_contacto

    Empleado Clientesubordinados

    +mostrar()

    ()

    + calcular_salario_neto()

    - categoria

    DirectivoEmpresa

    - nombre

    empleados clientes+mostrar()

    ()

    + calcular_salario_neto()

    - categoria

    DirectivoEmpresa

    - nombre

    empleados clientes

    + mostrar ()+ mostrar ()

    e1 : Empleado- nombre=Pedro- edad=23

    e2 : Empleado- nombre=Mara- edad=25 edad 23

    - sueldo_bruto=30000edad 25

    - sueldo_bruto=36000subordinados empleados empleados

    d1 : Directivo- nombre=Luis

    d d 35

    Empresa- nombre=HGJ

    empleados

    - edad=35- sueldo_bruto=36000- categoria=C1

    c1 : Clienteclientes

    46

    - nombre=Luis- edad=35- nombre_empresa=Macroware- telefono_de_contacto=91555666

  • ComponentesComponentes

    C t U id d M d l i t fz Componente = Unidad Modular con interfacesbien definidos que es reemplazable en suentornoentorno .

    z f i tili i l i tz nfasis en reutilizacin y encapsulamiento.

    z Servicios que provee y requiere (interfaces).

    z Componentes lgicos (componentes de negocio,de proceso) y fsicos (EJB, CORBA, COM+, .NET,

    47)

  • ComponentesComponentes

    Interfacesque ofrece

    Interfacesque requiere

    48

  • ComponentesComponentes

    Vi t d j blVista de caja blanca

    49

  • Estructuras Compuestas

    z C i i d l t ( l ifi d

    Estructuras Compuestas

    z Composicin de elementos (clasificadores ocolaboraciones)

    z Instancias en tiempo de ejecucin que colaborana travs de enlaces para alcanzar objetivosa travs de enlaces para alcanzar objetivoscomunes.

    z Colaboraciones: a travs de roles.

    z Se aade a las clases estructura internas ypuertos.

    50

  • Estructuras CompuestasEstructura interna de una clase

    Estructuras CompuestasEstructura interna de una clase.

    Estructura interna de una clase. Multiplicidades.

    51

  • Estructuras CompuestasEstructuras CompuestasAlternativa a relaciones de composicin

    A li tiApplication

    ButtonWindow 2

    Application

    Button2

    Window

    52

  • Estructuras CompuestasEstructuras Compuestas

    Estructura interna de una clase. Constructor.

    53

  • Estructuras Compuestas

    E t t i t d l b i

    pColaboracin.

    Estructura interna de una colaboracin.

    54

  • Estructuras Compuestas

    O i d l b i t Bi di

    pColaboracin.

    Ocurrencia de una colaboracin en otra. Binding.

    55

  • Estructuras CompuestaspColaboracin.

    Template de colaboracin.

    56

  • DespliegueDespliegue

    z D fi l it t d j i d i tz Definen la arquitectura de ejecucin de un sistema.

    z Representa la asignacin de artefactos software a nodosz Representa la asignacin de artefactos software a nodos.

    z Nodos = elementos hardware, o entornosde ejecucin software.

    z Artefactos = elementos concretos (p.e.:ficheros) que son el resultado del procesode desarrollo.

    57

  • Desplieguep gRelaciones entre artefactos.

    Manifestacin de elementos a travs de

    artefactos

    58

  • Desplieguep gEjemplo.

    59

  • PaquetesPaquetes

    z Un paquete es un contenedor que agrupa elementos relacionados.

    z Los diagramas de paquetes muestran la estructura de alto nivel de la aplicacinnivel de la aplicacin.

    60

  • PaquetesqEjemplo.

    61

  • IndiceIndice

    z Diagramas de Casos de Usoz Diagramas de Casos de Uso.z Diagramas de Estructura.zDiagramas de ComportamientozDiagramas de Comportamiento.{ Diagramas de Interaccin.z Diagramas de Comunicacin.z Diagramas de Secuencia.z Diagramas de visin de conjunto de la interaccin.z Diagramas de tiempo.Diagramas de tiempo.

    { Diagramas de Estados.{ Diagramas de Actividad.

    z OCLz OCLz Herramientas.z Ejemplos

    62

    z Ejemplos.z Bibliografa.

  • Diagramas de InteraccinDiagramas de Interaccin

    z El t i t t t dz El comportamiento se representa a travs decolaboraciones:

    { Coleccin de objetos:

    z Instancias

    z Rolesz Roles

    { Especifica cmo los objetos y las asociaciones cooperan

    z En un contexto dado

    63z Con un propsito especfico

  • Diagramas de Interaccin

    z El t d j d t d

    Diagramas de Interaccin

    z El patrn de mensajes dentro de unacolaboracin es una interaccin:

    {Mensajes: seales, invocaciones, interacciones implcitasa travs de condiciones y eventos temporales.

    {Especifica secuencia de mensajes para cumplir elobjetivo de la colaboracinobjetivo de la colaboracin

    {Para especificar la interaccin, es necesario especificarprimero la colaboracinprimero la colaboracin

    {Semntica basada en trazas.64

  • Diagramas de Interaccinz Diagrama de Comunicacin

    Diagramas de Interaccinz Diagrama de Comunicacin

    { Muestra un contexto y una interaccin{ Muestra un contexto y una interaccin.

    Di d S iz Diagrama de Secuencia

    {Representacin explcita de la secuencia decomunicaciones, eje temporal.

    {Es ms apropiado para aplicaciones de Tiempo Realy escenarios complicados

    65

    y escenarios complicados

  • Diagramas de Interaccin

    E t t d l ti i t

    Diagramas de Interaccin

    z Estructura de los participanteszDiagramas de Comunicacin

    z Patrones de comunicacinzDiagramas de ComunicacinzDiagramas de Secuencia

    z Temporizacin de la comunicacin.pzDiagramas de SecuenciazDiagramas de Tiempo.

    z Estructuracin de las interaccioneszDiagrama de visin de conjunto de la

    66

    g jinteraccin.

  • Diagramas de Comunicacin

    z R t l bj t ( l i t i )

    Diagramas de Comunicacin

    z Representa los objetos (roles o instancias)necesarios para una interaccin y susrelaciones.relaciones.

    z Puede tambin representar la secuencia dePuede tambin representar la secuencia demensajes

    { Especifica el orden relativo mediante nmeros

    z Similar a un diagrama de objetos, muestra elcontexto necesario para una colaboracin.

    67

  • Diagramas de Comunicacinparticipantes

    Diagramas de Comunicacin

    Wi d / Ob Slidi B I

    p p

    :Window / Observer : SlidingBarIcon

    l

    relaciones

    roles

    /Subject :CallQueue

    68

  • Diagramas de ComunicacinDiagramas de Comunicacin

    Wi d / Ob Slidi B I:Window / Observer : SlidingBarIcon

    restriccin

    {Observer.reading=length(Subject.queue)/Subject :CallQueue

    { g g ( j q )andObserver.range = (0..Subject.capacity)}

    69

  • Diagramas de ComunicacinDiagramas de Comunicacin

    realizarPago(cantidad)

    Llamadas anidadas:

    :Registro :VentarealizarPago(cantidad) 1: realizarPago(cantidad)

    1.1: crear(cantidad)

    :Pago

    Iteraciones:

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

    70

  • Diagramas de Comunicacin

    R t j t d i t i l

    gMultiobjetos.

    z Representan conjuntos de instancias en elextremo muchos de una relacin 1:N o M:N

    z Una operacin sobre cada instancia requiered jdos mensajes:

    { Iteracin para obtener referencias a las instanciasindividuales

    {Mensaje a cada instancia, usando la referenciatemporal

    71

  • Diagramas de ComunicacingMultiobjetos.

    :Client :Server:Serverservers

    1:aServer:=find(specs)

    :ServeraServer

    2:process2:process

    72

  • Diagramas de ComunicacingCondiciones.

    e:ClaseE

    2 6()

    a:ClaseA b:ClaseBmsg1()1a [test]: msg2()

    2: msg6()

    a:ClaseA b:ClaseB

    1b [not test]: msg4() 1a.1: msg3()

    d:ClaseD c:ClaseC

    b [ ot test] sg ()

    1b 1 5()

    a sg3()

    1b.1: msg5()

    73

  • Ejercicio: BibliotecaEjercicio: Biblioteca

    z Una biblioteca tiene copias de libros Estos ltimos sez Una biblioteca tiene copias de libros. Estos ltimos se caracterizan por su nombre, tipo (novela, teatro, poesa, ensayo), editorial, ao y autor.

    z Los autores se caracterizan por su nombre, nacionalidad y fecha de nacimiento.

    z Cada copia tiene un identificador y puede estar en laz Cada copia tiene un identificador, y puede estar en la biblioteca, prestada, reservada, con retraso o en reparacin.

    z Los lectores pueden tener un mximo de 3 libros enz Los lectores pueden tener un mximo de 3 libros en prstamo.

    z Cada libro se presta un mximo de 30 das, por cada da p pde retraso, se impone una multa de dos das sin posibilidad de coger un libro.

    z Realiza el diagrama de colaboracin para el mtodoz Realiza el diagrama de colaboracin para el mtodo devolver()

  • SolucinSolucin

    1: devolver(id, fecha)

    1.3 [retraso>0]: multar(retraso)

    :Lector

    ( , )

    :Copiaprestamos

    1.1: dev:=remove(id)1.3.1a [multa=0]: multa:=

    lt M lt

    create(fecha,retraso)

    dev:Copia1.2: retraso:=getRetraso(fecha)multa:Multa

    {new}

    multa:Multa1.3.1b [multa0]: anyade(fecha,retraso)

  • SolucinSolucin

    1: devolver(id, fecha)

    1.3 [retraso>0]: multar(retraso)

    :Lector

    ( , )

    :Copiaprestamos

    1.1: fec:=remove(id)1.3.1a [multa=0]: multa:=

    lt M lt

    create(fecha,retraso)

    1.2: retraso:=getRetraso(fecha)multa:Multa

    {new} fec:Fechafechas

    multa:Multa1.3.1b [multa0]: anyade(fecha,retraso)

    76

  • Diagramas de ComunicacingEtiquetas de las flechas.

    d d i l l t

    z Predecesor

    predecesor orden-secuencial valor-retorno := nombre-mensaje lista-argumentos

    z Predecesor{ Lista separada por , terminada en /{ El j t h bilit d h t l{ El mensaje no est habilitado hasta que no ocurran los

    mensajes en la lista

    z Orden en la secuenciaz Orden en la secuencia{ Lista separada por ., terminada en :{ C d t i t i l d id i t d l{ Cada trmino representa nivel de anidamiento procedural{ Iteracin: *[clusula interacin]{ Bifurcacin: [condicin]

    77

    { Bifurcacin: [condicin]

  • Diagramas de ComunicacingEtiquetas de las flechas.

    zEjemplos:{2: display(x y){2: display(x,y){1.3.1: p:=find(specs){4 [x

  • Diagramas de Comunicacin

    redisplay()

    gEjemplo.

    :Controller :Windowredisplay()

    1:displayPositions(window) 1.1.3.1:add(self)

    Li { }

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

    wire:Wirewire

    > linecontents {new}

    :Line {new}wire:Wire

    i-1 i

    1 1 1 0 i i ()

    >

    1 1 1b 1 i i ()

    1.1.2: create(r0,r1)1.1.3: display(window)

    left:Bead right:Bead

    1.1.1a: r0:= position() 1.1.1b: r1:= position()

    79

    g

  • Diagramas de Comunicacin

    P i hil d t l

    gObjetos Activos.

    zPoseen su propio hilo de control

    zUn objeto pasivo slo almacena datos

    { Puede enviar mensajes mientras procesa unpedido (mensaje) que haya recibidopedido (mensaje) que haya recibido

    L bj t ti tzLos objetos activos se representanfrecuentemente con componentes internas

    80

  • Diagramas de ComunicacingObjetos Activos. Ejemplo.

    :FactoryScheduler:FactoryManager

    currentJob:TransferJob1:start(job)A2,B2/2:completed(job)

    job

    :FactoryJobMgr job

    B2:completed1/B1:start(job)

    A2:completed

    1/A1:start(job)

    :Robot :Oven

    81

  • Diagramas de ComunicacingObjetos Activos. Ejemplo.

    Tipos de Flujos de Control

    Llamada a procedimiento u otra forma de llamada con anidamiento de control. La secuencia anidada termina antes de que siga la operacin que invoc Puedeantes de que siga la operacin que invoc. Puede usarse para procesos concurrentes cuando el mensaje es sncrono.Comunicacin asincrna, sin anidamiento de control. El objeto que enva no se detiene a esperar respuesta.

    Retorno de una llamada a procedimiento. Esta flecha puede omitirse si queda claro por el fin de la activacin.

    82

  • Diagramas de Secuencia

    z R t j t d j t l

    Diagramas de Secuencia

    z Representa conjunto de mensajes entre roles (o instancias) en una interaccin

    z Dos dimensiones:{Tiempo (generalmente vertical); puede ser una escala si{Tiempo (generalmente vertical); puede ser una escala si

    el sistema es de tiempo real

    {Dif t i t i ( l t h i t l) l{Diferentes instancias (generalmente horizontal); el orden relativo no tiene importancia

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

    83

  • Diagramas de Secuencia

    z Traza: secuencia de ocurrencias de eventos

    Diagramas de Secuencia

    z Traza: secuencia de ocurrencias de eventos

    z La semntica de una interaccin es un par de conjuntosz La semntica de una interaccin es un par de conjuntosde trazas (vlidas e invlidas) [P, I].

    z P d i ti t i l id l d j tz Pueden existir trazas no incluidas en los dos conjuntosanteriores.

    z Equivalencia de interacciones, si sus conjuntos de trazasson iguales.

    z Una interaccin se puede especializar: se aaden mstrazas al conjunto.

    84

    j

  • Diagramas de SecuenciaDiagramas de Secuencia

    a: lift receiver

    :caller :exchange :receiver

    b: dial tone

    di l di itObjetos c: dial digit...

    d: route

    Objetos

    Focos de d: route

    ringing tone phone rings

    Focos deControl

    answer phone

    stop tone stop ringing

    Mensajes

    85

    stop tone stop ringing

  • Diagramas de SecuenciaDiagramas de Secuenciasd Authenticate User

    LoginPage:Servlet

    ac:Authentication

    C ll

    ds:UserDataS i

    CurrentUser:UserDataServlet Controller Service UserData

    validateCredentials(Dan, b4_23)restoreUserData(Dan)

    create(Dan,Administrator)

    currentUsercurrentUser

    86

  • Diagramas de SecuenciaDiagramas de Secuencia

    :Pedido preferenteDi t ib idusual

    Di t ib id

    marcooperador guarda

    :Pedido :Distribuidor :Distribuidor

    entregar()

    loop

    alt

    entregar()

    [for each producto]

    [value > 10000]procedure entregar()

    foreach producto:if producto.value>10000entregar()

    [else]entregar()

    ppreferente.entregar()

    elseusual.entregar()

    end ifend forentregar() end for

    end procedure

  • Diagramas de SecuenciaDiagramas de Secuencia

    Gate (formal), con nombre out Unlock

    88

    out_Unlock

  • Diagramas de SecuenciaDiagramas de Secuencia

    Referencias (Ocurrencias de Interacciones)

    z Copian el contenido dela interaccin referida.

    z Substitucin deparmetros y conexinde las puertas (gates)formales y actuales

    89

    formales y actuales.

  • Diagramas de Secuencia

    z Fragmentos combinados operadores (i):

    gOperadores sobre interacciones.

    z Fragmentos combinados, operadores (i):

    { Alternativa (alt).z Eleccin (mediante una guarda) de una interaccinz Eleccin (mediante una guarda) de una interaccin.

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

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

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

    fragmento padre.fragmento padre .

    { Paralelo (par).z Mezcla de las trazas de los operandos (cualquier entrelazado es vlido

    mientras preserve el orden de los eventos de cada operando)90

    mientras preserve el orden de los eventos de cada operando).

  • Diagramas de Secuencia

    { Secuenciacin dbil (seq)

    gOperadores sobre interacciones.

    { Secuenciacin dbil (seq).z Define un conjunto de trazas que cumple:z 1. Se mantiene el orden de eventos de los operandosz 2 Eventos de otras lneas de vida de otros operandos pueden venirz 2. Eventos de otras lneas de vida de otros operandos pueden venir

    en cualquier orden.z 3. Eventos de la misma lnea de vida de otros operandos se ordenan

    de tal manera que cualquier evento del primer operando va antes queel del segundo.

    { Secuenciacin estricta (strict).z Secuenciacin estricta en el orden de los eventos de los operandos.

    { Negativa (neg).z Define trazas invlidas.

    { Regin crtica (critical).91

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

  • Diagramas de SecuenciagOperadores sobre interacciones. Alternativa.

    92

  • Diagramas de SecuenciagOperadores sobre interacciones. Alternativa.

    93

  • Diagramas de SecuenciagOperadores sobre interacciones. Opcin.

    94

  • Diagramas de SecuenciagOperadores sobre interacciones. Bucle.

    95

  • Diagramas de SecuenciagOperadores sobre interacciones. Regin Crtica.

    96

  • Diagramas de SecuenciaEjemplo

    Sd Alarm Activation

    Ejemplo

    :SystemHandler :CellHandler :Sensor :Alarm :CellConfigurationInformation

    Activate()

    T

    =

    n

    o

    w

    assert

    T

    ReadConfiguration()

    Configuration Information Returned

    SelfTest()

    ACK

    seq

    Activate()

    SelfTest()

    Test()

    Validate

    opt

    opt

    par

    97ACKACK

    {

    t

    .

    .

    t

    +

    5

    }

  • Diagramas de SecuenciagRetorno de Valores

    98

  • Diagramas de Secuencia

    z Restricciones temporales (duracin)

    gTiempo

    z Restricciones temporales (duracin)

    z Duracin de mensajes y seales (duration)z Intervalos de tiempo ({t..t+3}) y restricciones temporales.

    99z Observaciones temporales (tiempo actual, now)

  • Diagramas de SecuenciagDescomposicin en partes

    La estructura interna deACS iACSystem tiene una interaccin AC_UserAccess que se invoca en este fragmento.

    100

  • Diagramas de SecuenciagDescomposicin en partes

    101

  • Diagramas de Secuenciagco-regin Coregin: s[u] recibe los mensajes

    en cualquier orden.

    102

  • Diagramas de Secuencia

    z Invariantes

    gInvariantes

    z Invariantes.

    En este momento la traza no es vlida no es vlida

    z Se comprueban justo antes de la ocurrencia del prximot ( d h b j t d l

    103

    evento (puede haber mensajes no mostrados en eldiagrama).

  • Diagramas de SecuenciagBinding

    104

  • EjercicioEjercicio

    fEspecificar el diagrama de secuencia de la operacin crearLaberinto

    public class JuegoLaberinto {public Laberinto crearLaberinto () {

    Laberinto lab = new Laberinto();Habitacion h1 = new Habitacion();Habitacion h2 = new Habitacion();Puerta puerta = new Puerta(h1, h2);lab.aadeHabitacion(h1);lab.aadeHabitacion(h2);h1.aadePuerta(puerta);return lab;

    }}

  • SolucinSolucin

    :JuegoLaberinto

    l b L b i tcrearLaberinto()

    lab:Laberinto

    h1:Habitacion

    h2:Habitacion

    puerta:Puertacreate(h1,h2)

    aadeHabitacion(h1)

    aadeHabitacion(h2)

    aadePuerta(puerta)

  • EjercicioEjercicio

    Especificar el diagrama de secuencia de la operacinEspecificar el diagrama de secuencia de la operacin crearLaberinto

    public class JuegoLaberinto {private Laberinto lab;private boolean conVentana;

    public JuegoLaberinto() {public JuegoLaberinto() {lab = new Laberinto();conVentana = true;

    }

    public void crearLaberinto () {Habitacion h;for (int i=0; i

  • SolucinSolucin

    :JuegoLaberinto lab:Laberinto

    crearLaberinto()

    h:Habitacion

    loop [for i = 1 to 10]

    v:Ventana

    opt [conVentana==true]

    aadeVentana(v)

    aadeHabitacion(h)

  • EjercicioEjercicio

    Especificar el diagrama de secuencia de la operacin realizarJugada definida en la clase Jugador, para el juego del parchsparchs

    Jugadorill A t l i t

    Dado2*

    - casillaActual: int+ realizarJugada(): void+ casillaActual(): int

    + tirar(): int

    1*

    Tablero

    + mover(int actual, int unidades):

    1

    int unidades): boolean

  • SolucinSolucin

    :Jugador d1:Dado

    realizarJugada()

    d2:Dado :Tablero

    tirar()

    n1

    par

    tirar()

    n2

    ca:=casillaActual()

    mover(ca,n1+n2)

    movRealizado

  • EjercicioEjercicioIdentificar las clases relevantes y realizar el diagrama deIdentificar las clases relevantes y realizar el diagrama de

    secuencia para el siguiente caso de uso, que corresponde a la realizacin de una llamada desde un telfono mvil.

    z El usuario pulsa los dgitos del nmero de telfonoz Para cada dgitog{ la pantalla se actualiza para aadir el dgito marcado{ se emite un tono por el receptor

    z El usuario pulsa el botn Enviarz El usuario pulsa el botn Enviarz El indicador en uso se ilumina en pantallaz El mvil establece conexin con la redz L d it l d d l dz Los dgitos acumulados se mandan a la redz Se establece la conexin con el nmero marcado

  • SolucinSolucin

    :Button :Dialer send:Button:Display :CellularRadio:Speaker

    digit(code)

    loop [for i = 1 to 9]

    displayDigit

    send()

    displayDigit(code) emitTone

    (code)

    send()

    connect(pno)

    inUse()inUse()

    Diagrama de colaboracinequivalente?

  • SolucinSolucin

  • Visin de Conjunto de la Interaccin

    D fi l i t i t d

    Visin de Conjunto de la Interaccin

    z Define las interacciones a travs de una variante de los diagramas de actividad.

    z Visin general del flujo de control.

    z Usa elementos de los diagramas de actividad para especificar:

    { Alternativas entre interacciones.{ Paralelismo de interacciones.

    114{ Bucles de interacciones.

  • Visin de Conjunto de la InteraccinVisin de Conjunto de la Interaccin

    115

  • Tiempo

    M t i t i d d

    Tiempo

    zMuestran interacciones donde esimportante razonar sobre el tiempo.

    zRepresenta condiciones que cambian enzRepresenta condiciones que cambian enuna o varias lneas de vida, en un ejelineal de tiempolineal de tiempo.

    zCambios en el estado de un objeto con eltiempo en respuesta a eventos.

    116

  • TiempoTiempo

    Diagrama temporal correspondientepa la interaccin

    117

  • TiempoTiempo

    118

  • TiempoTiempo

    119

  • Mquinas de EstadosMquinas de Estados

    z St t h t [H l]z Statecharts [Harel]

    z Representan el comportamiento de entidades ( p ez Representan el comportamiento de entidades ( p.e. instancias de clases).

    z Especifican reaccin ante eventos

    z Describen posibles secuencias de estados y acciones por las que pueden pasar las entidades.

    z De comportamiento vs. de protocolo.

    120

  • Mquinas de EstadosMquinas de Estados

    EstadosComienzo Fin

    start Partial Dialdigit(n)

    digit(n)

    Transiciones

    121

  • Mquinas de Estados

    z U t i i d t

    Mquinas de Estados

    z Un transicin puede tener:{ Evento.zEventos temporales: tm(n)zEventos temporales: tm(n)

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

    A1 A2[guard] evt/action [post-]

    A1 A2

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

    122

    )

  • Mquinas de EstadosMquinas de Estados

    z Un estado tiene:{Nombre

    {Transiciones internas: lista de acciones ejecutadas en ese estado (entry/exit/do)( y )

    z Ejemplo:j p

    Typing Passwordt / t h i i ibl

    Nombreentry/set echo invisibleexit/set echo normalcharacter/handle characterhelp/display help

    Transicionesinternas

    123

    help/display help

  • Mquinas de EstadosStart Partial Dial

    Mquinas de Estados

    digit(n)Startentry/start dial toneexit/stop dial tone

    Partial Dialentry/number.append(n)

    digit(n)Estado compuesto: digit(n)

    Dialing

    digit(n)Startentry/start dial tone

    Partial Dialentry/number.append(n)

    [number.isValid()]y

    exit/stop dial toney pp ( )

    124digit(n)

  • Ejercicio: BibliotecaEjercicio: Biblioteca

    z Una biblioteca tiene copias de libros Estos ltimos sez Una biblioteca tiene copias de libros. Estos ltimos se caracterizan por su nombre, tipo (novela, teatro, poesa, ensayo), editorial, ao y autor.

    z Los autores se caracterizan por su nombre, nacionalidad y fecha de nacimiento.

    z Cada copia tiene un identificador y puede estar en laz Cada copia tiene un identificador, y puede estar en la biblioteca, prestada, reservada, con retraso o en reparacin.

    z Los lectores pueden tener un mximo de 3 libros enz Los lectores pueden tener un mximo de 3 libros en prstamo.

    z Cada libro se presta un mximo de 30 das, por cada da p pde retraso, se impone una multa de dos das sin posibilidad de coger un libro.

    z Realiza el diagrama de estados de la clase copiaz Realiza el diagrama de estados de la clase copia .

  • SolucionSolucion

    enCon

    Retraso

    ConRetraso yreser ado

    devolver()reservar(id) /usrRes = iden

    reparacion

    reparar()reparado()

    Retraso

    [getDate()>fp+30]

    reservado

    devolver() [getDate()>fp+30]

    enbiblioteca prestado

    prestar(id,fecha)/fp=fecha reservado

    reservar(id) /usrRes = id

    devolver()devolver()prestar(id, fecha)

    [usrRes==id]/fp=fecha

    t (2 d ) enreserva

    tm(2 days)

  • Solucion: Estados JerrquicosSolucion: Estados Jerrquicos

    enCon

    Retraso

    ConRetraso yreser ado

    reservar(id) /usrRes = iden

    reparacion

    reparar()reparado()

    Retraso

    [getDate()>fp+30]

    reservado

    [getDate()>fp+30]

    usrRes = id

    enbiblioteca prestado

    prestar(id,fecha)/fp=fecha reservado

    reservar(id) /usrRes = id

    devolver() devolver()prestar(id, fecha)[usrRes==id]/fp=fechat (2 d ) en

    reservafp=fechatm(2 days)

    127

  • Mquinas de EstadosqComponentes Ortogonales

    Incomplete

    lab donelab doneLab1 Lab2

    Term project done PassedTermProject

    project done

    Final passFinalTest

    pass

    128Failedfail

  • Mquinas de EstadosqComponentes Ortogonales: Utilidad

    z Modelo de un sistema formado por un proceso en red sin componentes ortogonales.

    ack

    Idle Message Sendingtransmit

    Idle Message Sendingarr.

    time out arrtime out arrarr

    129

  • Mquinas de EstadosqComponentes Ortogonales: Utilidad

    ack1

    Idle1 Mess1 Send1trans1

    1

    d 1Idle2

    ss1Idle2

    d1Idle2arr1

    1

    toutarr1

    arr arr arr2tout1 arr1

    Idle1

    arr2

    Mess1

    arr2

    Send1trans1arr2arr2arr1

    arr2

    Idle1Mess2

    Mess1Mess2arr1

    trans

    Send1Mess2

    trans1

    tout1 arr1ack1 trans2

    Idle1Send

    trans2 tout2ack2 Mess1

    Send

    tout2arr1

    ack2 z Dos 130

    Send2 Send2arr2

    arr1 procesos

  • Mquinas de Estados

    ack P 1

    qComponentes Ortogonales: Utilidad

    ack Proc-1

    Idle Message Sendingarr.

    transmit

    time out arrarr

    P 2ack

    Proc-2

    Idle Message Sendingarr.

    transmit

    131time out arrarr

  • Mquinas de Estados

    P 1

    qComponentes Ortogonales: Utilidad

    transmit

    ack/ channel = freearr

    Proc-1

    Idle Message Sendingarr

    transmitWait

    channel[channel==free ] /channel = busy

    time out / channel = freearr

    P 2Proc-2

    transmitarr

    ack/ channel = free

    Idle Message Sendingarr

    transmitWait

    channel[channel==free ] /channel = busy

    132time out / channel = freearr

  • Mquinas de EstadosP d t d

    Mquinas de EstadosPseudo - estados:z Fork / Join.z Initial.z Deep History / Shallow History.z Junction.z Choice.

    H* H

    z Entry / Exit point.z Terminate.

    Setup CleanupA1 A2

    B1 B2

    133

    Fork Join

  • Mquinas de EstadosqEstado Histrico

    BHHHH

    t4

    IB1 B2

    t1: ev0t2

    t3

    B12

    B11B21 t3

    t3: ev1

    t4: ev2

    134

  • Mquinas de EstadosqEstado Histrico (ii)

    BH*H*HH

    t4

    IB1 B2

    t1: ev0t2

    t3

    B12

    B11B21 t3

    t3: ev1

    t4: ev2

    135

  • Mquinas de EstadosqEstado Histrico. Ejercicio.

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

    136

  • Mquinas de EstadosqEstado Histrico. Ejercicio. Solucin

    On

    Standby

    On

    CD modemodepower

    H

    Radio Tapemode

    power H

    mode

    M d l l i i t i t d hi t iModelar el mismo sistema sin usar estado histrico.

    137

  • Mquinas de EstadosqEstado Histrico. Ejercicio. Solucin (ii)

    Standby Onpower

    CD modemode

    power

    powerlastCD

    power

    Radio Tapemode

    lastRadiopower

    power

    powerlastTape power

    power

    138

  • Mquinas de EstadosPseudo - estados: Junction.

    Mquinas de EstadosPseudo estados: Junction.

    Pseudo - estados: Choice.

    139

  • Mquinas de EstadosMquinas de EstadosPuntos de Entrada/Salida, Estados Sub-Mquina

    140

  • Ejemplo. Reproductor CDs.

    I f U iReproductorCD

    Li C iInterfazUsuario

    ...

    ...

    p

    - Tpausa: Tiempo- NumActual: Entero+ t ()

    ListaCanciones

    ...+ obtenerCancion(Orden: Entero):

    disco11

    + stop()+ pause()+ play()+ eject()

    Cancion+ numCanciones(): Entero....1

    j ()+ apagar()+ finCancion()- buscaDisco(d: InfoDisco):ListaCanciones

    0..*pista1ListaCanciones Cancion

    - titulo: Cadena- duracion: Tiempo

    1

    1driver

    player actual

    p- Artista: Cadena- Orden: Entero

    ...

    ControladorCD

    ...+ l ( t C i d d Ti )+ play(act: Cancion, desde: Tiempo)+ stop() : Tiempo+ detectarDisco() : InfoDisco+ detectarAbierto() : Logico

    141

    () g+ abrir()+ cerrar()+ apagar()

  • Diagrama de estados para la clase ReproductorCD

    [(info=driver.detectarDisco())!=NULL]/disco=buscaDisco(info)NumActual = 1; actual = disco.obtenerCancion(ordenActual)

    [not driver.detectarAbierto()]

    p

    [else]/ driver.stop(); NumActual=1;

    Cerrado

    ( )

    Play()/r ()

    endOfSong()/NumActual+=1

    (

    )

    r

    A

    b

    i

    e

    r

    t

    o

    (

    )

    ]

    ;actual= disco.obtenerCancion(NumActual)

    Stop PlayPlay()/driver.play(actual, 0)

    p

    (

    )

    p

    a

    u

    s

    a

    )

    e

    j

    e

    c

    t

    (

    )

    /

    d

    r

    i

    v

    e

    r

    .

    c

    e

    r

    r

    a

    r

    [NumActual

  • Mquinas de Estados de Protocoloz Asociadas a un clasificador, interface o puerto.Mquinas de Estados de Protocolo

    , p

    z Especifican qu operaciones del clasificador se puedenllamar en qu condicionesllamar en qu condiciones.

    z Las operaciones que no generan transicin no seLas operaciones que no generan transicin no serepresentan.

    z M i d t d d l ti E ifi lz Mquinas de estado declarativas: Especifican lastransiciones legales (no su condicin) para cadaoperacin. Contrato para el usuario del clasificador.

    z Mquinas de estado Ejecutables: Especifican todoslos eventos que un clasificador puede recibir y tratar

    143

    los eventos que un clasificador puede recibir y tratar,con las transiciones implicadas.

  • Mquinas de Estados de Protocoloz Mquinas de estados de

    Mquinas de Estados de Protocoloz Mquinas de estados de

    protocolo. Ejemplo (declarativa).

    z Los estados de mquinas deprotocolo no tienen asociadasacciones exit/entry/do pero

    Cleanupacciones exit/entry/do, peropueden tener invariantes.

    z Las transiciones no tienen

    [inv]

    z Las transiciones no tienenacciones, pero s pueden tenerpre- y post- condiciones.

    [pre-cond] Evt/ [post-cond]

    144

  • Mquinas de Estados

    z Una mquina de estados es generalizable

    qGeneralizacin

    z Una mquina de estados es generalizable.

    z Se pueden aadir regiones, estados y transiciones.

    z Se puede cambiar el destino y estado de una transicin siempre que la fuente y evento se mantenga.

    z En caso de herencia mltiple de mquinas de estado (por herencia de los clasificadores asociados), se crea una regin ortogonal por cada mquina heredada mas una por la mquina de estados delcada mquina heredada, mas una por la mquina de estados del clasificador especfico.

    z Se anota con junto al nombre de la mquinaz Se anota con junto al nombre de la mquina.

    z Los estados heredados se muestran con lneas punteadas o en gris.145

  • Mquinas de EstadosqGeneralizacin: Ejemplo, cajero autmatico.

    146

  • Mquinas de EstadosqGeneralizacin: Ejemplo, cajero autmatico.

    E i ibilid d dExtensin: posibilidad deteclear el importe aretirar, y de que este sepueda rechazar.

    147

  • EjercicioEjercicioz M d l l t i t ti d l j d lz Modelar el comportamiento reactivo de un reloj de pulsera.z El valor del tiempo se debe actualizar cada segundo, incluso cuando no se

    muestra (p.ej. crono encendido).z El botn de la parte superior derecha enciende la luz que se mantienez El botn de la parte superior derecha enciende la luz, que se mantiene

    encendida tanto como el botn est apretado, una vez que se suelta, la luzest encendida durante 2 segundos ms y se apaga.

    z El botn superior izquierdo alterna entre el modo de crono y de reloj. Elsistema empieza en el modo reloj en el que se muestra la hora en formatosistema empieza en el modo reloj, en el que se muestra la hora en formatoHH:MM:SS.

    z 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 ) p00:00:00. El botn inferior derecho se usa para activar el crono. ste seactualiza en incrementos de 1/100 segundos. Presionando el botn inferiorderecho pausa o continua el crono (si el reloj est en modo crono).Pulsando el botn inferior izquierdo resetea el crono a 00:00:00 si el relojq jest en modo crono y el crono ha sido pausado antes. El crono continuacorriendo (si est corriendo) o mantiene su valor (si est en pausa) inclusocuando el reloj est en un modo de display distinto (por ejemplo, cuando semuestra la hora).

    148

    muestra la hora).

  • Ejercicioz Interface provisto por el controlador:

    Ejercicio

    { 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 estvisualizando 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 lasmodificarn adecuademente, (por ejemplo, si se llama a increaseTime () a las11: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{ unsetLight() : Apaga la luz del visor.

    z Eventos de botones recibidos:{ topRightPressed.{ topRightReleased.p g{ topLeftPressed.{ topLeftReleased.{ bottomRightPressed.{ bottomRightReleased

    149

    { bottomRightReleased.{ bottomLeftPressed.{ bottomRightReleased.

  • Posible SolucinPosible Solucin.

    150

  • Mquinas de EstadosEjemplo. Herramienta de Dibujo (i)

    /setup widgetst bi di

    Active

    setup bindings

    Active

    exitButtonwmQuit

    151

  • Mquinas de EstadosqEjemplo. Herramienta de Dibujo (ii)

    Shapes Canvas

    Modes

    152

  • Mquinas de EstadosqEjemplo. Herramienta de Dibujo (iii)

    Shapes

    TriangleshapeSelected(Circle)

    shapeSelected(Triangle)

    shapeSelected(Rectangle)

    shapeSelected(Triangle)p ( g )

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

    shapeSelected(Rectangle)

    153

  • Mquinas de EstadosqEjemplo. Herramienta de Dibujo (iv)

    Modes

    modeSelect(Insert)/

    Insert

    modeSelect(Insert)/Canvas.Insert

    modeSelect(Delete)/Canvas.Delete

    modeSelect(Move)/Canvas.Move

    modeSelect(Insert)/Canvas.Insert

    modeSelect(Delete)/

    Canvas.Insert

    Move Delete( )/

    Canvas.Delete

    modeSelect(Move)/C M

    154

    Canvas.Move

  • Mquinas de EstadosEjemplo Herramienta de Dibujo (v)

    Canvas

    Inserting[Shapes in Circle]/d Ci l ( )

    Ejemplo. Herramienta de Dibujo (v)

    g

    Idle[Shapes in Triangle]/

    [Shapes in Rectangle]/drawRectangle(x,y)

    drawCircle(x,y)

    CConDrawingMouse1Press(x,y)

    [Shapes in Triangle]/drawTriangle(x,y)

    Deleting

    delete insert

    Moving

    insertmove

    Idle

    D i M 1Cli k( )/

    Moving

    onDrawingMouse1Press(x,y)/i Obj t fi d l t( ) onDrawingMouse1Click(x,y)/

    find_closest(x,y).del()

    MovingIdleonDrawingMouse1Release(x,y)

    movingObject=find_closest(x,y)

    155onDrawingMouse1Motion(x,y)/

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

    movedelete

  • Diagramas de Actividad

    z Refinamiento de los diagramas de estados

    Diagramas de Actividad

    z Refinamiento de los diagramas de estados.{ Los estados representan la ejecucin de acciones op j

    subactividades

    { Las transiciones son disparadas cuando se completan estasp pacciones o subactividades

    { Semntica basada en tokens.

    z Flujos dirigidos por procesamiento interno (en losdiagramas de estados normales son dirigidos por eventosdiagramas de estados normales son dirigidos por eventosexternos).

    156z Semntica basada en Redes de Petri. No obstante no se

    da una transformacin a Redes de Petri.

  • Diagramas de Actividad

    Put Coffee Put Filter

    gEjemplo

    Put Coffee in Filter

    Turn onMachine

    Put Filterin Machine

    [found

    Find Beverage

    Add Waterto Reservoir Brew

    coffee

    [found coffee] / coffeePot.turnOn

    g

    GetCups

    Pour

    [no coffee] light goes out

    Get cansof cola

    PourCoffee

    [found cola]

    Drink

    [no cola]

    157

  • Diagramas de ActividadSwimlanes

    158

  • Diagramas de ActividadDiagramas de ActividadPesos en los enlaces

    159

  • Diagramas de ActividadDiagramas de ActividadParmetros y Eventos Temporales

    Parmetros/Pins/Excepciones

    E t T lEventos Temporales

    160

  • Diagramas de ActividadDiagramas de ActividadExcepciones/Pins

    161

  • Diagramas de ActividadRegiones deExpansin

    z Regiones de expansin, procesamiento paralelo (tambin iterative y t i )streaming).

    162

  • Diagramas de ActividadDiagramas de ActividadRegiones Interrumpibles

    163

  • Diagramas de ActividadDiagramas de ActividadParticiones

    164

  • Diagramas de ActividadDiagramas de ActividadFlujos de Objetos: Objectflows

    165

  • IndiceIndice

    zDiagramas de Casos de Uso.zDiagramas de EstructurazDiagramas de Estructura.zDiagramas de Comportamiento.zOCL.zHerramientas.zEjemploszEjemplos.zBibliografa.

    166

  • OCL: Object Constraint LanguageOCL: Object Constraint Languagez Lenguaje de restricciones para expresar condicionesz Lenguaje de restricciones para expresar condiciones

    adicionales que no podemos expresar con diagramas ycardinalidades.

    z Combinar diagramas y especificaciones textuales.

    z Lenguaje preciso, no ambiguo, declarativo, tipado, basadoen matemticas (lgica de predicados y teora deconjuntos)conjuntos).

    z til para obtener modelos precisos (no anotaciones enp p (lenguaje natural).

    z Se utiliza fundamentalmente junto a los diagramas de167

    z Se utiliza fundamentalmente junto a los diagramas declases.

  • EjemplosEjemplosFlight Airplane

    0 * 1Flightnr: Integer

    availableSeats(): Integer

    numberOfSeats: Integerflights0.. 1

    plane

    0 *flights

    P

    0..

    0..*

    flights

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

    Person

    name: StringContext Flight::availableSeats(): Integerbody: plane.numberOfSeats passengers->size()

    z Cmo se expresa el hecho de que en ningn vuelo puede haberms pasajeros que asientos tiene el avin?p j q

    z Restriccin OCL:

    168Context FlightInv: passengers->size()

  • EjemplosEjemplosCasa Persona

    S S Id ifi d0 * 1valor: Dinero numSegSoc: Identificadorsueldo: DinerocontratarHipoteca(sum: Dinero,aval: Casa)

    casas0..

    propietario1

    aval 1)

    Hipotecaprincipal: Dineromensual: DinerofechaInicio: Fechahipotecas

    0..*

    1 contratante

    0..*hipotecasfechaInicio: Fecha

    fechaFinal: Fechahipotecas hipotecas

    Reglas adicionales:

    1. Una persona puede tener una hipoteca sobre una casa slo si es el propietario.

    2 La fecha de inicio de cada hipoteca ha de ser menor que la de final2. La fecha de inicio de cada hipoteca ha de ser menor que la de final.3. El nmero de la seguridad social de cada persona ha de ser nico.4. Slo es posible contratar una nueva hipoteca si el salario de la persona

    es suficiente.

    1695. Slo es posible contratar una nueva hipoteca si el valor de la casa aval

    es suficiente.

  • Ejemplos Las restricciones OCL se escriben

    C t t Hi t

    Ejemplos Las restricciones OCL se escribenen el contexto de una instancia deun tipo especfico.

    Context HipotecaInv: aval.propietario = contratante

    Context HipotecaInv: fechaInicio < fechaFin self hace referencia a la instancia

    del contexto.

    Context PersonaInv: Persona::allInstances()->isUnique(numSegSoc)

    Context Persona::contratarHipoteca(sum: Dinero, aval: Casa)pre: self.hipotecas.mensual->sum()+sum = aval.hipotecas.principal->sum()

    170

  • EjemplosEjemplos

    Los PCs pueden conectarse con un nico Hub, los servidores con uno o varios

    Context PCInv: cable_equipo->size() = 1

    171

    Context ServidorInv: cable_equipo->size() >= 1

  • EjercicioEjercicio

    Un Hub no puede conectarse consigo mismo a travs de un puerto

    Context Cable_HubsInv: Puerto_Hub.hub->asSet()->size() = 2

    172

  • Dnde usar OCL?Dnde usar OCL?

    z Clases:z Clases:{ Invariantes. Expresin OCL de tipo booleano, la expresin debe

    ser true para cada instancia de la clase en todo momento de la ejecucinejecucin.

    z Operaciones:{ Pre-condicin. Condicin que debe ser verdadera para ejecutar

    l i d t i d i t ila operacin en una determinada instancia.{ Post-condicin. Condicin que debe ser verdadera al terminar

    una operacin.{ B d E ifi i d l d i d ti{ Body. Especificacin del cuerpo de una operacin de tipo query.

    z Atributos y finales de asociacin:{ Valor inicial. expresin para dar el valor inicial a un atributo o p p

    final de asociacin. Se evalua al crear la instancia.{ Valor derivado.

    z Transiciones de mquinas de estados:Transiciones de mquinas de estados:{ Guarda.

  • EjemplosEjemplos

    parents

    children

    0..*

    0..*

    174

  • EjemplosEjemplos

    z E ifi i d l l i i i l d i d d t ib t / i ti dz Especificacin del valor inicial y derivado de atributos/association ends:context Person::income : Integerinit: parents.income->sum() * 1% -- pocket allowanced i d if lf < 18derived:if self.age < 18

    then parents.income->sum() * 1% -- pocket allowanceelse job.salary -- income from regular jobendifendif

    z Subexpresiones (let):context Person inv:let income : Integer = self.job.salary->sum() inif isUnemployed thenincome < 100elseincome >= 100endif

    175

    endif

  • Ejemplos ColeccionesEjemplos. Colecciones.

    zTipos: Set, OrderedSet, Bag, Sequence.

    zOperaciones de bucle con colecciones:select(expr): selecciona los elementos que cumplan una condicin.

    coleccion->select( expresion-logica )l i l t( | i l i )coleccion->select( v | expresion-logica-con-v)

    coleccion->select( v : Type | expresion-logica-con-v)

    t t C icontext Company inv:self.employee->select(age < 25)->notEmpty()

    context Company inv:176

    context Company inv:self.employee->select(gender=female)->notEmpty()

  • Ejemplos Coleccionescollect(expr): devuelve la coleccin que resulta de evaluar expr

    Ejemplos. Colecciones.collect(expr): devuelve la coleccin que resulta de evaluar exprpara cada elemento de la coleccin fuente.

    self employee >collect( birthDate ) >asSet()self.employee->collect( birthDate )->asSet()

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

    coleccion->forAll( expresion-logica )coleccion->forAll( v | expresion-logica-con-v )coleccion->forAll( v : Type | expresion-logica-con-v )

    context Companyinv: self.employee->forAll( isUnemployed = False )inv: self.employee->forAll( p | p.isUnemployed = False )i lf l >f All( P | i U l d F l )

    177

    inv: self.employee->forAll( p : Person | p.isUnemployed = False )

  • Ejemplos ColeccionesEjemplos. Colecciones.exists(expr): devuelve true si al menos hay un elemento en lacoleccin para el que expr es verdaderacoleccin para el que expr es verdadera.

    coleccion->exists( expresion-logica )coleccion->exists( v | expresion-logica-con-v )coleccion->exists( v : Type | expresion-logica-con-v )coleccion->exists( v : Type | expresion-logica-con-v )

    context Companyinv: self.employee->exists( age > 50 )inv: self.employee->exists( p | p.age > 50 )inv: self.employee->exists( p : Person | p.age > 50 )

    iterate(): itera sobre todos los elementos de una coleccin.coleccion->iterate( elem : Type; acc : Type = | expresion-logica-

    l )con-elem-y-acc )

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

    178

    ( ; g{} | g( p p y))

    aade un elemento a una coleccin

  • Colecciones Otras Operacionesz Otras operaciones de bucle:Colecciones. Otras Operaciones.

    p{ source->any(iterator|body)z source->select(iterator|body)->asSequence()->first()

    { source->collectNested(iterators|body){ source collectNested(iterators|body)z Bag de elementos que resultan de aplicar body a cada elemento de

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

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

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

    condicin.{ source->sortedBy(expr)z Ordena source resulta en un OrderedSet

    179

    z Ordena source, resulta en un OrderedSet

  • IndiceIndice

    zDiagramas de Casos de Uso.zDiagramas de EstructurazDiagramas de Estructura.zDiagramas de Comportamiento.zOCL.zHerramientaszHerramientas.zEjemplos.j pzBibliografa.

    180

  • Herramientas IHerramientas, I

    Dib j d diz Dibujo de diagramas{Soporte a la correcccin de los diagramas en base a su

    semnticasemntica{Apoyo para simplificar la facilidad de comprensin de

    los diagramas (layout, etc.)z Archivo de informacin{Comprobacin de inconsistencias{Deteccin de trabajo a realizar y mejoras{Generacin de informes{Soporte a la reutilizacin{Soporte al rediseo (refactorings).

    181

  • Herramientas IIHerramientas, II

    z Soporte a la navegacin{Vistas compuestas{Elaboracin de conexiones entre informacin

    relacionada{B d{Bsqueda{Visin con diferentes niveles de granularidad

    (expansin y contraccin de partes de la vista)(expansin y contraccin de partes de la vista){Filtros{Operaciones sobre componentes de la vista{Operaciones sobre componentes de la vista

    182

  • Herramientas IIIHerramientas, III

    z Soporte al trabajo multiusuarioz Soporte al trabajo multiusuario{Bloqueo de informacin{Trabajo colaborativoj

    z Generacin de cdigo{Esqueletos con informacin esttica (clases){Generacin a partir de diagramas de comportamiento{Generacin a partir de diagramas de comportamiento

    (mquinas de estados).{ Integracin con lenguajes especiales (SQL, ){Desarrollo Dirigido por Modelos (MDA{Desarrollo Dirigido por Modelos (MDA,

    http://www.omg.org/mda/)z Ingeniera inversa{Construccin de un modelo de diseo a partir de cdigo{Diseo iterativo: incorporacin al modelo de detalles

    implementados

    183

  • Herramientas IVHerramientas, IV

    z Integracin con otras herramientas{Entorno de desarrollo (tendencia a confluir){Configuracin del sistema y control de versiones{Herramientas de documentacin{Herramientas de prueba de software{Herramientas de construccin de interfaces de usuario{Herramientas de especificacin de requisitos{Herramientas de gestin de proyectos y soporte al

    d di d llproceso de diseo y desarrollo

    184

  • Herramientas VHerramientas, V

    zDistintos niveles de abstraccinz Intercambio de informacinz Intercambio de informacin{Especificacin OMG de representacin de

    modelos UML en XMI (XML Metadatamodelos UML en XMI (XML Metadata Interchange)

    185

  • Poseidon for UMLPoseidon for UML

  • IndiceIndice

    zDiagramas de Casos de Uso.zDiagramas de EstructurazDiagramas de Estructura.zDiagramas de Comportamiento.zOCL.zHerramientaszHerramientas.zEjemplos.Ejemplos.zBibliografa.

    187

  • Ejemplo de AnlisisAplicacin para una Galera de Arte

    Diagrama de casos de uso inicial

    Comprar uncuadro

    Vender uncuadro

    Vendedor

    AgenteGalera

    Producir Informe

    C dCompradorActualizar

    Coeficiente de

    188

    moda

  • Comprar unaDiagrama pObra maestra

    Comprar unaO

    refinado

    VendedorObra representativa

    Comprar unaObra representativa

    Vender uncuadro

    Obra representativa

    Agente

    Producir Informecompras

    Comprador

    AgenteGalera Producir Informe

    ventas

    Producir Informetendencias

    189Actualizar

    Coeficiente de moda

  • Caso de uso: comprar una obra maestra

    Actores primarios:pAgente Galera, vendedor

    Interesados y Objetivos: Agente: quiere obtener una recomendacin lo ms acertada posible del precio mximo recomendado de manera rpida. Vendedor: quiere vender el cuadro a un precio razonable de manera rpida.

    Precondiciones:El agente ha entrado en la aplicacin.

    Garanta de xito (post-condiciones):Se registra la venta.

    E i P i i l d itEscenario Principal de xito:1. El agente introduce la descripcin del cuadro.2. El sistema busca el cuadro ms parecido del mismo autor.3 El sistema presenta el precio recomendado3. El sistema presenta el precio recomendado.4. El agente hace una propuesta por debajo del precio recomendado, y el vendedor acepta la oferta.5 El agente introduce informacin de la venta5. El agente introduce informacin de la venta.

    Extensiones:2a. No hay ningn cuadro parecido del mismo autor, as que el sistema no presenta una recomendacin

    190

    no presenta una recomendacin.4a. El vendedor no acepta la oferta y la venta no se produce.

  • Diagrama de clases inicial

    Si t G ti

    CuadronombreDelArtistaapellidosDelArtista

    Sistema GestionGaleria

    TituloAoCreacionAltoAnchoTecnicaTema

    Cuadro GaleriaClasificacionfechaCompraFechaventa

    Cuadro SubastadofechaSubastaprecioSubasta

    FechaventanombreVendedordireccionVendedorprecioCompraMaximoprecioCompraRealprecioCompraRealprecioVentaDeseadoprecioVentanombreCompradordireccionCompradordireccionComprador

    Obra Maestra Cuadro de Otro Tipo ModanombreArtistausa

    191Obra Representativa

    nombreArtistaappelidosArtistacoeficiente

    usa

  • Diagrama de clases asociado al caso de uso vender una obra maestra

    Proporciona los datos introducidos por el agente

    Vendedor

    por el agente

    Obra maestra

    A t GUI Calcular PrecioAgenteGalera

    GUI Calcular PrecioObra Maestra

    Cuadro Cuad oSubastado

    192

  • AgenteGalera

    : GUI : Calcular PrecioObra Maestra

    : CuadroSubastado

    Vendedor

    : Obra maestra1: proporcionardatos obramaestra

    2: transferir detalles

    3: crear objetonuevonuevo

    4: devolver objetonuevo5: buscar cuadrossubastados

    Datos proporcionados por el vendedor

    subastados6: devolver cuadrosubastado7: proporcionarprecio8: mostrar

    precio

    9: proporcionardetalles delvendedor

    10: transferir detallesvendedor 11: solicitar

    actualizacin

    12: confirmacin13: confirmacin14: mostrarconfirmacin

    193

  • Un ejemplo completo para todos los diagramastodos los diagramas

    Un sistema de gestin de cursos impartidos para un conjunto de clientes. Algunos de esos clientes pueden pertenecer a empresas.

    194

  • 195

  • 196

  • 197

  • 001

    1 11.12

    2.1

    33.1 3.1.1

    3.2 3.2.1

    198

  • 199

  • 200

  • 201

  • 202

  • 203

  • IndiceIndice

    zDiagramas de Casos de Uso.zDiagramas de EstructurazDiagramas de Estructura.zDiagramas de Comportamiento.zOCL.zHerramientaszHerramientas.zEjemploszBibliografa.

    204

  • Bibliografa: UMLBibliografa: UMLUML{ D Pil N il Pi UML 2 0 i N t h ll OR ill 2005{ Dan Pilone; Neil Pitman. UML 2.0 in a Nutshell. OReilly, 2005.{ Martin Fowler. UML Distilled: A Brief Guide to the Standard Object Modeling Language, 3rd Edition. Addison Wesley, 2003.{Web de la OMG sobre UML: http://www.uml.org{ Perdita Stevens, Rob Pooley. Utilizacin de UML en Ingeniera del Software con Objetos y Componentes. Addison Wesley, 2002.j y p y,{ Grady Booch, James Rumbaugh, Ivar Jacobson. The Unified Modeling Language User Guide. Addison-Wesley, 1999.{ Eriksson H E Penker M Lyons B Fado D UML 2 Toolkit OMG Press{ Eriksson, H. E., Penker, M., Lyons, B., Fado, D. UML 2 Toolkit . OMG Press, Wiley. 2004.{ Craig Larman. Applying UML and Patterns. Prentice Hall. 2002.

    OCL{Warmer Kleppe The Object Constraint Language 2nd Edition Getting your

    205

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

  • Bibliografa: Statecharts

    z Harel D On Visual Formalisms Communications of the

    Bibliografa: Statecharts

    z Harel D. On Visual Formalisms. Communications of theACM. Vol 31, No. 5. Pp.: 514-530. Mayo 1988.

    z Harel D., Naamad A. The STATEMATE Semantics ofStatecharts. ACM Transactions on SoftwareEngineering and Methodology Vol 5 No 4 Oct 1996Engineering and Methodology, Vol. 5, No. 4, Oct. 1996,pp.: 293-233.

    D id H l d E G E bl bjz David Harel and Eran Gery. Executable objectmodeling with statecharts. IEEE Computer, pages 31-42,1997.

    206