FAFOOPS - Ferramenta de Apoio ao FOOPS

(Proposta de Interface para o FOOPS)

Iremos descrever agora a interface FAFOOPS, que desenvolvemos almejando alcançar um ambiente que possa ser utilizado para investigar se os requisitos levantados por nós para interface gráficas de apoio a métodos formais, e implementados por ela em sua versão atual, realmente conseguiram alcançar seu objetivo final, que era, minimizar as dificuldades na utilização do FOOPS para especificar formalmente sistemas.

Toda a interface descrita a seguir, vai de encontro aos requisitos elicitados e especificados por nós através da literatura sobre métodos formais e sobre nossa experiência prática como especificadores formais. Obviamente que limitações, principalmente de tempo, obrigaram-nos a tomar decisões que devem ser revistas posteriormente. Todas essas decisões são documentadas e discutidas neste sítio e na documentação correspondente, com o intuito de tornar transparente quais foram estas decisões e suas respectivas conseqüências.

De qualquer forma, a idéia motriz foi a de oferecer um ambiente operacional - mesmo com algumas de suas funções não sendo definitivas ou mesmo não sendo implementadas - que pudesse ser utilizado em estudo de casos práticos e que pudesse ser modificado e atualizado pela comunidade futuramente, intenção esta que é viabilizada por este sítio.

Introdução à FAFOOPS

Como já mencionamos no texto inicial desta página, a FAFOOPS é uma interface (o que não a caracteriza como sendo propriamente uma ferramenta) que apóia o especificador no momento de especificar um sistema formalmente, utilizando a linguagem FOOPS.

Basicamente, a FAFOOPS, hoje, apóia o engenheiro, disponibilizando os seguintes recursos:

  1. Suporte à gerência de múltiplos projetos de especificação de sistema.
  2. Um diagrama de módulos com as respectivas hierarquias entre eles. Viabilizando, assim, uma visão completa do sistema através da apresentação do elemento básico para a construção de especificações em FOOPS, o módulo.
  3. Um diagrama de classes que permite uma visão especial do sistema, focando sobre as classes e subclasses de objetos definidas no sistema.
  4. Um editor interativo que apóia o especificador no momento de editar suas especificações a partir do código das mesmas.
  5. Funções que permitem ao especificador editar suas especificações através dos diagramas de módulos e de classes. Permitindo a criação de novos módulos, de hierarquia entre módulos, de novas classes, e outros.
  6. Total liberdade para o especificador navegar entre modos de visualização de sua especificação: do código da especificação para os diagramas e vice-versa. Sendo que sempre as alterações realizadas em um modo de visualização são automaticamente reconhecidas e apresentas pela FAFOOPS nos demais modos.

Se considerarmos os recursos listados acima, somados aos recursos advindos do FOOPS, chegamos em uma ferramenta (um ambiente operacional) com as seguintes características (o modelo da tabela 5.1, para avaliação de ferramentas, foi extraído de [Pro01] e [Kel98]):

 

Tabela 5.1: Avaliação dos Recursos Implementados pela FAFOOPS (e FOOPS)
Função Disponibilidade
Parser Sim
Validação de Sintaxe Sim
Representação da Especificação - Prettyprinter Sim
Interface Gráfica Sim
Suporte a Execução Sim
Suporte a Validação de Especificação Sim
Provador de Teoremas Não

Obviamente que cada um desses recursos implementados na FAFOOPS são compostos de várias funções menores, que iremos discutir mais adiante, porém esta noção inicial do que a interface está disponibilizando atualmente ajudará no entendimento do restante deste documento. Adicionalmente, iremos fornecer na próxima seção deste capítulo, a arquitetura proposta por nos, para a FAFOOPS, o que também apoiará o leitor, nesta tarefa, de compreender e avaliar as funcionalidades fornecidas por esta ferramenta formal.

Observe que o FOOPS somado à interface gráfica e recursos que descrevemos a seguir (FAFOOPS) constituem um ambiente operacional com bastante capacidade e recursos, o que caminha em direção as ferramentas que realmente podem diminuir a distância existente entre os métodos formais e a prática da engenharia de software.

Arquitetura da FAFOOPS

