DIAGRAMA DE ACTIVIDADES 
Un diagrama de actividades muestra el flujo de actividades, siendo un actividad una ejecución general entre los objetos que se está ejecutando en un momento dado dentro de una máquina de estados, el resultado de un actividad es una acción que producen un cambio en el estado del sistema o la devolución de un valor. Las acciones incluyen llamadas a otras operaciones, envío de señales, creación o destrucción de objetos o simples cálculos. Gráficamente un diagrama de actividades será un conjunto de arcos y nodos. Desde un punto de vista conceptual, el diagrama de actividades muestra cómo fluye el control de unas clases a otras con la finalidad de culminar con un flujo de control total que se corresponde con la consecución de un proceso más complejo. Por este motivo, en un diagrama de actividades aparecerán acciones y actividades correspondientes a distintas clases. Colaborando todas ellas para conseguir un mismo fin. Ejemplo: Hacer un pedido.
Contenido del diagrama de actividades
Básicamente un diagrama de actividades contiene:
  • Estados de actividad
  • Estados de acción
  • Transiciones
  • Objetos
Estados de actividad y estados de acción
La representación de ambos es un rectángulo con las puntas redondeadas, en cuyo interior se representa bien una actividad o bien una acción. La forma de expresar tanto una actividad como una acción, no queda impuesta por UML, se podría utilizar lenguaje natural, una especificación formal de expresiones, un metalenguaje, etc. La idea central es la siguiente: “Un estado que represente una acción es atómico, lo que significa que su ejecución se puede considerar instantánea y no puede ser interrumpida”, Al igual que en el diagrama de estados, el de actividad cuenta con un punto inicial (representado por un círculo) y uno final (representado como dos círculos concéntricos). En la siguiente figura, podemos ver ejemplos de estados de acción.

Estados de AcciónEn cambio un estado de actividad, sí puede descomponerse en más sub- actividades representadas a través de otros diagramas de actividades. Además estos estados sí pueden ser interrumpidos y tardan un cierto tiempo en completarse. En los estados de actividad podemos encontrar otros elementos adicionales como son: acciones de entrada (entry) y de salida (exit) del estado en cuestión, así como definición de submáquinas, como podemos ver en la figura siguiente:
Submaquinas

Transiciones
Las transiciones reflejan el paso de un estado a otro, bien sea de actividad o de acción. Esta transición se produce como resultado de la finalización del estado del que parte el arco dirigido que marca la transición. Como todo flujo de control debe empezar y terminar en algún momento, podemos indicar esto utilizando dos disparadores de inicio y fin tal y como queda reflejado en el ejemplo siguiente.
Transiciones
Figura 48: Transiciones
Bifurcaciones
Un flujo de control no tiene porqué ser siempre secuencial, puede presentar caminos alternativos. Para poder representar dichos caminos alternativos o bifurcación se utilizará como símbolo el rombo. Dicha bifurcación tendrá una transición de entrada y dos o más de salida. En cada transición de salida se colocará una expresión booleana que será evaluada una vez al llegar a la bifurcación, las guardas de la bifurcación han de ser excluyentes y contemplar todos los casos ya que de otro modo la ejecución del flujo de control quedaría interrumpida. Para poder cubrir todas las posibilidades se puede utilizar la palabra ELSE, para indicar una transición obligada a un determinado estado cuando el resto de guardas han fallado. Veamos un ejemplo de bifurcación.
Bifurcaciones
Figura 49: Bifurcaciones
División y unión
No sólo existe el flujo secuencial y la bifurcación, también hay algunos casos en los que se requieren tareas concurrentes. UML representa gráficamente el proceso de división, que representa la concurrencia, y el momento de la unión de nuevo al flujo de control secuencial, por una línea horizontal ancha. Podemos ver cómo se representa gráficamente.
 División y unión
Figura 50: División y unión
Calles
Cuando se modelan flujos de trabajo de organizaciones, es especialmente útil dividir los estados de actividades en grupos, cada grupo tiene un nombre concreto y se denominan calles. Cada calle representa a la parte de la organización responsable de las actividades que aparecen en esa calle. Gráficamente quedaría como se muestra a continuación.
Calles

Figura 51: Calles



