geração de artefatos de texto utilizando a mda

57
Geração de Artefatos de Texto Utilizando a MDA Carlos Eduardo Pantoja João Victor Guinelli

Upload: kadu-pantoja

Post on 01-Jul-2015

113 views

Category:

Software


6 download

DESCRIPTION

Mini-curso de geração semi-automática de codificação de artefatos de textos utilizando a Model-Driven Architecture ministrado na I Semana Acadêmica de Sistemas de Informação da Universidade Federal Rural do Rio de Janeiro (UFRRJ).

TRANSCRIPT

Page 1: Geração de Artefatos de Texto Utilizando a MDA

Geração de Artefatos de Texto Utilizando a

MDA

Carlos Eduardo Pantoja

João Victor Guinelli

Page 2: Geração de Artefatos de Texto Utilizando a MDA

1. Introdução a Model-Driven Architecture (MDA)

2. Meta-Modelagem Utilizando o Ecore

3. A Especificação Model-To-Text (M2T)

4. Geração de Artefatos de Textos Usando O Acceleo

5. Desafio

6. Conclusão

7. Referências Bibliográficas

Sumário

Page 3: Geração de Artefatos de Texto Utilizando a MDA

1. Model-Driven Architecture (MDA)

A Model Driven Architecture (MDA) é uma arquitetura que permite a criação de

soluções de software utilizando meta-modelos que separam a especificação independente de modelo computacional da implementação em plataformas específicas [Mellor, 2004].

1

Page 4: Geração de Artefatos de Texto Utilizando a MDA

• Modelos De Abstrações [OMG 2003]

O Computation Independent Model (CIM) é uma visão independente de computação do sistema, que não mostra a estrutura do sistema e é o modelo de domínio da solução. O Platform Independent Model (PIM) é construído baseado nas operações

do sistema com independência de plataforma de implementação.

O Platform Specific Model (PSM) é um modelo do sistema com o ponto de

vista da plataforma utilizada, que combina as especificações do PIM com como o sistema utiliza as tecnologias da plataforma.

As regras de mapeamento provém especificações necessárias para a transformação do PIM no PSM; e do PSM em artefatos.

2

Page 5: Geração de Artefatos de Texto Utilizando a MDA

The MDA Architecture

Figura 1. The MDA Architecture [OMG 2012].

3

Page 6: Geração de Artefatos de Texto Utilizando a MDA

Aplicações Usando MDA

Figura 2. A ferramenta GEDBM Tool.

4

• GEDBM Tool [Guinelli et al. 2014]

Page 7: Geração de Artefatos de Texto Utilizando a MDA

Aplicações Usando MDA

Figura 3. A ferramenta PDT.

5

• Prometheus Design Tool [Sun et al. 2010]

Page 8: Geração de Artefatos de Texto Utilizando a MDA

Aplicações Usando MDA

6

• OMT-G Design [Schaly; Frozza 2010]

Figura 4. A ferramenta OMT-G Design.

Page 9: Geração de Artefatos de Texto Utilizando a MDA

Objetivo

Figura 5. O objetivo prático do curso.

7

Page 10: Geração de Artefatos de Texto Utilizando a MDA

2. Meta-Modelagem Utilizando o Ecore

O que é um modelo? O que é um Meta-modelo?

8

Page 11: Geração de Artefatos de Texto Utilizando a MDA

Meta Object Facility (MOF)

Figura 6. Classes do EMOF [OMG 2010].

9

Page 12: Geração de Artefatos de Texto Utilizando a MDA

Arquitetura de Quatro Camadas

Figura 7. Arquitetura de quatro camadas da OMG [OMG 2012].

10

Page 13: Geração de Artefatos de Texto Utilizando a MDA

Eclipse Modeling Framework (EMF)

O Eclipse Modeling Framework (EMF) [STEINBERG et al. 2008] é um

framework integrado ao ambiente de desenvolvimento Eclipse,

que gera ferramentas baseadas em modelos estruturados para geração de código.

Os metamodelos são criados usando a ferramenta Ecore, que gera um arquivo XMI com base nas construções do diagrama.

