Diagramas dinámicos en el Modelamiento de Datos

0

 Autor: Mauro Benito Montoya Arenas (mauro2017pre@gmail.com) 

DIAGRAMAS DINÁMICOS EN EL MODELAMIENTO DE DATOS

Diagrama de Actividades

Nos muestra que es lo que sucede durante una actividad u operación, proceso o caso de uso (parecido a los diagramas de flujo). La actividad es un proceso, cada paso del proceso es una acción. 

Vamos a Explicar los componentes de un diagrama de actividades con la siguiente imagen. El diagrama empieza con el nodo inicial (el circulo relleno) y termina con el nodo final (el circulo relleno con en la parte central). Las acciones se denotaran con rectángulos con las esquinas redondeadas. Las decisiones se muestran con un rombo (DesicionNode). Cuando los flujos se lleguen a unir nuevamente necesitaremos del MergeNode (su símbolo también será un rombo). 

Flujos paralelos

Se da cuando tenemos un flujo de entrada y se tienen dos o mas flujos de salida que suceden en paralelo. Fork se usa para iniciar la concurrencia y Join es usado para regresar a un solo flujo. Ejemplo: Con el Fork se separan y con el Join se unen de nuevo.

Nodo objeto

Nos sirve para mostrar un objeto en particular que se relaciona con la actividad. El objeto cambia de estado según lo que sucede en el proceso u operación. Ejemplo: La actividad es cargar combustible, la primera Acción es estacionar (esto nos lleva a que el objeto Auto cambie su estado a apagado). Otra acción vendría a ser Arrancar (esto nos lleva a un cambio de estado en el objeto Auto cambie su estado a encendido).

Pins

Es otra forma para indicar los objetos. Pero en este caso indican que el objeto es una salida o una entrada. Por medio de ellos indicamos que objeto sale de una acción y entra como parámetro a otra. Ejemplo: Action5 esta recibiendo un objeto de Action4.

Transformación

Si en un momento dado esos objetos que mandamos necesitamos solo una parte, lo podemos indicar por un medio llamado transformación. Mediante un recuadro indicamos que utilizaremos del objeto que mandamos. Ejemplo:

Diagrama de Subactividad

Nos sirve para dar mas detalle sobre lo que sucede en una acción en particular. Ejemplo: Observemos la clase CargarCombustible (tiene un símbolo como un tenedor que indica un diagrama de subactividad). Esa acción esta mas especificada en el diagrama de subactividad de la siguiente imagen.

Señales

Es común también que queramos mandar  recibir algún tipo de mensaje (a eso lo llamamos señal). 

Cuando recibimos un mensaje  o un evento usamos en nodo AcceptEventAction (este nodo es un rectángulo con una concavidad). En su interior colocamos el mensaje o evento que estamos recibiendo y ese mensaje o evento que acción que se lleva a cabo. Ejemplo:

Si hay un evento que esta sucediendo cada cierto tiempo usamos un símbolo de 2 triángulos que forman un reloj de arena. Ejemplo:

Si necesito enviar un mensaje de salida, tengo la acción que genera ese mensaje de salida y lo denotamos con un rectángulo convexo. Ejemplo:

Excepciones

En las actividades podemos tener excepciones (situaciones inusuales). La excepción se debe ,manejar para poder continuar o finalizar. Ejemplo: Si en la Action6 ocurre una excepción (Action9) se puede denotar con una flecha doblada. Para continuar con la Action8 tenemos que encargarnos primero de la Action9.

Regiones de Actividad Interrumpible

Las actividades pueden ser interrumpidas por un evento. La región se representa con un rectángulo punteado de esquinas redondeadas. En su interior se colocan las acciones que se pueden interrumpir. Necesitamos colocar el evento que crea la interrupción. Se coloca una actividad a hacer si la interrupción sucede. Ejemplo: Si ocurre el evento dentro del rectángulo punteado ya no ocurren las otras acciones, ahora se continua con la Action16 y el fin de actividades.

Regiones de Expansión 

Esto lo utilizamos cuando tenemos una acción que va a invocar múltiples acciones. Supongamos que tenemos una acción, esta acción tiene como salida una colección con varios elementos (arreglo o lista). Cada una de las acciones que vamos a tener en la región de expansión va a ser utilizada con los elementos que aparecen en esa colección. Puede ser de 3 tipos:

- Iterative: Un elemento a la vez por cada una de las acciones.
- Parallel: Sucede concurrentemente.
- Stream: Se llevan a cabo las acciones sobre todos los elementos de la colección como un todo.

Ejemplo: Tenemos una acción en particular (Action17) que va a tener como salida una colección. La región de expansión va a estar enmarcada en un rectángulo punteado. En la parte de arriba de ese rectángulo se muestra que el tipo será Iterative. Es decir, cada elemento de la colección pasara por cada acción (Action18, Action19 y Action20) una por una. 

Particiones/Swimlanes

