Controlando transações de status com Finite State Machine – Parte 1

Uma máquina de estados finitos (FSMs) é um modelo de computação baseado em uma máquina hipotética composta de um ou mais estados. Apenas um único estado desta máquina pode estar ativo ao mesmo tempo. Isso significa que a máquina deve fazer a transição de um estado para outro para realizar diferentes ações.

Sendo considerada um modelo de computação que pode ser usada para simular lógica sequencial, para representar e controlar fluxos de execuções de alterações de estados. As máquinas de estados finitos podem ser usadas para modelar problemas em muitos campos, incluindo matemática, inteligência artificial, jogos ou linguística. As máquinas de estados finitos vêm de um ramo da ciência da computação chamado “teoria dos autômatos”.

Introdução

Uma máquina de estados finitos é qualquer dispositivo que armazena o estado de algo em um determinado momento. O estado mudará com base nas entradas, fornecendo a saída resultante para as mudanças implementadas.

Máquinas de estados finitos são amplamente utilizadas em muitos sistemas para descrever a dinâmica de comportamento de uma entidade.

Essa máquina abstrata que pode estar exatamente em um de um número finito de estados a qualquer momento. A máquina de estado pode mudar de um estado para outro em resposta a algumas entradas externas. A mudança de um estado para outro é chamada de transição.

Normalmente, uma máquina de estado é modelada usando um diagrama de estado. Veja um dos mais comuns diagramas de estado utilizados em diversos exemplos, que descreve uma catraca operada por moedas:

Diagrama de representação de uma FSM

Também podemos utilizar uma tabela para determinar os dados de transações dos estados.

Tabela de representação de uma FSM

Por que e Quando utilizar o State Machine

Quando conseguimos visualizar nosso sistema através de diferentes estados possíveis a máquina de estado nos ajuda a imaginar todo o fluxo de transições de estados de uma forma muito simples, pois com ela somos capazes de quebrar grandes tarefas complexas em unidades menores e independentes. Ela nos ajudará a gerenciar de uma forma mais abstrata todas essas unidades.

Já quando não conseguimos visualizar em nosso sistema difentes estados (pensando que seja possível) podemos acabar acoplando nossos componentes um ao outro, com isso escreveremos muitas condições para aplicar tais transições de estado, tornando, por exemplo, os testes de unidade e integrações cada vez mais complexos a modo de garantir que todas essas condições utilizadas em sua implementação sejam seguras.

Com uma máquina de estado já bem definida o desenvolvedor pode se concentrar apenas em definir suas ações, já que a ação realizada durante cada transição é independente uma da outra, tornando inevitavelmente seu sistema mais estável e menos sujeito a alterações.

Concluimos então que em uma implementação de State Machine a configuração de quando um estado pode passar para outro estado fica muito mais clara e objetiva, permitindo nos concentramos na definição sobre o que acontece quando a transição ocorre. Todo trabalho de como isso é feito ficará em sua implementação ou framework de State Machine, transformando o fluxo de trabalho em algo mais previsível.


A idéia desse primeira parte é dar uma introdução sobre o conceito de FSM, já na segunda parte, será apresentado um exemplo de implementação de State Machine.

Help DEV – Analista desenvolvedor Java / Android https://helpdev.com.br/zarelli

Controlando transações de status com Finite State Machine – Parte 1

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.

Rolar para o topo