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.
Basicamente, a FAFOOPS, hoje, apóia o engenheiro, disponibilizando os seguintes recursos:
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]):
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.
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.
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.
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:
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.