Diagrama de componentes
Un diagrama
de componentes es un diagrama tipo del Lenguaje Unificado de
Modelado.
Un
diagrama de componentes representa cómo un sistema de software es
dividido en componentes y muestra las dependencias entre
estos componentes.
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.
Los
componentes físicos incluyen archivos, cabeceras, bibliotecas
compartidas, módulos, ejecutables, o paquetes. Los diagramas de
Componentes prevalecen en el campo de la arquitectura de
software pero pueden ser usados para modelar y documentar cualquier
arquitectura de sistema.
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.
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
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.
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.
Una relación de dependencia se representa mediante una flecha discontinua
que va desde el componente que requiere de otro componente hasta el requerido.
Notación
de una relación de dependencia
Las relaciones de dependencia pueden unir, además de componentes con
otros componentes, componentes con interfaces.
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.