Epsilon, ferramenta utilizada para criação de modelos e geração de código. |
- Sintaxe Abstrata: o metamodelo que descreve conceitos e regras de modelagem da DSML, equivalente a uma gramática das linguagens de programação;
- Sintaxe Concreta: a notação gráfica da DSML, seus elementos representativos;
- Semântica: o significado de cada elemento gráfico da DSML.
Após estes requisitos serem atendidos, o gerador de código é implementado e, consequentemente, deve ser possível utilizar modelos executáveis, através de uma ferramenta CASE, produto do MDD, finalizando as etapas.
Nesta publicação irei mostrar como criar a sintaxe abstrata, a sintaxe concreta, e a semântica, utilizando como exemplo um Sistema de Arquivos. A implementação deste exemplo utiliza a Epsilon, uma família de linguagens e ferramentas para geração de código, transformações modelo-modelo, validação de modelo, comparação, migração e refatoramento que funciona com o EMF (Eclipse Modelling Framework) e outros tipos de modelos.
Instalação
Faça o download do Epsilon. Após isso, basta extraí-lo em algum diretório do seu sistema. É preciso ter a JDK instalada no OS para que seja possível executar a Epsilon.
Criando a Sintaxe Abstrata na Epsilon
No menu "File > New > Project..." selecione, em "Eclipse Modeling Framework", "Empty EMF Project". A janela ilustrada na imagem a seguir deve ser exibida, e o nome do projeto deve ser inserido.
Criação do projeto EMF. |
Com o projeto criado, é hora de criar o arquivo .emf que irá conter o metamodelo. Para isso, selecione a pasta "model", e com o botão direito crie um novo arquivo Emfatic, "New > Other > 'digite Emfatic' > Emfatic file". Na janela exibida, insira o nome do metamodelo, aqui "filesystem.emf", base da ferramenta CASE ser gerada.
Estrutura do projeto. |
Criação do arquivo .emf. |
Com o arquivo "filesystem.emf" aberto no Epsilon, adicione o seguinte trecho de código:
@namespace(uri="filesystem", prefix="filesystem") @gmf package filesystem; @gmf.diagram class Filesystem { val Drive[*] drives; val Sync[*] syncs; } class Drive extends Folder { } class Folder extends File { @gmf.compartment val File[*] contents; } class Shortcut extends File { @gmf.link(target.decoration="arrow", style="dash") ref File target; } @gmf.link(source="source", target="target", style="dot", width="2") class Sync { ref File source; ref File target; } @gmf.node(label = "name") class File { attr String name; }
Não entrarei em detalhes da sintaxe do Emfatic, mas o código acima apenas define os conceitos do domínio (sistema de arquivos) e como estes conceito estão relacionados. Caso deseje mais informações, acesse a documentação oficial da linguagem.
Com apenas alguns cliques já será possível executar a ferramenta criada e visualizar como é possível criar modelos a partir da Epsilon. Clique com o botão direito no metamodelo que definimos, "filesystem.emf", e selecione "Eugenia > Generate GMF Editor". Após isso, vários arquivos serão criados automaticamente e já será possível executar o editor. Execute uma nova instância Eclipse a partir do menu "Run > Eclipse Application", utilizando "-XX:PermSize=64M -XX:MaxPermSize=128M -Xms512M -Xmx1024M" como argumentos da VM em "Run Configurations".
Na nova instância do Eclipse, basta criar um novo projeto e depois um arquivo de diagrama baseado no "Filesystem" em "New > Other > Examples > Filesystem Diagram".
Após a realização destes passos, você deve visualizar uma tela semelhante a que está ilustrada a seguir. Os passos para criar uma versão standalone do editor eu deixarei para o processo de descoberta do leitor. Mas adianto que não é nada difícil.
Com apenas alguns cliques já será possível executar a ferramenta criada e visualizar como é possível criar modelos a partir da Epsilon. Clique com o botão direito no metamodelo que definimos, "filesystem.emf", e selecione "Eugenia > Generate GMF Editor". Após isso, vários arquivos serão criados automaticamente e já será possível executar o editor. Execute uma nova instância Eclipse a partir do menu "Run > Eclipse Application", utilizando "-XX:PermSize=64M -XX:MaxPermSize=128M -Xms512M -Xmx1024M" como argumentos da VM em "Run Configurations".
Configuração de execução do editor. |
Arquivo para criação do diagrama de um sistema de arquivos. |
Editor de modelo para um sistema de arquivos. |
Disponibilizei o projeto "filesystem" na minha conta do github para quem quiser fazer checkout (https://github.com/felipealencar/filesystem). Espero que tenham gostado. Até mais.
0 Comentários