Unidad 2.2:
description
Transcript of Unidad 2.2:
![Page 1: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/1.jpg)
Unidad 2.2:
UML (Lenguaje de Modelamiento
Unificado)
![Page 2: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/2.jpg)
Diagramas de UML
Use CaseDiagramsUse Case
DiagramsDiagramas de Casos de Uso
ScenarioDiagramsScenario
DiagramsDiagramas deColaboración
StateDiagramsState
DiagramsDiagramas deComponentes
ComponentDiagramsComponent
DiagramsDiagramas deDistribución
StateDiagramsState
DiagramsDiagramas de Objetos
ScenarioDiagramsScenario
DiagramsDiagramas deEstados
Use CaseDiagramsUse Case
DiagramsDiagramas deSecuencia
StateDiagramsState
DiagramsDiagramas deClases
Diagramas deActividad
Modelo
“Un modelo es una descripción completa de un sistema desde una perspectiva concreta”
![Page 3: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/3.jpg)
... Diagramas de UML
Diagrama de Casos de Uso Diagrama de Clase (incluyendo Diagrama de Objetos) Diagramas de Comportamiento
Diagrama de Estados Diagrama de Actividad Diagramas de Interacción
Diagrama de Secuencia Diagrama de Colaboración
Diagramas de implementación Diagrama de Componentes Diagrama de Despliegue
![Page 4: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/4.jpg)
… Casos de Uso
Existen dos elementos primordiales cuando se realiza la modelación de C.U. Diagramas de casos de uso: ilustra
gráficamente el sistema como una colección de casos, actores y sus relaciones.
Comunica a un alto nivel el alcance de los eventos de negocio que el sistema debe procesar.
El diagrama de casos de uso es muy sencillo, pero con éste comienza un importante proceso llamado descomposición funcional.
![Page 5: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/5.jpg)
… Casos de Uso
Ejemplo:Sistema
Actor A
Caso de uso X
Actor B
Caso de uso Y
![Page 6: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/6.jpg)
… Casos de Uso
Un C.U representa un objetivo individual del sistema y describe una secuencia de actividades y de interacciones del usuario para alcanzar el objetivo.Un C.U por sí solo no se considera como requerimiento funcional, pero la historia (el escenario) que relata el C.U consiste en uno o más requerimientos.Inicialmente los CU se definen durante la etapa de los requerimientos del ciclo de vida y se refinarán adicionalmente a lo largo de éste
![Page 7: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/7.jpg)
… Casos de Uso: ActoresLos C.U se inician o son generados por los usuarios externos llamados Actores.Un actor inicia la actividad del sistema, un caso de uso, con el propósito de terminar alguna tarea de negocios que produzca algo con valor apreciable.Un actor representa un papel desempeñado por un usuario que interactúa con el sistema y no significa que retrate a una persona o puesto de trabajo. De hecho un actor no tiene porqué ser humano, puede ser una organización, otro sistema de información o un dispositivo externo tal como un sensor de calor.
![Page 8: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/8.jpg)
… Casos de Uso: Actores
Existen principalmente 4 tipos de actores: Actor primario de negocios: El interesado
que se beneficia principalmente de la ejecución de un CU al recibir algo d valor medible u observable. Este actor puede o no iniciar un evento de negocios.
Ej: En el evento de negocio de un empleado que recibe el cheque como pago (algo con valor medible) del sistema de nómina cada viernes, el empleado no inicia el evento pero es el receptor primario de algo de valor.
![Page 9: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/9.jpg)
… Casos de Uso: Actores
Actor primario del sistema: El involucrado que tiene una interfaz directa con el sistema para iniciar u ocasionar el evento de negocios o de sistema.Esto actores pueden interactuar con los actores primarios de negocios con el propósito de usar el sistema real. Ellos facilitan el evento a través del uso directo del sistema para beneficio del actor primario de negocios.Ej : Un dependiente de una tienda de abarrotes que selecciona los artículos para el cliente que compra abarrotes ó una operadora que proporciona información del directorio a un cliente.
![Page 10: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/10.jpg)
… Casos de Uso : Actores
Actor externo servidor: El involucrado que responde a una solicitud desde el caso de uso.
Actor externo receptor: El involucrado que no es el actor primario pero que recibe algo de valor medible u observable (salida) proveniente del caso de uso.Ej: Un almacén recibe una orden de embalaje para preparar un flete después de que un cliente ha colocado una orden.
![Page 11: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/11.jpg)
… Casos de Uso : Actores
En muchos sistemas de información hay eventos de negocios ocasionados por el calendario o la hora del reloj. Ej: El sistema de facturación de una compañía de
tarjetas de crédito genera automáticamente sus estados de cuenta en el quinto día de cada mes. (fecha de facturación).
Un banco concilia sus transacciones con cheques todos los días a las 5 pm.
Estos eventos son ejemplo de eventos temporales, ¿Quién sería el actor?, el actor de un evento temporal es el tiempo.
![Page 12: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/12.jpg)
… Casos de Uso: Relaciones
Una relación: se ilustra como una línea entre dos símbolos en el diagrama de casos de uso. El significado de las relaciones puede diferir dependiendo de cómo se dibujen las líneas y que tipo de símbolos conectan
![Page 13: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/13.jpg)
… Casos de Uso: Relaciones
Asociaciones: Existe una relación entre un actor y un CU siempre que el caso describa una interacción entre éstos.
Se representa con una línea continua que conecta al actor y al CU.
Una Asociación que contiene una cabeza de flecha en el extremo que toca al CU, indica que el caso fue iniciado por el actor.
Las asociaciones sin cabeza de flecha indican una interacción entre el CU y el actor externo servidor o receptor.
![Page 14: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/14.jpg)
Casos de Uso: Relaciones
UML define cuatro tipos de relación en los Diagramas de Casos de Uso:
Comunicación:
Caso de Uso
Actor
![Page 15: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/15.jpg)
… Ejemplos
Cliente
Venta Normal
Venta en RebajasVendedor
Venta en Oferta
En el paquete tipos de venta:
![Page 16: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/16.jpg)
… Casos de Uso: Relaciones
Extensión: Un CU puede contener una funcionalidad compleja que consiste de varios pasos que hacen difícil entender la lógica del caso. Con objeto de facilitar el CU y hacer que se entienda más
fácilmente, podemos extraer los pasos más complejos para formar su propio caso.
El caso resultante de llama caso de extensión, ya que extiende la funcionalidad del VU original.
Un CU puede tener muchas relaciones de extensión, pero un CU de extensión puede ser invocado solamente por el CU que se está extendiendo
Se representa mediante una línea con cabeza de flecha (continua o segmentada) que comienza con el CU de extensión y que apunta al CU que se está extendiendo.
![Page 17: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/17.jpg)
… Casos de Uso: Relaciones
Extensión : el Caso de Uso origen extiende el comportamiento del Caso de Uso destino
Caso de uso origen
Caso de uso destino
<<extend>>
![Page 18: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/18.jpg)
… Ejemplos
Solicitar nueva tarjeta
Socio Encargado
Realizar préstamo
tarjeta caducada
<<extends>><<extend>>
![Page 19: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/19.jpg)
… Casos de Uso: Relaciones
Uses (o Inclusión): Comúnmente se puede descubrir dos o más CU que ejecuten pasos de funcionalidad idéntica. Lo mejor es extraer estos pasos comunes para formar un caso de uso separado que sea propio llamado, CU resumen. Un CU resumen representa una forma de “reuso” y es una
herramienta excelente para reducir la redundancia entre los CU.
Un CU resumen está disponible como referencia (o uso) para cualquier otro CU que requiera su funcionalidad.
Se representa mediante una línea con cabeza de flecha (continua o segmentada) que comienza en el CU Oficial y apunta al CU que se esté usando.
![Page 20: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/20.jpg)
… Casos de Uso: Relaciones
Inclusión : una instancia del Caso de Uso origen incluye también el comportamiento descrito por el Caso de Uso destino
En UML 1.3 se estereotipa como <<include>> lo que antes llevaba el estereotipo <<uses>>
Caso de uso origen
Caso de uso destino
<<include>>
![Page 21: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/21.jpg)
… Ejemplos
Validar operación
Reintegro cuenta corriente
Cliente
Reintegro cuenta crédito
<<uses>>
<<uses>><<include>>
<<include>>
![Page 22: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/22.jpg)
… Casos de Uso: Relaciones
Dependencia: Como administrador de proyecto o desarrollador líder, es de mucha ayuda saber cuáles CU tienen una dependencia sobre otros CU, con objeto de determinar la secuencia en que es necesario desarrollar los CU.Ej Bancario: Hacer un retiro no puede ejecutarse hasta que haya ocurrido el caso de uso Abrir una Cta Bancaria. Debido a esto el equipo de desarrollo probablemente escogerá desarrollar el CU Abrir una cuenta bancaria primero y en segundo lugar haga un depósito y en tercer lugar haga un retiro.
![Page 23: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/23.jpg)
… Casos de Uso: Relaciones
Un diagrama de CU que modele las dependencias de CU del sistema mediante el uso de relaciones de dependencia proporciona un modelo que es una herramienta excelente para propósitos de planeación y de programación.Esta relación se representa con una línea con cabeza de flecha que comienza en un CU y que apunta al CU del cual depende. <<depende de>>
![Page 24: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/24.jpg)
… Casos de Uso: Relaciones
Herencia: Cuando dos o más actores comparten un comportamiento común (En otras palabras, pueden iniciar el mismo caso de uso), lo mejor es extrapolar este comportamiento común y asignarlo a un nuevo actor resumen con objeto de reducir la comunicación redundante en el sistema.
![Page 25: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/25.jpg)
… Casos de Uso: Relaciones
Herencia : el Caso de Uso origen hereda la especificación del Caso de Uso destino y posiblemente la modifica y/o amplía
Caso de uso origen
Caso de uso destino
![Page 26: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/26.jpg)
… Casos de Uso: Relaciones
Ejemplo:
Identificación
Giro por Internet
Cliente
Giro
<<extends>>
<<includes>>
<<extend>>
<<include>>
Transferencia por Internet
Transferencia
![Page 27: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/27.jpg)
… Casos de Uso
El segundo elemento, narración del caso de uso, describe los detalles de cada evento.
![Page 28: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/28.jpg)
RF- <id del requisito> <nombre del requisito funcional> Versión <numero de versión y fecha> Autores <autor> Fuentes <fuente de la versión actual> Objetivos asociados <nombre del objetivo> Descripción El sistema deberá comportarse tal como se describe en
el siguiente caso de uso { concreto cuando <evento de activación> , abstracto durante la realización de los casos de uso <lista de casos de uso>}
Precondición <precondición del caso de uso> Paso Acción
1 {El <actor> , El sistema} <acción realizada por el actor o sistema>, se realiza el caso de uso < caso de uso RF-x>
2 Si <condición>, {el <actor> , el sistema} <acción realizada por el actor o sistema>>, se realiza el caso de uso < caso de uso RF-x>
3 4 5 6
Secuencia Normal
n Postcondición <postcondición del caso de uso>
Paso Acción 1 Si <condición de excepción>,{el <actor> , el
sistema} }<acción realizada por el actor o sistema>>, se realiza el caso de uso < caso de uso RF-x>, a continuación este caso de uso {continua, aborta}
2
Excepciones
3 Rendimiento Paso Cota de tiempo 1 n segundos 2 n segundos Frecuencia esperada <nº de veces> veces / <unidad de tiempo> Importancia {sin importancia, importante, vital} Urgencia {puede esperar, hay presión, inmediatamente} Comentarios <comentarios adicionales>
![Page 29: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/29.jpg)
… Casos de Uso
Proceso de la modelación de casos de Usos para los requerimientos: Paso 1: Identificar a los actores del negocio Paso 2: Identificar los casos de uso para los
requerimientos de negocios. Paso 3: Construir el diagrama del modelo de
casos de uso Paso 4: Narraciones de los CU para los
requerimientos de documentos para los negocios
![Page 30: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/30.jpg)
Caso de uso
Programar Procedimiento.
ActoresPropósito
TipoResumen
Referencia cruzadas
Sección Principal.Acción de los actores. Respuesta del sistema.
Flujo normal de eventos.
1. 2.3. 4.5..
6.7. 8.
9. 1011
Flujos alternativos.Línea 3:Línea 7:Línea 8:
![Page 31: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/31.jpg)
Diagrama de Secuencia
![Page 32: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/32.jpg)
Diagrama de Secuencia
Antes del diseño (cómo funcionará el software) se debe investigar y definir su comportamiento como “caja negra”El comportamiento del sistema es una descripción de lo que hace, …sin explicar la manera en que lo hace
Parte de esa descripción es un diagrama de secuencia del sistema
![Page 33: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/33.jpg)
Los diagramas de secuencia
Es un artefacto creado de manera rápida y fácil que muestra los eventos de entrada y salida relacionados con el sistema que se está estudiando.UML incluye la notación de los diagramas de secuencia para representar los eventos que parten de los actores externos hacia el sistema.
![Page 34: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/34.jpg)
Diagrama de secuencia
El comportamiento del sistema es una descripción de qué hace el sistema, sin explicar cómo lo hace.Def: Es un dibujo que muestra para un escenario específico de un caso de uso, los eventos que generan los actores externos, el orden y los eventos entre los sistemas. Todos los sistemas se tratan como cajas negras.Los diagramas destacan los eventos que cruzan los límites del sistema desde los actores a los sistemas.
![Page 35: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/35.jpg)
Diagrama de secuencia
Asignación de nombres a los eventos: Para una mayor claridad deben
comenzar con un verbo en infinitivo.
![Page 36: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/36.jpg)
Sesión 136
Relación caso de uso/DSS
Caso de uso (CU) describe cómo actores externos interactúan con el sistema a construirDurante la interacción, el actor genera eventos del sistema para un sistema, usualmente esto requiere que alguna
operación del sistema maneje el eventoDSS hace concretos y explícitos los eventos que son implícitos en el CUVeamos un DSS del curso normal de “Modificar Capital”
![Page 37: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/37.jpg)
Sesión 137
RunningExample – DSS Modificar Capital
Curso normal de los eventos
![Page 38: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/38.jpg)
Sesión 138
Eventos y operacionesEvento del sistema
hecho externo de entrada que un actor produce en un sistema.
Operación del sistema acción que el sistema ejecuta en respuesta a un evento del
sistema. ej., un contribuyente genera un evento “modificarCapital”, el cual
causa la ejecución de la operación “modificarCapital”.
El nombre del evento y de la operación pueden ser (y generalmente son) idénticos.
La diferencia es que el evento “X” es el estímulo y la operación “X” es la repuesta.
Lo mismo sucede con los mensajes y los métodos en Orientación a Objetos y UML.
![Page 39: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/39.jpg)
Sesión 139
DSS
Diagrama que muestra los eventos generados por actores externos, … su orden …y los eventos inter-sistemas
…para un escenario particular de un CUTodos los sistemas son tratados como cajas negrasFoco en los eventos que cruzan la frontera entre actores y sistemas
![Page 40: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/40.jpg)
Sesión 140
DSSLos casos de uso del sistema (escenarios y eventos) son input para su creaciónEl tiempo se describe (avanza) hacia abajoEl orden de los eventos debe seguir el mismo orden del escenario que representanLos eventos del sistema pueden incluir parámetrosUsa diagrama de secuencia de UMLSerán input para contratos de operación y diseño de objetos
![Page 41: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/41.jpg)
Sesión 141
DSS de “Modificar Capital”
Actor externo Sistema como caja negra
Valor(es) de retorno asociado con el mensaje previo tiempo
Mensaje con parámetros
![Page 42: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/42.jpg)
Sesión 142
Elaborando un DSS
Para elaborar un DSS para un escenario, y: Trace una línea que represente el sistema como una
caja negra Identifique los actores que operan directamente
sobre el sistema Trace una línea para cada uno de ellos.
A partir del escenario identifique los eventos (“externos”) del sistema que son generados por los actores Muéstrelos gráficamente en el diagrama.
A la izquierda del diagrama puede incluir o no el texto del caso de uso.
![Page 43: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/43.jpg)
Sesión 1 43
Modificar CapitalCurso normal de los eventos
Acción del actor Respuesta del Sistema
1. El contribuyente solicita modificar capital
2. El sistema muestra capital inicial, enterado y por enterar actuales
3. El contribuyente ingresa:
nuevo capital inicial, nuevo capital enterado, nuevo capital por enterar y la fecha asociada
número de número de repertorio, nombre de notaria, fecha de escritura
4. El contribuyente confirma los cambios al capital
5. El sistema almacena cambios al capital
![Page 44: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/44.jpg)
Sesión 144
Elaborando un DSSConsideramos ahora el caso de uso “Modificar Capital” a fin de identificar los eventos del sistema Primero debemos determinar los actores que
interactúan directamente con el sistema de software Usuarios
OJO! Sólo quien actúa directamente con el sistema Ej. En la venta de un producto: el cliente interactúa con el
cajero, pero no directamente con el sistema de ventas; => cajero es generador de eventos, cliente no
Ej. Contribuyente/Representante Electrónico Otros sistemas
Colaboraciones con sistemas externos (de pago, etc) Ej. No hay (aún :P)
![Page 45: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/45.jpg)
Sesión 145
Elaborando un DSS
Los eventos de un sistema (y sus operaciones asociadas) deben expresarse en el nivel de propósito …y no en el nivel del medio de entrada o de elementos de la interfaz
Ej. “modificarCapital” es preferible a “ApretarBotonAceptar” porque capta mejor el propósito de la operación
Mantiene un carácter abstracto y no se pronuncia sobre qué interfaz sirve para capturar el evento del sistema (decisiones de diseño)Es más claro si el nombre de un evento del sistema comienza con un verbo
ej. agregar, introducir, terminar, efectuar esto recalca que los eventos están orientados a comandos
![Page 46: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/46.jpg)
Sesión 146
DSSGuideline: Haz un DSS para el escenario principal de cada
caso de uso, y para escenarios alternativos frecuentes o complejos
¿Por qué son importantes? Investigan y definen el comportamiento del
sistema como una caja negra Describen qué es lo que sistema hace, sin
explicar cómo lo hace Junto con CU y contratos de operación del
sistema
![Page 47: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/47.jpg)
Sesión 147
RunningExample – DSS Modificar Capital
Curso normal de los eventos
![Page 48: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/48.jpg)
Diagramas de Secuencia
: Socio : Encargado : Libro : Ficha libro : Ficha socio : Préstamo
Coger libro
Solicitar préstamo
Verificar situación socio
Situación socio ok
Verificar situación libro
Situación libro ok
Introducir préstamo
Autorizar préstamo
![Page 49: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/49.jpg)
… Diagramas de Secuencia
CBA
m1
m2
m3
m4
m5
![Page 50: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/50.jpg)
… Diagramas de Secuencia
EjemploQuien llama Línea telefónica Llamado
descuelga
tono
marcar
indicación de llamada timbre
descuelga
diga?
Las bandas rectangulares representan los periodos de actividad de los objetos
![Page 51: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/51.jpg)
… Diagramas de Secuencia Un objeto puede enviarse a sí mismo
un mensaje:a
mensaje reflexivo
![Page 52: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/52.jpg)
… Diagramas de Secuencia Normalmente no es necesario indicar
el retorno del control:
a b
El retorno se considera implícito cuando el envío es síncrono
![Page 53: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/53.jpg)
… Diagrama de Secuencia
En el caso asíncrono el retorno, si existe, se debe representar:
a : aa b : aa
![Page 54: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/54.jpg)
Tipos de Control El Diagrama de Secuencia refleja de
manera indirecta las opciones de control
Un control centralizado tiene una forma como esta:
![Page 55: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/55.jpg)
… Tipos de control
Un control descentralizado tiene una forma como esta:
![Page 56: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/56.jpg)
… Estructuras de control
Podemos representar iteraciones en el envío de mensajes, p.e., mientras se cumpla una condición:
While XLoop
end Loop
![Page 57: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/57.jpg)
… Estructuras de control
La iteración puede expresarse también como parte del mensaje:
*[condición] Mensaje
![Page 58: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/58.jpg)
… Estructuras de control
Las bifurcaciones condicionales pueden representarse de esta forma:
If condición
else
end if
![Page 59: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/59.jpg)
Diagrama de Colaboración
![Page 60: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/60.jpg)
Sesión 160
MensajeMensaje entre objetos que es representado por una expresión de mensaje y una pequeña flecha indicando la dirección del mensajeMuchos mensajes pueden navegar a través de cada linkUn nº de secuencia es agregado para mostrar el orden secuencial de los mensaje en el flujo de control actualPuede haber automensajes también this
![Page 61: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/61.jpg)
Sesión 1 61
Creación de instanciasCualquier mensaje puede ser usado para crear instanciasLa convención es llamar a estos métodos create, o usar un estereotipo de tipo <<create>>Puede incluir argumentos
![Page 62: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/62.jpg)
Sesión 162
LinkCamino de conexión entre dos objetos Indica que alguna forma de navegación o
visibilidad entre los objetos es posible Es una instancia de asociación
A lo largo de estos links pueden navegar los mensajesPuede haber múltiples mensajes en ambas direcciones en un mismo link (carretera de doble vía)
![Page 63: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/63.jpg)
Sesión 163
Secuencia de mensajes numerados
![Page 64: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/64.jpg)
Sesión 1 64
Mensajes condicionalesSiguiendo al número de secuencia se incluye una cláusula condicional en paréntesis cuadrados El mensaje es enviado sólo si la condición es cierta
![Page 65: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/65.jpg)
Sesión 165
Caminos condicionales exclusivos
Expresiones de secuencia se modifican con una letra de camino condicional La primera letra usada es a por
convención
![Page 66: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/66.jpg)
Sesión 1 66
Loops
Expresiones que describen un ciclo se identifican con un asterisco y una expresión condicional Mientras la expresión condicional sea
verdadera el ciclo continúa
![Page 67: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/67.jpg)
Sesión 1 67
Iteración sobre una colección
Describen iteraciones sobre todos los miembros de una colección
![Page 68: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/68.jpg)
Sesión 1 68
Mensajes a métodos estáticos
Para llamar a métodos static se usa el estereotipo <<metaclass>> para representar la clase que contiene tal método La clase Calendar es una instancia de metaclass
![Page 69: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/69.jpg)
Sesión 1 69
Mensajes polimórficos
Mensajes a clases abstractas
![Page 70: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/70.jpg)
www.dsic.upv.es/~uml
Reflexión sobre Diagramas de Interacción
![Page 71: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/71.jpg)
Sesión 171
Problemas típicos
Problemas típicos de su uso:• En los proyectos de desarrollo, no se
aprecia el valor de llevar a cabo el diseño de objetos mediante estos diagramas
• Por lo anterior, se diseñan de manera vaga, e imprecisa
![Page 72: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/72.jpg)
Sesión 172
DSS
UML no define nada que se llame diagrama de secuencia “del sistema”, sino que simplemente diagrama de secuenciaEl apellido señalado corresponde a un uso específico del diagrama de secuencia, en que precisamente el sistema es visto como caja negra.
![Page 73: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/73.jpg)
Sesión 173
ComparaciónUno elige cuál quiere usarDiagrama de secuencia Ha habido más esfuerzo en su notación y
semántica Herramientas dan mayores opciones de
notación detallada Es más fácil ver secuencia del flujo de
llamados (de arriba hacia abajo) Pero está forzado a extender hacia la
derecha lo nuevos objetos
![Page 74: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/74.jpg)
Sesión 174
Comparación
Diagrama de comunicación Es mucho más eficiente en el uso de
espacio Más fácil de modificar Más difícil ver la secuencia de
llamadas Menos opciones de notación
![Page 75: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/75.jpg)
Sesión 175
: Socio
: Encargado
: Libro
: Ficha libro
: Ficha socio
: Préstamo
1: Coger libro
2: Solicitar préstamo
8: Autorizar préstamo
3: Verificar situación socio
4: Situación socio ok
5: Verificar situación libro
6: Situación libro ok
7: Introducir préstamo
Diagrama de comunicación
![Page 76: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/76.jpg)
Sesión 176
Running Example
Desarrolle un diagrama de comunicación que represente lo mismo que este diagrama de secuencia
![Page 77: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/77.jpg)
Sesión 177
Referencias[LARMAN] Larman, Craig. Applying UML and Patterns. An Introduction to
Object Oriented Analysis and Design. Prentice Hall, 1998.
[OO Head First] Brett D. McLaughlin, Gary Pollice, Dave West. Head First Object-Oriented Analysis and
Design: A Brain Friendly Guide to OOA&D. O'Reilly Media, Inc., 2006.
![Page 78: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/78.jpg)
: Socio
: Encargado
: Libro
: Ficha libro
: Ficha socio
: Préstamo
1: Coger libro
2: Solicitar préstamo
8: Autorizar préstamo
3: Verificar situación socio
4: Situación socio ok
5: Verificar situación libro
6: Situación libro ok
7: Introducir préstamo
![Page 79: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/79.jpg)
Mensajes
Un mensaje desencadena una acción en el objeto destinatario
Un mensaje se envía si han sido enviados los mensajes de una lista (sincronización):
A
BA.1, B.3 / 1:Mensaje
![Page 80: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/80.jpg)
… Mensajes
Un mensaje se envía iterada y secuencialmente a un conjunto de instancias:
A
B1 *[i:=1..n] : Mensaje
![Page 81: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/81.jpg)
… Mensajes
Un mensaje se envía iterada y concurrentemente a un conjunto de instancias:
A
B1 *| | [i:=1..n] : Mensaje
![Page 82: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/82.jpg)
… Mensajes
Un mensaje se envía de manera condicionada:
A
B
[x>y] 1: Mensaje
![Page 83: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/83.jpg)
… Mensajes
Un mensaje que devuelve un resultado:
A
B1: distancia:= mover(x,y)
![Page 84: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/84.jpg)
Diagrama de Clases
![Page 85: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/85.jpg)
Sesión 185
Temario
El Modelo de DominioPosibles Elementos del DominioBuscando elementos del Dominio en el ejemploUna primera representación gráfica: usando una herramienta UMLRevisando nuestro mono: Conceptos y AtributosRevisando nuestro mono: Conceptos en Asociación2da Iteración: profundizando relacionesCorrijamos nuestro mono inicial
![Page 86: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/86.jpg)
Sesión 186
El Modelo de Dominio
Ya conocemos una forma básica de representar y especificar requerimientos
En torno a las Interacciones usuario-sistema En forma de Casos de Uso
Sin embargo, aún no conocemos “de qué se habla” en esas interacciones representadas
No sabemos el detalle de los objetos, lugares, transacciones, etc. que intervienen en la interacción usuario-sistema
El Modelo de Dominio nos permite identificar estos elementos y representarlos gráficamente
Identificando Conceptos o Elementos del Dominio Identificando sus Relaciones Identificando sus Atributos
![Page 87: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/87.jpg)
Sesión 187
El Modelo de Dominio
¿Entonces ya llegamos a las Clases y los Objetos?
Nones, estamos recién descubriendo lo conceptos Algunos de ellos eventualmente se convertirán en Clases
de nuestro sistema, otros pasarán al triste olvido Pero esa es una Decisión de Diseño, nuestra tarea
ahora es entender, hacer al Análisis Debemos identificar conceptos no guiándonos en la
implementación, sino en el contexto del problema a resolver (Dominio)
Al igual que los casos de uso, el Dominio representado debe ser validado por el Cliente
Una pista: si un Cliente no puede entender algunos de los Elementos del Dominio que hemos identificado, probablemente estos No Sean Elementos del Dominio
![Page 88: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/88.jpg)
Sesión 188
Posibles Elementos del Dominio [Larman]
Como primera regla, podemos fijarnos en los Sustantivos dentro de una explicación del problema
Pero este enfoque es muy mecánico; La ambigüedad del lenguaje puede llevarnos a identificar más de un elemento de dominio que representan lo mismo
Podemos intentar identificando: Objetos físicos o tangibles Lugares Transacciones Roles de la Gente (Cliente, Vendedor) Contenedores de Conceptos Otros sistemas Sustantivos Abstractos (“Sed”) Organizaciones Eventos (Emergencia) Reglas/Políticas Grabaciones/Logs
![Page 89: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/89.jpg)
Sesión 189
Buscando elementos del Dominio en el ejemplo
Revisemos nuestro ejemplo para identificar los Conceptos o Elementos del Dominio
Basándonos en la lista anterior Nombrándolos como sustantivos
Nombremos además las relaciones que existen entre ellos
Los nombres deben ser verbos en presente (“realiza”, “paga”, etc.)
Representemos gráficamente nuestros conceptos, con “cajas y lineas”
Cliente Autocompra
![Page 90: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/90.jpg)
Formato de la relación
![Page 91: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/91.jpg)
Sesión 191
Una primera aproximación gráfica
La lista anterior tiene varios de los conceptos del dominio
Pero la representación gráfica es fundamental Podemos entenderla como un mapa, que nos permite navegar
entre los conceptos entendiendo sus relaciones
Realizaremos una representación gráfica usando UML
UML provee distintos diagramas para modelar Análisis y Diseño
Pero ninguno en particular llamado “Modelo de Dominio” Usaremos el Diagrama de Clases de UML para dibujar nuestro
primer diagrama de Dominio Se puede decir que el Modelo de Dominio es un Diagrama de
Clases de Análisis, donde no existen decisiones de Diseño
Podemos ocupar cualquier herramienta que soporte UML para hacer nuestro diagrama
![Page 92: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/92.jpg)
Sesión 192
Revisando nuestro mono: Conceptos de Asociación
• Cuando modelamos un dominio, descubrimos que ciertos atributos sólo se dan entre la relación entre dos conceptos
• Veamos la siguiente alternativa para modelar Sociedad y Socios: SociedadPersona
es socio de
• % de Participación de Capital y Utilidad sólo tienen sentido como atributos de la relación entre persona y Sociedad– No todas las personas tiene % de participación– El % de participación de cada socio no es atributo de la
sociedad• Para representar estas situaciones, podemos ocupar
Conceptos originados en las relaciones
SociedadPersona
es socio de
Socio
+participacionCapital+participacionUtilidad
![Page 93: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/93.jpg)
Sesión 193
2da Iteración: profundizando relaciones
Ahora que identificamos los conceptos, estudiemos mejor sus relaciones
Algunas de ellas parecen ambiguas Necesitamos identificar cardinalidad en las relaciones Es decir, cuántos de uno se relacionan con cuántos de
otro Por ejemplo:
SociedadSocio
+participacionCapital+participacionUtilidad
tiene
*1
• Ejemplos de Cardinalidades:– 0..1– 1..1– 0..*– 1..*– *
– 1..8 (número máximo específico)
![Page 94: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/94.jpg)
Sesión 194
2da Iteración: profundizando relaciones
Podemos enriquecer nuestro modelo agregando otros tipos de relaciones:
Identificando relaciones del tipo “es-un”: Super Clases y Clases
Distinguiendo distintos tipos de asociación del tipo “tiene” entre los conceptos
Asociaciones Fuertes, o Composición, en las cuales los conceptos “contenidos” existen sólo si existe el concepto “contenedor” (por ejemplo, mano-dedos)
Asociaciones Débiles, o Agregación, en las cuales los conceptos “contenidos” pueden existir si no existe el contenedor (por ejemplo grupo de contactos-contacto)
![Page 95: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/95.jpg)
Tipos de relaciones “ES-UN”
Conceptos comparten las mismas relaciones (y comportamiento)
Nos lleva a relaciones de herencia Composición, o Asociaciones Fuertes,
Conceptos “contenidos” existen sólo si existe el concepto “contenedor” (por ejemplo, mano-dedos)
Agregación, o Asociaciones Débiles, Conceptos “contenidos” pueden existir si no
existe el contenedor (por ejemplo grupo de contactos-contacto)Sesión 1 95
Sintaxis de un modelo de dominio
![Page 96: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/96.jpg)
Sesión 196
2da Iteración: profundizando relaciones
La notación de UML permite expresar estas asociaciones:
Si la Lista de Contactos es eliminada, se perderán todos los contactos y los gruposSi se elimina un Grupo de Contactos, los Contactos siguen existiendo en la Lista de ContactosTambién es conveniente identificar los roles de cada concepto en la relación
ListaContactos Contacto
GrupoContactos
+lista +contactos
1 *
+grupo
+contacto
1
*+lista
+grupos
1
*
![Page 97: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/97.jpg)
Sesión 197
Algunas Reflexiones¿Cómo asegurarme que he modelado todo lo que corresponde?
“Todo lo que Corresponde” = Todos los Requerimientos Identificados
Podemos generar una Matriz de Trazabilidad Filas: Casos de Uso Columnas: Requerimientos Marcamos en la matriz qué casos de uso resuelven qué
requerimientos Todos los Requerimientos deben estar resueltos en a lo
menos un Caso de Uso (estamos haciendo todo lo solicitado)
Todos los Casos de Uso deben resolver por lo menos un Requerimiento (no estamos inventando funcionalidades)
![Page 98: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/98.jpg)
Sesión 198
Referencias
[LARMAN] Larman, Craig. Applying UML and Patterns. An
Introduction to Object Oriented Analysis and Design. Prentice Hall, 1998.
![Page 99: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/99.jpg)
Clases: Notación Gráfica
Cada clase se representa en un rectángulo con tres compartimientos:
nombre de la clase atributos de la clase operaciones de la clase
motocicleta
colorcilindradavelocidad maxima
arrancaracelerarfrenar
![Page 100: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/100.jpg)
Asociación
La asociación expresa una conexión bidireccional entre objetos
Una asociación es una abstracción de la relación existente en los enlaces entre los objetos
Universidad Estudiante
Univ. de Murcia:Universidad Antonio:Estudiante
Una asociación
Un enlace
![Page 101: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/101.jpg)
Ejemplo:
… Asociación
Persona Compañíatrabaja-para
nombres. s.
nombredirección
jefe
Administraempleado
* *emplea-a
0.. 10.. 1
0.. 1
*
marido
casado-con
mujer
![Page 102: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/102.jpg)
Asociación Cualificada
Aerolínea Viajeronro_billete * 0..1
TableroAjedrez
filacolumna
1 1 Cuadro
Reduce la multiplicidad del rol opuesto al considerar el valor
del cualificador
![Page 103: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/103.jpg)
Las caracterizaciones 1, 3, 4 y 5 están incluidas en el concepto más amplio de multiplicidad Objeto
Agregado
Objeto Componente
Multiplicidad Mínima
0 flexible
> 0 estricta
Multiplicidad Máxima
1 disjunto
> 1 no disjunto
Multiplicidad Mínima
0 nulos permitidos
> 0 nulos no permitidos
Multiplicidad Máxima
1 univaluado
> 1 multivaluado
… Agregación: Caracterización
![Page 104: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/104.jpg)
Ejemplos
motor
coche
1
1
1
1
Persona
0..2*
+Padre
0..2
+Hijos
*
![Page 105: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/105.jpg)
… Ejemplos
CuentaPersona
1
*
orAsociación excluyente
Empresa
*
*
Usuario Estaciónestá-autorizado-en
prioridadprivilegios
camb_privil
Autorización
* *
Clase de asociación
Polígono Puntocontiene 3.. *1
{ordenado}Agregación
![Page 106: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/106.jpg)
Abstracciones más generales.
vehiculo
vehiculo terrestre vehiculo aéreo
camion coche avion helicoptero
... Jerarquías de Generalización/Especialización
![Page 107: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/107.jpg)
La especialización es una técnica muy eficaz para la extensión y reutilización coche
funcionando estropeado
... Jerarquías de Generalización/Especialización
![Page 108: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/108.jpg)
Un ejemplo de Especialización Estática: vehiculo aéreo
avion helicoptero
... Jerarquías de Generalización/Especialización
![Page 109: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/109.jpg)
Un ejemplo de Especialización Dinámica:
coche
funcionando estropeado
... Jerarquías de Generalización/Especialización
![Page 110: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/110.jpg)
Ejemplo: varias especializaciones a partir de la misma superclase:
vehiculo aéreo
avion helicoptero
comercial
militar
... Jerarquías de Generalización/Especialización
![Page 111: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/111.jpg)
Ejemplo: especializaciones dinámicas de la misma superclase:
coche
funcionando estropeado
de menos de 1000kms
de más de 1000 kms
... Jerarquías de Generalización/Especialización
![Page 112: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/112.jpg)
Un ejemplo combinado:vehiculo
vehiculo terrestre
camion
coche
funcionando estropeado
vehiculo aéreo
avion helicoptero
comercial
militar
de menos de 1000kms
de más de 1000 kms
estática
estáticaestática
dinámica
dinámica
... Jerarquías de Generalización/Especialización
![Page 113: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/113.jpg)
El siguiente es un ejemplo de clasificación no equilibrada:
vehiculo terrestre
camion coche Harley Davidson
... Jerarquías de Generalización/Especialización
![Page 114: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/114.jpg)
Por regla general, es mejor limitar el número de subclases a cada nivel a costa de aumentar el número de objetos por clase y reservar los atributos para cualificar afinadamente los objetos
A veces, una especialización dinámica tiene un equivalente a través de una especialización estática y una asociación ...
... Jerarquías de Generalización/Especialización
![Page 115: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/115.jpg)
Ejemplo: mariposa
oruga crisálida Lepidóptero
oruga crisálida Lepidóptero
mariposa estadio
1
Aspecto
1
... Jerarquías de Generalización/Especialización
![Page 116: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/116.jpg)
Diagrama de Estados
![Page 117: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/117.jpg)
Socio BibliotecaNúmero : intNombre : char[50]Número préstamos : int = 0
Alta()Baja()Prestar(CódigoLibro : int, Fecha : date)Devolver(CódigoLibro : int, Fecha : date)
con préstamos
sin préstamos
alta baja
prestar devolver[ número_préstamos = 1 ]
prestar
devolver[ número_préstamos > 1 ]
número_préstamos = 0
número_préstamos > 0
… Diagramas de Estados
![Page 118: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/118.jpg)
Ejemplo de un Diagrama de Estados para la clase persona:
en el paro en activo
jubilado
contratar
perder empleo
jubilarsejubilarse
… Diagramas de Estados
![Page 119: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/119.jpg)
La comunicación bidireccional puede representarse mediante comunicación asíncrona. Por ejemplo en un Diagrama de Colaboración:
un objeto
otro objeto
1: una pregunta
2: la respuesta
… Diagramas de Estados
![Page 120: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/120.jpg)
Si la comunicación es síncrona el cliente debe esperar la respuesta. Con lo cual en el cliente tendríamos:a
espera respuesta c
plantear pregunta
recibir respuesta
… Diagramas de Estados
![Page 121: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/121.jpg)
Las guardas permiten condicionar la transición:
a bEvento[ condición ]
… Diagramas de Estados
![Page 122: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/122.jpg)
Acciones
Podemos especificar la ejecución de una acción como consecuencia de la transición:
a bEvento[ condición ] / acción
Dicha acción también se considera instantánea
![Page 123: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/123.jpg)
Podemos especificar el envío de un evento a otro objeto como consecuencia de la transición:
a
b
Evento( arg1, arg2 )[ condición ] / ^otro_objeto.evento(arg2)
… Acciones
![Page 124: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/124.jpg)
Se puede especificar el hacer una acción como consecuencia de entrar, salir o estar en un estado:
estado A
entry: acción por entrarexit: acción por salirdo: acción mientras en estado
… Acciones
![Page 125: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/125.jpg)
Se puede especificar el hacer una acción cuando ocurre en dicho estado un evento que no conlleva salir del estado:
estado A
on evento_activador( arg1 )[ condición ]: acción por evento
.. Acciones
![Page 126: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/126.jpg)
Actividades
Las actividades son similares a las acciones pero tienen duración y se ejecutan dentro de un estado del objeto
Las actividades pueden interrumpirse en todo momento, cuando se desencadena la operación de salida del estado
![Page 127: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/127.jpg)
Cuando una actividad finaliza se produce una transición automática de salida del estado
a
do: actividad
b[ not condición ]
b
[ condición ]
… Actividades
![Page 128: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/128.jpg)
Generalización de Estados
Podemos reducir la complejidad de estos diagramas usando la generalización de estados
Distinguimos así entre superestado y subestados
Un estado puede contener varios subestados disjuntos
Los subestados heredan las variables de estado y las transiciones externas
![Page 129: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/129.jpg)
Generalización de Estados
Ejemplo:
a b
c
e1
e2
e2
![Page 130: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/130.jpg)
Quedaría como:
c
a ba be1
e2
Generalización de Estados
![Page 131: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/131.jpg)
Las transiciones de entrada deben ir hacia subestados específicos:
c
a ba be1
e2
e0
… Generalización de Estados
![Page 132: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/132.jpg)
Es preferible tener estados iniciales de entrada a un nivel de manera que desde los niveles superiores no se sepa a qué subestado se entra:
c
a ba be1
e2
e1
e0
… Generalización de Estados
![Page 133: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/133.jpg)
Ejemplo:
e1e1
… Generalización de Estados
![Page 134: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/134.jpg)
Historial
Por defecto, los autómatas no tienen memoria
Es posible memorizar el último subestado visitado para recuperarlo en una transición entrante en el superestado que lo engloba
![Page 135: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/135.jpg)
Ejemplo: a
d2
d1
H
d2
d1
x yh
out
in
H
… Historial
![Page 136: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/136.jpg)
También es posible la memorización para cualquiera de los subestados anidados (aparece un * junto a la H)
a
d2
d1
H*
d2
d1
x yh
out
in
H*
… Historial
![Page 137: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/137.jpg)
Ejemplo:
Enjuague Lavado Secado
H
Enjuague Lavado Secado
H
Espera
Cerrar PuertaAbrir Puerta
… Historial
AbrirCerrar
![Page 138: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/138.jpg)
… Destrucción de Objeto
Ejemplo:
En tierraCrear(matricula)
En vuelo
aterrizardespegar
crash
![Page 139: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/139.jpg)
Ejemplo: a
esperar dinero
entry: Mostrar mensajedo: Esperar 30 segundosexit: cerrar ranura
b
anular transacción
/ Abrir ranura
Depósito efectuado
Si en 30 segundos no se introduce el dinero se termina la actividad pasando a anular la transacción. En cualquier caso se cierra la ranura.
… Transiciones temporizadas
![Page 140: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/140.jpg)
Ejemplo v.2:
… Transiciones temporizadas
a
esperar dinero
entry: Mostrar mensajeexit: cerrar ranura
b
anular transacción
/ Abrir ranura
Depósito efectuado
Temporizador(30 segundos)
![Page 141: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/141.jpg)
Diagrama de Actividades
![Page 142: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/142.jpg)
EjemplosBuscar Bebida
Poner café en filtro Añadir agua al depósito Coger taza
Poner filtro en máquina
Encender máquina
Café en preparación
Servir café
Coger zumo
Beber
[no hay café]
[hay café
[no zumo]
[hay zumo]
^cafetera.On
indicador de fin
![Page 143: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/143.jpg)
...Ejemplos (con bandas)
Emitir billete
Pasajero Vendedor Airline
Solicitar pago Reservar plazas
Confirmar plaza reservadaPagar pasaje
Informar alternativas y precios
Verificar existencia vuelo
Dar detalles vuelo
Solicitar pasaje
Seleccionar vuelo
![Page 144: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/144.jpg)
Diagrama de Componentes
![Page 145: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/145.jpg)
La representación gráfica es la siguiente:
GenéricoCuerpoEspecificación
Package specification
Package body
Generic package
… Diagramas de Componentes
![Page 146: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/146.jpg)
Subsistemas Los distintos componentes pueden
agruparse en paquetes según un criterio lógico y con vistas a simplificar la implementación
Son paquetes estereotipados en <<subsistemas>>
NewPackage4<<subsistema>>
![Page 147: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/147.jpg)
Diagrama de Distribución
![Page 148: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/148.jpg)
Diagramas de Distribución
Punto de Venta
Servidor Central
Terminal de Consulta
Gestión de Cuentas
Comment
Interfaz de Terminal
Comment
Rutinas de Coneccion
Comment
Rutinas de Coneccion
Comment
Interfaz de Terminal
Comment
Rutinas de Coneccion
Comment
Acceso a BD
Comment
Control y Análisis
Comment
![Page 149: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/149.jpg)
Ejemplo de conexión entre nodos:
Nodo<<Procesador>
nodo2<<dispositivo>>
dispositivo
conexión7
conexión1<<<<TCP/IP>>>>
<<RDSI>>
En Rational Rose podemos distinguir entre el dispositivo por estereotipado y el dispositivo con su propio símbolo
… Diagramas de Distribución
![Page 150: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/150.jpg)
Paquetes
![Page 151: Unidad 2.2:](https://reader035.fdocument.pub/reader035/viewer/2022062520/56815a68550346895dc7b501/html5/thumbnails/151.jpg)
Paquetes en UML
Los paquetes ofrecen un mecanismo general para la organización de los modelos agrupando elementos de modelado
Se representan gráficamente como:
Nombre de paquete