DIAGRAMA DE COLABORACIÓN
Un diagrama de colaboración destaca la organización de los objetos que participan en una interacción, un diagrama de colaboración se construye colocando en primer lugar los objetos que participan en la colaboración como nodos de un grafo. A continuación se representa los enlaces que conectan esos objetos como arcos de grafo, por último, estos enlaces se adorna con los mensajes que envían y reciben los objetos, esto da al lector una señal visual clara del flujo de control en el contexto de la organización estructural de los objetos que colaboran
Flujo de Control
Figura 45: Flujo de Control
Los diagramas colaboración tienen dos características que los distinguen de los diagramas de secuencia, el primero para indicar cómo se enlaza un objeto a otro, se puede asociar un objeto al extremo más lejano de un enlace con la palabra local que indica que el objeto designado es local al emisor. En segundo lugar está el número de secuencia, para indicar la ordenación temporal de los mensajes, se precede de un número iniciando con el numeral 1, que se incrementa secuencialmente por cada nuevo mensaje en el flujo de control.


Diagrama de componentes

Mientras que otros diagramas UML describen la funcionalidad de un sistema, los diagramas de componentes se utilizan para modelar los componentes que ayudan a hacer esas funcionalidades, representando la forma en la que estos se organizan y sus dependencias.
En esta entrada dedicada al diagramas de componentes veremos qué es un diagrama de componentes, los símbolos de este diagrama y cómo dibujar uno de forma muy sencilla. Al final del artículo podrás encontrar unos cuantos diagramas para ilustrar a modo de ejemplo toda la teoría.

Qué es un diagrama de componentes

El diagrama de componentes es uno de los principales diagramas UML. Está clasificado como diagrama de estructura y, como tal, representa de forma estática el sistema de información. Habitualmente se utiliza después de haber creado el diagrama de clases, pues necesita información de este diagrama como pueden ser las propias clases.
Este diagrama proporciona una vista de alto nivel de los componentes dentro de un sistema. Los componentes pueden ser un componente de software, como una base de datos o una interfaz de usuario; o un componente de hardware como un circuito, microchip o dispositivo; o una unidad de negocio como un proveedor, nómina o envío.
Algunos usos de este tipo de diagrama es el siguiente:
  • Se utilizan en desarrollo basado en componentes para describir sistemas con arquitectura orientada a servicios.
  • Mostrar la estructura del propio código.
  • Se puede utilizar para centrarse en la relación entre los componentes mientras se ocultan los detalles de las especificaciones.
  • Ayudar a comunicar y explicar las funciones del sistema que se está construyendo a los interesados o stakeholders.
Para su construcción se debe plantear en primer lugar identificar los componentes que utilizará el sistema de información, así como las distintas interfaces. Una forma típica y común para una primera aproximación en sistemas sencillos es utilizar un componente central al que los demás componentes se unen, y que se utiliza como componente gestor del sistema.
Primera aproximación al diagrama de componentes

Elementos del diagrama de componentes

El diagrama de componentes está formado por tres elementos: Componente, Interfaz y Relación de dependencia.

Componente

Un componente es un bloque de unidades lógicas del sistema, una abstracción ligeramente más alta que las clases. Se representa como un rectángulo con un rectángulo más pequeño en la esquina superior derecha con pestañas o la palabra escrita encima del nombre del componente para ayudar a distinguirlo de una clase.
Un componente puede representar dos tipos de elementos: componentes lógicos (como por ejemplo componentes de negocio o proceso) o componentes físicos (como componentes .NET, EJB…). Por ejemplo, en una aplicación desarrollada en java habrá, con total seguridad, varios componentes “.java”, que son componentes lógicos del sistema.
Es representado a través de un rectángulo que tiene, a su vez, dos rectángulos a la izquierda, tal y como se muestra en la siguiente imagen:

Notación de componente
Notación de componente

Otra notación, utilizada en las últimas versiones de UML consiste en un rectángulo con un rectángulo más pequeño en la esquina superior derecha con pestañas.

Otra notación de componente
Otra notación de componente

También es posible utilizar el diagrama de paquetes para hacer un conjunto de varios módulos. Con esto se consigue representar la unión de esos módulos para un fin concreto.

Paquete con varios componentes
Paquete con varios componentes

Ejemplos de componentes podrían ser los siguientes: Gestión de E/S, Animal, Persona, Gestión de incidencias, Gestor de workflow,… Como ves son conceptos muy amplios y que pueden ser más o menos específicos dependiendo de la profundidad que se puede dar al diagrama.

Ejemplos de componentes
Ejemplos de componentes

Lo ideal es que los componentes estén diseñados de forma que tengan una gran cohesión y un bajo acoplamiento, para favorecer su reutilización.

Interfaz

La interfaz está siempre asociada a un componente y se utiliza para representar la zona del módulo que es utilizada para la comunicación con otro de los componentes.
Se representa con una línea que tiene al final un circulo no relleno:

