Curso UML
📌 ¿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.
🧩 Elementos de un diagrama de componentes
1. Componente (component)
- Es una unidad modular y reutilizable del sistema.
- Puede representar un archivo
.jar,.dll,.exe, una clase, o un módulo.
1@startuml 2component "Autenticación" as Auth 3@enduml
2. 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).
1@startuml 2interface "Servicio de Login" as ILogin 3@enduml
3. 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.
1@startuml 2component "Frontend Web" as FE 3component "Backend API" as BE 4FE ..> BE : Llama a la API 5@enduml
4. Puertos (opcional)
- Son puntos de entrada/salida de un componente, útil para mostrar interacciones detalladas.
🛠 Ejemplo completo de arquitectura por componentes
🧑💻 Código equivalente
1@startuml 2 3package "Sistema de Autenticación" { 4 component "Frontend Web" as FE 5 component "Backend API" as BE 6 component "Base de Datos" as DB 7 interface "LoginService" as LoginIF 8} 9 10FE ..> LoginIF : Solicita autenticación 11BE ..|> LoginIF 12BE --> DB : Consulta credenciales 13 14@enduml
📦 Ventajas del diagrama de componentes
- Claridad en la organización del sistema.
- Facilita la modularización.
- Útil para definir APIs, servicios, y despliegues.
✅ 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.