Voltar para o projeto Odyssey

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 OCL

Odyssey-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 Explorer

Este 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.

Screenshot of the snapshot explorer module

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:

  • Visão de Árvore: Os resultados são exibidos em uma árvore. Esta visão é útil para a visualização de tuplas de valores complexos e também para navegação interativa por elos entre objetos.
  • Visão de Tabela: Os resultados são exibidos em uma tabela. As colunas exibidas nesta visão podem ser personalizadas pelo o usuário, permitindo uma forma mais flexível de visualizar os resultados.
  • Visão AST: Todas os nódulos de expressões e suas avaliações intermediárias são exibidas em uma visão de árvore. Esta visão é útil para propósitos de depuração.

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.

Screenshot of the OCL query evaluation feature

 

Editor de Cenários de Regras

Este 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.

Screenshot of Rule Scenarios Editor module

 

Editor de Cenário de Transação

Este 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:

  • Uma instrução de chamada de operação
    ex: videoRentalSystem.rent(aClient, Set{copy1, copy2}) 
  • O resultado esperado de uma avaliação de todas as pré-condições associadas a operação chamada.
  • O resultado esperado da avaliação de todas as pós-condições associadas a operação chamada.
  • Pós-snapshot: Snapshot de sistema resultante da execução da operação.
  • Executar corpo de ação (sim/não): Se esta opção é configurada como 'não', a ferramenta avalia apenas as pós-condições considerando o snapshot posterior especificado. entretanto, se esta opção é configurada como 'sim', então o corpo de ação (script OCL) associado à operação é executado e o snapshot resultante é utilizado na avaliação das pós-condições. Se um snapshot é especificado, então o snapshot resultante é também comparado a ele, e o caso de teste falha se houver diferenças na comparação.
  • Assertivas específicas: Além da avaliação de pós-confições e comparação de snapshots, o usuário pode especificar uma lista de assertivas específicas, expressas como expressões booleanas OCL, que também são avaliadas quando um caso de teste é executado.

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.

Screenshot of the transaction scenario editor module