• Nenhum resultado encontrado

3 DESENVOLVIMENTO DO META-MODELO

4.1 Ferramentas Utilizadas

Para o desenvolvimento do protótipo foram utilizadas basicamente três ferramentas, são elas: Java 6, como linguagem de programação, USE, como ferramenta para verificação das restrições de integridade e Velocity, como ferramenta para auxílio na geração de código. Nesta seção, será explicada a escolha da ferramenta USE e é apresentada uma visão geral da ferramenta Velocity.

4.1.1 Ferramentas para a Aplicação de Restrições de Integridade

Inicialmente, foram estudadas algumas ferramentas para a aplicação de restrições de integridade em modelos. Deste estudo, destacam-se as ferramentas: OCL Compiler, Octopus e

USE. As mesmas são detalhadas nas seções a seguir.

4.1.1.1 OCL Compiler

O OCL Compiler (OCLCUD) é um compilador OCL escrito na linguagem Java pela Universidade de Dresden. Segundo [TOV07], existem duas maneiras de trabalhar com a ferramenta. OCLCUD pode ser usado independentemente como um compilador OCL ou como uma parte da ferramenta Argo/UML. As principais características dessa ferramenta são a checagem sintática e semântica de expressões OCL e a possibilidade de gerar código Java e SQL dessas expressões. A versão suportada pela ferramenta é a OCL 2.0, embora pequenas

e por executar checagem de tipos. A checagem de consistência nessa ferramenta é a verificação da compatibilidade de restrições. Isso confirma que expressões têm um contexto e que essas são corretas de acordo com o modelo carregado.

A Normalização é a atividade executada antes da Geração de Código, sendo aplicada a uma árvore de sintaxe abstrata obtida na análise. A função principal desse módulo é reduzir a complexidade do gerador de código. A Geração de Código é uma das mais interessantes características dessa ferramenta.

Existem três interfaces entre o OCLCUD e seu ambiente (por exemplo, uma ferramenta CASE), são elas:

OCL Constraint: o compilador é invocado.

Model Information: informação de um modelo UML por meio de um arquivo XMI. Target code interface: o compilador gera informação sobre a restrição (por

exemplo, quando uma restrição sob análise se refere a uma invariante ou a uma operação).

A ferramenta é publicada sob a licença GNU Lesser General Public License (LGPL) e está disponível em [DRE07] juntamente com o código fonte.

4.1.1.2 Octopus

[WAR07] afirma que a ferramenta OCL Tool for Precise UML Specifications (Octopus) é capaz de checar de forma estática a sintaxe de expressões OCL, assim como tipos de expressões e o uso correto de elementos do modelo como papéis de associação e atributos. Essa ferramenta suporta o padrão OCL 2.0 em sua totalidade e foi construída por Klasse

Todas as novas construções de OCL 2.0, como regras de derivação e especificações de valores iniciais, são completamente suportadas. Além disso, Octopus oferece a possibilidade de visualizar expressões em uma sintaxe SQL. A semântica das expressões originais, escritas na sintaxe padrão, ficam totalmente intactas, enquanto a aparência se torna mais familiar para aqueles que trabalham com banco de dados.

O Octopus é capaz de gerar um protótipo de três camadas completo a partir de um modelo UML/OCL. A camada intermediária consiste em Plain Old Java Objects (POJOs). Os

POJOs são objetos Java que seguem uma estrutura simplificada em contraposição aos Enterprise JavaBeans (EJBs). Esses POJOs incluem código para a checagem de invariantes e

multiplicidades do modelo. Expressões OCL que definem o corpo de uma operação são transformadas no corpo do método Java correspondente. Regras de derivação e especificações de valores iniciais também são transformadas. Opcionalmente, podem ser criados métodos para cada classe.

A camada de armazenamento consiste em um reader (leitor) e um writer (escritor)

XML dedicados ao modelo UML/OCL. Essa camada armazena e recupera qualquer dado da