Notación de una interfaz
Notación de una interfaz

Otros módulos pueden conectarse a una interfaz. Esto se hace cuando un componente requiere o utiliza al otro componente mediante su interfaz, que son las operaciones externas que ofrece el componente. Se representa con un linea que termina en un semicírculo que rodea la interfaz del otro componente. En el diagrama se vería de la siguiente manera:
Utilización de interfaz







Relación de dependencia
Aunque puedes mostrar más detalles sobre la relación entre dos componentes utilizando la notación de interfaces (interfaz proporcionada y la interfaz requerida), también puedes usar una flecha de dependencia para mostrar la relación entre dos componentes. Es una relación más general.
La relación de dependencia representa que un componente requiere de otro para ejecutar su trabajo. Es diferente a la interfaz, pues esta identifica que un componente ofrece una serie de operaciones. En cualquier caso, en ocasiones para simplificar el diagrama no se usan las interfaces sino que solamente se utilizan relaciones de dependencia.
Diagramas de componentes, ejemplos
Estos son algunos ejemplos del diagrama de componentes, cada uno ha sido dibujado a distinto nivel de abstracción.
Diagrama de componentes de una clínica veterinaria.
En este caso se han utilizado paquetes para dar una visión de alto nivel del sistema.
Diagrama de componentes clínica veterinaria
Diagrama de componentes clínica veterinaria

Diagrama de componentes de una tienda online

Diagrama de componentes tienda online
Diagrama de componentes tienda online

Diagrama de componentes de un cajero

Diagrama de componentes cajero
Diagrama de componentes cajero

Diagrama de Distribución

En el diagrama de distribución es donde representamos la estructura de hardware donde estará nuestro sistema o software, para ello cada componente lo podemos representar como nodos, el nodo es cualquier elemento que sea un recurso de hardware, es decir, es nuestra denominación genérica para nuestros equipos.

Dentro de la clasificación de los nodos tenemos que hay el nodo que puede ejecutar o procesar y el nodo que no ejecuta ni procesa, estos últimos pueden ser los dispositivos de salida como impresoras o monitores, es decir, los que están en contacto con el exterior.

Para representar al nodo utilizaremos la figura del cubo, dentro de nuestro cubo podemos escribir la información correspondiente al nodo, por ejemplo su nombre, veamos a continuación un nodo básico:

uml_diag_distribucion_part1.2.jpg

Ahora si necesitamos indicar información adicional de nuestro nodo, por ejemplo si pertenece a un paquete o tal vez los componentes que posee, podemos dividir el cubo en diferentes secciones donde iremos agregando la información representada en texto, veamos en el siguiente ejemplo a que nos referimos:



uml_diag_distribucion_part1.3.jpg

Incorporar Relaciones entre Nodos

Por supuesto que un nodo no es un ente aislado en un sistema, para ello en nuestro diagrama podremos representar como se asocia o se relaciona con otros nodos, a través de sus componentes o interfaces, con ello podemos dar una representación más exacta.

Usualmente utilizamos la conexión como la forma de representación, sin embargo podemos utilizar la asociación y la agregación en nuestros nodos, para representar la conexión utilizamos una línea discontinua, donde vinculamos un componente de un nodo a otro componente de otro nodo, esta conexión no necesariamente es un cable, esta conexión también puede representar conexiones inalámbricas, como Wi-Fi, Bluetooth, infrarrojos, etc.

Veamos a continuación un ejemplo de este tipo de conexión del que estamos hablando:



uml_diag_distribucion_part1.jpg

Como podemos notar esta es la representación de la distribución de un sistema cliente – servidor, que sucede en este diagrama, en el nodo cliente tenemos un componente de programa de presentación, dicho programa probablemente nos debe mostrar los recursos del servidor a los que podemos tener acceso, como por ejemplo el programa de búsqueda, al utilizar dicho programa, ocurre una conexión con el servidor quien procesa y hace un procesamiento de los datos y entonces retorna un resultado para dicha búsqueda.

Nuestro diagrama de nodos entonces nos da una representación bastante acertada de la estructura de los equipos que intervienen, ya que el cliente puede ser un terminal cualquier con dispositivos de entrada y salida de datos y el servidor es un equipo diferente que procesa los datos.

Ya tenemos una idea aproximada de como representar la distribución de hardware de nuestros sistemas utilizando UML, en el próximo tutorial veremos una aplicación más extensa de los diagramas de distribución.



Comentarios

Publicar un comentario

Entradas populares de este blog