DDD: Domain Storytelling

DDD: Domain Storytelling


Entenda o que é um Domain Storytelling e como você pode utilizar uma linguagem pictográfica para montar sua narrativa de domínio.

Domain Storytelling

O Domain Storytelling (Narrativa de Domínio) são métodos e técnicas que utilizaremos para entender melhor nossos Domínios e Subdomínios, através do compartilhamento da visão de várias pessoas com níveis de conhecimento diferentes em um único documento, com o objetivo de esclarecer o processo atual da empresa e seus limites.

Além disso, utilizamos a Narrativa de Domínios como uma técnica colaborativa, que consiste em nos ajudar a compreender a maneira como diferentes pessoas com pontos de vista distintos, trabalham juntas e constroem uma narrativa coesa e fluída a respeito tudo o que fazem, sendo primordial para conseguirmos desenhar o software.

Stefan Hofer e Henning Schwenter, em seu livro “Domain Storytelling: A Collaborative, Visual, and Agile Way to Build Domain-Driven Software”, dizem o seguinte:

“Contar histórias ainda funciona na era do software. Em nossa experiência, contar e ouvir histórias ajuda a:

  • Entender o Domínio;
  • Estabelecer uma linguagem entre Domain Experts e os IT Experts;
  • Evitar mal-entendidos;
  • Esclarecer os requisitos de Software;
  • Implementar o Software corretamente;
  • Estruturar o Software;
  • Desenhar processos de negócio, suportados por software, que sejam viaveis.”
    (HOFER-SCHWENTER, 2021, P.31)

A linguagem Pictográfica

Para conseguirmos realizar o desenho dessa narrativa de domínio, de forma coeasa e legível, a partir da nossa Equipe de Trabalho iremos utilizar vários símbolos de objetos e conceitos, além de nomear e numerar as relações entre eles.

Como exemplo podemos citar a narrativa de domínio abaixo, realizada na plataforma on-line Egon.io, que demonstra o processo de: criação, envio e recebimento de um trabalho.

1 - domain-storytelling

Com a finalizade de facilitar o entendimento das etapas contidas nessa Narrativa de Domínio, irei dividir a explicação em numerações, baseadas nos Números Sequenciais (que são parte da linguagem pictográfica).

  1. Início: O processo começa no ator chamado Professor que realiza uma atividade de criar um objeto de trabalho chamado Trabalho (representando um trabalho escolar) onde é definida uma anotação que especifica onde ele deve ser criado, assim como onde deverá ser entregue, para o ator Aluno.

  2. Meio: O ator Aluno faz a atividade de realizar o objeto de trabalho chamado Trabalho (que foi entregue a ele pelo ator Professor).

  3. Fim: O ator Aluno tendo finalizado o objeto de trabalho Trabalho faz a atividade de entregar o objeto de trabalho Trabalho para o ator Professor.

Símbolos e Conceitos

Na explicação das três etapas definidas durante a narrativa de domínio na sessão anterior, foram utilizados vários símbolos e conceitos que estão sendo explicados abaixo. Porém devido a simplicidade da narrativa acima, nem todos eles foram utilizados.

  1. Ator: pode ser uma pessoa, um grupo de pessoas um objeto ou até mesmo um sistema. Sendo nomeados de acordo com suas respectivas funções.
  2. Objeto de Trabalho: podem ser documentos, objetos e interações físicas e digitais. Os atores interagem com os objetos de trabalho para criar o fluxo da narrativa.
  3. Atividades: São representadas pelas setas, sempre nomeadas pelas ações que estão sendo tomadas. Sua direção indiga o fluxo da atividade.
  4. Números sequenciais: São os números presentes nas atividades, que servem para nos guiar por meio da história.
  5. Anotações: São informações importantes, limitações na atividade, ações que devem ser tomadas, gatilhos para outros processos ou eventos etc.
  6. Grupos: Podem ser ações repetidas constantemente, subdomínios, limitações do processo etc. São representados por linhas de limite no nosso design.

No entanto isso não é a única coisa que podemos fazer dentro da linguagem pictográfica, também podemos adiconar cores como forma de dar ênfase/destacar uma particularidade em nossa narrativa.