Na figura 5.1, apresentamos, a arquitetura planejada para a FAFOOPS. Apesar, de alguns dos módulos apresentados na figura (Área de Interação, Gerenciador Interação FOOPS e Mantedor Consistência FAFOOPS - FOOPS), ainda não terem sido implementados na atual versão da FAFOOPS, a figura expressa, os principais componentes desta ferramenta.

Figura 5.1: Arquitetura (estrutura) Básica da FAFOOPS

 

Indo ao encontro, do que foi mencionado no inicio deste capítulo, sobre a FAFOOPS, a mesma fornece recursos que circundam principalmente: um diagrama de módulos, um diagrama de classes e um editor de especificação formal FOOPS. Cada um desses elementos, denominados doravante de modos de trabalho da FAFOOPS, é representado por um módulo na figura 5.1, como pode ser notado. Ainda, recorrendo a figura, pode ser visualizado que, os módulos imediatamente abaixo de cada um desses componentes, possuem a função de garantir que todas as modificações realizadas em um modo de trabalho, possam ser visualizadas nos demais, garantindo assim, uma total integração entre os mesmos. Assim, para cada modo de trabalho existem esses dois ``sub-módulos'', onde um é responsável por atualizar o repositório de especificações de acordo com as alterações realizadas no modo de trabalho em questão. O outro ``sub-módulo'', por sua vez, é responsável por, a partir do repositório, gerar as representações gráficas sobre tais especificações, que são apresentadas ao usuário, também pelo modo de trabalho em questão. Na seção seguinte, detalhamos os modos de trabalho da FAFOOPS, com intuito de tornar mais claro o que está sendo dito aqui.

Considerando os módulos da arquitetura, ainda não implementados (Área de Interação, Gerenciador Interação FOOPS e Mantedor Consistência FAFOOPS - FOOPS), temos que todos eles envolvem a integração da FAFOOPS e do FOOPS, o que conduz a conclusão de que, atualmente a FAFOOPS e o FOOPS, possuem uma comunicação rudimentar, que necessita de evolução.

``Modos de Trabalho'' da FAFOOPS

Os três principais recursos da interface FAFOOPS se referem respectivamente ao: diagrama de módulos, diagrama de classes e o editor de especificação.

Para possibilitar ao usuário esses três recursos em um único ambiente, nós criamos a noção de ``Modos de Trabalho'' da FAFOOPS. Por um modo de trabalho pode-se entender como sendo uma configuração (conjunto de botões, funções e interface disponibilizados em dado momento) na qual a FAFOOPS se encontra, de forma a apoiar um dos recursos citados acima. Por conseguinte, temos que, a FAFOOPS pode ser configurada para estar em três modos de trabalho diferentes:

Estrutura Visual da FAFOOPS

Na figura 5.2, apresentamos uma visão geral da FAFOOPS. Como podemos perceber, a interface foi divida em três grandes áreas: a Área de Menus, a Área de Especificação e finalmente, a Área de Interação.

A Área de Menus disponibiliza todos os recursos existentes na interface FAFOOPS. Basicamente o usuário da interface possui a possibilidade de executar as funções da FAFOOPS, nos seguintes modos: selecionando o item do menu desejado; pressionando a tecla de atalho para a referida função - item do menu; ou, finalmente, fazendo uso dos botões suspensos, que são atalhos para as principais funções da ferramenta.

Como o próprio nome diz, a Área de Especificação é destinada a disponibilizar recursos da ferramenta que permitam ao usuário manipular suas especificações formais. É nesta área que diagramas e o editor de especificação serão apresentados, permitindo assim que o engenheiro realize seu trabalho de especificação.

Por fim, temos a Área de Interação que é destinada aos recursos da FAFOOPS que permitem ao engenheiro validar suas especificações, tanto a nível de sintaxe, quanto a nível de verificar se as especificações, realmente refletem os requisitos do sistema que está sendo analisado.

Por fim, temos a Área de Interação que é destinada aos recursos da FAFOOPS que permitem ao engenheiro validar suas especificações, tanto a nível de sintaxe, quanto a nível de verificar se as especificações, realmente refletem os requisitos do sistema que está sendo analisado.

Figura 5.2: Vião Geral da Interface FAFOOPS
\begin{figure}\begin{center}
%% \input{figura1.pstex}
\psfig{figure=figura1.pstex,width=155mm,height=100mm} \end{center}\end{figure}

 

1