DEV Community

Pedro Pietroluongo
Pedro Pietroluongo

Posted on • Edited on

6

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.

Postmark Image

Speedy emails, satisfied customers

Are delayed transactional emails costing you user satisfaction? Postmark delivers your emails almost instantly, keeping your customers happy and connected.

Sign up

Top comments (0)

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay