Logo

dev-resources.site

for different kinds of informations.

Teoria | Documentando arquitetura de software com C4 Model + Plant UML

Published at
12/28/2023
Categories
diagram
c4model
plantuml
braziliandevs
Author
juliavaz
Author
8 person written this
juliavaz
open
Teoria | Documentando arquitetura de software com C4 Model + Plant UML
Prefácio
Nesse artigo, teremos contextos e explicações dos temas: Modelagem de arquitetura, C4 Model e Plant UML.

Premissa: A modelagem de arquitetura de software é um processo de concepção de sistemas em geral, envolve a criação de representações abstratas de um sistema ou aplicativo para compreender, comunicar e projetar sua estrutura e funcionamento. Facilitando assim, a comunicação entre partes interessadas como desenvolvedores, gestão e partes não técnicas. Além de contribuir para a qualidade e manutenibilidade dos sistemas de software.

C4 Model

O C4 Model é uma alternativa na construção de modelagem de arquitetura (advinda da UML), desenvolvido por Simon Brown.
Onde descreve em um conjunto de abstrações a arquitetura de software de um sistema de forma clara e eficaz, visando simplificar a comunicação e documentação.

Nota: UML (do inglês Unified Modeling Language) é a linguagem visual de modelagem que inclui diversos tipos de diagramas, como os de classe e de sequência, além de conter três tipos de pastas lógicas: diagramas, modelos e perfis. Mais detalhes

O C4 Model oferece uma estrutura hierárquica para representar a arquitetura de software em quatro níveis de abstração, cada nível fornece uma visão diferente do sistema, desde uma visão de alto nível até uma visão detalhada do código-fonte, da camada externa para interna, são eles: Context, Containers, Components e Code.

Representação gráfica de cada camada do modelo C4 Model

Nota: Observe na imagem onde se é contornado o objeto, para assim, seguir o "zoom" do próximo nível.

Nível 1: Context (Contexto)

A camada macro da modelagem se caracteriza pela visão do projeto de um nível mais alto e descreve o sistema como um todo. Mostra o sistemas e seus principais componentes externos e como se interagem.

Nível 2: Containers (Contêineres)

No nível de Containers, o foco está na estrutura interna, detalhando os principais subsistemas do sistema e como eles se comunicam entre si. Isso ajuda a identificar as partes fundamentais e suas interações.

Nível 3: Components (Componentes)

Entrando mais no detalhe do Container, temos a estrutura interna que identificamos como Components, são as partes funcionais do sistema que executam tarefas específicas e podem ser implementadas usando tecnologias específicas. Essa etapa fornece insights sobre a estrutura interna do sistema e como os componentes estão organizados e se relacionam uns com os outros.

Nível 4: Code (Código)

Por fim, chegamos no nível mais baixo de abstração. Neste nível é exposto o esqueleto do código-fonte real do sistema. Tendo como parte diagramas de classe, sequência e outros artefatos que mostram a estrutura e o comportamento do código-fonte.
Embora seja o nível que mais forneça informação técnica aos desenvolvedores, permitindo assim uma compreensão profunda da implementação real do sistema. Em minha opnião pessoal, se trata da camada que com o tempo se torna um peso aos mantenedores da documentação, dado sua constante mudança.

PlantUML

O PlantUML é uma ferramenta que permite criar diagramas UML (Unified Modeling Language) de forma textual, utilizando uma linguagem de marcação simples para definir elementos de diagramas, como classes, objetos, relacionamentos, etc.

Suporta a criação de diagramas em diferentes níveis de abstração, incluindo diagramas de classe, diagramas de sequência, diagramas de estado entre outros. Escrevendo código em uma sintaxe simples e legível, a ferramenta então gera automaticamente os diagramas a partir do código fornecido, além de ser altamente personalizável, permitindo ajustes na aparência e o estilo dos diagramas de acordo com suas necessidades.

O exemplo abaixo representa a camada nível 1 do C4 Model, sendo elaborada de maneira textual pelo PlantUML.

Exemplo de código-fonte com a representação gráfica do PlantUML

Benefícios?

O C4 Model e o PlantUML são duas ferramentas distintas que podem ser usadas em conjunto para criar diagramas arquitetônicos e representações visuais de sistemas de software. Aqui estão alguns dos prós e contras de usar essas duas ferramentas em conjunto:

Prós:

  1. Clareza e Compreensão: O C4 Model é projetado para criar diagramas de arquitetura que são simples, claros e fáceis de entender. PlantUML, por sua vez, é uma ferramenta que pode ser usada para criar diagramas de forma textual, o que pode ajudar a manter a simplicidade e clareza dos diagramas C4.

  2. Flexibilidade: PlantUML é altamente flexível e suporta a criação de vários tipos de diagramas, incluindo diagramas de classes, diagramas de sequência, diagramas de componentes e muito mais. Isso permite que você represente diferentes aspectos da arquitetura do sistema de forma consistente.

  3. Controle de Versão: Como os diagramas criados com PlantUML são baseados em texto, eles podem ser facilmente armazenados em sistemas de controle de versão, como o Git, o que facilita o rastreamento de alterações e a colaboração em equipe.

  4. Integração: PlantUML pode ser integrado em várias ferramentas de desenvolvimento, IDEs e sistemas de documentação, facilitando a inclusão de diagramas C4 em sua documentação de arquitetura.

Contras:

  1. Curva de Aprendizado: Tanto o C4 Model quanto o PlantUML têm uma curva de aprendizado. Aprender a criar diagramas de arquitetura eficazes usando o C4 Model requer algum tempo e prática. Além disso, aprender a escrever código PlantUML também pode ser desafiador para alguns.

  2. Limitações de Expressividade: Embora PlantUML seja flexível, ele ainda pode ter algumas limitações em termos de expressividade em comparação com ferramentas de diagramação gráfica mais avançadas. Alguns diagramas complexos podem ser difíceis de representar com precisão.

  3. Manutenção: Como os diagramas PlantUML são baseados em texto, a manutenção de diagramas grandes e complexos pode se tornar trabalhosa, especialmente se muitas alterações forem necessárias.

  4. Dependência de Ferramentas: Você precisa depender de ferramentas específicas para gerar os diagramas PlantUML a partir do código textual, o que pode ser uma desvantagem se sua equipe ou organização não estiver familiarizada com essas ferramentas.

Em resumo, a combinação do C4 Model e do PlantUML pode ser uma abordagem eficaz para representar a arquitetura de sistemas de software, especialmente se você valoriza a simplicidade e a clareza em seus diagramas e está disposto a investir tempo na aprendizagem e na manutenção das ferramentas. No entanto, é importante estar ciente das limitações e desafios associados a essa abordagem.

Referências

diagram Article's
30 articles in total
Favicon
Shorts. Solana Versioned Transaction structure
Favicon
Shorts. Get CompactU16 array length
Favicon
Easily Automate Flowchart Creation in Angular Diagram
Favicon
Creating effective system architecture diagrams is a critical skill
Favicon
From Diagram to Code with Amazon Q Developer
Favicon
Unlock Efficient Coding: Master Embedded Systems with Finite State Machines
Favicon
7 Best AI Diagram Generators for Effortless Visuals
Favicon
Animating systems diagrams with draw.io
Favicon
More Haskell Diagrams: Images
Favicon
Introduction to Haskell Diagrams
Favicon
More Haskell Diagrams: Contribution Graph
Favicon
iCraft Editor - Free 3D Architecture Diagram Drawing Tool
Favicon
Digram display of Python's commonly used third-party libraries
Favicon
Crafting Interactive Digital Logic Circuits Made Easy with Blazor Diagram Component
Favicon
Syncfusion Blazor Diagram Library Now Supports Swimlane Diagrams
Favicon
An Exploration into Use Case Diagrams
Favicon
HueHive diagram generator -Mermaid diagrams using ChatGPT
Favicon
What’s New in WPF Diagram: 2023 Volume 4
Favicon
Teoria | Documentando arquitetura de software com C4 Model + Plant UML
Favicon
Run Cystoscape.js with Node.js
Favicon
Text to diagram
Favicon
Reverse Engineering for the Good: From the Source Code to the System Blueprint (Part I)
Favicon
How to use UML Diagrams for better communication
Favicon
Scaling Diagram Documentation
Favicon
PLNT System
Favicon
Seamlessly Create a Mind Map Using the Blazor Diagram Component
Favicon
How to Communicate Your Process Visually using BPMN as Code
Favicon
Creating sequence diagrams using mermaidjs to map out your user journey
Favicon
A Complete Guide to Creating a Mind Map Using Angular Diagram Component
Favicon
Editing and previewing Mermaid diagrams on your docs (markdown, github, notion, confluence)

Featured ones: