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 elaborar um TCC em Sistemas de Informação

Alguns meses atrás estive na tão conhecida saga de elaboração do Trabalho de Conclusão de Curso, o TCC, e somente comprovei aquilo que eu via em forma de desabafo nas redes sociais e que tantos outros colegas de faculdade me falavam. Uma das definições mais aceitas por mim sobre o que é um TCC é a citada pela minha orientadora: "é uma gestação". E realmente, apesar de ter feito o meu em cerca de 1 mês (não recomendo isso para ninguém, mas era minha única saída para não ficar desempregado e sem a possibilidade de cursar meu mestrado, mas essa é outra história), um TCC bem feito deve ter seu cronograma definido para 6 meses, no mínimo, e isso deveria ser uma recomendação do Ministério da Saúde para que os graduandos não percam sua saúde mental.

Mininet: Uma Rede Virtual Instantânea no Seu PC

Baseado no texto de introdução presente no site oficial do Mininet (www.mininet.org) apresento esta ferramenta que possibilita a desenvolvedores e pesquisadores a criação de uma rede virtual realista, executando um kernel real, switch e código de aplicação, em uma única máquina (VM, cloud ou nativa), em segundos, com comandos simples.

A rede virtual criada pelo Mininet é escalável, uma rede definida por software em um único PC utilizando processos do Linux. Isso possibilita um meio inteligente de realizar testes e simulações de uma rede antes de implementá-la em meio físico, caso esse seja o objetivo.