Segundo exemplo

Neste segundo exemplo temos uma narrativa de domínio um pouco mais complexa, pois agora conta com cinco atividades diferentes ao invés das três do exemplo anterior. Veja se consegue descrever o que está acontecendo, utilizando os símbolos e conceitos corretos.

2 - domain-storytelling

Cenários

Outro ponto muito importante são as variações que um mesmo cenário pode ter, mas a linguagem pictográfica não trata uma pequena variação como uma condicional (if-else). Sempre que houver uma variação no cenário atual deverá ser criado um novo cenário para acomodar essa diferença.

Realidade vs Desejo

Até agora falamos sobre ouvir e escrever a história do Domain Expert, porém uma história pode ter muitas versões. Aqui é importante consolidar as histórias que estamos escutando para entender se o que estamos mapeando é o processo que ocorre hoje na empresa, ao invés do que o Domain Expert gostaria que fosse feito.

Mapear histórias é desenhar um processo para que seja criada uma solução. Quando ouvimos o nosso Domain Expert, ele pode nos contar uma história, tal como a vê, de acordo com o seu dia a dia. Esta é a realidade do usuário.

Porém, tal como diria Heráclito de Éfeso:

“Ninguém entra em um mesmo rio uma segunda vez, pois, quando isso acontece já não se é o mesmo, assim como as águas que já serão outras. (SUPERINTERESSANTE, 2022)“

A fase acima pode ser usada para entender a mente do nosso Domain Expert, pois, ao descrever a história, a pessoa pode realizar uma autocrítica e já pensar em novas forma de como realizar aquela tarefa ou processo. Com isso, temos duas histórias: uma que é a nossa realidade atual e a nova realidade ou futura.

Vale ressaltar aqui que a solução que vamos criar não “nascerá” imediatamente com a nova realidade, mas pode ser algo que será implementado no futuro, no desenrolar do desenvolvimento. Isso pode ser melhor desenhado utilizando metodologias ágeis, por exemplo.

Equipe de Trabalho

Agora que mapeamos a história, vamos para o próximo passo, colocar em prática. Como pessoas desenvolvedoras, não temos conhecimento do que virá, ou seja, qual a história do Domínio, então precisamos montar um time que nos ajudará com essa tarefa.

O passo mais importante agora é selecionar as “pessoas certas” para integrarem o time, pessoas que têm relação com Domínio, pessoas que não contribuem com a história.

Uma questão do time é a seguinte:

  1. Domain Experts: Quantos forem necessários para contar a história.
  2. Ouvintes: todos que estão dispostos a aprender sobre a história, normalmente o time de desenvolvimento e mais alguns agregados.
  3. Moderador: que vai conduzir as conversas, criando as lógicas de perguntas e mantendo o assunto alinhado com o que se quer atingir.
  4. Modelador: que vai criar a história em linguagem pictogrática e fazer as devidas anotações.

Domínios Puros

Um domínio puro nada mais é do que a utilização do Domain Storytelling, mosntrando as interações entre atores, sem especificar quaisquer tecnologias que estão sendo utilizadas, seja para troca ou cadastro de informações.

domain-storytelling-pure

Na imagem acima, é possível ver que o processo foi mapeado mas não há o menor indício de onde esse objeto de trabalho chamado Atividade foi criado e avaliado.

Domínios Digitalizados

Os domínios digitalizados, assim como os domínios puros, mostram as interações entre os atores, seu diferencial é que ele também exibe a tecnologia que está sendo utilizada para cada interação dos atores. Conforme mostrado na imagem abaixo.

domain-storytelling-digitalized

As diferenças entre um Domínio Puro e um Domínio Digitalizado não se resumem a adição da tecnologia utilizada no diagrama, mas ela nos traz uma perspectiva totalmente diferente de como trabalharemos com o sistema.

Pois com o domínio puro podemos dizer que não há um sistema ao qual trabalhar, sendo necessário a criação de um, em quanto com o dimínio digitalizado já existe um sistema, do qual nós talvez poderemos reaproveitar algumas partes.

← Artigos