DEV Community

Pedro Pietroluongo
Pedro Pietroluongo

Posted on • Edited on

O Método de Documentação C4Model e sua aplicação com PUML

TL;DR: O C4Model é uma técnica de documentação de arquitetura de software que permite representar sistemas complexos de maneira hierárquica e fácil de entender. Neste artigo, exploraremos como usar o PlantUML para criar diagramas do C4Model e apresentaremos exemplos práticos.

Introdução

O C4Model é uma abordagem para documentação de arquitetura de software que se concentra na comunicação entre as partes interessadas, fornecendo uma visão hierárquica e simplificada do sistema. Composto por quatro níveis de abstração - Contexto, Contêiner, Componente e Código - o C4Model facilita a compreensão da arquitetura e promove a colaboração entre os membros da equipe. Neste artigo, discutiremos como utilizar o PlantUML (PUML) para criar diagramas do C4Model e forneceremos exemplos práticos.

1. O C4Model e o PlantUML

O C4Model é baseado em quatro níveis de abstração que representam diferentes perspectivas do sistema:

  1. Contexto: Mostra a relação do sistema com os usuários e outros sistemas.
  2. Contêiner: Descreve os serviços, aplicativos e bancos de dados que compõem o sistema.
  3. Componente: Detalha os componentes individuais e suas interações dentro de um contêiner.
  4. Código: Representa a implementação real do componente em termos de classes, interfaces e outras construções de programação.

O PlantUML é uma ferramenta de código aberto que permite criar diagramas UML a partir de texto simples. Com sua sintaxe intuitiva, o PlantUML é ideal para criar diagramas do C4Model.

2. Exemplos de diagramas do C4Model com PlantUML

A seguir, apresentamos exemplos de diagramas do C4Model utilizando a sintaxe do PlantUML.

2.1 Diagrama de Contexto

@startuml !define C4_Context https://raw.githubusercontent.com/RicardoNiepel/C4-PlantUML/master/C4_Context.puml !includeurl C4_Context.puml System(systemAlias, "Sistema Exemplo", "Sistema para ilustrar o C4Model") Person(userAlias, "Usuário", "Usuário do sistema") System_Ext(system2Alias, "Sistema Externo", "Outro sistema relacionado") Rel(userAlias, systemAlias, "Interage com") Rel(systemAlias, system2Alias, "Se comunica com") @enduml 
Enter fullscreen mode Exit fullscreen mode

2.2 Diagrama de Contêiner

@startuml !define C4_Container https://raw.githubusercontent.com/RicardoNiepel/C4-PlantUML/master/C4_Container.puml !includeurl C4_Container.puml System_Boundary(systemAlias, "Sistema Exemplo") { Container(container1Alias, "Aplicativo Web", "JavaScript, Angular", "Aplicativo web para usuários") Container(container2Alias, "API", "Java, Spring Boot", "API RESTful") ContainerDb(container3Alias, "Banco de Dados", "MySQL", "Armazena dados do sistema") } Person(userAlias, "Usuário", "Usuário do sistema") Rel(userAlias, container1Alias, "Acessa") Rel(container1Alias, container2Alias, "Consome") Rel(container2Alias, container3Alias, "Lê e grava dados") @enduml 
Enter fullscreen mode Exit fullscreen mode

2.3 Diagrama de Componente

@startuml !define C4_Component https://raw.githubusercontent.com/RicardoNiepel/C4-PlantUML/master/C4_Component.puml !includeurl C4_Component.puml Container_Boundary(container2Alias, "API - Java, Spring Boot") { Component(component1Alias, "Controller", "Spring MVC Rest Controller", "Gerencia solicitações de API") Component(component2Alias, "Service", "Spring Service", "Gerencia a lógica de negócio") Component(component3Alias, "Repository", "Spring Data JPA Repository", "Gerencia o acesso aos dados") } Rel(component1Alias, component2Alias, "Chama") Rel(component2Alias, component3Alias, "Utiliza") @enduml 
Enter fullscreen mode Exit fullscreen mode

3. Conclusão

O C4Model é uma abordagem de documentação de arquitetura de software que permite representar sistemas complexos de maneira hierárquica e fácil de entender. Ao utilizar o PlantUML, é possível criar diagramas do C4Model de forma eficiente, simplificando a comunicação entre os membros da equipe e facilitando a colaboração.

Referências:

  1. Simon Brown. "C4 model - Context, Containers, Components, and Code". Disponível em: https://c4model.com/.
  2. PlantUML. "PlantUML - Open-source tool that uses simple textual descriptions to draw UML diagrams". Disponível em: https://plantuml.com/.
  3. Ricardo Niepel. "C4-PlantUML - PlantUML sprites, macros, and other includes for C4 diagrams". Disponível em: https://github.com/RicardoNiepel/C4-PlantUML.

Nota: Os exemplos de código deste artigo são baseados no repositório C4-PlantUML de Ricardo Niepel.

Top comments (0)