event modeling

Event modeling: Como essa abordagem de desenvolvimento funciona

Event modeling é um método utilizado no desenvolvimento de software para descrever sistemas que se baseiam em eventosEspecificamenteesse método omite detalhes temporários e analisa o que está armazenado de forma duradoura e o que o usuário consegue ver em um determinado momento. Estes eventos, organizados em uma linha do tempo formam a descrição do sistema. 

Uma boa abordagem de desenvolvimento de software passa pela modelagem. Existem diversas técnicas que você pode utilizar, como a modelagem de dados, diagramas diversos (como diagramas de fluxo de dados) ou a modelagem de objetos, por exemplo.  

Recentemente, com o crescimento de sistemas orientados a eventos (nos quais os componentes de captura, comunicação, processamento e persistência de eventos formam a estrutura básica da solução) e o uso de ferramentas como o Kafka (plataforma open-source de processamento de streamsevent modeling tem se tornado uma opção cada vez mais viável.  

Portanto, neste artigo nós vamos mostrar como essa abordagem pode ser utilizada em um estudo, para que você veja como é possível aplicar esse conceito no dia a dia.  

Event modeling: fases de estudo 

1 – Brainstorming 

 Ordenação lógica 

3 – Storyboard 

 Identificação de inputs 

 Identificação de outputs 

 Aplicação da Lei de Conway 

 Elaboração de cenários 

Event modeling: conclusão 

Event modeling: fases de estudo 

Abaixo, você confere como as 7 fases do event modeling podem ser aplicadas em um cenário de conta corrente 

1. Brain Storming

A primeira fase do Event Modeling consiste em reunir informações de como o sistema deveria se comportar. Para isso, devemos reunir participantes de todas as áreas que abrangem o contexto, assim garantimos que o modelo estará coberto por todos os pontos de vista.Um responsável deve explicar os objetivos do projeto e as informações necessárias, então os participantes imaginam como deve ser a aparência e o comportamento do sistema, registram todos os eventos que podem acontecer.

Para explicar melhor, simularemos um cenário em que demos inicio na primeira fase levantando vários eventos que poderiam acontecer dentro de uma conta corrente. Com isso, vários cards surgiram (Conta Aberta, Salario Recebido, Dinheiro Transferido, Conta Fechada, etc…).

Event modeling: post-its laranjas com temas escritos dentro

Lista de eventos levantados inicialmente

Com os cards na mesa (ou no computador)você vai conseguir visualizar melhor os comportamentos do modelo que será implementado. Assim, fica mais fácil analisar e julgar se esses eventos englobam todos os componentes do contexto ou, até mesmo, se eles realmente fazem sentido para a aplicação que será desenvolvido. 

Neste caso, verificamos que alguns dos eventos que foram levantados estavam redundantes e preferimos deixar nossa modelagem mais enxuta para o cenário abordado. Assim, foram selecionados 3 eventos: conta aberta, conta fechada e movimentação de conta realizada.  

post-its laranjas com a seleção final dos eventos

Lista final de eventos

>>Leitura recomendada: O que é DevOps e como usar na sua empresa 

2. Ordenação lógica

Agora que os eventos foram criados, você precisa organizá-los em uma possível linha do tempo. A ideia é colocar os acontecimentos em uma determinada ordem, para que todos possam analisar se a disposição dos eventos escolhida é realmente melhor ordem para que eles aconteçam.  

Voltando para o nosso exemplo, seguindo a lógica, uma conta precisa primeiro ser aberta, para que então ocorram movimentações de entrada e saída de dinheiro, para que, por fim, ela possa ser encerrada. A sequência dos eventos então seria:  

post-its laranjas com os eventos ordenados

Eventos ordenados na forma como devem acontecer

3. StoryBoard

Nesta fase do event modelingvocê precisa criar o esboço da representação visual do sistema. É por meio deste storyboard que o usuário estará habilitado a mudar o estado da aplicação.  

Além disso, é importante que todos os campos estejam identificados para que os integrantes consigam ter noção da origem e do destino das informações representadas na perspectiva do usuário. 

Para isso, você pode optar pode separar em raias as telas que são diferentes para cada usuário, se essa ocasião for presente na modelagem. Aqui definimos também as telas que devem existir no sistema e as informações que elas devem capturar ou exibir. 

Representação visual do sistema em storyboard

Representação visual do sistema

>>Leitura recomendada: Flutter: Saiba tudo sobre esse novo framework 

4. Identificação de inputs

Esta é a etapa na qual vamos introduzir os comandos. Eles são responsáveis por gerar os eventos, que por sua vez, vão alterar o estado do sistema cada vez que um evento é armazenado devido a ação do usuário que foi identificada por meio de um comando. Ou seja, cada ação do usuário representa um comando que gera uma alteração no sistema.  

Agora já podemos vincular as entradas do sistema, representando-as pelos comandos gerados, por meio das telas criadas na etapa anterior e com as fases pré-estabelecidas na ordem lógica. 

introdução dos comandos que devem gerar os eventos do sistema

Representação dos comandos que devem gerar os eventos do sistema

5. Identificação de Outputs

Agora que você já criou o seu modelo está na hora de vincular as informações acumuladas através de eventos por meio de visualizações, também conhecidas como modelo de leitura. Essas visualizações vão entregar para o usuário alguma informação de valor que foi gerada pelo sistema. 

No exemplo desenvolvido, identificamos que informações como saldo e extrato são visualizações do nosso modelo que são capazes de entregar valor para o usuário, por meio dos eventos armazenados.  

Storyboard dos modelos de visualização do sistema

Encontrados os modelos de visualização do sistema

6. Aplicação da Lei de Conway

Agora que já determinamos com o fluxo de entrada e saída de informações vai funcionar no sistema, podemos organizar o eventos em raias que delimitem o contexto. 

Essa etapa permite que você consiga enxergar o sistema como partes autônomas. Assim, você pode alocar os times envolvidos de acordo com as funcionalidades específicas que serão aplicadas no projeto.  

Lei de Conway ou Conway’s Law, diz que: qualquer empresa que projeta um sistema, inevitavelmente, produz um projeto cuja estrutura é uma cópia da estrutura de comunicação da organização. Ou seja, os sistemas e soluções desenvolvidos por você e sua empresa vão refletir a forma com a qual você trabalha.  

event modeling final

7. Elaboração de cenários 
A construção de cenários em event modeling é feita de maneira rápida práticaPortanto, nessa última etapa são levantados os casos de uso junto aos superintendentes de cada etapa do fluxo. Assim, é possível revisar e criar as estórias.  

É importante estar atento aos cenários levantados, já que cada especificação deve estar vinculada a comandos ou a modelos de visualização

post-its coloridos com a criação de cenários de uso

>>Leitura recomendada: Microsserviços, o que é? Conceitos e Propriedades

Event modeling: conclusão

O event modeling é uma abordagem muito interessante para a criação de sistemas que estão em constante transformação. Isso porque, é possível incluir novos eventos com facilidade, assim como adicionar ou trocar os tratamentos dados a eles.  

Assim, em uma infraestrutura adequadaa geração de um relatórios passa a acontecer de forma orgânica  

event modeling ou modelagem de evento, como você pode acompanhar pelas etapas descritas acima, é simples, o que facilita o entendimento do que está sendo desenhado, o que encaixa muito bem com os sistemas orientados a eventos.  

Entretanto, ainda existem alguns aspectos que podem melhorar essa abordagem. Por exemplo, ainda não existe uma ferramenta adequada para seu estabelecimento. Nesse quesito, o ONote (que ainda está disponível apenas na versão Beta), promete ser a solução para esse item.  

O event modelingestá sendo aprimorado de forma contínua pelo seu criador e está aberto a receber contribuições da comunidade. Isso acaba gerando grandes expectativas por novidades e melhorias, para que essa abordagem possa se consolidar ainda mais no meio do desenvolvimento de software.