BT

Disseminando conhecimento e inovação em desenvolvimento de software corporativo.

Contribuir

Tópicos

Escolha a região

Início Notícias Refletindo sobre o design de sistemas Top-Down ou Bottom-Up: Vaughn Vernon na MicroXchg Berlin

Refletindo sobre o design de sistemas Top-Down ou Bottom-Up: Vaughn Vernon na MicroXchg Berlin

Favoritos

O design do software deve ser orientado por uma abordagem top-down ou bottom-up? Vaughn Vernon fez a pergunta em sua apresentação na MicroXchg em Berlin, onde discutiu diferentes abordagens para o design de software, o modelo de ator, o design reativo orientado a domínio e a importância de uma arquitetura emergente.

Para Vernon, fundador da vlingo e autor do livro Implementing Domain-Driven Design, os dois conceitos mais importantes do DDD (Domain-Driven Design, design orientado a domínio) são o contexto delimitado e a linguagem onipresente. Existem ferramentas adicionais de modelagem estratégica e tática, além de outros tipos de ferramentas, mas quando se discute o DDD, esses dois conceitos são a base de tudo. Se a sua perspectiva de DDD é sobre entidades, objetos de valor, agregados e coisas assim, Vernon garante que você perdeu a essência do DDD.

DDD também é sobre aprendizado. Se começar um projeto de software sem a abordagem que precisa aprender, e tentar usar o DDD como um conjunto de abordagens táticas para criar objetos e funções, provavelmente o resultado será uma confusão. Vernon, teve experiências frequentes com , arquitetos e desenvolvedores muito experientes começando novos projetos a partir da perspectiva de que já sabiam tudo e tentaram resolver todos os problemas sozinhos.

Aprendizagem gera conhecimento e conhecimento muda tudo.

Na experiência de Vernon, existem opiniões fortes sobre se um sistema deve ser desenvolvido top-down ou bottom-up, às vezes chega-se ao ponto de ser perigoso fazer a coisa errada, levando a um sistema confuso. Para ele, porém, o risco está em tentar saber tudo de antemão, está relacionado ao pensamento em cascata.

Para Vernon, as perspectivas top e bottom são estratégias de aprendizado e ordenação de conhecimento. Ambos podem ser bastante úteis - são apenas estilos diferentes de pensamento. O pensamento top-down é principalmente sobre o que já se conhece. Estamos decompondo em etapas o nosso conhecimento, com cada problema parecendo uma caixa preta - sendo o conteúdo é desconhecido. Mas, em algum momento, ficaremos presos e, em seguida, devemos mudar para uma perspectiva bottom-up a fim de tentar descobrir o que não sabemos. Agora estamos criando pequenos pedaços de softwares, que podem ser atores, que eventualmente se tornarão subsistemas em um sistema maior, algo que Vernon vê como uma abordagem emergente.

Vernon compara uma perspectiva de alto nível ao uso de design estratégico. Começamos observando a troca de informações entre subsistemas, o que leva à linguagem publicada de um contexto limitado. Isso, por sua vez, levará ao modelo mental falado pela equipe que trabalha neste contexto delimitado. Esse modelo mental é traduzido como a linguagem onipresente dentro do contexto. Isto dá a seguinte ordem de trabalho:

  1. Intercâmbio de informações
  2. Idioma publicado
  3. Modelo mental falado
  4. Linguagem ubíqua

Se adotarmos uma perspectiva up-bottom, estaremos pensando em termos do modelo - uma abordagem de design tático. Agora, uma equipe precisa discutir o que não sabe, criando um modelo mental e uma linguagem onipresente. A linguagem onipresente terá então uma influência na linguagem publicada. Finalmente, podemos trocar informações entre subsistemas usando o idioma publicado. Isto dá uma ordem de trabalho quase reversa:

  1. Modelo mental falado
  2. Linguagem ubíqua
  3. Idioma publicado
  4. Intercâmbio de informações

Vernon enfatiza que ambas as perspectivas são importantes, mas se estivermos pensando em contextos limitados com suas linguagens onipresentes, provavelmente está adotando uma abordagem bottom-up. Em seguida, é importante saber qual é o domínio principal de toda a sua solução. Caso contrário, poderemos muito bem colocar nossos esforços no lugar errado. Se precisarmos de uma perspectiva top-down em algum momento, poderemos definir uma interface como um espaço reservado para algo com o qual ainda não entendemos como iremos nos comunicar. Posteriormente, esse espaço reservado pode ser substituído por uma implementação em um contexto limitado. Ao fazer isso, também mudaremos para uma perspectiva bottom-up porque agora precisamos de um profundo entendimento do modelo de domínio dentro desse contexto.

Uma abordagem bottom-up também é uma abordagem emergente que leva a uma arquitetura emergente e, para Vernon, é a mesma arquitetura enxuta ou arquitetura e design ágil. Tentar tornar sua arquitetura imóvel não funcionará; Vernon acredita que ou ajustamos nossa arquitetura ou iremos falhar. Se sabemos o que estamos fazendo, a arquitetura surgirá, existem vários estilos e padrões arquitetônicos que podem nos ajudar a ter sucesso. Um estilo de arquitetura que se encaixa na abordagem emergente é a arquitetura hexagonal, criada por Alistair Cockburn (também conhecida como ports and adapters e clean architecture). O núcleo nesse estilo é o modelo de domínio, cercado pela camada de aplicativo. O mais externo é a camada de infraestrutura que fornece entrada e saída por meio de portas e adaptadores. Vernon observa que uma das principais vantagens dessa arquitetura é que cada adaptador pode ser criado e testado isoladamente. ó precisamos entender um adaptador quando realmente precisar dele, tornando essa arquitetura muito ágil e emergente. Um exemplo é decidir qual tipo de armazenamento de dados usaremos, o que pode ser atrasado até aprendermos mais sobre o assunto.

Ele concluiu referindo-se à vlingo, a plataforma reativa de código aberto amigável a DDD baseada no modelo de ator em que está trabalhando. Vernon acredita que ela se encaixa bem com as idéias que expressou em sua apresentação.

A maioria das apresentações na conferência foi gravada e estará disponível nos próximos meses.

Avalie esse artigo

Relevância
Estilo/Redação

Conteúdo educacional

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

BT