Sobre a Interface do Atom-SysVAP

O Atom foi desenvolvido em Java e utiliza a linguagem Lua para desenvolvimento do DL. Lua é uma linguagem de programação de extensão projetada para dar suporte à programação procedimental em geral e que oferece facilidades para a descrição de dados. (IERUSALIMSCHY; FIGUEIREDO; CELES, 2006)

Lua foi criada em 1993 por Roberto Lerusalimschy, Luiz Henrique de Figueiredo e Waldemar Celes, membros da Computer Graphics Technology Group na PUC-Rio, a Pontifícia Universidade Católica do Rio de Janeiro, no Brasil.

O Atom foi implementado através de dois componentes, como mostrado na Figura 12. O componente Atom IDE (integrated development environment) implementa a interface com o usuário e depende do Atom CORE para realizar a execução/simulação dos planos no domínio.

Figura 12 - Componentes do Atom SysVap

Figura 12 – Componentes do Atom SysVap

O Atom IDE foi projetado para o desenvolvimento do modelo de domínio do sistema, representado através de Modelo de Estados. Os Modelos de Estados possuem elementos que serão tratados e manipulados como objetos pelo Atom IDE. Esses objetos são: o Projeto; as MEFE; os Estados; as Transições; e os Eventos.

 Atom IDE

No componente Atom IDE estão concentradas todas as implementações referentes a interface com usuário, de forma a proporcionar uma boa usabilidade, conforme mostrado na Figura 13.

Figura 13 - IDE do Atom SysVap

Figura 13 – IDE do Atom SysVap

A interface do Atom IDE é dividida em 7 áreas: Barra de ferramentas; Inspetor de projeto; Área de trabalho (DET); Ações (DL); Inspetor de objetos; Opções de depuração e Saída de execução.

  1. Barra de ferramenta: Disponibiliza as opções para interação com o projeto, conforme pode ser observado na Figura 14.
Figura 14 - Atom SysVap - Ferramentas para interação com projeto

Figura 14 – Atom SysVap – Ferramentas para interação com projeto

  1. Inspetor de objetos: O inspetor de objetos descreve a hierarquia do projeto, com suas MEFs e os estados de cada máquina, conforme pode ser observado na Figura 15, as máquinas são identificadas como “MEF<num>” e os estados com “q<num>”.
Figura 15 - Atom SysVap - Inspetor de objetos

Figura 15 – Atom SysVap – Inspetor de objetos

  1. Área de trabalho (DET): A área de trabalho disponibiliza um espaço para o desenvolvimento e modelagem do DET, conforme pode ser observado na Figura 16. Alguns requisitos das representações principalmente de StateCharts são atendidos no DL.
Figura 16 - Atom SysVap - Área de trabalho

Figura 16 – Atom SysVap – Área de trabalho

  1. Ações (DL): A opção de ações permite a modelagem lógica para representar o comportamento de variáveis continuas como por exemplo consumo de uma bateria, variação de temperatura e etc. e pode ser observado na Figura 17. No DL é utilizada a linguagem Lua (IERUSALIMSCHY; FIGUEIREDO; CELES, 2006). Maiores informações sobre a linguagem pode ser encontrada no site http://www.lua.org/.
Figura 17 - Atom SysVap - Ações (DL)

Figura 17 – Atom SysVap – Ações (DL)

O DL é implementado através eventos “OnEnter”, “OnExit” e “OnUnrecognizedEvent” dosobjetos do DET. O DL disponibiliza 2 funções importantes para a simulação: sendEvent() e stopAll().

A função sendEvent() permite gerar eventos através do DL, função que representa a capacidade de “broadcasting” intrínseca ao formalismo de StateCharts A função recebe como parâmetro uma string que representa o evento, como por exemplo: sendEvent(‘trocar’).

A função stopAll() termina a simulação e não recebe nenhum parâmetro, para chamá-la por exemplo: stopAll().

Além das funções é possível acessar os objetos e suas propriedades. São 9 os objetos disponíveis para acessar no DL, conforme pode ser observado na Tabela 2.

Por exemplo, MEF0_state:getName() retornao nome do estado atual da MEF0. Para acessar o nome do primeiro elemento da lista de objetos de estados finais da MEF0, basta executar MEF0_finalState:get(0):getName().

Tabela 2 - Atom SysVap - Objetos disponíveis no DL

