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:
- Contexto: Mostra a relação do sistema com os usuários e outros sistemas.
- Contêiner: Descreve os serviços, aplicativos e bancos de dados que compõem o sistema.
- Componente: Detalha os componentes individuais e suas interações dentro de um contêiner.
- 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
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
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
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:
- Simon Brown. "C4 model - Context, Containers, Components, and Code". Disponível em: https://c4model.com/.
- PlantUML. "PlantUML - Open-source tool that uses simple textual descriptions to draw UML diagrams". Disponível em: https://plantuml.com/.
- 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)