Explicitando os Componentes de um Contêiner usando C4 Model

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:

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:

Geralmente, quanto maior é uma organização, menos relevante é a qualidade das ideias ou das iniciativas. Nelas, o fundamental para...
Tentando ser “Júnior” Minha carreira como amador remunerado em programação começou em 1992. Eu tinha quase 13 anos e era...
What should be the execution result of the following code? using System; using System.Threading.Tasks; using static System.Console; using static System.IO.File;...
Há tempos, venho pensando sobre “mérito”. Superficialmente, quanto dos meus resultados, positivos e negativos, se devem exclusivamente a mim? Descartando...
Pimenta nos olhos dos outros é refresco. Quando não é pela satisfação sádica proporcionada pela dor alheia é pelo alívio...
Desenvolver software profissionalmente, em um ambiente onde a finalidade é lucro, implica em ampliar ganhos e/ou reduzir custos. O resultado...

Curso Reputação e Marketing Pessoal

Masterclasses

01

Introdução do curso

02

Por que sua “reputação” é importante?

03

Como você se apresenta?

04

Como você apresenta suas ideias?

05

Como usar Storytelling?

06

Você tem uma dor? Eu tenho o alívio!

07

Escrita efetiva para não escritores

08

Como aumentar (e manter) sua audiência?

09

Gatilhos! Gatilhos!

10

Triple Threat: Domine Produto, Embalagem e Distribuição

11

Estratégias Vencedoras: Desbloqueie o Poder da Teoria dos Jogos

12

Análise SWOT de sua marca pessoal

13

Soterrado por informações? Aprenda a fazer gestão do conhecimento pessoal, do jeito certo

14

Vendo além do óbvio com a Pentad de Burkle

15

Construindo Reputação através de Métricas: A Arte de Alinhar Expectativas com Lag e Lead Measures

16

A Tríade da Liderança: Navegando entre Líder, Liderado e Contexto no Mundo do Marketing Pessoal

17

Análise PESTEL para Marketing Pessoal

18

Canvas de Proposta de Valor para Marca Pessoal

19

Método OKR para Objetivos Pessoais

20

Análise de Competências de Gallup

21

Feedback 360 Graus para Autoavaliação

22

Modelo de Cinco Forças de Porter

23

Estratégia Blue Ocean para Diferenciação Pessoal

24

Análise de Tendências para Previsão de Mercado

25

Design Thinking para Inovação Pessoal

26

Metodologia Agile para Desenvolvimento Pessoal

27

Análise de Redes Sociais para Ampliar Conexões

Lições complementares

28

Apresentando-se do Jeito Certo

29

O mercado remunera raridade? Como evidenciar a sua?

30

O que pode estar te impedindo de ter sucesso

Recomendações de Leituras

31

Aprendendo a qualificar sua reputação do jeito certo

32

Quem é você?

33

Qual a sua “IDEIA”?

34

StoryTelling

35

Você tem uma dor? Eu tenho o alívio!

36

Escrita efetiva para não escritores

37

Gatilhos!

38

Triple Threat: Domine Produto, Embalagem e Distribuição

39

Estratégias Vencedoras: Desbloqueie o Poder da Teoria do Jogos

40

Análise SWOT de sua marca pessoal

Inscrição realizada com sucesso!

No dia da masterclass você receberá um e-mail com um link para acompanhar a aula ao vivo. Até lá!

A sua subscrição foi enviada com sucesso!

Aguarde, em breve entraremos em contato com você para lhe fornecer mais informações sobre como participar da mentoria.

Crie sua conta

Preencha os dados para iniciar o seu cadastro no plano anual do Clube de Estudos:

Crie sua conta

Preencha os dados para iniciar o seu cadastro no plano mensal do Clube de Estudos:

× Precisa de ajuda?