Tabela 2 – Atom SysVap – Objetos disponíveis no DL

  1. Inspetor de objetos: O inspetor de objeto permite a alteração de propriedades dos objetos das MEFs, conforme pode ser observado na Figura 18. O conjunto de propriedades muda para cada tipo de objeto. Existem 4 tipos de objetos: Estados, Transições, Eventos e o próprio projeto.
Figura 18 - Atom SysVap - Inspetor de Objetos

Figura 18 – Atom SysVap – Inspetor de Objetos

As propriedades mais importantes, no caso do estado são “sub_MEF01” e “sub_MEF02” que indicam quais são as submáquinas dos estados, representando a propriedade de ortogonalidade dos StateCharts.

Tanto nas transições quanto nos estados existe a propriedade “outputLabel” que indica a saída. A propriedade de saída nos estados indica uma representação de Moore e a propriedade de saída nas transições indica uma representação de Mealy.

As transições possuem a propriedade “guardCondition” que representa a condição de guarda da transição. A condição de guarda é uma função booleana que deve retornar verdadeiro ou falso (true or false) e indica se a transição deve ocorrer ou não. Nesta propriedade é definida pelo modelo lógico, desta forma as condições devem utilizar as variáveis descritas no modelo.

As transições também possuem a propriedade “timeout“, que habilita a função de temporização, que executa a transição assim que o tempo for esgotado, representação também intrínseca do formalismo de StateCharts. A propriedade “milisec_timeout” indica quanto tempo a transição deve aguardar antes de executar mudança de estado, se o “timeout” estiver habilitado.


O projeto possui uma propriedade muito importante para simulação do “rateDelay” que indica qual a taxa de execução das funções de temporização. Toda função de temporização é dividida por “rateDelay“, por exemplo, no caso das transições com timeout: Tempo = milisec_timeout / rateDelay. Essa propriedade também é utilizada no envio de comandos temporizados dos planos operacionais.

  1. Opções de depuração: Esta opção é dividida em duas partes como pode ser observada na Figura 19.
Figura 19 - Atom SysVap - Opções de depuração

Figura 19 – Atom SysVap – Opções de depuração

    • Eventos do Plano: Nesta opção é possível definir os eventos para simulação do plano, além da possibilidade de carregar um arquivo XML que represente o plano. O campo “Script” define o nome do arquivo XML que foi carregado com o plano.

O campo “Event” indica qual evento deve ser enviado; o campo “Delay” indica quantos milissegundos o evento atrasa antes de ser executado; e o campo “Rate” indica a taxa de execução do evento específico, similar “rateDelay”, no entanto quando definido tem prioridade sob o “rateDelay“. Por exemplo: Tempo = milisec_timeout / Rate.

    •   Inspetor de Variáveis: Esta opção é utilizada para visualizar o valor de determinada variável ou objeto durante o processo de depuração. As variáveis devem estar definidas no DL.
  1. Saída de execução: Esta área é utilizada para exibir todas informações sobre a simulação do domínio. Ao utilizar o comando “print” no DL o sistema imprimirá o resultado na saída de execução.

 Atom CORE

No Atom CORE foram implementadas todos os mecanismos de execução e simulação de um plano sob um modelo de domínio. O componente Atom CORE pode ser utilizado como biblioteca java, podendo ser incorporado a outro programa, ou através de linha de comando, que recebe como argumento os arquivos que representam o modelo de domínio e o plano.

  1. Através de linha de comando: para executar o Atom CORE através de linha de comando basta ter o Java instalado na máquina e executar a biblioteca passando como parâmetros o domínio (exportado para simulação) e o plano no formato XML.

Como por exemplo: java -jar AtomCore.jar aval.evap plan.xml.

  1. Como uma biblioteca: Para utilizar como biblioteca basta adicionar o AtomCORE.jar no projeto, utilizar as classes SysProject, SysMEF, SysState, SysTransition e SysEventTransition para construção do DET e utilizar as propriedades actionOnEnter, actionOnExit e actionOnUnrecognizedEvent para construção do DL.

Para iniciar uma simulação basta utilizar a classe SysSimulation e enviar os eventos através da função sendEvent(), como pode ser observado na Figura 20.

Figura 20 - Atom CORE- Exemplo de código para simulação

Figura 20 – Atom CORE- Exemplo de código para simulação

O uso do Atom CORE como uma biblioteca permite que programas possam avaliar planos em tempo real, enviar eventos, realizar a leitura das variáveis de ambiente, característica que permite replanejamento quando acoplado diretamente com o sistema.

Download

Deixe uma resposta

Seu endereço de email não será publicado.

This site uses Akismet to reduce spam. Learn how your comment data is processed.