Algunas veces es necesario indicar quien es el responsable de llevar cada acción (por eso trabajamos con particiones). Las particiones pueden trabajar de forma vertical (tendremos una serie de columnas que cada una representaran un rol o alguien que lleva a cabo determinadas acciones, en esa columna colocamos las acciones que corresponden) u horizontal (lo mismo que en la forma vertical pero con filas en lugar de columnas). Ejemplo: Cada columna (Cliente y Cajero) me indica quien es el responsable de cada acción en particular.


Diagrama de secuencia

Nosotros observamos objetos y la forma en la que se comunican por medio de mensajes. El diagrama de secuencia indica el orden que suceden las interacciones involucrando el factor tiempo. El diagrama se lee de arriba hacia abajo y el tiempo de vertical (línea de vida). Los objetos (también llamado participantes) se muestran como rectángulos. 

Mensaje de llamada: También conocido por mensaje síncrono. Representa la invocación a un método y espera a recibir una respuesta.
Ejemplo: Comprador le manda una mensaje (CalcularTotal) a Caja y este responde con un 1.1

Mensaje asíncrono: No esperamos respuesta
Ejemplo: Objeto1 envia un mensaje a Objeto2 y no espera un mensaje de llegada.

Auto mensaje: El objeto se manda mensaje a uno mismo
.
Ejemplo: objeto1 necesita mandarse mensaje a si mismo.

Mensaje recursivo: Indica que se lleva a cabo una recursión.

Mensaje encontrado: No conocemos a quien envía el mensaje ya que no forma parte del diagrama.

Mensaje perdido: Cuando un objeto se comunica con otro objeto que no se encuentra en el diagrama.

Crear y destruir

Los objetos no necesariamente existirán todo el tiempo en que existe el diagrama de secuencias. Pueden existir objetos que existan en una parte del tiempo y después desaparezcan.

Ejemplo: El Objeto3 manda un mensaje de creación de un objeto (Objeto4). Tiempo después Objeto3 manda un mensaje de destruir el Objeto4.

Limite, Boundary

Lo usamos para representar la interfaz de usuario. Esta interfaz también puede mandar mensajes a los objetos para que realicen algún trabajo en particular. 
Ejemplo: El usuario manda el mensaje de Salvar el Objeto5.

Control

Representa un objeto que controla el trabajo que se realiza, cuando y como. 
Eejmplo: Control envia el mensaje de limpiar a Objeto6.

Actor y Entidad

Podemos colocar actores en el diagrama de secuencia. La entidad representa un elemento persistente como un archivo o una base de datos. 
Ejemplo: Actor manda el mensaje de abrir la entidad Archivo.  

Marcos de interacción

Es un segmento de la secuencia. Tiene un operador que provee información acerca de lo que sucede en ese marco.

Opcional

El operador opcional va a tener una condición que se escribe entre paréntesis ([]). Si la condición es verdadera, los mensajes en el marco se realizan. Es como tener un if, pero sin else.
Ejemplo: Si la cantidad de usuarios es mayor que 1000, se lleva a cabo lo que esta dentro del marco.

Alternativas

Se tiene el marco con 2 o mas secciones que se conocen como operandos. Las secciones son mutuamente excluyentes (si llevas a cabo una sección, ya no llevas a cabo la otra). La condición va entre []. Ejemplo: Si cantidad de usuarios es mayor a 1000 se lleva a cabo la sección primera y no la segunda, en caso la condición no se cumpla ocurre lo contrario. Se puede ver como un if-else.

Ciclos

Una sección se va a ir repitiendo mientras una condición sea verdadera. Ejemplo: Mientras Usuarios restantes sean mayor a cero, la sección dentro del marco se va a ir repitiendo.

    Paralelas

Se usa cuando tenemos secciones que ocurren al mismo tiempo 8en paralelo.  Ejemplo: Las 2 secciones encerradas están ocurriendo al mismo tiempo.

Diagrama de Comunicación/Colaboración

Se muestra como los objetos interactúan entre si. A diferencia dl diagrama de secuencia (que esta enfocado al tiempo), en el diagrama de comunicación hacemos énfasis en las ligas entre los objetos. Consta de 3 elementos: Objetos, ligas y mensajes.,

- Objeto: Interactúan entre ellos. Se muestra de la forma usual por medio de un rectángulo.

- Liga: También se conocen como ligas de comunicación. Se muestran por medio de una línea. Si la línea conecta 2 objetos, eso significa que los objetos pueden comunicarse/interactuar entre ellos.

- Mensajes: Se colocan a lo largo de las ligas. Muestran la comunicación entre los objetos. Se usa una flecha. Los mensajes se nombran. Tienen un numero que nos indican el orden de los mensajes.

Ejemplo de diagrama de comunicación: Objeto1 y Objeto3 se pueden comunicar con Objeto2. Tenemos 2 mensajes (De Objeto1 a Objeto2 y de Objeto3 a Objeto2).

Mensajes anidados

El mensaje anidado tenemos un objeto que manda un mensaje (1) a otro. Y este objeto tiene que mandar otro mensaje (2).

En un diagrama de comunicación se presentaría de la siguiente manera:

Ciclos para mensajes

