Explicitando os Componentes de um Contêiner usando C4 Model

Elemar Júnior

Já sabemos como explicitar as relações de um sistema com os demais (diagrama de contexto). Também já sabemos como explicitar a macroestrutura de um sistema através de seus contêineres (diagrama de contêineres). Agora, é hora de entendermos um pouco melhor o funcionamento de cada contêiner, utilizando o modelo C4, explicitando seus  componentes.

Contextualizando, um sistema é composto por um conjunto de contêineres. Cada contêiner é composto por um conjunto de componentes.

O que é um Componente?

Simon Brown, criador do C4 Model, explica:

Um componente é um conjunto de funcionalidades encapsuladas atrás de uma interface bem-definida.

Em linguagens Orientadas a Objeto, um componente é implementado através de uma ou mais classes. Na prática, o componente está, conceitualmente, um nível acima, em abstração, da definição de uma classe.

De forma geral, em uma aplicação MVC, são componentes: controllers, repositórios (que são serviços de domínio), demais serviços de domínio e serviços de infraestrutura.

Como elaborar um Diagrama de Componentes?

O diagrama de componentes é o “terceiro nível de detalhe” do modelo C4. Logo, o ponto de partida para elaboração do diagrama de componentes é o diagrama de contêineres.

Partindo do diagrama de contêineres, devemos substituir a caixa que representa um contêiner por uma caixa vazada, com contorno pontilhado e sem preenchimento. O nome do contêiner deverá estar presente na parte inferior esquerda da caixa. Os diversos componentes do contêiner serão representados no interior dessa caixa.

Cada componente deverá ser representado por uma caixa onde deverá estar presente o nome do componente, a abstração empregada (controller, por exemplo) e um breve descritivo de sua responsabilidade. Por convenção, devemos usar um tom de cor um pouco mais claro para representar um componente do que aquele que usamos para representar o contêiner.

Com os componentes representados, adicionamos/atualizamos setas direcionadas (partindo do componente que está acionando, chegando àquele que está sendo acionado), indicando em poucas palavras a natureza da relação.

Finalmente, devemos atualizar as setas direcionadas relacionando elementos externos ao sistema/contêiner de forma que apontem especificamente para o componente que implementa a relação dentro do contêiner.

Mais uma vez, não devemos nos preocupar em fazer uma descrição exaustiva de todos os componentes, sobretudo de suas relações.

Por questões de simplificação, devemos manter, fora da caixa que delimita o contêiner, apenas outros contêineres e sistemas externos com relacionamento direto ao contêiner que estamos detalhando.

De forma ilustrativa, podemos considerar o  exemplo desenvolvido por Brown:

Lições do campo

O diagrama de componentes costuma ser o mais “fácil” para o time técnico. Entretanto, em sua elaboração, acabam aparecendo responsabilidades para um contêiner que não estavam previstas no diagrama de contêiner (nível anterior de abstração). Aliás, percebe-se relação com sistemas externas que não haviam sido previstas.

Na prática, nesse ponto, chegamos em um momento onde começamos a revisitar os modelos e, de fato, ganhar compreensão sobre o sistema que está sendo explicitando.

Não havia deixado explícito até aqui, mas, sendo uma ferramenta de comunicação, os diagramas do modelo C4 são produzidos em iterações.

Hora de Agir

O diagrama de componentes é o terceiro dos 4 tipos de diagramas indicados pelo C4 model. A produção não é tão custosa, aliás, costuma ser a mais simples para o time técnico e os ganhos são enormes. Sobretudo, para identificar aspectos que não haviam surgido até então. Em outras palavras, nesse nível chegamos a um ciclo de refinamento.

Tente desenhar um diagrama de componentes para um dos contêineres de um sistema onde está atuando. Compartilhe suas impressões nos comentários.

Logo abaixo, há uma relação dos posts já publicados nessa série. Se ainda não os viu, recomendo a leitura.

Compartilhe este insight:

Comentários

Participe deixando seu comentário sobre este artigo a seguir:

Subscribe
Notify of
guest
0 Comentários
Inline Feedbacks
View all comments

AUTOR

Elemar Júnior
Fundador e CEO da EximiaCo atua como tech trusted advisor ajudando empresas e profissionais a gerar mais resultados através da tecnologia.

NOVOS HORIZONTES PARA O SEU NEGÓCIO

Nosso time está preparado para superar junto com você grandes desafios tecnológicos.

Entre em contato e vamos juntos utilizar a tecnologia do jeito certo para gerar mais resultados.

Insights EximiaCo

Confira os conteúdos de negócios e tecnologia desenvolvidos pelos nossos consultores:

Arquitetura de Dados

Insights de um DBA na análise de um plano de execução

Especialista em performance de Bancos de Dados de larga escala
Arquitetura de Software

Estratégias para modernização do legado

Desenvolvedor .NET/NodeJs e especialista em Kafka com experiência em startups e grandes empresas
Infraestrutura e Nuvem

Migração para a nuvem, mais do que mudança tecnológica, implica em mudança da cultura organizacional

Engenheiro de nuvem, arquiteto de software e especialista em Containers e Devops

Acesse nossos canais

Simplificamos, potencializamos e aceleramos resultados usando a tecnologia do jeito certo

EximiaCo 2022 – Todos os direitos reservados

0
Queremos saber a sua opinião, deixe seu comentáriox
()
x

Explicitando os Componentes de um Contêiner usando C4 Model

Para se candidatar nesta turma aberta, preencha o formulário a seguir:

Condição especial de pré-venda: R$ 14.000,00 - contratando a mentoria até até 31/01/2023 e R$ 15.000,00 - contratando a mentoria a partir de 01/02/2023, em até 12x com taxas.

Tenho interesse nessa capacitação

Para solicitar mais informações sobre essa capacitação para a sua empresa, preencha o formulário a seguir:

Tenho interesse em conversar

Se você está querendo gerar resultados através da tecnologia, preencha este formulário que um de nossos consultores entrará em contato com você:

O seu insight foi excluído com sucesso!

O seu insight foi excluído e não está mais disponível.

O seu insight foi salvo com sucesso!

Ele está na fila de espera, aguardando ser revisado para ter sua publicação programada.

Tenho interesse em conversar

Se você está querendo gerar resultados através da tecnologia, preencha este formulário que um de nossos consultores entrará em contato com você:

Tenho interesse nessa solução

Se você está procurando este tipo de solução para o seu negócio, preencha este formulário que um de nossos consultores entrará em contato com você:

Tenho interesse neste serviço

Se você está procurando este tipo de solução para o seu negócio, preencha este formulário que um de nossos consultores entrará em contato com você:

× Precisa de ajuda?