Pular para o conteúdo principal

Tutorial: Desenvolvimento de Software Baseado em Modelos na Prática com Epsilon, Parte 1

O MDD (Model-Driven Development) pode ser utilizado na prática seguindo o processo de criação e aplicação de uma DSML (Domain Specific Language). Para isso, como foi descrito aqui, primeiramente é necessário satisfazer três requisitos:
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.
Resultado final da ferramenta criada.

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.
Este arquivo é codificado com a sintaxe da linguagem Emfatic, uma linguagem desenhada para representar modelos EMF Ecore de forma textual. Apenas para fins de esclarecimento, é possível alinhar a linguagem e o arquivo .emf codificado com a sintaxe abstrata da DSML a ser definida. Os elementos Ecore que veremos a seguir podem ser visualizados como a sintaxe concreta desta DSML.

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".
Configuração de execução do editor.
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".
Arquivo para criação do diagrama de um
sistema de arquivos.
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.
Editor de modelo para um sistema de arquivos.
Desta forma, a sintaxe abstrata foi criada, e até mesmo uma sintaxe concreta, sem muita semântica, também foi implementada automaticamente pelo gerador do EuGENia. Na parte 2 deste tutorial, você vai ver que, além de definir uma sintaxe concreta a partir de representações gráficas, é possível realizar customizações no editor, restrições à criação dos modelos, e inclusive validações para verificar a consistência de modelos.

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.



Comentários

Postagens mais visitadas deste blog

Utilizando o padrão de referências da ABNT no Word

Uma importante funcionalidade do Microsoft Word é o seu Gerenciador de Fontes Bibliográficas. Para aqueles que estão escrevendo algum trabalho acadêmico ou científico, é possível cadastrar todas as referências do trabalho e no final gerar a listagem já enumerada dos documentos que foram consultados na pesquisa. Essa postagem traz os arquivos necessários e as instruções para facilitar essa etapa da elaboração.

Como resetar completamente uma instalação do Apache no Ubuntu

Quando eu estava experimentando o módulo python do Apache (mod_python), eu 'de alguma maneira' estraguei minha instalação do Apache. Os arquivos de configuração ficaram em um estado estranho, então eu excluí a pasta /etc/apache2, removi o Apache (através do dpkg) e o reinstalei. Mas o resultado não foi como esperado, a pasta /etc/apache2 não foi recriada na instalação.

Como interpretar e utilizar gráficos

A quantidade de uma única postagem nos últimos 5 anos de blog mostra o quanto estive focado em outras coisas e sem tempo para escrever aqui. Porém, no meio de uma pandemia e com a finalização do meu doutorado, acabei ficando com mais tempo e colocando como meta a volta das publicações aqui no blog.
Nunca antes na história desse país a população, de uma maneira geral, se preocupou tanto com gráficos, curvas, média e outras questões básicas da estatística. Assim, em tempos de coronavírus, essa postagem tem o objetivo de auxiliar que mais e mais pessoas consigam interpretar gráficos, fazer comparações e, inclusive, saber o melhor tipo de gráfico para usar em determinados casos.