Domínios falsos e caminhos felizes...
Event Storming é uma técnica de modelagem de grupo rápida, leve, intensa, divertida e útil para acelerar as equipes de desenvolvimento. A ideia de Alberto Brandolini é uma síntese de práticas de aprendizagem em grupo facilitadas da Gamestorming e os princípios do design controlado por domínio (DDD). A técnica não se limita ao desenvolvimento de software. Você pode aplicá-lo a praticamente qualquer domínio técnico ou comercial, especialmente aqueles grandes, complexos ou ambos.
O Event Storming catalisa e acelera o aprendizado em grupo, geralmente atingindo em poucas horas ou dias o que as técnicas de modelagem mais tradicionais nunca fazem - um entendimento comum do domínio em que o software deve operar.
Para entender o Event Storming, primeiro você precisa entender dois termos principais. Um evento de domínio é algo que acontece que interessa a um especialista em domínio. O especialista em domínio não está interessado em bancos de dados, soquetes da Web ou padrões de design, mas no domínio comercial das coisas que precisam acontecer. Eventos de domínio capturam esses fatos de uma maneira que não especifica uma implementação específica.
Mas o que é Event Storming na prática?
EventStorming é um formato de workshop para explorar rapidamente domínios de negócios complexos.
É poderoso: permitiu a mim e a muitos profissionais criar um modelo abrangente de um fluxo completo de negócios em horas, em vez de semanas.
É envolvente: a idéia toda é reunir as pessoas com as perguntas e as pessoas que sabem a resposta na mesma sala e construir um modelo juntos.
É eficiente: o modelo resultante está perfeitamente alinhado com um estilo de implementação de Design Orientado a Domínio (particularmente adequado a uma abordagem de Event Sourcing) e permite uma rápida determinação dos limites de Contexto e Agregado.
É fácil: a notação é ultra-simples. Nenhuma UML complexa que possa separar os participantes do centro da discussão.
É divertido: eu sempre me diverti muito liderando as oficinas, as pessoas estão energizadas e entregam mais do que esperavam. As perguntas certas surgem e a atmosfera é a certa.
Como funciona
Aqui estão as etapas básicas:
- Convide as pessoas certas para o workshop. Idealmente, você desejará uma grande sala de reuniões com 6 a 8 pessoas, com a mistura certa daqueles que sabem as perguntas a serem feitas (e que têm curiosidade de ouvir a resposta) e aqueles que sabem as respostas.
- Forneça espaço de modelagem ilimitado. Frequentemente, problemas complexos não são analisados adequadamente porque não há espaço suficiente para ver o problema. Seu problema é maior que o seu quadro branco, e daí? Minha solução é invadir o espaço de modelagem usando o que estiver disponível (minha ferramenta favorita é um rolo de papel Ikea) para se livrar da limitação de espaço.
- Explore o domínio a partir de Eventos. Um evento é algo significativo que acontecera no software . Ele pode ser facilmente traduzido em software , mas o valor real aqui é que ele pode ser rapidamente compreendido por pessoas não técnicas. Um evento pode ser o antecessor do seguidor de outro. Coloque todos eles em sua superfície de modelagem (a convenção é usar postit laranja para essa finalidade) de acordo com uma linha do tempo.
- Explore a origem dos eventos. Alguns eventos são a conseqüência direta de uma ação do usuário -> representá-lo como um comando usando uma postit azul . Outros são a consequência de algo acontecendo em sistemas externos ou do passar do tempo; usaremos um postit roxo para eles. Em alguns outros casos, teremos eventos que serão a conseqüência direta de alguns outros eventos. Simplesmente colocaremos os dois eventos juntos.
- Procure por agregados. Em vez de definir agregados a partir do código, adotamos uma abordagem externa: o agregado é a parte do sistema que recebe comandos e decide se deve executá-los ou não, produzindo um Evento de Domínio .
Metas Bônus
Estas são as etapas básicas do formato original EventStorming. No entanto, você pode identificar algumas metas de bônus ao longo do caminho, se a discussão se tornar quente. Aqui está uma lista dos possíveis alvos de bônus que vale a pena considerar como um desvio gratificante da rota padrão.
- Explorando subdomínios: alguns especialistas em domínio mostrarão mais conhecimentos em uma área, deixando outras partes do domínio para outras. Diferentes áreas de responsabilidade são muito bem mapeadas para diferentes subdomínios ou partes da carne de porco, se você já foi exposto a minhas apresentações no passado.
- Explorando contextos limitados: durante a discussão, algumas áreas de conflito podem surgir. Desenvolvedores e facilitadores com uma mentalidade DDD identificarão diferentes interpretações dos termos, como um gatilho para a discussão sobre o significado. Pode ser um bom momento para traçar os limites entre os vários modelos consistentes que coexistirão no seu domínio.
- Esboçando Personas do Usuário: ao falar sobre comandos, a conversa tende a se direcionar para o contexto em que o comando é emitido e os objetivos da pessoa que acionou a ação. Esta é uma informação valiosa, não estrague tudo! Você pode expandir a notação para incluir pequenos postit amarelos como personas.
- Esboçando os principais testes de aceitação: se a discussão começar a girar em torno de casos de esquina ou cenários ambíguos, não há melhor maneira de remover a ambiguidade do que definir um teste de aceitação claro. Nem todos os cenários precisam ser documentados dessa maneira (quero dizer, não neste workshop , principalmente por motivos de tempo), mas se eles são um desempate em algumas áreas, não há razão para não capturar o conhecimento emergente no momento.
- Chave de esboço Ler artefatos do modelo: para alguns cenários, o que os usuários veem se é muito mais importante do que o que o sistema faz. Se uma tela, tabela ou gráfico é particularmente valiosa para um determinado usuário, apenas desenhe-o em um adesivo e coloque-o próximo ao comando ao qual está associado. U
Juntar tudo é muita coisa. Lembre-se de que o objetivo do workshop é aprender o máximo possível no menor tempo possível. Convidamos pessoas-chave para o workshop e não queremos perder tempo.
Portanto, quando se trata desses objetivos de bônus, esteja pronto para usar o tempo da maneira mais eficiente: você obtém uma dica valiosa, basta esboçá-la e colocar no postit correspondente no ponto de acesso. Não conduza a discussão para a completude do modelo: o modelo será enorme, concluí-lo pode ter pouco valor ou até parecer assustador para alguns participantes.
Adotar a incompletude tornará o workshop menos chato e mais proveitosa.
Como começo a usar o Eventstorming?
Realizar um experimento não é tão difícil. Tudo o que você precisa é:
- uma sala adequada , silenciosa e grande o suficiente para conter a superfície de modelagem (se o tempo permitir, a modelagem ao ar livre também pode ser uma opção, mas o vento pode ser um grande bloqueador);
- uma superfície gravável , provavelmente um rolo de papel Ikea (codinome Måla, você pode encontrá-lo na área infantil).
- MUITOS postit's , em sabores diferentes (o conjunto básico são postits amarelo claro, laranja, azul e roxo);
- marcadores de trabalho, idealmente um por participantes mais backup;
- fita adesiva , por precaução;
- as pessoas certas.
- um facilitador .
Você pode criar um protótipo da execução em uma sandbox (alguns Grupos de Usuários são perfeitos para isso, eles adoram experimentos) antes de envolver seu chefe do tipo Darth Vader. Você também pode participar da crescente comunidade de praticantes e experimentadores.
Senior Developer at LBCA | Lee, Brock, Camargo Advogados
4 aMuito legal Marcão. Parabéns.