🚀 Capítulo 17: Diagrama de Componentes (Tema: Star Trek)

NOTE

Este capítulo utiliza a temática de Star Trek para explicar os Componentes. A USS Enterprise é formada por vários sistemas independentes que se plugam e conversam entre si!


1. 🎯 Objetivo da Aula

Compreender o conceito de Diagrama de Componentes, como ele representa a estrutura física do software e o uso de interfaces (Lollipop).

2. 🏢 O Cenário Prático (Seu Desafio)

Você está na sala de máquinas da USS Enterprise. O motor de dobra (Dobra Espacial) precisa se comunicar com o sistema de navegação e com o banco de dados de cartas estelares. Cada um desses sistemas é um módulo de software independente (um componente). Seu desafio é modelar como esses módulos se “plugam” usando o Draw.io.

3. 🧠 Fundamentos: A Teoria Traduzida

O Diagrama de Componentes mostra a organização e as dependências entre os módulos de software. É uma visão de alto nível da arquitetura.

🔌 Elementos Principais:

  1. Componente: Um retângulo que pode ter um ícone no canto superior direito (parece uma caixinha com duas tomadas saindo) ou o estereótipo <<component>>. Representa uma parte modular do sistema (ex: uma DLL, uma API, um banco de dados).
  2. Interface Provida (Lollipop): Uma linha com uma bolinha na ponta (-o). Significa que o componente oferece um serviço.
  3. Interface Requerida (Garra): Uma linha com uma meia-lua na ponta (-(). Significa que o componente precisa de um serviço.
  4. Encaixe: Quando a bolinha se encaixa na meia-lua (-o-(), significa que os dois componentes estão conversando!

4. 📖 Exemplo Guiado: Conectando Sistemas

  1. Crie o componente Navegacao.
  2. Crie o componente BancoDeDados.
  3. O BancoDeDados provê dados (coloque a bolinha -o nele).
  4. A Navegacao requer dados (coloque a garra -( nela).
  5. Encaixe as duas linhas no Draw.io para mostrar a conexão.

5. 🛠️ Prática Obrigatória 1: Sistemas da Enterprise

No Draw.io, crie o diagrama de componentes com:

  • SistemaDeArmas (Requer energia).
  • ReatorDeMateria (Provê energia).
  • Faça o encaixe correto das interfaces (Lollipop e Garra).
  • Exporte a imagem.

6. 🛠️ Prática Obrigatória 2: Vantagem dos Componentes

Qual é a principal vantagem de dividir um sistema gigante em vários componentes independentes em vez de fazer um único bloco de código gigante (Monolito)? (Dica: Pense em trocar uma peça que deu defeito).


7. 📤 Instruções de Entrega (GitHub Desktop + Microsoft Teams)

  1. Faça o Commit: No GitHub Desktop, digite a mensagem (ex: Finaliza Capítulo 17 UML) e clique em Commit to main.
  2. Envie para a Nuvem (Push): Clique em Push origin.

8. 📂 Estrutura de Pastas

extra_guia_de_modelagem_uml/
├── capitulos/
│   ├── capitulo_17_componentes.md
│   └── codigos/
│       └── cap17/
│           └── componentes_enterprise.png

9. 💡 Checkpoint de Lógica

Se mudarmos a tecnologia do Banco de Dados de SQL para NoSQL, mas mantivermos a mesma “Interface” (a mesma bolinha de conexão), os outros componentes que usam o banco precisam ser reprogramados?

10. 🔥 Desafio de Fixação

Pesquise o que significa o termo SOA (Arquitetura Orientada a Serviços) e como ela se relaciona com os diagramas de componentes.

11. 🔑 Gabarito de Código/Fórmulas

Resposta da Prática 2: A divisão em componentes facilita a manutenção e a reutilização. Se o reator de matéria der defeito (ou precisarmos atualizar), podemos trocá-lo sem precisar reconstruir o sistema de armas inteiro, desde que a interface (o plugue) continue a mesma.


Capitulo Anterior | Proximo Capitulo