Desarrollo de Software
Sesión 07: Diagrama de componentes
I. OBJETIVOS
- Conocer los diagramas de componentes
- Modelar los diagramas de componentes usando herramientas UML
II. TEMAS A TRATAR
● Diagramas de componentes
● Elementos de los diagramas de componentes
III. MARCO TEORICO
DIAGRAMAS 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 no se puede crear antes de hacer 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
Desarrollo de Software
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.
El diagrama de colaboraciones describe las interacciones entre los objetos en términos de
mensajes secuenciados. Los diagramas de colaboración representan una combinación de
información tomada de los diagramas de clases, de secuencias y de casos de uso, describiendo
el comportamiento, tanto de la estructura estática, como de la estructura dinámica de un
sistema.
El Diagrama de Colaboración presenta una alternativa al diagrama de secuencia para modelar
interacciones entre objetos en el sistema. Mientras que el diagrama de secuencia se centra
en la secuencia cronológica del escenario que estamos modelando, el diagrama de
colaboración se centra en estudiar todos los efectos de un objeto dado durante un escenario.
Los objetos se conectan por medio de enlaces, cada enlace representa una instancia de una
asociación entre las clases implicadas. El enlace muestra los mensajes enviados entre los
objetos, el tipo de mensaje (sincrónico, asincrónico, simple, blanking, y 'time-out'), y la
visibilidad de un objeto con respecto a los otros.
Un uso de un diagrama de colaboración es mostrar la implementación de una operación. La
comunicación muestra los parámetros y las variables locales de la operación, así como
asociaciones más permanentes. Cuando se implementa el comportamiento, la secuencia de
los mensajes corresponde a la estructura de llamadas anidadas y el paso de señales del
programa.
Un diagrama de secuencia muestra secuencias en el tiempo como dimensión geométrica,
pero las relaciones son implícitas. Un diagrama de comunicación muestra relaciones entre
roles geométricamente y relaciona los mensajes con las relaciones, pero las secuencias
temporales están menos claras.
Es útil marcar los objetos en cuatro grupos: los que existen con la interacción entera; los
creados durante la interacción (restricción {new}); los destruidos durante la interacción
(restricción {destroyed}); y los que se crean y se destruyen durante la interacción (restricción
{transient}).
Aunque las comunicaciones muestran directamente la implementación de una operación,
pueden también mostrar la realización de una clase entera. En este uso, muestran el
contexto necesario para implementar todas las operaciones de una clase. Esto permite que el
modelador vea los roles múltiples que los objetos pueden desempeñar en varias operaciones.
Desarrollo de Software
Elementos
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.
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.
Ejemplos de componentes podrían ser los siguientes: Gestión de E/S, Animal, Persona, Gestión
de incidencias, Gestor de workflow,… 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.
Desarrollo de Software
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.
Desarrollo de Software
Las relaciones de dependencia pueden unir, además de componentes con otros componentes,
componentes con interfaces.
Artefacto
Unidades físicas de información( código fuente, archivos .exe, scripts o documentos) que se
generan en el proceso de desarrollo o tiempo de ejecución del sistema o son necesarios para
este.
Puerto
Indica un punto de interacción independiente entre un componente y su entorno
Cómo dibujar un diagama 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.
Desarrollo de Software
Paso 5: Puede adjuntar notas en diferentes partes de su diagrama de componentes para
aclarar ciertos detalles a otros usuarios.
IV. ACTIVIDADES (La práctica tiene una duración de 2 horas)
1. Una tienda online, le permite a un cliente hacer pedidos de productos, cada producto tiene un
código por el que se le identificará en el pedido, debe poder emitirse facturas de cada producto:
2. Una biblioteca permite prestarse ejemplares, para hacerse un préstamo, se debe verificar que el
prestatario no tenga deudas pendientes, luego de la verificación, se puede hacer una reserva de un
título de un ejemplar (pueden haber varios ejemplares de un mismo título).
3. Un servicio de correo electrónico, ofrece al usuario la administración de su email a través de una
interfaz web, el usuario puede recibir o enviar correos. El servicio de administración de su correo se
Desarrollo de Software
comunica a través de protocolos por sus puertos de comunicación. Para administrar el sistema,
habrá un frontend y un sistema de administración propiamente dicho.
4. Una página web, muestra al usuario una interface en su web browser, esta interface la carga de
su web server, el web server debe tener un archivo de log y debe poder comunicarse con una base
de datos alojada en un servidor de base de datos. La base de datos está implementada en MySQL y
almacena la información en un disco duro, el protocolo de comunicación del servidor web con el
servidor de base de datos es TCP/IP.
Desarrollo de Software
VII. Ejercicios
1. Un club ecuestre pone a disposición de los clientes establos para guardar los caballos y
ofrece cursos de equitación y paseos. Sólo los socios tienen acceso a los cursos y a los
servicios de establo. Los demás clientes tienen la posibilidad de participar en los paseos y de
convertirse en socios. Construya el diagrama de componentes.
2. Un cliente de un banco puede hacer transacciones en linea, para lo cual debe
autenticarse, también puede hacer transacciones en un cajero automático a través de su
tarjeta o puede acercarse a una ventanilla donde lo atenderá un cajero. Cada transacción
debe ser verificada en la base de datos. Sugiera un diagrama de componentes para el
banco.
3. Realizar el diagrama de componentes par un hipódromo que ofrece a sus clientes la
posibilidad de asistir a las carreras y de realizar apuestas. El hipódromo deberá poder enviar
notificaciones de ofertas y carreras a sus clientes frecuentes.
4. Se quiere hacer el diseño de un robot modular. El robot estará compuesto por varios
módulos entre los que se encuentran: rotación, extensión, helicoidal, cámara. Los módulos
podrán ser dinámicos (capaces de moverse: rotación, extensión, helicoidal) o estáticos (no
se pueden mover: cámara). Los módulos tendrán un identificador (1-255) y unas
Desarrollo de Software
dimensiones (largo, ancho y alto, entre 1 y 200mm). Los módulos estarán compuestos de un
sistema de control y un sistema de comunicación.
Los módulos dinámicos tendrán:
• motores (1 ó 2).
• un parámetro que es el tipo de movimiento que pueden realizar.
• una función que es moverse (con parámetro el tipo de movimiento).
Los módulos estáticos podrán tener sensores (de 0 a 5). El sistema de control utiliza el
sistema de mensajes para comunicarse. Los módulos pueden enviar y recibir mensajes
de/hacia el usuario y otros módulos, con un parámetro que es un array de datos a mandar o
recibir. También utiliza los motores para moverse y los sensores para captar información del
medio. Se pide que se diseñe la estructura del sisteema utilizando diagramas de
componentes.
5.
VII. Bibliografía y referencias
1. [Link]
2. [Link]