Lo usamos cuando vamos a invocar un mensaje múltiples veces. Se usa * para indicar ciclo y luego la condición del ciclo. Ejemplo:  En la primera imagen indica que el mensaje será enviado 10 veces y la de abajo se enviara mientras la cantidadCombustible sea menor a 10..

Mensajes Paralelos

Los objetos envían múltiples mensajes al mismo tiempo hacia el mismo objeto. Ejemplo: Objeto6 envía MensajeA, MensajeB y MensajeC a Objeto7.


Diagrama de Componentes

Nos da una vista física del sistema. Es una vista a alto nivel del sistema y las relaciones que tiene. Los componentes que componen el sistema se llaman Componente. Los componentes son una parte modular del sistema, lo podemos ver como una parte que sirve para construir el sistema, son autónomos y encapsulados para permitir su reutilización y reemplazo, provee una o varias interfaces que le permiten interactuar o proveer servicios y también se puede ver como si fuera un subsistema.

De estas 2 maneras se puede denotar un componente: 


Interfaces

Los componentes necesitan de interfaces para poder interactuar. Las interfaces nos sirven para ilustrar dependencias que tiene un componente de software con otro componente. A través de las interfaces hacemos que los componentes sean reusables y reemplazables. Tenemos de 2 tipos:

- Provided (provista): se representa con un circulo sin relleno y una raya.
- Required (requerida): se representa con un semicírculo sin relleno y una raya.

Ejemplo: El  ControlCursos necesita una interfaz que le provee el componente ControlEstudiantes. 

Realización y dependencia

Es otra forma de mostrar lo mismo. Es necesario usar el estereotipo <<interface>>. Ayuda a tener mas detalle al mostrar las operaciones de la interfaz. Ejemplo: Menu va a proveer la implementación de la interfaz ordenar y Restaurante tiene el requisito de trabajar con alguien que implemente la interfaz ordenar. En la imagen tenemos la flecha de dependencia (flecha punteada y cabeza simple) y tenemos la flecha de realización (flecha punteada y cabeza compacta).

Compartimientos del componente 

El componente puede tener compartimiento para dar mas información. El primer compartimiento es un componente y lleva el nombre del componente. En el segundo compartimento se pueden listar las interfaces que se provee y que se requiere. Ahí colocamos el archivo físico donde se implementa el componente.

Black Box, White Box

Black box: Es opaco. Nos muestra el componente de como luce en el exterior. Solo se podrá ver el componente, interfaces requeridas y provistas y su relación con otros componentes.

White box: Es transparente. Nos muestra como se implementa la funcionalidad de un componente. Se ve las clases, interfaces y otros componentes. Ejemplo: 

Puertos y delegación

El puerto agrupa interfaces que están relacionada entre si. Pueden ser bidireccionales. El conector de delegación mapea la interface al interior del componente, muestra las relaciones de manera mas clara. Ejemplo:

Tenemos al componente Nombre, tenemos los puertos (cuadrados en los limites del cuadrado mayor que representa el componente) y los conectores de delegación (las flechas que entran y salen del componente).

Estereotipos

- Application: Para interfaces de usuario, GUI, paginas.
- DataStore: Locación persistente para los datos
- Document: Un documento, ya sea en formato electrónico o impreso.
- Entity: Representa un concepto del negocio, no tiene la funcionalidad propia y puede guardar u obtener información. 
- Executable: Es un software que puede ser ejecutado en el nodo.
- File: Un archivo
- Infraestructure: Un componente técnico del sistema.
- Library: Una biblioteca/librería de funciones u objetos.
- Process: Es dependiente de estado. Puede satisfacer una necesidad funcional y esta basado en transacciones.
- Realization: Implementa un componente en particular
- Service: No es dependiente de estado. Puede satisfacer una necesidad funcional y usualmente no es persitente.
- SourceCode: Nos indica que un archivo tiene código fuente.
- Specification: Solo contiene interfaces y no implementaciones.
- Subsystem: Forma parte de un sistema mayor. Es auto-contenido y es mas grande que un solo componente.
- Table: Una tabla de base de datos.
- Webservice: Un servicio web.
- XML DTD: Un documento de definición de tipos de XML.

 







Entradas que pueden interesarte

Sin comentarios

Artículos populares

Procesamiento digital de señales (ejemplos usando matlab)

Procesamiento digital de señales (ejemplos usando matlab)

Autor: Mauro Montoya Arenas   PROCESAMIENTO DIGITAL DE SEÑA…

¿Como configurar un microcontrolador PIC? - Primer Hola Mundo

¿Como configurar un microcontrolador PIC? - Primer Hola Mundo

Configuración de un PIC - Hola Mundo En esta oportunidad ap…

PROYECTO: SISTEMA DE TRÁFICO VEHICULAR UTILIZANDO EL PIC 18F4550

PROYECTO: SISTEMA DE TRÁFICO VEHICULAR UTILIZANDO EL PIC 18F4550

Autor: Alexis                                       Contac…

¿Qué son los Sistemas embebidos?

¿Qué son los Sistemas embebidos?

Sistemas embebidos  🔴 En este articulo encontrarás: - Func…