[Conceito] - Desenhos de Arquitetura: Estruturais e Comportamentais
Published: 2022-04-15 20:30:29

> Conteúdo original [nessa thread do Twitter](https://twitter.com/zanfranceschi/status/1515015604977401857)

---

Dev,

Vamos trocar uma ideia sobre DESENHOS DE ARQUITETURA?

Com frequência, vejo diagramas confusos que precisam de alguém explicando pra enteder com clareza. Vou dar uma dica super simples que pode deixá-los muito mais expressivos e claros!

Bora?

cc @sseraphini
 
🧵

![img](https://pbs.twimg.com/media/FQZqqb8VkAY51_t?format=jpg&name=large)

---

Vou direto ao ponto:

Desenhos bons diferenciam com clareza ESTRUTURA de COMPORTAMENTO.

Estrutura é a visão estática e comportamento é o fluxo de informações.

---

O que esse diagrama abaixo comunica?

Mesmo com muitas coisas, tenta acompanhar alguma coias aí. Dê uma atenção especial às setas.

![img](https://pbs.twimg.com/media/FQZqq6SVgAMakTw?format=jpg&name=large)

---

Intuitivamente, é possível inferir que este diagrama comunica comportamento.

Bom, pelo menos as setas apontadas para as filas dizem isso, pois nenhum middleware de mensageria depende de seus consumidores ou publicadores ─ já o oposto é verdadeiro.

---

O problema desse desenho (assumindo que esteja realmente comunicando um fluxo) é que não dá pra saber a ordem das coisas. O fluxo começa com COM, com XYZ ou com ACME? Existe paralelismo? Termina onde?

---

A parte boa é que tá fácil resolver isso. Basta colocar a ordem das coisas!

(As descrições não estão boas, mas) o fluxo está claro.

![img](https://pbs.twimg.com/media/FQZqrszVkAANad-?format=jpg&name=4096x4096)

---

Geralmente, os diagramas comportamentais são os mais interessantes, eles dão a ideia do runtime ─ da coisa viva.

Os estruturais são bons para entender dependências. Olha como poderia ser o diagrama estrutural dessa solução. Não há fluxo descrito, apenas uma visão estática.

![img](https://pbs.twimg.com/media/FQZqsJZUYAMUX9j?format=jpg&name=large)

---

Uma alternativa para comunicar comportamento é usar diagramas de sequência (que particularmente gosto). Você não precisa (e nem deveria) esquentar muito com os padrões de UML (seta vazada, preenchida, etc.). UML tá caindo em desuso, mas deixou um legado útil.

![img](https://pbs.twimg.com/media/FQZqsl-VUAM8kFM?format=jpg&name=large)

---

Nesse diagrama, a ordem das coisas é de cima para baixo. As coisas de cima vêm primeiro ─ linhas verticais são linhas do tempo.

Dá pra colocar numeração nas mensagens, mas acho desnecessário, sinceramente.

Quando o retorno das mensagens for importante, vale incluí-lo também.

![img](https://pbs.twimg.com/media/FQZqtAzVQAI0qLi?format=jpg&name=large)

---

Voltando para os diagramas estruturais.

Hoje em dia, o uso da notação C4 está crescendo e sendo mais adotada por empresas.

Essa notação é interessante, pois serve para comunicação com pessoas técnicas e não técnicas. O criador do C4 é o 
[@simonbrown](https://twitter.com/simonbrown) (https://c4model.com)

---

Uma obervação importante: diagramas comportamentais precisam ter um mínimo de estrutura pra serem capazes de comunicar fluxo, mas desenhos estruturais não precisam conter fluxo.

Sempre tenha em mente qual é o objetivo do seu desenho. Fluxo ou estrutura?

---

Claro, desenhos muito simples podem até não serem explícitos em relação à estrutura/comportamento e mesmo assim comunicarem com clareza seu objetivo. Questão de bom senso.

---

É isso o que queria falar. Deixe claro o que é comportamento e estrutura nos seus desenhos mais elaborados.

O importante dos desenhos é comunicar com clareza seu objetivo! Evite comunicar muita coisa num desenho só.

Valeu pela moral de ter lido até aqui! ♥️