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:

  Recently, I asked what would be the execution result of the following code: using System.Threading.Tasks; using static System.Console; class...
Há tempos sou questionado e “assediado” quanto a possibilidade de ministrar cursos. Entre os temas mais frequentes estão “Arquitetura de...
Este é o primeiro post de uma série onde pretendo compartilhar, com considerável nível de detalhe, como resolver problemas de...
In this post, let’s talk about how to implement Value Types correctly and improve the performance of your applications. The...
Há alguns anos, cheguei, por acaso, a uma palestra do Simon Sinek no TED. Na época, ele ainda era um...
Superficialmente, direito e privilégio são conceitos que se aproximam e, eventualmente, se confundem. Mas, com um pouco de cuidado, ficam...
× Precisa de ajuda?