Capítulo 5 – A Linguagem Estelle e a Ferramenta EDT
5.4. A Ferramenta EDT
O programa utilizado, a saber, o EDT (Estelle Development Toolset), encontra-se, atualmente, na sua versão 4.3 e, consiste em um conjunto de ferramentas para especificação e análise de sistemas de comunicação complexos usando a técnica de descrição formal Estelle.
O referido programa disponibiliza as ferramentas tanto para uso individualizado quanto para uso integrado através de uma interface X-windows, chamada xEdt. O xEdt faz a integração das seguintes ferramentas [Edt00]:
Tradutor Estelle; Gerador de Código C;
Compilador Estelle- C (Ec), que integra o tradutor Estelle e o gerador de código C;
Simulador/Debugador Estelle com gerador de trace (Edb); Browser;
Pretty Printer; Decompilador;
Splitter (Gerador de Especificação Distribuída);
Gerador Universal, que compreende o gerador de test drivers, o decompilador e o Spliter;
Ferramenta de Visualização. Editor Gráfico.
Todas as ferramentas foram escritas em C, exceto o editor gráfico e o gerador de trace, que foram implementados em Tcl/Tk.
A seguir, descreve-se de forma sucinta as funcionalidades de cada ferramenta.
5.4.1. Tradutor Estelle (Estelle Translator)
O Tradutor Estelle gera, a partir de uma dada especificação Estelle, uma representação em forma intermediária, adicionada com informações resultantes de uma análise completa (léxica, sintática e semântica) da especificação.
5.4.2. Gerador de Código C (Estelle Generator)
O Gerador de Código C retorna o código C da Especificação, a partir de uma representação de uma especificação Estelle em sua forma intermediária.
5.4.3. Compilador Estelle-C (Estelle to C Compiler)
Traduz uma especificação escrita na linguagem Estelle em um código fonte em linguagem C. O compilador consiste na integração das duas ferramentas anteriores: o Tradutor e o Gerador de Código C. Ressalta-se que essas duas partes do compilador podem ser usadas separadamente ou de forma encadeada uma após a outra para produzir o código C diretamente do código fonte em Estelle.
O termo compilador, portanto, nesse contexto, refere-se ao uso encadeado das duas ferramentas.
O código gerado pode ser executado sob o controle do Simulador/Debugador ou de um motor de implementação, que serve de interface para um dado sistema operacional. O motor de implementação é um conjunto de rotinas de suporte em tempo de execução pré-compiladas, independente da especificação, a ser ligada (linked) ao código gerado para produzir um programa executável.
5.4.4. Simulador/Debugador Estelle (Estelle Simulator/Debugger – Edb)
O Edb simula a execução de uma especificação Estelle, de acordo com o modelo semântico definido pelo padrão ISO 9074. O propósito de um Simulador/Debugador é auxiliar o usuário na descoberta e correção de erros que ocorrem durante a execução de uma especificação.
O Simulador/Debugador é uma ferramenta interessante, pois dá ao usuário a capacidade de poder controlar, observar e seguir a execução da Especificação através de comandos de simulação. O Edb é um simulador/debugador simbólico interativo cuja entrada consiste do código fonte da especificação Estelle, de sua forma intermediária e do resultado da compilação do código C gerado.
De acordo com o princípio da atomicidade da transição do modelo semântico de Estelle, a unidade de execução no Edb é uma simples transição.
Vale ressaltar, que todo tipo de não-determinismo inerente a uma descrição Estelle são resolvidos, durante a simulação, através de uma seleção randômica, se tratados sem qualquer intervenção do usuário. Comandos especiais
são oferecidos pelo simulador/debugador para controlar algumas destas escolhas não determinísticas de um modo interativo.
O Edb ofecere ainda meios eficientes, como comandos de macro e observadores, para descrever um cenário de simulação, incluindo a especificação de anomalias a serem detectadas.
Tal ferramenta dá ao usuário a capacidade de poder se concentrar completamente nas propriedades que ele deseja verificar ou detectar.
O Edb fornece ainda a capacidade de, durante uma simulação, o usuário poder requisitar de forma on-line a geração de múltiplas visões MSC (Message
Sequence Chart), individualmente parametrizadas.
5.4.5. Browser
É uma ferramenta interativa que gera visões de alto nível chamadas de Visões HLD (High Level Design) da especificação, representadas em sua forma intermediária. Tais visões podem ser mostradas na tela e/ou gravadas em arquivo.
A Visão HLD consiste em uma descrição da hierarquia de instâncias dos módulos e dos canais de comunicação entre as instâncias dos módulos (pontos de interação), omitindo-se a descrição de seu comportamento. Ela corresponde, portanto, a arquitetura da especificação, em termos de instâncias dos módulos, até uma certa profundidade definida pelo usuário.
5.4.6. Pretty Printer
A ferramenta Pretty Printer é usada para dar um formato diferente a especificação, em termos de: tamanho das linhas, tamanho das tabulações, identificadores e palavras-chaves em maiúsculas, minúsculas, entre outros. Permitindo, assim, que o usuário possa aplicar padrões de formatação de forma automática em toda a especificação.
5.4.7. Decompilador (Decompiler)
O Decompilador permite gerar, a partir da forma intermediária, a especificação Estelle correspondente.
5.4.8. Spliter (Distributed Specification Generator)
O Spliter permite que o usuário gere, a partir de uma especificação Estelle que contenha “n” sub-sistemas (módulos do tipo “systemprocess” ou “systemactivity”):
“n” especificações Estelle, cada uma contendo um sub-sistema e uma inteface especial chamada de switch board, ao mundo exteno;
Um programa supervisor em C.
5.4.9. Gerador Universal (Universal Generator – Ug)
Assim como ocorre no Compilador Estelle-C, o Gerador Universal é uma ferramenta que integra outras duas ferramentas, a saber: o Splitter (Seção 5.4.5) e o Decompilador (Seção 5.4.6). Cada função do Ug, portanto, pode ser vista como uma ferramenta separada.
O Gerador Universal permite ao usuário:
Gerar uma especificação modificada, a partir de uma especificação fonte em Estelle, na qual alguns corpos de módulos (body) selecionados pelo usuário serão substituídos por corpos universais (Universal Test Drivers Generator – Utdg). Esta ferranebta permite a geração de tests drivers interativos para qualquer especificação Estelle aberta.
Gerar especificações menores e mais simples de depurar (Splitter);
Gerar a especificação fonte em Estelle a partir da forma intermediária (Decompilador).
5.4.10. Gerador de Tabela Estado-Evento (Estelle State/Event Tables Generator – Edoc)
Essa ferramenta permite a geração automática de tabelas de estado- evento correspondente a um corpo especificado pelo usuário dentro de uma especificação. Estas tabelas são geradas a partir da informação encontrada no arquivo em forma intermediária, que foi gerado pelo Tradutor Estelle a partir de uma especificação Estelle, onde, cada coluna corresponde a um estado FROM, um
STATESET ou STATELIST e, cada linha corresponde a um evento que é uma
condição de disparo de uma transição. Em cada célula, encontro da coluna e linha, é mostrado o nome da transição, o estado TO e as saídas.
5.4.11. Editor Gráfico (Graphical Editor)
O editor Estelle/GR é uma interface gráfica baseada em janela para definição, edição e visualização de uma especificação Estelle numa sintaxe gráfica.
O editor provê um ambiente estruturado que separa a estrutura Estelle das definições de comportamento. Ele foi concebido para complementar o EDT. Suporta a importação de especificações textuais que tenham sido compiladas pelo Ec (gerador de código intermediário do EDT) e pode gerar especificações textuais que podem ser usadas como entrada para o EDT.