🚀 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:
- 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). - Interface Provida (Lollipop): Uma linha com uma bolinha na ponta (
-o). Significa que o componente oferece um serviço. - Interface Requerida (Garra): Uma linha com uma meia-lua na ponta (
-(). Significa que o componente precisa de um serviço. - Encaixe: Quando a bolinha se encaixa na meia-lua (
-o-(), significa que os dois componentes estão conversando!
4. 📖 Exemplo Guiado: Conectando Sistemas
- Crie o componente
Navegacao. - Crie o componente
BancoDeDados. - O
BancoDeDadosprovê dados (coloque a bolinha-onele). - A
Navegacaorequer dados (coloque a garra-(nela). - 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)
- Faça o Commit: No GitHub Desktop, digite a mensagem (ex:
Finaliza Capítulo 17 UML) e clique em Commit to main. - 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.png9. 💡 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.