C4 model: modelo de documentação de arquitetura

Definição

O C4 model foi criado, entre 2006 e 2011, pelo engenheiro Simon Brown com base nos modelos de documentação 4+1 e UML.

Esse modelo surgiu com o propósito de auxiliar a resolução de problemas de documentação de arquitetura complexas, de uma forma simples e eficiente, diferentemente de modelos como o documento de requisitos de sistemas o qual é extremamente verboso e de pouca efetividade na comunicação das informações presentes nele.

Camadas

O C4 model é dividido em 4 camadas em que cada um tem um nível diferente de detalhes e finalidade.

"Uma melhor alusão seria com um Google Maps, no qual se pode dar um zoom para diminuir ou ampliar o desenho arquitetural. Se em um mapa, por exemplo, temos Continente, País, Estado e Cidade" - Zup

O nível de detalhes e informações aumentam em ordem crescente:

  1. Contexto

    Focado em mostrar de forma sucinta as interações de forma macro, dando enfoque às comunicações e dependências entre sistemas e usuários que compõem e interagem com o software.

    Um bom termômetro para verificar tais fundamentos é que o diagrama deve ser compreendido de forma direta por pessoas, tanto no nível técnico quanto de negócio.

  2. Container

    Tem a finalidade de mostrar um determinado sistema com mais detalhes, descrevendo os containers que o compõem.

    Neste nível deve-se aprofundar na arquitetura e tecnologias utilizadas.

    Um container pode ser uma aplicação web, um database, um sistema de arquivos, entre outros.

  3. Componente

    Tem a finalidade de mostrar um determinado container com mais detalhes, detalhando os processos e interações que o compõem.

    Nesta camada deve-se apresentar as informações sobre interações, responsabilidades e tecnologias utilizadas.

    OBS: os diagramas dessa camada é recomendado apenas em casos que os mesmos geram valor para a equipe, juntamente com o comprometimento em mantê-los.

  4. Código

    Neste último nível, mostra a nível de código como cada componente é implementado, por meio de classes documentadas no diagrama UML.

    Geralmente, essa camada não é recomendada, exceto em situações em que há uma complexidade muito elevada de um componente.

    Entretanto, em caso de necessidade de utilizar essa camada, no diagrama UML deve apresentar apenas as relações entres as entidades do componente, como se pode ver a seguinte imagem:

Casos de uso

A utilização do C4 model é recomendado em todos os cenários, visto que tal ferramenta proporciona uma visão clara do projeto, tanto a nível técnico quanto de negócio, pois um bom software é baseado em um boa arquitetura e sua respectiva documentação.

Ferramentas

É recomendado a utilização de ferramentas que garantem todos os benefícios do versionamento, ou seja, um ferramenta que converta os diagramas em código (também conhecido como docs as code).

Projetos que utilizam C4 model

É um boa prática, disponibilizar a documentação C4 model online via site.