Testes de software para máquinas de estados
Muitas variedades de testes de software ganharam importância à medida que os desenvolvedores procuram formas de melhorar a qualidade e cumprir os prazos dos projetos – revisão de código, testes unitários, testes de regressão, testes beta, desenvolvimento orientado por testes, entre outros. Independentemente dos objetivos de um projeto ou da linguagem de código fonte utilizada, é amplamente aceite que quanto mais cedo um defeito é detetado, mais fácil, mais barato e mais rapidamente ele pode ser corrigido. Geração de código de Diagramas de máquina de estados UML, uma nova funcionalidade introduzida em Altova UModel 2011 A versão 2 pode ser utilizada para validar a lógica conceptual numa fase muito inicial do desenvolvimento do projeto.
Design prático representado num diagrama de máquina de estados
Um exemplo incluído com o UModel fornece um diagrama de máquina de estados simples e realista, acompanhado de uma pequena aplicação de teste que pode executar para verificar pessoalmente a facilidade com que é possível testar a lógica de um projeto. O diagrama de máquina de estados no projeto AirCondition.ump, localizado na pasta de exemplos do UModel 2011, descreve o funcionamento de um sistema típico de aquecimento e ar condicionado.

O sistema inclui um botão de alimentação, localizado no lado esquerdo, que permite a transição do estado "desligado"; uma função "modeSelect" que permite escolher entre aquecimento ou arrefecimento; uma função "speedSelect" para controlar a velocidade do ventilador; e um botão de "standby" que coloca o sistema no modo de espera, como mostrado no lado direito. A pasta do projeto de exemplo inclui todo o código gerado para o diagrama pela ferramenta UModel, em Java, C# e Visual Basic. Para experimentar a versão em Java, basta usar o comando javac STMTester.java para compilar o código e java STMTester para executá-lo. A aplicação de teste exibe um painel de controlo simulado, com janelas de informação sobre a unidade de aquecimento e ar condicionado. Os botões de funcionamento aparecem na parte superior, o estado atual é descrito na primeira janela, e as mensagens de saída geradas pelas alterações no sistema aparecem na segunda janela.

Como se pode ver acima, o sistema inicia no estado "desligado", o modo está definido para "aquecimento" e o ventilador está desligado. Antes de utilizar o sistema, poderá ser útil redimensionar o painel de controlo e o diagrama de máquina de estados para acompanhar as ações da aplicação de teste no próprio diagrama, como se pode ver na imagem de tamanho reduzido abaixo.

A operação da máquina de estados
Quando clicamos no botão de energia, a janela de estado atual é atualizada e uma descrição detalhada das operações que ocorreram é apresentada como "Evento 1" na janela de mensagens de depuração.

Se estiver um dia quente, podemos querer mudar o modo para "arrefecimento" e aumentar a velocidade do ventilador. Podemos fazer isso clicando nos botões "modo" e "velocidade". A janela de estado atual é atualizada a cada clique, e os eventos 2 e 3 são adicionados à janela de mensagens de saída.

Agora podemos ver como a aplicação de teste nos permite testar completamente a lógica do nosso diagrama de máquina de estados, clicando em todas as sequências possíveis de seleção de botões para verificar se produzem os resultados esperados. Por exemplo, se colocarmos o dispositivo em modo de espera (Evento 4 abaixo) e, em seguida, pressionarmos o botão "speedSelect", podemos verificar nas mensagens de saída do Evento 5 que não ocorre nenhuma alteração de estado no subestado chamado "RegionSpeed". Compare o Evento 5 com o Evento 3 na janela de mensagens de saída, como mostrado abaixo.

Agora que o sistema está em modo de espera e não precisamos de aquecimento nem arrefecimento, vamos poupar energia pressionando o botão de energia para o desligar.

Espere um momento – parece que nada aconteceu. Não houve nenhuma transição no evento 6, e o estado atual na janela superior continua em "Standby" (espera)! Ao analisarmos o diagrama de estados, podemos ver que a única forma de sair do modo "Standby" é pressionar novamente o botão "Standby". Será que este é realmente o comportamento que um utilizador comum esperaria? O botão de energia não desliga o sistema quando está no modo "Standby"?

Imagine o quão dispendioso poderia ser resolver este problema se ele tivesse sido detetado muito mais tarde, durante o desenvolvimento do produto, quando o protótipo estivesse a ser testado por uma agência reguladora! Aqui está um desafio que propomos aos nossos leitores: como projetariam uma rota mais direta do estado de espera para o estado de desligado?
Testar os seus próprios autômatos de estados
Pode utilizar os exemplos de projetos de geração de código de máquina de estados da UModel como modelos para criar aplicações de teste para os seus próprios projetos. É importante aproveitar a funcionalidade da UModel que cria automaticamente operações numa classe à medida que adiciona nomes de operações às transições na sua máquina de estados.

Além disso, o sistema de ajuda do UModel inclui informações detalhadas sobre a geração de código a partir de diagramas de máquina de estados, e também utiliza o ficheiro de projeto "AirCondition.ump" como exemplo.
Descubra por si mesmo como pode melhorar o desenvolvimento de projetos, testando a lógica dos seus próprios diagramas de máquinas de estados com o Altova UModel – descarregue hoje mesmo uma versão de avaliação gratuita de 30 dias!