Odyssey-PSW é uma ferramenta de suporte à elaboração, verificação e validação de restrições OCL anexadas a um modelo. Também suporta a elaboração de especificação explícita utilizando a OCL-Action Language, uma linguagem de ação que foi desenvolvida sobre a OCL para permitir a execução de modelos UML. Diversas extensões à OCL, como a cláusula modifies (para tratar o "frame problem'), cláusulas def locais para operações, por exemplo, foram implementadas na Odyssey-PSW. Os principais módulos da ferramenta Odyssey-PSW são listados abaixo. Editor e Compilador OCLOdyssey-PSW oferece facilidades de edição e compilação para a construção de partes em OCL de modelos UML. Uma especificação é composta por um modelo de contexto mais um conjunto de arquivos textuais contendo todas as definições em OCL e as instruções em OCL-Action Language associados àquele modelo. A Figura 1 mostra a tela principal da Odyssey-PSW.
Snapshot ExplorerEste módulo permite a criação, recuperação e armazenamento de diferentes snapshots do sistema. Um snapshot é um conjunto de instâncias resultantes da instanciação, modificação ou exclusão de classificadores e associações definidos em um modelo. Cada snapshot tem um nome e pode ser utilizado como estado inicial ou final de um ou vários modelos de caso de testes. A Figura 2 mostra uma tela do snapshot explorer. Todas as classes concretas são exibidas no painel da esquerda. As instâncias das classes são exibidas em uma aba separada, e o usuário pode configurar que informação deve ser exibida no navegador. Uma instância pode ser criada ou atualizada em um diálogo que também exibe atributos OCL definidos e valores derivados. Elos entre a instância sendo editada e outras instâncias do snapshot podem ser criadas ou excluídas em abas específicas, de acordo com as associações presentes no modelo referente. O usuário pode também definir variáveis referenciando instâncias de um snapshot e utilizá-las em expressões OCL em outros módulos da ferramenta. Expressões de consulta ad-hoc podem ser analisadas dado um snapshot do sistema. O usuário pode utilizar esta funcionalidade como um auxílio à construção de especificação de uma expressão complexa, por exemplo, interativamente analisando suas partes. Também pode ser utilizada para inspecionar o estado do sistema durante a execução de algumas operações definidas no modelo. Expressões de consulta podem ser organizadas em grupos hierárquicos e seus resultados podem ser visualizados em três formas diferentes:
A Figura 3 mostra um exemplo de uma tela de avaliação de uma consulta OCL. Todas as expressões de consulta OCL podem ser salvas e aplicadas a diferentes snapshots. Possíveis violações de invariantes e restrições de multiplicidade em um dado snapshot podem ser seletivamente verificadas.
Editor de Cenários de RegrasEste módulo permite a criação, gerenciamento e execução de casos de teste que podem ser utilizados para validar operações de consulta e expressões de derivação anexados a atributos de modelo, isto é, todas as operações e expressões que não modificam o estado do sistema. Casos de teste são organizados em grupos hierárquicos. Um caso de teste é definido por uma expressão OCL que será avaliada em um determinado snapshot do sistema e por seu resultado esperado. A avaliação da expressão pode ser visualizada da mesma maneira descrita no módulo Snapshot Explorer, auxiliando o usuário na descoberta de razões porque um resultado não esperado foi produzido. O usuário pode avaliar um caso de teste específico, um grupo de casos de teste ou todos os casos de teste. Cada grupo pode ser associado a um snapshop de sistema específico, de forma que todos os casos de teste pertencentes ao grupo serão avaliados considerando o snapshot associado. Se um grupo não está associado a um snapshot, a hierarquia de grupos é revisada até que um grupo ancestral, com um snapshot associado, seja encontrado. A Figura 4 mostra uma tela deste módulo. Os casos de teste selecionados são avaliados e os resultados são exibidos utilizando cores verde e vermelha para indicar se a avaliação do caso de teste confirmou ou não aos resultados esperados.
Editor de Cenário de TransaçãoEste módulo permite a criação, gerenciamento e execução de casos de teste que podem ser utilizados para validar operações que não sejam consultas, isto é, todas as operações que podem modificar o estado do sistema. Casos de teste são organizados em grupos hierarquicos. Um caso de teste é definido por uma sequência de chamadas para operações não-consulta e por um snapshot do sistema correspondendo ao estado do sistema imediatamente antes da execução da primeira operação na sequência. Cada operação de um caso de teste é especificada pelos seguintes elementos:
O usuário pode avaliar um caso de teste específico, um grupo de casos de teste ou todos os casos de teste. A Figura 5 mostra uma tela deste módulo. Os casos de teste selecionados são avaliados e os resultados são exibidos utilizando cores verde e vermelha para indicar se a avaliação do caso de teste confirmou ou não os resultados esperados. Na parte ifnerior da tela, o usuário pode visualizar uma visão detalhada da avaliação para cada pré e pós-condição, o que auxilia na descoberta da razão de um possível resultado não esperado. Se um caso de teste é composto pela sequência de duas ou mais chamadas de operação, o usuário pode avaliá-las passo-a-passo, inspecionando o snapshot resultante e visualizando todas as diferenças entre o snapshot atual e o anterior. |