11

Page 14: Geração de Artefatos de Texto Utilizando a MDA

Abrindo um novo projeto do EMF no Eclipse

Figura 8. File > New > Other > EMF Project .

12

Page 15: Geração de Artefatos de Texto Utilizando a MDA

Adicionando um Ecore Diagram

Figura 9. File > New > Other > Ecore.

13

Page 16: Geração de Artefatos de Texto Utilizando a MDA

Criando Modelos Usando o Ecore Diagram

Criação de meta-classes

Criação de herança

Criação de associação

Criação de meta-atributos

Figura 10. Paleta de opções.

14

Page 17: Geração de Artefatos de Texto Utilizando a MDA

Criando Modelos Usando o Ecore Diagram

Meta-classes abstratas e interfaces

Figura 11. EClass > Properties.

15

Page 18: Geração de Artefatos de Texto Utilizando a MDA

Criando Modelos Usando o Ecore Diagram

Limites inferior e superior

Meta-tipo do atributo

Figura 12. EAttribute > Properties.

16

Page 19: Geração de Artefatos de Texto Utilizando a MDA

Criando Modelos Usando o Ecore Diagram

Limites inferior e superior

Criação de composição

Figura 13. EReference > Properties.

17

Page 20: Geração de Artefatos de Texto Utilizando a MDA

Criando o meta-modelo

Figura 14. O meta-modelo para banco de dados relacionais.

18

Page 21: Geração de Artefatos de Texto Utilizando a MDA

Criando o EMF Generator Model

Figura 15. File > New > Other > EMF Generator Model.

Figura 16. Escolha da pasta e do nome do arquivo.

19

Page 22: Geração de Artefatos de Texto Utilizando a MDA

Criando o EMF Generator Model

Figura 17. Seleção do tipo de Meta-modelo.

Figura 18. Seleção do meta-modelo a ser carregado.

20

Page 23: Geração de Artefatos de Texto Utilizando a MDA

Criando o EMF Generator Model

Figura 19. Seleção do pacote a ser gerado.

21

Page 24: Geração de Artefatos de Texto Utilizando a MDA

Gerando o Editor para o metamodelo

Figura 20. Seleção do pacote a ser gerado.

22

Page 25: Geração de Artefatos de Texto Utilizando a MDA

Gerando o Plug-in do Eclipse

Figura 21. Primeiro passo para exportação do plug-in.

23

Page 26: Geração de Artefatos de Texto Utilizando a MDA

Gerando o Plug-in do Eclipse

Figura 22. Tela de geração do plug-in.

24

Page 27: Geração de Artefatos de Texto Utilizando a MDA

Instalando o Plug-in do Eclipse

Figura 23. Pasta contendo os plugins gerados.

Os plug-ins gerados devem ser copiados e colados na pasta

plugins no local de instalação do eclipse. Após isso o eclipse

deve ser reiniciado.

25

Page 28: Geração de Artefatos de Texto Utilizando a MDA

Utilizando o Plug-in Instalado

Figura 24. File > New > Other > Ufrrj Model.

Figura 25. Seleção da pasta e do nome do arquivo.

26

Page 29: Geração de Artefatos de Texto Utilizando a MDA

Utilizando o Plug-in Instalado

Figura 26. Seleção do Model Object que servirá de base

para criação da instância do Meta-modelo.

Figura 27. O Editor do meta-modelo.

27

Page 30: Geração de Artefatos de Texto Utilizando a MDA

3. A Especificação Model-To-Text (M2T)

O Model-To-Text (M2T) [OMG 2008] é uma especificação da OMG, que

utiliza templates para transformar modelos PSM em representações

linearizadas de textos, como códigos e relatórios.

28

Page 31: Geração de Artefatos de Texto Utilizando a MDA

Figura 28. O meta-modelo adaptado do JaCaMo [Pantoja; Choren 2012].

Exemplo: O Meta-Modelo JaCaMo

29

Page 32: Geração de Artefatos de Texto Utilizando a MDA

A Sintaxe de Templates M2T

[template] Qualquer Inserção de Caracteres [/template]

• Linguagem e Texto

30

Page 33: Geração de Artefatos de Texto Utilizando a MDA

A Sintaxe de Templates M2T

[module AgentToAsl('http://cefet-rj.br/metamodels/jacamo')/] [import files::agent::belief::BeliefToJason/] [template public AgentToAsl(aAgent : Sequence(Agent))] [/template]

• Criação de módulos, templates e importação de outros módulos

31

Page 34: Geração de Artefatos de Texto Utilizando a MDA

A Sintaxe de Templates M2T

[file (iAgent.name + '.asl', false, 'UTF-8')] [/file]

• Criação de um artefato de texto

32

Page 35: Geração de Artefatos de Texto Utilizando a MDA

A Sintaxe de Templates M2T

[for (iAgent : Agent | aAgent)] //Jason Agent [iAgent.name/] [/for]

• For

33

Page 36: Geração de Artefatos de Texto Utilizando a MDA

A Sintaxe de Templates M2T

[template private getJasonMessage(iInternal : InternalAction)] [if (iInternal.isBroadcast = false)] .send([iInternal.to/],[iInternal.force/],[iInternal.message/]) [else] .broadcast([iInternal.force/],[iInternal.message/]) [/if] [/template]

• If/Else

34

Page 37: Geração de Artefatos de Texto Utilizando a MDA

A Sintaxe de Templates M2T

[if (iType = ActionType::subGoal)] ! [elseif (iType = ActionType::newGoal)] !! [elseif (iType = ActionType::testGoal)] ? [elseif (iType = ActionType::removeBelief)] - [elseif (iType = ActionType::addBelief)] + [elseif (iType = ActionType::updateBelief)] -+ [/if]

• Elseif

35

Page 38: Geração de Artefatos de Texto Utilizando a MDA

A Sintaxe de Templates M2T

[if (iAction.followingSiblings()->isEmpty() = true)] . [else] ; [/if]

• Sintaxe Object Constraint Language (OCL) [OMG 2014]

36

Page 39: Geração de Artefatos de Texto Utilizando a MDA

A Sintaxe de Templates M2T

[for (iAgent : Agent | aAgent)] [BeliefToJason(iAgent.believeIn)/] [/for] [module BeliefToJason('http://cefet-rj.br/metamodels/jacamo')/] [template public BeliefToJason(aBelief : OrderedSet(Belief))] [for (iBelief : Belief | aBelief)] [if (iBelief.name <> null)] [iBelief.name/]. [/if] [/for] [/template]

• Chamada de métodos

37

Page 40: Geração de Artefatos de Texto Utilizando a MDA

Figura 29. A instância do JaCaMo [Pantoja; Choren 2012].

Exemplo: a instância do meta-modelo

38

Page 41: Geração de Artefatos de Texto Utilizando a MDA

Figura 30. O código gerado em Jason [Pantoja; Choren 2012].

Exemplo: a codificação gerada

39

Page 42: Geração de Artefatos de Texto Utilizando a MDA

4. Geração de Artefatos de Texto usando o Acceleo

A ferramenta Acceleo utiliza o M2T e foi projetada para permitir a

geração de código e artefatos de textos para o Eclipse.

40

Page 43: Geração de Artefatos de Texto Utilizando a MDA

Criando um novo projeto do Acceleo

Figura 31. File > New > Other > Acceleo Project .

41

Page 44: Geração de Artefatos de Texto Utilizando a MDA

Criando um novo Template

Figura 32. File > New > Other > Module File .

42

Page 45: Geração de Artefatos de Texto Utilizando a MDA

Gerando lançador gráfico para o Acceleo

Figura 33. File > New > Other > Acceleo UI Launcher Project.

Figura 34. Seleção do nome e localização do projeto.

43

Page 46: Geração de Artefatos de Texto Utilizando a MDA

Gerando lançador gráfico para o Acceleo

Figura 35. File > New > Other > Acceleo UI Launcher Project.

Figura 36. Seleção do nome das regras de transformação, do arquivo sobre o

qual irão ser aplicadas e a pasta de destino do arquivo gerado.

44

