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).
Servicio de login
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

sistema de autenticacion

🧑‍💻 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.