Geração Automática de Sistemas Interactivos



next up previous contents
Next: A Linguagem CAMILA Up: Especificação Formal de Previous: Fechando a Ponte

Geração Automática de Sistemas Interactivos

Quanto maior é o conhecimento sobre o funcionamento de um determinado sistema, maior é a vontade e a necessidade sentida para a sua automatização. Na área das interfaces já se verifica esse fenómeno. Com o aparecimento de métodos para a especificação, surgem também tentativas para a geração automática.

Em primeiro lugar convém clarificar o que se entende por Geração Automática. Ferramentas como os Geradores de Aplicações, que a partir de uma especificação mais ou menos formal do sistema, geram o código necessário à sua implementação, não são ferramentas de Geração Automática. Eles limitam-se a fazer a tradução do sistema, de uma notação mais abstracta para uma notação mais concreta. Geração Automática consiste exactamente em gerar a própria especificação do sistema!

Obviamente que essa especificação não poderá nascer do nada. Quando construímos uma interface partimos de uma descrição da camada computacional do sistema interactivo que pretendemos implementar. No caso de a pretendermos gerar automaticamente a base de trabalho será também essa descrição, que neste caso deverá ser formal pois deve caracterizar precisamente a camada computacional. É também evidente que será necessário pré-determinar qual o tipo de diálogo que pretendemos ver gerado: se pretendemos interacção por comandos, menus ou manipulação directa, com diálogo síncrono ou concorrente, etc. Idealmente um sistema deverá permitir gerar mais do que um tipo de diálogo

Um segundo ponto que deve ser realçado é que a Geração Automática, excepto em situações muito particulares, não é possível. Tendo que ver, tanto o aspecto gráfico da interface, como o próprio estilo de interacção, com questões tão subjectivas como o gosto pessoalgif, dificilmente um sistema automático conseguirá um resultado satisfatório sob esse ponto de vista. Um aspecto talvez até mais importante prende-se com a própria estrutura sintáctica do diálogo. No caso de menus, por exemplo, de que modo deverão as operações ficar agrupadas? Uma especificação da camada computacional tem pouca informação que permita tomar decisões a esse nível. Um sistema de geração deverá, assim, apresentar uma primeira versão da interface, realizada com base na especificação formal da aplicação, e disponibilizar ferramentas para a sua manipulação e adaptação. Se o próprio sistema final gerado for adaptável, tanto melhor. Não devemos, então, falar de Geração Automática, mas de Geração Semi-Automática.

Um exemplo de um sistema deste tipo é o MIKE [OJ86]. Neste, uma interface por defeito é gerada a partir das assinaturas das operações do sistema, com base no tipo de cada operação. Assim, é criado um menu inicial com as operações que não têm tipo (assume-se que correspondem aos comandos do sistema), e a leitura de cada argumento da função é feita, ou directamente segundo um método pré-definido para o seu tipo, ou seleccionando uma das operações que devolvam um valor do tipo pretendido. Esta primeira versão pode depois ser trabalhada utilizando editores apropriados que o sistema providencia. O MIKE não gera, no entanto, a validação semântica das frases construídas, nem prevê mecanismos para que essa validação possa mais tarde ser incluída na descrição da interface. Deixa à aplicação a responsabilidade dessa tarefa, fornecendo duas rotinas CommandEnable e CommandDisable que permitem activar ou desactivar comandos. Fica no entanto de fora a validação semântica dos argumentos das operações. Em parte, tal situação fica, provavelmente, a dever-se ao facto de o ponto de partida do MIKE ser apenas a sintaxe dos comandos do sistema. Para ser possível a geração de validação semântica torna-se então necessário proceder a uma análise não só da sintaxe, mas também da semântica das operações (ie. a sua especificação).



next up previous contents
Next: A Linguagem CAMILA Up: Especificação Formal de Previous: Fechando a Ponte



Jose Franscisco Creissac Campos
Wed Jan 31 20:30:35 MET 1996