Page 47: Geração de Artefatos de Texto Utilizando a MDA

Executando os templates

Figura 37. File > New > Other > Acceleo UI Launcher Project.

45

Page 48: Geração de Artefatos de Texto Utilizando a MDA

Abrindo o Artefato de Texto Gerado

Figura 38. Artefato de texto gerado.

46

Page 49: Geração de Artefatos de Texto Utilizando a MDA

Gerando o Plug-in de Geração Automática

Figura 39. Primeiro passo para exportação do Plug-in Acceleo.

47

Page 50: Geração de Artefatos de Texto Utilizando a MDA

Gerando o Plug-in de Geração Automática

Figura 40. Tela de geração do plug-in.

48

Page 51: Geração de Artefatos de Texto Utilizando a MDA

5. Desafio

Dado um Diagrama de Classes da UML com associações básicas, construir um gerador de codificação semi-automática para a linguagem Java. Segue

um exemplo para facilitar o entendimento.

49

Figura 41. A classe Example.

Page 52: Geração de Artefatos de Texto Utilizando a MDA

5. Desafio

Figura 42. Um exemplo de código a ser gerado pelo plug-in.

50

Page 53: Geração de Artefatos de Texto Utilizando a MDA

6. Conclusão

Este curso apresentou a geração de artefatos de texto utilizando a MDA com o objetivo de se criar geradores semi-automáticos e

automáticos de codificação para diversas linguagens.

Além da geração de codificação através da M2T, também é possível criar

transformações entre meta-modelos usando a especificação Model-To-Model (M2M) [OMG 2011].

É possível a criação de ambientes gráficos que instanciam automaticamente os meta-modelos utilizando o Graphical Modeling

Framework (GMF).

51

Page 54: Geração de Artefatos de Texto Utilizando a MDA

7. Referências Bibliográficas

52

Guinelli JV, Rosa AS, Pantoja CE, Choren R. Uma Metodologia Para Apoio ao Projeto de Banco de Dados Geográficos Utilizando a MDA. In: X Simpósio Brasileiro de Sistemas de Informação, 2014, Londrina. Anais do IX Simpósio Brasileiro de Sistemas de Informação, 2014. Mellor SJ, Scott K, Uhl A, Weise D. MDA Destilada: Princípios de Arquitetura Orientada por Modelos. Ciência Moderna, 2005. Obeo. Acceleo: MDA generator – home [updated 2012 May; cited 2014 Oct]. Available from: http://www.acceleo.org/. OMG. MOF model to text transformation language, v 1.0 [updated 2008 May; cited 2014 Oct]. Available from: http://www.omg.org/spec/MOFM2T

Page 55: Geração de Artefatos de Texto Utilizando a MDA

53

OMG. Meta object facility (MOF) Query/View/Transfomation specification [updated 2011 May; cited 2014 Oct]. Available from: http://www.omg.org/spec/QVT/ OMG. MDA [updated 2014 May; cited 2014 Oct]. Available from: http://www.omg.org/mda/ OMG. Object Constraint Language (OCL) [updated 2014 May; cited 2014 Oct]. Available from: http://www.omg.org/spec/OCL/ Pantoja CE, Choren R. A MDA Approach for Agent-oriented Development using FAML. In Special Session on Model Driven Development for Information Systems: Techniques, Tools and Methodologies, 2012, Wroclaw. Proceedings of the 14th International Conference on Enterprise Information Systems. v. 2. p. 415-420.

Page 56: Geração de Artefatos de Texto Utilizando a MDA

54

Schaly KW, Frozza AA. Uma ferramenta para gerar bancos de dados geográficos a partir de diagramas omt-g. In XI Escola Regional de Banco de Dados; 2010; Santa Catarina, Brasil. Steinberg D, Budinsky F, Merks E, Paternostro M. Emf: Eclipse Modeling Framework. Pearson Education, 2008. Sun H, Thangarajah J, Padgham L. Eclipse-based Prometheus Design Tool. In Proceedings of the 9th International Conference on Autonomous Agents and Multiagent Systems; 2010 May 10-14; Toronto, Canada.