Diagramas de Componentes
1. Qué es un diagrama de componentes? #
El diagrama de componentes representa cómo un sistema de software está organizado físicamente. Muestra componentes de software (como archivos, bibliotecas, módulos, servicios) y sus relaciones (dependencias, interfaces, conexiones).
Se utiliza principalmente en la fase de diseño para representar la arquitectura modular y cómo se ensamblan los elementos.
2. Elementos de un diagrama de componentes #
Componente (component) #
- Es una unidad modular y reutilizable del sistema.
- Puede representar un archivo
.jar,.dll,.exe, una clase, o un módulo.
Ampliar
1@startuml 2component "Autenticación" as Auth 3@enduml
Interfaz (interface) #
- Define un punto de comunicación que un componente provee o requiere.
- Se puede representar como un círculo (provided) o como una semicircunferencia (required).
Ampliar
1@startuml 2interface "Servicio de Login" as ILogin 3@enduml
Relaciones #
a) Dependencia (..>) #
- Un componente depende de otro (por ejemplo, un frontend depende del backend).
b) Uso de interfaz (..|>) #
- Un componente utiliza una interfaz definida por otro componente.
Ampliar
1@startuml 2component "Frontend Web" as FE 3component "Backend API" as BE 4FE ..> BE : Llama a la API 5@enduml
Puertos (opcional) #
- Son puntos de entrada/salida de un componente, útil para mostrar interacciones detalladas.
3. Ejemplo completo de arquitectura por componentes #
Ampliar
4. Código equivalente #
Cargando actividad al acercarte…
5. Ventajas del diagrama de componentes #
- Claridad en la organización del sistema.
- Facilita la modularización.
- Útil para definir APIs, servicios, y despliegues.
6. Buenas prácticas #
- Divide el sistema por responsabilidades.
- Nombra claramente componentes e interfaces.
- Usa interfaces para representar contratos.
- No sobrecargues el diagrama con lógica detallada: representa estructura, no comportamiento.
Resumen del tema
Conceptos clave #
- Arquitectura modular del software: representación física de subsistemas autónomos, módulos, bibliotecas (
.jar,.dll), paquetes y servicios. - Componente (
component): unidad ejecutable, encapsulada y reemplazable que expone y consume funcionalidad a través de interfaces. - Interfaces Provistas vs Requeridas:
- Provista (Provided / Lollipop ○): contrato o API que el componente implementa y pone a disposición de otros.
- Requerida (Required / Socket ◗): interfaz o servicio externo que el componente necesita para funcionar.
- Relaciones de ensamblaje: dependencias (
..>) y realización de contratos (..|>) que definen el acoplamiento entre capas y módulos. - Puertos: puntos de interacción explícitos en los límites del componente para desacoplar su implementación interna.
Qué debes recordar #
Usa diagramas de componentes para documentar la arquitectura modular y los contratos (APIs provistas y requeridas) entre módulos sin entrar en detalles de implementación interna.