Diagrama de componentes UML

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.

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:
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.
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.
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.
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:

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:

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.

Una relación de dependencia se representa mediante una flecha discontinua que va desde el componente que requiere de otro componente hasta el requerido.

Las relaciones de dependencia pueden unir, además de componentes con otros componentes, componentes con interfaces.

Cómo dibujar un diagrama de componentes

Puedes utilizar un diagrama de componentes cuando quieras representar tu sistema como una colección de componentes e interfaces. Esto te ayudará a tener una idea de la futura implementación del sistema. Los siguientes son los pasos que pueden servir de guía al dibujar un diagrama de componentes.

  • Paso 1: Determina el propósito del diagrama e identifica los artefactos como los archivos, documentos, etc. en tu sistema o aplicación que necesitas representar en su diagrama.
  • Paso 2: A medida que descubres las relaciones entre los elementos que identificaste anteriormente, crea un diseño mental de tu diagrama de componentes.
  • Paso 3: Al dibujar el diagrama, agrega primero los componentes, agrupándolos dentro de otros componentes como mejor te parezca.
  • Paso 4: El siguiente paso es agregar otros elementos, como interfaces, clases, objetos, dependencias, etc. al diagrama de componentes y completarlo.
  • Paso 5: Puede adjuntar notas en diferentes partes de su diagrama de componentes para aclarar ciertos detalles a otros usuarios.

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 de una tienda online

Diagrama de componentes de un cajero

Ejemplos de herramientas disponibles

Entonces encontramos nomnoml.com . Es gratis, en línea, no depende de Flash Y está “basado en código” (creamos diagramas escribiendo código en una sintaxis específica).

Como puede ver arriba, las entidades / clases están representadas por un nombre entre paréntesis, como [Cliente] .

Las propiedades / campos pueden agregarse después de una tubería (|) y separarse con punto y coma (;). Por ejemplo: [Cliente | Id; Nombre; Correo electrónico].

También puede relacionar dos clases agregando un guión entre ellas, como en [Cliente] – [Dirección] .

La herramienta tiene una “referencia de idioma” en el panel derecho, por lo que no necesito detallarla aquí. Pero es muy simple y después de dibujar (escribir) su diagrama, puede compartirlo haciendo clic en el botón ” Enlace que se puede compartir con este diagrama ” en la esquina superior derecha. También hay un botón para descargar una instantánea del diagrama.

Cuando necesiten dibujar un diagrama de clase simple y no quiero (o no puedo) instalar uno más robusto (como Astah).

Ejemplo de código:

[PIRATAS|contar ojos: Int|incursión();saqueo()|
[barba]–[loro]
[barba]-:>[boca sucia]
]

[<abstract>Intruso]<:–[PIRATA]
[PIRATA]- 0..7[Fastidian la paciencia]
[alegría]->[PIRATA]
[alegría]->[cantando]
[alegría]->[Ron]
[PIRATA]-> *[Ron|sabor: Int|trago()]
[cantando]<->[Ron]
[PIRATA]->[cantando]

[<start>st]->[<state>saqueo]
[saqueo]->[<choice>más botín]
[más botín] si->[st]
[más botín] no ->[<end>e]
[<actor>MARINERO] – [<usecase>temblad;Marineros!]

Ejemplo de un diagrama de componentes de los piratas en UML
Ejemplo de un diagrama de componentes de los piratas en UML

Movilidad para la Base de la Pirámide Social en México

Fuente: The Competitive Intelligence Unit

Por el simple hecho de ser mexicanos, la Constitución Política de los Estados Unidos Mexicanos en su artículo 6º, confiere el derecho de acceso y uso de las Tecnologías de Información y Comunicación y establece la obligación del Estado de procurar la universalidad de la inclusión digital en el país.

La garantía del derecho depende en gran medida de tres factores. El primero consiste en el despliegue de infraestructura de telecomunicaciones; el segundo en las habilidades digitales desarrolladas por la población, y finalmente la asequibilidad de servicios y dispositivos.

Al igual que sucedió en el mercado de telefonía fija años décadas atrás, el segmento de telecomunicaciones móviles es ahora el principal promotor de la conectividad universal en el país, al brindar acceso a todos los estratos de la población. Ello a partir, de la reducción de precios de los servicios y el abaratamiento de los dispositivos en años recientes.

Acceso a Servicios Móviles

En concreto, el número de líneas móviles en nivel socioeconómico bajo (D/E) asciende ya a 8.2 millones al primer trimestre de 2019, esto es equivalente a que 89% del total de la población en ese segmento cuentan con servicios móviles. Prácticamente la totalidad de los individuos y en un nivel similar frente al NSE C/C- 101% (34.6 millones de líneas), el NSE medio alto (C+, 105%) con 14.6 millones de líneas y en A/B con un coeficiente de 107% (8.2 millones de líneas).

Por su parte, la mayor asequibilidad de la conectividad de Banda Ancha Móvil (BAM), aunado a las ofertas que incluyen navegación libre en aplicaciones de redes sociales y mensajería, incluso en la modalidad de prepago, ha provocado que entre las personas de NSE bajo se registre un coeficiente de acceso de 62%. Ello implica un crecimiento anual de 7.9% anual en la base de usuarios en este segmento poblacional, el más alto en el comparativo entre NSE.

No obstante, a esta dinámica creciente hacia su democratización, aún 14.2 millones de personas mayores a 10 años en el segmento D/E, no son usuarios de BAM, y por ello no cuentan con acceso a contenidos informativos, educativos, culturales y de entretenimiento, de manera ubicua y permanente.

Como resultado, las personas pertenecientes a este estrato socioeconómico carecen de oportunidades y herramientas adecuadas para detonar su productividad, así como acceder y materializar beneficios de la conectividad y la tecnología para mejorar sus condiciones de vida.

Tenencia de Dispositivos Móviles

En lo que respecta a la tenencia de dispositivos con capacidad de conexión a internet, se registra un nivel elevado en todos los estratos socioeconómicos. Así, 83.9% de las líneas de usuarios D/E están asociadas a una teléfono inteligente o smartphone, cifra que registra una diferencia escasa frente a niveles más altos: C/C- 91.1%, C+ 95.3% y A/B 100%.

Sin embargo, existe una brecha significativa en las capacidades de los equipos, lo cual limita el potencial de uso para los segmentos más desfavorecidos de la población. Puesto que 52.9% de los usuarios D/E reportan tener un equipo de gama baja, con un valor inferior a los $3,000 pesos, mientras que, para el resto de los NSE, esta proporción es significativamente menor: 43.4% en C/C-, 33.0% en C+ y 19.4% en A/B.

Estos equipos tienen la capacidad de dar acceso a servicios de mensajería instantánea y redes sociales, pero difícilmente habilitan otro tipo de aplicaciones por sus bajas capacidades de memoria o almacenamiento.

Por todo lo anterior, es manifiesta una proclividad social de la movilidad, al registrarse altos niveles de acceso a servicios y dispositivos móviles en todos los estratos socioeconómicos. Sin embargo, aún persiste una brecha de conectividad en los NSE más bajos.

El Estado tiene la obligación y reto de promover de manera eficiente los mecanismos necesarios, vía política pública o incentivos al mercado, para alcanzar un pleno acceso de servicios móviles en los segmentos de la población más vulnerables y desfavorecidos del país, como estrategia para detonar su desarrollo.

De esta forma, las herramientas tecnológicas y digitales representan un mecanismo importante para generar igualdad de oportunidades en el país, en otras palabras, eliminar la brecha digital puede tener un efecto directo e importante en las desigualdades socioeconómicas que enfrenta nuestro país.