aplicação protótipo em um arquivo XML. O reader lerá os conteúdos do arquivo XML e irá gerar objetos para quaisquer classes, atributos e association ends (definem as regras sobre como os objetos de classes participam em uma associação) que estão no modelo.

A camada de interface do usuário apresenta todas as instâncias do sistema, assim, as instâncias de um modelo UML/OCL podem ser criadas e examinadas. A ferramenta também possibilita a checagem das invariantes ou multiplicidades de uma instância.

A geração de código do Octopus considera a visão Model Driven Architecture (MDA). Ou seja, uma aplicação pode ser construída pela criação de um modelo independente de plataforma e transformado em código dependente de plataforma. Todavia, a aplicação gerada é chamada de protótipo, pois existe a necessidade de melhorar as ferramentas de transformação de código. Maiores informações sobre o Octopus podem ser vistas em [WAR07].

4.1.1.3 USE

[TOV07] afirma que a aplicação UML-based Specification Environment (USE) tem sido desenvolvida em Java por Mark Richters da Universidade de Bremen.

Segundo [USE07], o USE é um sistema para a especificação de sistemas de informação. Uma especificação do USE contêm uma descrição textual (classes, associações,

visualizadas as características dos modelos, o diagrama de objetos, as invariantes de classes, a evolução dos estados, as propriedades de objetos e até uma chamada da pilha.

Uma vez carregado o modelo, necessita-se criar objetos e iniciar os atributos. Após isso, podem ser estabelecidas as associações entre os objetos. Em cada instante, ocorre uma mudança no estado do sistema, assim uma checagem automática das invariantes de classes é executada. Por exemplo, quando um novo objeto é introduzido, esse é checado para verificar se o mesmo respeita o modelo e suas restrições.

O analisador de expressões OCL incluído no USE, incorpora checagem de tipos, assim como a consistência de restrições. O analisador detecta expressões OCL que usam classes, atributos, operações ou associações que não são definidas no modelo. Por outro lado, restrições contraditórias não são detectadas.

Um novo aspecto importante dessa ferramenta é a validação de pré-condições e pós- condições de OCL. Por fim, deve-se notar que essa ferramenta é capaz de visualizar e avaliar operações de diagramas de seqüência. O USE 2.3.1 está disponível em [USE07] e pode ser livremente distribuído por LGPL.

4.1.1.4 Considerações sobre a Escolha da Ferramenta para a Elaboração do Protótipo

Analisadas algumas ferramentas existentes atualmente para a aplicação de restrições de integridade em modelos, decidiu-se utilizar a ferramenta USE. Além de preencher os requisitos básicos necessários para o protótipo deste trabalho (no caso, a compilação de restrições OCL e a possibilidade de verificação de consistência entre o meta-modelo e seus modelos), a ferramenta tem boa usabilidade e permite a integração com diversas aplicações por ter código aberto escrito em Java.

4.1.2 Geração de Código

Para auxiliar na geração de código por meio do protótipo desenvolvido foi utilizada a ferramenta Velocity [VEL07]. O Velocity é um projeto da Apache Software Foundation, carregado com a criação e a manutenção de software open-source relativos à Apache Velocity

Engine. Todos os softwares criados no projeto Velocity estão disponíveis sob a Licença de

Software Apache e são livres para o público. O Velocity é escrito 100% em Java e pode ser facilmente embutido em aplicações.

O Apache Velocity oferece os seguintes projetos:

Velocity Engine: é um mecanismo de templates de código aberto, permitindo o uso

de uma linguagem de templates para referenciar objetos definidos em código Java. O

Velocity Engine é o núcleo do Projeto Apache Velocity.

Velocity Tools: esse projeto contém ferramentas e outras infra-estruturas úteis para

construir aplicações usando o Velocity Engine.

Velocity DVSL: Declarative Velocity Style Language (DVSL) é uma ferramenta

destinada para transformações XML usando a Velocity Template Language (VTL) como linguagem de transformação.

Para a integração, o Velocity Engine inclui um número de tarefas pré-definidas disponíveis em [ANT07]. A integração em aplicações Web e frameworks está disponível em [VEL07a].

Documentos relacionados