Representando o contexto de um sistema de software com C4 model

No modelo C4, o diagrama de contexto descreve, com um nível de abstração bem elevado, um sistema de software indicando suas responsabilidades, seus principais usuários (humanos ou não) e suas principais dependências

Este diagrama é muito útil para reforçar acordos, principalmente com áreas não técnicas, sobre as expectativas, em alto nível, que precisam ser atendidas. Também é excelente para comunicar os objetivos do sistema para todos os envolvidos no time, bem como explicitar as principais interações desse sistema.

Como elaborar o diagrama de contexto

O primeiro passo para elaborar um diagrama de contexto é representar o sistema em si. Isso é feito através de uma caixa que deverá ficar no centro do diagrama. Essa caixa deve conter o nome do sistema e uma descrição em alto nível do que o sistema faz.

Na sequência, representamos todas as pessoas (geralmente personas e/ou papéis) e outros software que acionam o sistema que estamos descrevendo. Geralmente, uso um código de cor para indicar esses elementos e os desenho na parte superior do diagrama.

Depois, representamos todas as pessoas (personas e/ou papéis) e outros software que são acionados pelo sistema que estamos descrevendo. Também é recomendado usar um código de cor para indicar esses elementos. Preferencialmente, represento esses sistemas na parte inferior do diagrama.

Finalmente, adicionamos setas direcionadas (partindo de quem está acionando, chegando a quem está sendo acionado), indicando em poucas palavras a natureza da relação.

Importante destacar que o objetivo não é fazer uma descrição exaustiva (isso poderá ser feito mais tarde). A ideia central é indicar somente as principais relações.

Em cenários mais específicos, podemos adicionar um contorno pontilhado indicando quais sistemas são internos e quais são externos a organização.

Embora não seja o mais comum, algumas interações entre os sistemas que acionam ou são acionados por aquele que estamos descrevendo também podem ser representadas.

Lições do Campo

Embora seja um diagrama muito simples, o processo de composição do diagrama de contexto tem se relevando útil e desafiador.

Por incrível que pareça, é difícil para as organizações relacionar quais são os principais “acionadores” e “acionados” pelos diversos sistemas. Também costuma ser bem difícil criar uma descrição sucinta sobre o que um sistema faz ou deve fazer.

O maior ganho desse diagrama tem sido a melhoria da comunicação entre as partes.

Hora de agir

O diagrama de contexto é o primeiro dos 4 tipos de diagramas indicados pelo C4 model. Comece por ele.

O diagrama de contexto pode ser desenhado quando estamos criando um novo sistema de software, mas também é muito útil para sistemas já desenvolvidos. Convido você a tentar desenhar um diagrama de contexto para o sistema onde está atuando. Compartilhe suas impressões nos comentários.

Compartilhe este insight:

6 respostas

  1. Muito interessante, o emprego de linguagem ubíqua e o tratamento de complexidade que é o papel principal da arquitetura no meu entender.
    Não achei um software especifico que se aplica ao modelo, tem alguma sugestao de ferramenta para construir os diagramas ? Deixo aqui o draw.io.

  2. Grande Elemar! Excelente conteúdo, como sempre.

    Tenho uma dúvida: em um projeto de software, qual seria o local de armazenamento que você recomendaria para esses artefatos de documentação?

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Elemar Júnior

Sou fundador e CEO da EximiaCo e atuo como tech trusted advisor ajudando diversas empresas a gerar mais resultados através da tecnologia.

Elemar Júnior

Sou fundador e CEO da EximiaCo e atuo como tech trusted advisor ajudando diversas empresas a gerar mais resultados através da tecnologia.

Mais insights para o seu negócio

Veja mais alguns estudos e reflexões que podem gerar alguns insights para o seu negócio:

Let’s have fun with prime numbers? In this post, I would like to share some results I got from using...
No último post, solicitei uma explicação para o resultado da execução do código que segue: using System; using System.Threading.Tasks; using...
RavenDB utiliza Lucene como motor de indexação. Isso significa suporte natural a full-text search que pode ser facilmente habilitado a partir da...
When designing systems that need to scale you always need to remember that using better resources could help you to...
Quando iniciei a EximiaCo, busquei implantar, na empresa, características minhas que valorizava e que achava que poderiam fazer diferença. Sabia,...
No post anterior, compartilhei um exemplo de como containers podem nos ajudar a deixar o código mais claro sobre os...
× Precisa de ajuda?