Anda di halaman 1dari 97

Atlas Transformation Language

Transformao de Modelos Java em Modelos de Classes UML


DEI-ISEP

2008 / 2009

1050540 Pedro Dias

Atlas Transformation Language


Transformao de Modelos Java em Modelos de Classes UML
DEI-ISEP

2008 / 2009

1050540 Pedro Dias

Licenciatura em Engenharia Informtica


Outubro de 2009
Orientador ISEP: Alexandre Bragana

A todos os que me apoiaram

Atlas Transformation Language Transformao de Modelos Java em Modelos de Classes UML

Agradecimentos
Ao meu orientador, Professor Doutor Alexandre Bragana, pela orientao, superviso e aconselhamento durante todo o perodo do projecto. Cristina Silva pelas contribuies na reviso deste relatrio e pelo apoio, disponibilidade, fora e incentivos durante todo este percurso. Aos meus pais, que muito contriburam e me apoiaram ao longo de todo este percurso. Aos meus amigos, pelas palavras de apoio durante o tempo dedicado a este projecto.

vii

Atlas Transformation Language Transformao de Modelos Java em Modelos de Classes UML

Resumo
A adopo de estratgias de desenvolvimento de software baseadas em modelos tem despertado bastante interesse junto do meio acadmico e mais recentemente no meio industrial. Neste novo paradigma, os artefactos de software so manipulados como modelos e torna-se possvel o estabelecimento de relaes e transformaes entre eles. Neste contexto, usual a gerao do texto dos programas com base em modelos de mais alto nvel de abstraco. A traduo inversa neste contexto torna-se um pouco mais complexa e propcia a erros pois necessrio efectuar o parsing do texto dos programas. No contexto do Model Driven Development, o objectivo ltimo que todos os artefactos possam ser manipulados como modelos. Este projecto teve como objectivo desenvolver suporte (experimental) para que modelos java pudessem ser manipulados e transformados em modelos de classes UML. Foi desenvolvido usando a Framework EMF do Eclipse e a linguagem de transformao ATL e envolveu uma grande dose de investigao visto que os conceitos eram novos e bastante abstractos. de salientar que o resultado deste projecto ser integrado numa framework open source de suporte ao desenvolvimento baseado em modelos de linhas de produtos de software com base na metodologia MoDeLine.

Palavras Chave (Tema):

Modelao, Model-Driven Engineering, ModelDriven Development.

Palavras Chave (Tecnologias):

Eclipse, Eclipse Modeling Framework, Atlas Transformation Language, UML2

ix

Atlas Transformation Language Transformao de Modelos Java em Modelos de Classes UML

ndice
Agradecimentos .......................................................................................................vii Resumo .................................................................................................................... ix ndice ....................................................................................................................... xi ndice de Figuras..................................................................................................... xv ndice de Tabelas ................................................................................................... xvii ndice de excertos de cdigo .................................................................................. xix Notao e Glossrio ............................................................................................... xxi 1 Introduo ........................................................................................................ 1
1.1 1.2
1.2.1 1.2.2

Enquadramento .................................................................................................. 1 Apresentao do projecto/estgio ....................................................................... 1


Planeamento de projecto .............................................................................................. 1 Reunies de acompanhamento...................................................................................... 2

1.3 1.4

Contributos deste trabalho ................................................................................. 2 Organizao do relatrio .................................................................................... 2

Contexto ............................................................................................................ 5
2.1 2.2 2.3 2.4 Model-Driven Engineering ................................................................................. 5 Eclipse Modeling Framework .......................................................................... 10 Metamodelo JavaModel ................................................................................... 12 Metamodelo de Classes UML ........................................................................... 14

Atlas Transformation Language (ATL) ...........................................................17


3.1
3.1.1 3.1.2 3.1.3 3.1.4

ATL module ...................................................................................................... 18


Header Section........................................................................................................... 19 Import Section ........................................................................................................... 19 Helpers ...................................................................................................................... 20 Rules ......................................................................................................................... 22

xi

Atlas Transformation Language Transformao de Modelos Java em Modelos de Classes UML

3.1.5

Semntica da execuo dos mdulos .......................................................................... 25

3.2
3.2.1 3.2.2

ATL Query........................................................................................................ 26
Estrutura de uma ATL Query ..................................................................................... 27 Semntica da execuo da Query................................................................................ 27

3.3 3.4 3.5 3.6

ATL Library ..................................................................................................... 28 Data Types ........................................................................................................ 28 ATL Comments ................................................................................................ 30 OCL Declarative Expressions .......................................................................... 30

Transformao de um Modelo Java para um Modelo de Classes UML em ATL 33


4.1 4.2 4.3
4.3.1 4.3.2 4.3.3 4.3.4 4.3.5 4.3.6 4.3.7 4.3.8 4.3.9

Criao do projecto ATL ................................................................................. 34 Criao das configuraes ................................................................................ 37 Relaes entre modelos ..................................................................................... 39
JModelElement (abstracta) / Element (abstracta) ........................................................ 39 JCompilationUnit....................................................................................................... 40 JMember (abstracta)................................................................................................... 40 JPackage / Package .................................................................................................... 41 JClass / Class ............................................................................................................. 42 JField / Property......................................................................................................... 45 JInitializer.................................................................................................................. 46 JMethod / Operation .................................................................................................. 46 JParameter ................................................................................................................. 48

4.4 4.5

Criao de cdigo ATL ..................................................................................... 49 Execuo das configuraes ............................................................................. 53

Concluses .......................................................................................................55
5.1 5.2 5.3 Objectivos realizados ........................................................................................ 55 Limitaes & trabalho futuro .......................................................................... 55 Apreciao final ................................................................................................ 56

xii

Atlas Transformation Language Transformao de Modelos Java em Modelos de Classes UML

Anexo 1 Anexo 2

Metamodelo EMF_JavaModel .............................................................61 Metamodelo UML2_UMLClassModel .................................................64

xiii

Atlas Transformation Language Transformao de Modelos Java em Modelos de Classes UML

ndice de Figuras
Figura 1 Noes bsicas a) paradigma object-oriented b) paradigma MDE ..................................... 5 Figura 2 Componentes principais do MDA....................................................................................... 6 Figura 3 a) Model-Driven Architecture b) exemplo prtico MDA ..................................................... 7 Figura 4 Processo de transformao de modelos.............................................................................. 8 Figura 5 - Objectivo final da MDA da OMG ....................................................................................... 9 Figura 6 Relao do projecto com a MDA. .................................................................................... 10 Figura 7 Hierarquia de classes do modelo Ecore (a cinzento esto representadas as classes abstractas)........................................................................................................................................ 11 Figura 9 Diagrama de Classes do Metamodelo JavaModel ............................................................ 13 Figura 8 Extracto do metamodelo Java2 (baseado no JavaModel).................................................. 14 Figura 10 Extracto do metamodelo UML do UML2........................................................................ 15 Figura 11 Ambiente de Desenvolvimento ATL ................................................................................ 18 Figura 12 Esquema da estrutura do tipo de dados ATL .................................................................. 29 Figura 13 Esquema da transformao ATL java2uml ................................................................. 33 Figura 14 Janela para criao de um novo projecto ATL ............................................................... 34 Figura 15 Janela para criao de um novo ficheiro ATL ................................................................ 36 Figura 16 Modelo Java exemplo do ficheiro java.java2 .................................................................. 37 Figura 17 Janela que permite criar, gerir e correr as configuraes .............................................. 38 Figura 18 Modelo de Classes UML do ficheiro uml.uml.............................................................. 54 Figura 19 Metamodelo EMF_JavaModel Jclass................................................................... 61 Figura 20 Metamodelo EMF_JavaModel JcompilationUnit ............................................ 61 Figura 21 Metamodelo EMF_JavaModel JField................................................................... 61 Figura 22 Metamodelo EMF_JavaModel JInitializer ..................................................... 62 Figura 23 Metamodelo EMF_JavaModel JMember ................................................................ 62 Figura 24 Metamodelo EMF_JavaModel JMethod ................................................................ 62 Figura 25 Metamodelo EMF_JavaModel JModelElement ................................................... 62 Figura 26 Metamodelo EMF_JavaModel JPackage .............................................................. 62

xv

Atlas Transformation Language Transformao de Modelos Java em Modelos de Classes UML

Figura 27 Metamodelo EMF_JavaModel JParameter.......................................................... 63 Figura 28 Metamodelo EMF_JavaModel JVisibility ....................................................... 63 Figura 29 Metamodelo UML2_UMLClassModel EData Types ............................................. 64 Figura 30 Metamodelo UML2_UMLClassModel EClass::Comment ..................................... 64 Figura 31 Metamodelo UML2_UMLClassModel EClass::Feature ..................................... 64 Figura 32 Metamodelo UML2_UMLClassModel EEnum::VisibilityKind ....................... 64 Figura 33 Metamodelo UML2_UMLClassModel EClass::TypedElement ......................... 65 Figura 34 Metamodelo UML2_UMLClassModel EClass::TemplateableElement.......... 65 Figura 35 Metamodelo UML2_UMLClassModel EClass::ParameterableElement ....... 65 Figura 36 Metamodelo UML2_UMLClassModel EClass::ConnectableElement ............ 65 Figura 37 Metamodelo UML2_UMLClassModel EClass::BehavioralFeature .............. 66 Figura 38 Metamodelo UML2_UMLClassModel EClass::DeploymentTarget ................ 66 Figura 39 Metamodelo UML2_UMLClassModel EClass::EncapsulatedClassifier... 66 Figura 40 Metamodelo UML2_UMLClassModel EClass::PackageableElement ............ 66 Figura 41 Metamodelo UML2_UMLClassModel EClass::Element ..................................... 67 Figura 42 Metamodelo UML2_UMLClassModel EClass::NamedElement ......................... 68 Figura 43 Metamodelo UML2_UMLClassModel EClass::Namespace ................................ 68 Figura 44 Metamodelo UML2_UMLClassModel EClass::Package ..................................... 69 Figura 45 Metamodelo UML2_UMLClassModel EClass::Type............................................ 69 Figura 46 Metamodelo UML2_UMLClassModel EClass::Classifier .............................. 70 Figura 47 Metamodelo UML2_UMLClassModel EClass::Parameter ................................ 71 Figura 48 Metamodelo UML2_UMLClassModel EClass::RedefinableElement ............ 71 Figura 49 Metamodelo UML2_UMLClassModel EClass::MultiplicityElement.......... 72 Figura 50 Metamodelo UML2_UMLClassModel EClass::Class ......................................... 72 Figura 51 Metamodelo UML2_UMLClassModel EClass::Property................................... 73 Figura 52 Metamodelo UML2_UMLClassModel EClass::Operation ................................ 74 Figura 53 Metamodelo UML2_UMLClassModel EClass::StructuredClassifier ....... 74 Figura 54 Metamodelo UML2_UMLClassModel EClass::BehavioredClassifier ....... 75

xvi

Atlas Transformation Language Transformao de Modelos Java em Modelos de Classes UML

ndice de Tabelas
Tabela 1 Planeamento do projecto ................................................................................................... 2 Tabela 2 Relao entre metamodelos: JModelElement.............................................................. 39 Tabela 3 Relao entre metamodelos: JMember ........................................................................... 41 Tabela 4 Relao entre metamodelos: JPackage ......................................................................... 42 Tabela 5 Relao entre metamodelos: JClass ............................................................................. 44 Tabela 6 Relao entre metamodelos: JField ............................................................................. 46 Tabela 7 Relao entre metamodelos: JMethod ........................................................................... 48 Tabela 8 Relao entre metamodelos: JParameter .................................................................... 49

xvii

Atlas Transformation Language Transformao de Modelos Java em Modelos de Classes UML

ndice de excertos de cdigo


Cdigo 1 Exemplo de uma header section............................................................................. 19 Cdigo 2 Exemplo de uma import section .............................................................................. 20 Cdigo 3 Exemplo de um helper ................................................................................................. 21 Cdigo 4 Exemplo de uma matched rule ................................................................................. 23 Cdigo 5 Exemplo de uma called rule ..................................................................................... 25 Cdigo 6 Exemplo de uma query ................................................................................................. 27 Cdigo 7 Exemplo de um comment............................................................................................... 30 Cdigo 8 Exemplo do ficheiro .project ..................................................................................... 35 Cdigo 9 Header do ficheiro java2uml.atl.............................................................................. 36 Cdigo 10 Matched rule JPackage2Package ........................................................................... 50 Cdigo 11 Matched rule JClass2Class .................................................................................... 51 Cdigo 12 Matched rule JField2Property.............................................................................. 51 Cdigo 13 Helper alterar() ....................................................................................................... 52 Cdigo 14 Matched rule JMethod2Operation ......................................................................... 52 Cdigo 15 Matched rule JParameter2Parameter .................................................................. 53

xix

Atlas Transformation Language Transformao de Modelos Java em Modelos de Classes UML

Notao e Glossrio
ATL EMF IDE M2M MDA MDD MDE MDT OCL OMG UML XML XMI Atlas Transformation Language Eclipse Modeling Framework Integrated Development Environment Model-To-Model Model-Driven Architecture Model-Driven Development Model-Driven Engineering Model Development Tool Object Constraint Language Object Management Group Unified Modeling Language Extensible Markup Language XML Metadata Interchange

xxi

Atlas Transformation Language Transformao de Modelos Java em Modelos de Classes UML

1 Introduo
1.1 Enquadramento
Este documento tem como finalidade servir como relatrio final do projecto realizado no mbito da unidade curricular Projecto / Estgio da Licenciatura em Engenharia Informtica do Instituto Superior de Engenharia do Porto. O seu objectivo descrever todas as actividades desenvolvidas no decorrer do mesmo, realando o seu desenvolvimento tcnico. O tema deste projecto enquadra-se no campo do Model Driven Development (MDD), tendo como base o Ambiente Integrado de Desenvolvimento (IDE) Eclipse e a sua Framework de Modelao Eclipse Modeling Framework (EMF).

1.2 Apresentao do projecto/estgio


O projecto tem como objectivo estudar e testar experimentalmente a possibilidade de dar suporte transformao entre dois tipos de modelos, Modelos de programas Java e Modelos de Classes UML. Para esta transformao entre modelos, ficou desde o incio definido que, devido complexidade das ferramentas e impossibilidade temporal de as testar todas, se utilizaria apenas a ferramenta Atlas Transformation Language (ATL). Os modelos utilizados tm como base metamodelos, ou seja, modelos dos modelos. O Modelo Java utilizado baseado no seu metamodelo JavaModel, parte integrante do EMF e o Modelo de Classes UML baseado no seu metamodelo UML do UML2, uma ferramenta de desenvolvimento de modelos (MDT) baseada no EMF.

1.2.1 Planeamento de projecto O projecto teve a durao de cinco meses, comeando em Maio de 2009 e terminando em Setembro de 2009. Para o planeamento do projecto foi utilizada a ferramenta Microsoft Office Project.

Atlas Transformation Language Transformao de Modelos Java em Modelos de Classes UML

Tabela 1 Planeamento do projecto

1.2.2 Reunies de acompanhamento Durante a elaborao do projecto foram realizadas reunies semanais com o orientador no Departamento de Engenharia Informtica do Instituto Superior de Engenharia do Porto. O objectivo das reunies era comunicar o ponto de situao do projecto e apresentar problemas, solues e melhorias.

1.3 Contributos deste trabalho


Este projecto permite uma fcil e rpida transformao de modelos java em modelos de classes UML promovendo assim a reutilizao de cdigo. O resultado deste projecto ser integrado numa framework open source de suporte ao desenvolvimento baseado em modelos de linhas de produtos de software baseada na metodologia MoDeLine.

1.4 Organizao do relatrio


O primeiro captulo pretende dar uma ligeira introduo ao projecto, mostrando qual o seu enquadramento. Permite saber como foi planeado e acompanhado pelo orientador do mesmo.

Atlas Transformation Language Transformao de Modelos Java em Modelos de Classes UML

No segundo captulo apresentado o contexto do projecto e so explicados os conceitos tericos inerentes ao mesmo. No terceiro captulo apresentada a Atlas Transformation Language (ATL). No quarto captulo so apresentadas as relaes entre os metamodelos e explicada a transformao entre eles. No quinto captulo so apresentadas as concluses relativamente ao projecto desenvolvido ao longo de cinco meses. Em anexo esto os metamodelos utilizados para a realizao desta experincia pois eram demasiado grandes para fazerem parte da estrutura principal do relatrio.

Atlas Transformation Language Transformao de Modelos Java em Modelos de Classes UML

2 Contexto
2.1 Model-Driven Engineering
Este projecto consiste em testar experimentalmente a transformao de modelos Java em modelos de classes UML enquadrando-se no contexto da Model-Driven Engineering (MDE). MDE uma metodologia de desenvolvimento de software com foco na criao e uso de modelos para aumento da produtividade, maximizando a compatibilidade entre sistemas.

Os modelos fazem parte de um crescente nmero de processos de engenharia (tal como engenharia de software). Contudo, na maior parte dos casos, so apenas destinados a fazer parte da documentao em vez de serem parte integrante do processo de engenharia. Como oposto a esta abordagem, o campo da MDE considera os modelos como entidades de primeira classe, sendo que tudo pode ser representado atravs de modelos. Na figura seguinte podemos observar uma comparao possvel entre os conceitos do paradigma object-oriented e os do paradigma MDE.

Figura 1 Noes bsicas a) paradigma object-oriented b) paradigma MDE

Atlas Transformation Language Transformao de Modelos Java em Modelos de Classes UML

A abordagem Model-Driven fornece um conjunto de operaes dedicadas manipulao de modelos. Neste contexto, o modelo de transformao a operao central para tratamento de modelos. Destina-se a tornar possvel especificar a maneira como produzido um nmero de modelos alvo baseados num conjunto de modelos fonte (por exemplo, como se obtm um modelo de classes em notao UML baseado num modelo de cdigo java). No mbito da MDE, assumido que o modelo de transformao, tal como outra ferramenta baseada em modelos pode ser modelada, o que significa que ela tambm dever ser considerada como modelo. No mbito deste projecto dado foco transformao entre modelos.

Um exemplo de tentativa de concretizao da viso MDE a iniciativa MDA da OMG. A figura seguinte apresenta um exemplo dos componentes principais do MDA.

Figura 2 Componentes principais do MDA

Atlas Transformation Language Transformao de Modelos Java em Modelos de Classes UML

No campo da Model-Driven Engeneering, o modelo definido de acordo com a semntica de um modelo de modelos, tambm chamado metamodelo. Um modelo que respeite a semntica definida por um metamodelo, diz-se que ele obedece (conforms) a esse metamodelo. A figura seguinte sintetiza a relao entre modelos.

Figura 3 a) Model-Driven Architecture b) exemplo prtico MDA

Cada modelo composto por um nmero distinto de elementos e, da mesma maneira que um modelo obedece ao seu metamodelo, existem relaes entre elementos de um modelo e do seu metamodelo. Um metamodelo, antes de o ser, um modelo. Isto implica que tambm ele obedea ao seu metamodelo. Com este fim, a MDA define um terceiro nvel de modelao, correspondente ao metametamodelo, tal como ilustrado na figura anterior. No MDA o papel de metametamodelo da responsabilidade do MOF (ver figura 2). O metametamodelo introduz a semntica que requerida para especificar metamodelos. De notar que um metametamodelo define-se a si mesmo, o que significa que ele especificado atravs das suas prprias semnticas, podendo-se assim dizer que um metametamodelo obedece a si mesmo.

Atlas Transformation Language Transformao de Modelos Java em Modelos de Classes UML

O ATL oferece suporte a dois standards da MDA, a Meta Object Facilities (MOF) do Object Management Group (OMG) e o metametamodelo Ecore do Eclipse Modeling Framework (EMF). Sendo que o Ecore do EMF pode ser considerado como uma implementao com adaptaes do MOF da OMG. Ou seja, o ATL est habilitado a trabalhar com metamodelos que foram especificados de acordo com a semntica do Ecore e do MOF. O EMF ser alvo de apresentao na prxima seco.

No mbito da MDE, a transformao de modelos permite especificar a maneira como transformar modelos fonte (source) em modelos alvo (target), sendo possvel definir a correspondncia dos elementos entre modelos. Formalmente, uma transformao entre modelos define a maneira como criar um modelo Mb, que obedece a um metamodelo MMb, apartir de um modelo Ma, que obedece a um metamodelo MMa. E, no esquecendo que a caracterstica da MDE considerar tudo como sendo modelos, a prpria transformao Mt definida como um modelo e esta obedece a um metamodelo MMt que define a semntica do modelo de transformaes. Todos os metamodelos tambm obedecem ao metametamodelo MMM, que como j referido, define o modelo dos modelos.

Figura 4 Processo de transformao de modelos

Atlas Transformation Language Transformao de Modelos Java em Modelos de Classes UML

A figura 5 apresenta uma viso da possvel realizao da abordagem MDE/MDA quando adoptada globalmente no processo de desenvolvimento/engenharia de software. Em particular, o MDA prope dois grandes tipos de modelos: modelos independentes da plataforma (PIM) e modelos especficos de plataforma (PSM). Essa figura mostra as possveis relaes entre modelos usados em diversas fases do ciclo de desenvolvimento e tambm segundo diferentes perspectivas (i.e., business aspects, technical aspects, etc.). Essas relaes so derivadas das transformaes entre os modelos. Este projecto visa, em particular, estudar a viabilidade de promover o cdigo java a modelo, de forma a poder ser integrado numa abordagem MDE. Estamos portanto no contexto das actividades identificadas na figura pela elipse a vermelho.

Figura 5 - Objectivo final da MDA da OMG

Em particular neste projecto, pretende-se at verificar um pouco mais alm do que a figura apresenta, ou seja, verificar se o componente Code pode tambm ele ser um modelo. Neste contexto o projecto aborda a transformao entre o modelo do cdigo java (modelo fonte) e o modelo de classes UML especfico para java (modelo alvo).

Atlas Transformation Language Transformao de Modelos Java em Modelos de Classes UML

Figura 6 Relao do projecto com a MDA.

Portanto, a inteno deste projecto fazer a transformao ATL (seces 3 e 4) do Code Java, representado atravs do metamodelo JavaModel (seco 2.3), num modelo de classes UML, representado pelo metamodelo UML do UML2 (seco 2.4). A ferramenta que d suporte a estes modelos a EMF (seco 2.2). Na continuao deste projecto ser ainda feita a transformao inversa. Por fim este projecto ser integrado num projecto paralelo que efectua a transformao de modelos Java, que obedecem ao JavaModel, em Modelos Java do Eclipse e vice-versa, identificado pela elipse a tracejado vermelho. Posteriormente sero ambos integrados numa framework open source de suporte ao desenvolvimento baseado em modelos de linhas de produtos de software baseada na metodologia MoDeLine.

2.2 Eclipse Modeling Framework


Todo o projecto foi desenvolvido sobre o Eclipse, um ambiente de desenvolvimento integrado (IDE) escrito em Java e que permite desenvolver aplicaes tanto em Java como noutras linguagens atravs dos diversos plugins para esse efeito. Vrios projectos tm sido desenvolvidos sobre esta plataforma, um deles, que est directamente relacionado com a modelao denominado Eclipse Modeling Project. um projecto da comunidade Eclipse focado na evoluo e promoo de tecnologias de desenvolvimento baseadas em modelos, fornecendo um conjunto de ferramentas e frameworks.

10

Atlas Transformation Language Transformao de Modelos Java em Modelos de Classes UML

Uma dessas frameworks denominada Eclipse Modeling Framework (EMF), utilizada neste projecto, que permite a modelao e gerao de cdigo para construo de ferramentas e outras aplicaes baseadas em modelos de dados estruturados. Atravs da framework em questo, possvel criar modelos EMF e gerar os respectivos editores atravs de trs tipos de fontes: Modelo Rational Rose Conjunto de interfaces e classes Java anotadas eXtensible Markup Language (XML) Schema

O resultado dessa criao um modelo Ecore (.ecore), que corresponde ao modelo EMF (mais concretamente, metamodelo) e um modelo gerador

(.genmodel) que controla a gerao de cdigo para o metamodelo.

Figura 7 Hierarquia de classes do modelo Ecore (a cinzento esto representadas as classes abstractas)

O modelo gerador pode ser expandido para serem visualizados todos os seus elementos, e cada um destes tem propriedades, a eles associados, que controlam o comportamento do gerador de cdigo. atravs deste modelo que possvel modificar e iniciar facilmente a gerao de diferentes tipos de cdigos: Model Code Edit Code
11

Atlas Transformation Language Transformao de Modelos Java em Modelos de Classes UML

Editor Code Test Code

Relativamente ao Model Code, aps a sua gerao, so criadas classes de interface e uma classe enum (se o modelo for importado do Rose), completas (se o modelo foi definido usando classes Java anotadas) e criado um novo par de interfaces para o prprio package e para o factory. Sero ainda criados dois novos packages com os sufixos impl e util que contm implementaes das interfaces e classes teis adicionais e dois tipos de ficheiros manifest para o Plug-in do modelo: plugin.xml e MANIFEST.MF. Em qualquer momento possvel voltar a gerar o cdigo pois as mudanas sero efectuadas no caso de ter havido alguma alterao no cdigo. Pode-se ainda selectivamente gerar subconjuntos do Model Code, tal como um package ou class e gerar o cdigo respectivo.

Quanto ao Edit e Editor Codes, por pr-definio so criados dois plug-ins: o Edit que inclui adaptadores que fornecem uma vista estruturada e comandos para a edio dos objectos do modelo e o Editor que fornece um user interface (UI) para o editor e um wizard.

No que diz respeito ao Test Code, este aps gerado possui esqueletos de teste JUnit para o exerccio de quaisquer funes e operaes definidas no modelo, que normalmente devem ser preenchidos. Contm apenas uma simples classe exemplo que mostra como carregar e validar um modelo de uma aplicao stand-alone.

2.3 Metamodelo JavaModel


Para a transformao entre modelos, seja qual for a aplicao a utilizar, necessria a existncia de dois tipos de modelos, o modelo de entrada (fonte) e o modelo de sada

12

Atlas Transformation Language Transformao de Modelos Java em Modelos de Classes UML

(alvo). O modelo de entrada o nome dado ao modelo que se quer transformar, que no caso em estudo diz respeito ao Modelo Java. um modelo baseado no seu metamodelo JavaModel, utilizado internamente pelo EMF, que apesar da sua documentao e integrao fora do EMF serem limitadas, servem perfeitamente para a nossa experincia.

Figura 9 Diagrama de Classes do Metamodelo JavaModel

Visto que para a realizao do trabalho era necessria a criao de um modelo baseado no JavaModel e no era fornecida essa possibilidade, foi necessrio criar um projecto paralelo com o auxlio do EMF para a criao de um novo metamodelo (chamado java2). Este metamodelo exactamente igual ao JavaModel, com a possibilidade de criao de modelos.

13

Atlas Transformation Language Transformao de Modelos Java em Modelos de Classes UML

Figura 8 Extracto do metamodelo Java2 (baseado no JavaModel)

2.4 Metamodelo de Classes UML


Como modelo de sada, nome dado ao modelo resultante da transformao, temos o Modelo de Classes UML baseado no seu metamodelo, presente no UML2, uma das Model Development Tools (MDT) pertencentes ao Eclipse Modeling Project, referido anteriormente. As MDT so ferramentas que fornecem a implementao de metamodelos padro e exemplares para o desenvolvimento de modelos baseados em metamodelos. O UML2, uma dessas ferramentas, uma implementao desenvolvida em EMF, baseada na Unified Modeling Language (UML) do Object Management Group (OMG) para a plataforma Eclipse. Os objectivos da componente UML2 so fornecer: uma aplicao til do metamodelo UML para suporte do desenvolvimento de ferramentas de modelao um XML Metadata Interchange (XMI) Schema para facilitar a alternncia entre modelos semnticos casos de teste com o intuito de validar a especificao regras de validao para definir e aplicar nveis de conformidade

14

Atlas Transformation Language Transformao de Modelos Java em Modelos de Classes UML

Figura 10 Extracto do metamodelo UML do UML2

15

Atlas Transformation Language Transformao de Modelos Java em Modelos de Classes UML

3 Atlas Transformation Language (ATL)


Atlas Transformation Language uma linguagem de transformao de modelos especificada tanto em metamodelo como em texto. No campo da MDE, a ATL possibilita a especificao de maneira a produzir modelos alvo (target) atravs de modelos fonte (source). uma mistura de programao declarativa com imperativa. O estilo preferido da escrita da transformao declarativo pois permite expressar de uma forma simples as correspondncias entre os elementos dos modelos fonte e alvo. Contudo, tambm possvel uma construo imperativa para expressar facilmente a correspondncia que se torna difcil expressar de forma declarativa. Um programa de transformao ATL composto por regras que definem qual a correspondncia entre elementos dos modelos para criar e inicializar um novo modelo alvo. tambm possvel definir um modelo de consulta (query) que permite especificar os pedidos a modelos e ainda a possibilidade de factorizao atravs da definio de bibliotecas (libraries) ATL. Desenvolvido sobre a plataforma Eclipse, disponibiliza ferramentas de

desenvolvimento standard, tais como o debugger e syntax highlighting, que permitem um mais simples desenho das transformaes. O ambiente de desenvolvimento ATL oferece facilidades adicionais para o tratamento de modelos pois permite uma ponte entre o texto comum, dedicado especificao de metamodelos, e a sua correspondente representao visual.

17

Atlas Transformation Language Transformao de Modelos Java em Modelos de Classes UML

Figura 11 Ambiente de Desenvolvimento ATL

A linguagem ATL define trs diferentes tipos de unidades. ATL module, ATL Query e ATL Library. Qualquer que seja o seu tipo, so definidos nos seus prprios e distintos ficheiros, caracterizados pela extenso .atl.

3.1 ATL module


As transformaes Model-To-Model (M2M) so descritas nos mdulos ATL (ATL modules). Esta unidade do ATL permite especificar como produzir um conjunto de modelos alvo atravs de um conjunto de modelos fonte. Todos os modelos devem ser associados aos seus respectivos metamodelos. Um mdulo ATL aceita um nmero fixo de modelos de entrada e retorna um nmero fixo de modelos alvo. Como consequncia, um mdulo no pode gerar um nmero indeterminado de modelos alvo similares, ou seja, modelos que obedeam ao mesmo metamodelo. A estrutura de um mdulo ATL composta por uma header section, uma import section opcional e um conjunto de helpers e rules que no pertencem a nenhuma seco especfica, podendo ser declarados sem qualquer ordem.

18

Atlas Transformation Language Transformao de Modelos Java em Modelos de Classes UML

3.1.1 Header Section A header section define o nome do mdulo de transformao, o nome das variveis correspondentes aos modelos fonte e alvo e codifica o modo de execuo do mdulo.

Definio da sintaxe da header section:


module nome_do_mdulo; create modelos_de_sada [from|refining] modelos_de_entrada;

O nome_do_mdulo , como o prprio nome indica, a denominao do mdulo e deve ser igual ao nome do ficheiro ATL em que se insere. A declarao dos modelos alvo faz-se a seguir da palavra create e a dos modelos fonte a seguir palavra from (no modo normal) ou refining (no caso de uma transformao refinada). Ambos os modelos devem obedecer ao esquema nome_do_modelo :

nome_do_metamodelo. possvel declarar mais do que um modelo de sada ou entrada separando com vrgulas os modelos declarados. Visto que o nome dos modelos declarados ir ser usado para identific-los, cada nome tem de ser nico.

module Pai2Pessoa; create OUT : Pessoa from IN : Pai;


Cdigo 1 Exemplo de uma header section

Neste

exemplo

representada

header

section

do

ficheiro

Pai2Pessoal.atl, usada para transformar modelos em que o seu metamodelo o Pai, em modelos cujo metamodelo Pessoa.

3.1.2 Import Section A import section o local onde so declaradas as bibliotecas ATL que tm de ser importadas. possvel declarar diversas bibliotecas distintas, usando o nome da biblioteca pretendida sem a sua respectiva extenso, atravs de sucessivas instrues.

19

Atlas Transformation Language Transformao de Modelos Java em Modelos de Classes UML

Definio da sintaxe da import section:


uses nome_da_biblioteca_sem_extenso;

uses strings;
Cdigo 2 Exemplo de uma import section

Exemplo de um import cujo objectivo importar a biblioteca de Strings.

3.1.3 Helpers Os helpers podem ser vistos como o equivalente, no ATL, aos mtodos Java. Possibilitam a definio de cdigo factorizado, combatendo assim a redundncia, e podem ser chamados em diferentes pontos da transformao ATL.

Definio da sintaxe de um helper:


helper [context tipo_do_contexto]? def : nome [(parmetros?)]? :

tipo_do_retorno = expresso;

Um helper composto pelo seu tipo_do_contexto, o seu nome e respectivo conjunto de parmetros (se aplicvel), um tipo_do_retorno e a expresso do helper. O contexto introduzido pela palavra context e define o tipo de elementos a que o helper se aplica, ou seja, o tipo de elementos a partir do qual ser possvel chamlo. O contexto pode ser omitido da definio do helper, ficando o helper associado ao contexto global do mdulo ATL, o que significa que, no mbito desse helper, a varivel self uma referncia para o seu mdulo/query. O nome do helper introduzido pela palavra def e seguido pelos parmetros, se existentes, dentro de parnteses. A definio dos parmetros tem de obedecer ao esquema nome_do_parmetro : tipo_do_parmetro e no caso da

20

Atlas Transformation Language Transformao de Modelos Java em Modelos de Classes UML

existncia de vrios parmetros, estes podem ser declarados separados por vrgulas. O nome_do_parmetro deve ser nico dentro de um mesmo helper. Tanto o tipo_de_contexto como o tipo_do_parmetro e o tipo_do retorno devem ser de um tipo de dados suportados pelo ATL. O corpo do helper deve ser especificado como uma expresso Object Constraint Language (OCL), explicada na seco 3.6, sendo um dos tipos de expresses suportadas. Podem existir vrios helpers com o mesmo nome numa nica transformao, contudo devem ter assinaturas distintas para serem distinguveis pelo ATL. Tambm possvel definir atributos. Um attribute helper um tipo especfico de helper que aceita a inexistncia de parmetros e pode ser definido no contexto de um mdulo ATL ou de um elemento do modelo. Um helper sem parmetros e um attribute helper so apenas equivalentes num ponto de vista funcional pois existe uma diferena significativa quando consideradas as semnticas de execuo. Enquanto que o valor de retorno de um helper calculado todas as vezes que ele chamado, o valor de retorno de um attribute helper calculado apenas uma vez, quando o valor requisitado pela primeira vez. Sendo assim, pode-se concluir que declarar um attribute helper mais eficiente. Um attribute helper que definido no contexto de um mdulo ATL inicializado (durante a fase de inicializao) na ordem em que ele declarado no ficheiro ATL. Sendo assim, pode-se concluir que a ordem importante pois isso implica que um attribute helper tenha que ser declarado depois de outro attribute helper do qual ele dependa para a sua inicializao. Caso a ordem no seja a correcta ser desencadeado um erro durante a fase de inicializao da execuo de um programa ATL.

helper def : mdiaInferior(seq : Sequence(Integer), valor : Real) : Boolean = let mdia : Real = seq->sum()/seq->size() in mdia<valor;
Cdigo 3 Exemplo de um helper

21

Atlas Transformation Language Transformao de Modelos Java em Modelos de Classes UML

Este helper, chamado mdiaInferior, definido no contexto de um mdulo ATL (visto que nenhum contexto est explicitamente especificado). O resultado deste helper ser o retorno de um valor booleano. No caso do valor da mdia dos valores contidos no parmetro seq, sequncia (Sequence) de inteiros, for menor comparativamente a um valor real dado (valor) o resultado ser true, caso contrrio ser false. O corpo do helper uma expresso let, que define e inicializa a varivel mdia. Resumindo, a varivel ser comparada com o valor de referncia. 3.1.4 Rules Existem trs tipos diferentes de regras (rules), que correspondem a dois diferentes modos de programao fornecidos pelo ATL. As matched rules correspondem programao declarativa e as lazy rules e called rules que programao imperativa.

As matched rules so o principal constituinte das transformaes declarativas no ATL. Permitem especificar para que tipos de elementos fonte se deve gerar elementos alvo e a maneira como os elementos alvo devem ser inicializados.

Definio da sintaxe de uma matched rule:


rule nome_da_regra { from var_fonte : modelo_fonte[(condio)]? [using { varivel_entrada1:tipo_varivel_entrada1=expresso1; ... varivel_entradan:tipo_varivel_entradan=expresson; }]? to varivel_sada1 : tipo_varivel_sada1(associaes1), varivel_sada2 : distinct tipo_varivel_sada2 foreach(e in collection)(associaes2), ... varivel_sadan : tipo_varivel_sadan (associaesn) [do { declaraes_imperativas }]?

22

Atlas Transformation Language Transformao de Modelos Java em Modelos de Classes UML

A regra especifica a maneira como os elementos do modelo alvo devem ser inicializados para cada modelo fonte correspondente. As matched rules so introduzidas pela palavra rule, seguidas pelo nome_da_regra, que as identifica. So obrigatoriamente compostas pelos padres das fontes e dos alvos, e pelas seces opcionais compostas por variveis locais e imperativas. O padro fonte definido depois da palavra-chave from e permite especificar o elemento do modelo fonte, correspondente a determinado metamodelo, que ser transformado. O padro alvo introduzido pela palavra-chave to e permite especificar os elementos (atributos e associaes) que sero gerados quando o padro fonte da regra tem correspondncia e como estes elementos gerados so inicializados. O padro alvo de uma matched rule d origem a elementos distintos para cada elemento do modelo alvo da regra que gerado quando tem correspondncia. Uma associao (ou correspondncia) definida por nome_da_caracteristica expresso. Isto significa que cada regra gerar elementos alvo para cada elemento fonte que esteja de acordo com as correspondncias definidas. Um elemento de um modelo fonte de uma transformao ATL no deve ser correspondente a mais do que uma matched rule nem pode gerar valores primitivos, sendo assim, deve-se ter cuidado para respeitar sempre esta restrio. As seces de variveis locais so introduzidas pela palavra-chave using, permitindo declarar e inicializar localmente estas variveis que sero apenas visveis no mbito da regra em que esto inseridas. As seces opcionais imperativas, introduzidas pela palavra-chave do tornam possvel especificar cdigo imperativo que ser executado depois da inicializao dos elementos alvo gerados pela regra.
rule InformacaoPai2InformacaoPessoa { from s : MMPai!InformacaoPai to t : MMPessoa!InformacaoPessoa ( name <- a.name, surname <- a.surname ) }
Cdigo 4 Exemplo de uma matched rule

23

Atlas Transformation Language Transformao de Modelos Java em Modelos de Classes UML

Esta regra chamada InformacaoPai2InformacaoPessoa, tem como objectivo transformar o modelo fonte InformacaoPai no modelo alvo InformacaoPessoa. Esta regra apenas contem os padres obrigatrios. O modelo alvo no define nenhum filtro, o que significa que todas as classes InformacaoPai do metamodelo MMPai sero correspondidas pela regra. O elemento padro t alocar as classes InformacaoPessoa e estas sero inicializadas com os atributos correspondentes da classe InformacaoPai.

As lazy rules so idnticas s matched rules, mas apenas podem ser aplicadas quando chamadas por outras regras. As called rules facilitam a programao imperativa, e tal como os helpers, tm de ser explicitamente chamadas para serem executadas, podendo aceitar parmetros. Contudo, podem gerar elementos em modelos alvo tal como as matched rules. As called rules tm de ser chamadas atravs de uma seco de cdigo imperativo, quer a partir de uma matched rule ou outra called rule, excepto quando se utiliza o entrypoint (cada transformao ATL apenas pode utilizar um).

Definio da sintaxe de uma called rule:


[entrypoint]? rule nome_da_regra''(''parmetros''){ [using { varivel1:tipo_varivel1 = expresso1; ... variveln:tipo_variveln = expresson; }]? [to varivel_sada1 : tipo_varivel_sada1(associaes1), varivel_sada2 : distinct tipo_varivel_sada2 foreach(e in collection)(associaes2), ... varivel_sadan : tipo_varivel_sadan (associaesn) [do { declaraes_imperativas }]?

24

Atlas Transformation Language Transformao de Modelos Java em Modelos de Classes UML

Tal como as matched rules, estas so introduzidas pela palavra-chave rule e podem incluir as seces opcionais para variveis locais e imperativas. Contudo, visto que no necessita de fazer correspondncia, uma called rule no inclui o padro fonte. E o seu padro alvo, que possibilita a gerao de elementos de modelos alvo, opcional. Visto que no se faz a correspondncia de nenhum elemento de um modelo fonte, a inicializao de elementos de um modelo alvo tem de ser baseada na combinao de variveis locais, parmetros e atributos do mdulo. O padro alvo definido da mesma maneira que o de uma matched rule, introduzido igualmente pela palavrachave to. Uma called rule tem de ser nica numa transformao ATL e no pode ter o mesmo nome que um helper nem chamar-se main.

rule NovaPessoa (nome: String, sobrenome: String) { to t : MMPessoa!Pessoa ( nomep <- nome ) do { t.sobrenomep <- sobrenome } }
Cdigo 5 Exemplo de uma called rule

Esta called rule, chamada NovaPessoa, tem como objective gerar elementos alvo do tipo Pessoa. A regra aceita dois parmetros que correspondem com o nome e o sobrenome do modelo Pessoa que ser criado pela execuo da regra. A regra ao mesmo tempo um padro alvo chamado t e uma seco de cdigo imperativo. Este padro aloca a classe Pessoa sempre que a regra chamada e inicializa o nome do atributo. O cdigo imperativo coloca no sobrenomep o valor do parmetro sobrenome.

3.1.5 Semntica da execuo dos mdulos A execuo, no modo normal, de um mdulo ATL organizada em trs fases sucessivas:

25

Atlas Transformation Language Transformao de Modelos Java em Modelos de Classes UML

Fase de inicializao do modelo. Fase de correspondncia dos elementos do modelo fonte (source). Fase de inicializao dos elementos do modelo alvo (target).

A primeira fase de execuo corresponde fase de inicializao do modelo, onde os atributos definidos no contexto do mdulo de transformao so inicializados. Se houver o uso de atributos definidos no contexto de elementos de modelos fonte, esses atributos tambm sero inicializados. Se for definida alguma called rule no mbito desse mdulo, o cdigo dessa regra, incluindo a gerao de elementos do modelo alvo, sero executados depois da inicializao dos atributos do mdulo ATL.

Durante a fase de correspondncia dos elementos fonte, as condies de correspondncia das matched rules declaradas, so testadas com os elementos dos modelos fonte do mdulo. Quando a correspondncia eficaz, a mquina ATL aloca um conjunto de elementos do modelo alvo que correspondem aos elementos do padro alvo declaradas na regra.

A ltima fase corresponde inicializao dos elementos gerados durante a fase anterior. Neste ponto, cada elemento do modelo alvo alocado inicializado pela execuo do cdigo das ligaes que esto associadas ao elemento padro alvo. A seco de cdigo imperativo que pode ser especificado no mbito de uma matched rule, executado uma vez que o passo de inicializao da regra esteja completo. Este cdigo imperativo pode provocar a execuo de algumas called rules que foram definidas no mbito do mdulo ATL. A execuo de um modo refining significa que no ocorrem cpias e as alteraes so directamente aplicadas no modelo fonte.

3.2 ATL Query


Uma query ATL consiste num modelo para transformao do valor de tipos de dados primitivos. O seu uso mais comum na gerao de outputs de texto

26

Atlas Transformation Language Transformao de Modelos Java em Modelos de Classes UML

(codificados em strings) a partir de um conjunto de modelos fonte. Contudo estas queries no so limitadas computao de Strings e podem ser retornadas como valores numricos ou booleanos.

3.2.1 Estrutura de uma ATL Query Depois de uma seco para imports, deve ser definida uma instncia para queries. Esta instncia introduzida pela palavra-chave query e especifica a maneira como um resultado deve ser computado.

Definio da sintaxe de uma query:


query nome_da_query = expresso

query ContaPessoa = MMPessoa!Pessoa.allInstances()->size().toString() .writeTo('resultado.txt');


Cdigo 6 Exemplo de uma query

Esta query executada no modelo MMPessoa contendo o nmero de entidades Pessoa. A query primeiramente selecciona o conjunto de todas as classes Pessoa no modelo e v o tamanho do conjunto. Tendo em conta que se pretende gravar este valor num ficheiro, o valor resultante da operao size() (inteiro) ser convertido para string (operao toString()) e posteriormente escrito no ficheiro resultado.txt

3.2.2 Semntica da execuo da Query Tal como um mdulo ATL, a execuo de uma query organizada em sucessivas fases. A primeira a fase de inicializao que corresponde fase de inicializao dos mdulos ATL e dedicada inicializao dos atributos que so definidos no contexto do mdulo ATL.

27

Atlas Transformation Language Transformao de Modelos Java em Modelos de Classes UML

A segunda fase a fase computacional em que o valor de retorno da query calculado pela execuo do cdigo declarativo de um elemento query de uma query ATL. Os helpers que foram definidos juntamente com a query podem ser chamados em ambas as fases.

3.3 ATL Library


O desenvolvimento de bibliotecas ATL (ATL libraries) permite definir

conjuntos de helpers que podem ser chamados de diferentes unidades ATL. Tal como os outros tipos de unidades, uma ATL library pode incluir uma import section opcional e ainda permitir definir diversos helpers que estaro disponveis numa unidade ATL a importar. Comparativamente a um mdulo ATL, no existem elementos de modelos default, sendo assim impossvel declarar helpers que esto definidos no contexto default de um mdulo, o que significa que todos os helpers definidos numa biblioteca ATL devem ser explicitamente associados a um contexto. Uma library no pode ser executada independentemente, sendo que no est associada a nenhuma inicializao de um tempo de execuo, impossibilitando ainda definir attribute helpers.

3.4 Data Types


A linguagem ATL baseada na Object Constraint Language (OCL) do OMG para os seus tipos de dados. O esquema do tipo de dados muito parecido com o definido pela OCL. O esquema seguinte mostra uma vista geral da estrutura de tipos de dados considerados no ATL. Os diferentes tipos de dados apresentados representam possveis instncias da classe OclType. Esta classe pode ser considerada como a definio de tipos no mbito da linguagem ATL. Os diferentes elementos representam

28

Atlas Transformation Language Transformao de Modelos Java em Modelos de Classes UML

as instncias definidas pelo OCL (com excepo dos tipos de dados Map e ATL module) e executadas pelo ATL.

Figura 12 Esquema da estrutura do tipo de dados ATL

O elemento raiz da estrutura das instncias OclType do tipo abstracto OclAny a partir do qual todos os outros tipos esto directamente ou indirectamente relacionados. A ATL considera os seguintes tipos de dados principais: Primitive Collection EnumLiteral Tuple Map OclModelElement ATL module

29

Atlas Transformation Language Transformao de Modelos Java em Modelos de Classes UML

O tipo de dados primitive corresponde ao tipo de dados bsico da linguagem (String, boolean e numerical). O conjunto de tipos collection introduzido pelo OCL permite diversas formas de tratamento de coleces de elementos. Tipos de dados adicionais que incluem os enumerations, tuple, map e model element. Este ltimo corresponde ao tipo de entidades que podem ser declaradas com os modelos tratados pelo motor ATL. Por fim, o tipo de dados ATL module, especfica da linguagem ATL e associada com as unidades ATL: modules e queries.

3.5 ATL Comments


Os comentrios na ATL comeam com dois hfenes -- e terminam no final da linha. O editor ATL no Eclipse coloca os comentrios a verde-escuro (standard).

-- Toda a linha faz parte do comentrio


Cdigo 7 Exemplo de um comment

3.6 OCL Declarative Expressions


Para alm das expresses declarativas que correspondem a instncias de tipos de dados suportados, a OCL define expresses declarativas adicionais: Expresses if Expresses let

A expresso if fornece uma facilidade de expresso alternativa. expressada com uma estrutura if-then-else-endif, de acordo com a seguinte sintaxe:

30

Atlas Transformation Language Transformao de Modelos Java em Modelos de Classes UML

if condio then expresso1 else expresso2 endif

De acordo com a avaliao da expresso booleana, a expresso if retorna o valor correspondente expresso1, no caso de a condio ser avaliada como verdadeira, ou o valor da expresso2, no caso de a expresso ser avaliada como falsa. Uma expresso deste tipo pode ser composta por outras expresses OCL, incluindo expresses let e if.

A expresso let permite definir e inicializar novas variveis. definida de acordo com a seguinte sintaxe:
let nome_da_varivel : tipo_da_varivel = expresso_inicializao_var in expresso

A expresso de inicializao da varivel, expresso_inicializao_var, pode ser de qualquer tipo de expresso OCL, inclusive expresses let.

31

Atlas Transformation Language Transformao de Modelos Java em Modelos de Classes UML

4 Transformao de um Modelo Java para um Modelo de Classes UML em ATL


Para a transformao de um Modelo Java para um Modelo de Classes UML foi utilizada a linguagem ATL, j descrita no captulo anterior. O Modelo Java utilizado para realizar a experincia obedece ao metamodelo JavaModel do EMF, ao qual, no mbito da transformao, ser chamado EMF_JavaModel e o Modelo de Classes UML, que ser o resultado da transformao, obedece ao metamodelo UML do UML2 e ser denominado de UML2_UMLClassModel. transformao ser dado o nome java2uml.

Figura 13 Esquema da transformao ATL java2uml

Esta transformao chamada java2uml permite criar o modelo uml, que obedece ao seu metamodelo UML2_UMLClassModel a partir do modelo java que obedece ao seu metamodelo EMF_JavaModel. A transformao em questo obedece ao ATL. Os trs metamodelos (EMF_JavaModel, ATL e UML2_UMLClassModel) obedecem semntica do seu metametamodelo Ecore.

33

Atlas Transformation Language Transformao de Modelos Java em Modelos de Classes UML

4.1 Criao do projecto ATL


Para executar a transformao pretendida, necessrio a criao de um ficheiro de transformao ATL e dos ficheiros dos modelos fonte (source) e alvo (target). O primeiro passo neste processo de desenho da transformao ATL criar um projecto ATL. Na plataforma Eclipse escolher: File > New > ATL Project Esta operao desencadeia o aparecimento de uma janela para criar um projecto ATL, na qual necessrio introduzir o nome do projecto. Neste momento aconselhado dar um nome sugestivo, tal como concatenar o nome do modelo fonte java, o carcter 2 (para) e o nome do modelo alvo uml. Neste caso ser dado o nome java2uml, pois o objectivo transformar modelos java em modelos uml. A criao do projecto s validada aps carregar no boto Finish.

Figura 14 Janela para criao de um novo projecto ATL

Para cada projecto, o Eclipse cria uma pasta do projecto na vista Navigator. O projecto gerado recentemente pode ser aberto nessa vista e inicialmente ser
34

Atlas Transformation Language Transformao de Modelos Java em Modelos de Classes UML

encontrado no seu interior o ficheiro (.project) que contm metadata Eclipse relativa ao projecto.

<?xml version="1.0" encoding="UTF-8"?> <projectDescription> <name>java2uml</name> <comment></comment> <projects> </projects> <buildSpec> <buildCommand> <name>org.eclipse.m2m.atl.adt.builder.atlBuilder</name> <arguments> </arguments> </buildCommand> </buildSpec> <natures> <nature>org.eclipse.m2m.atl.adt.builder.atlNature</nature> </natures> </projectDescription>
Cdigo 8 Exemplo do ficheiro .project

O passo seguinte consiste na criao do ficheiro de transformao ATL. Pode ser criado atravs da vista Navigator, escolhendo: New > ATL File Esta operao desencadeia o aparecimento da janela para criar um ficheiro ATL. O nome dado ao ficheiro (.atl) ser o mesmo que o do projecto java2uml.

35

Atlas Transformation Language Transformao de Modelos Java em Modelos de Classes UML

Figura 15 Janela para criao de um novo ficheiro ATL

Aps a criao do ficheiro ATL, pretende-se utilizar esse ficheiro para criar um mdulo ATL onde sero escritas todas as transformaes. O seguinte cdigo fonte ATL representa o header do ficheiro java2uml.atl, ou seja, o cabealho da transformao do modelo java que obedece ao seu metamodelo EMF_JavaModel para o modelo uml que obedece ao seu metamodelo UML2_UMLClassModel:

module java2uml; create uml : UML2_UMLClassModel from java : EMF_JavaModel;


Cdigo 9 Header do ficheiro java2uml.atl

Visto que para o processo de transformao em questo so necessrios dois modelos, foram criados os dois ficheiros a eles correspondentes. O ficheiro java.java2, contendo elementos a ttulo exemplificativo, com todo o tipo de elementos possveis de serem criados num ficheiro deste gnero, e o ficheiro uml.uml sem nenhum

36

Atlas Transformation Language Transformao de Modelos Java em Modelos de Classes UML

contedo, pois ser nele que sero criados novos elementos aps a transformao ATL.

Figura 16 Modelo Java exemplo do ficheiro java.java2

4.2 Criao das configuraes


Para executar a transformao ATL, primeiramente necessrio instalar uma configurao para o lanamento da transformao. Este configurao resume toda a informao que necessria para a execuo de uma transformao ATL. A informao inclui o caminho de todos os ficheiros envolvidos, tanto o dos modelos como tambm o dos metamodelos e bibliotecas. No menu principal da plataforma Eclipse, escolher: Run > Run Configurations

37

Atlas Transformation Language Transformao de Modelos Java em Modelos de Classes UML

Figura 17 Janela que permite criar, gerir e correr as configuraes

De seguida deve-se seleccionar ATL Transformation e carregar em New, sendo criado um novo ficheiro de configurao ATL. Neste ficheiro necessrio especificar o caminho (/java2uml/java2uml.atl), do mdulo ATL, que poder ser encontrado no workspace. ainda necessrio dizer qual o caminho para os metamodelos EMF_JavaModel e

UML2_UMLClassModel, que podem ser encontrados carregando no boto EMF Regestry, onde so mostrados todos os packages registados no EMF. Deve ainda ser escolhido o tipo de manipulador de modelos (Model handler) respectivo a cada metamodelo. No caso do EMF_JavaModel deve-se escolher o EMF, e no caso do UML2_UMLClassModel deve-se escolher o UML2. Por fim especifica-se ainda quais os caminhos para os modelos fonte e alvo, tambm eles encontrados no workspace. extremamente importante que esteja tudo bem configurado, caso contrrio, mesmo ocorrendo a transformao, esta no ser perfeita.

38

Atlas Transformation Language Transformao de Modelos Java em Modelos de Classes UML

4.3 Relaes entre modelos


Neste momento est tudo configurado, resta escrever o cdigo relativo ao mdulo de transformaes. Para tal, primeiramente, necessrio analisar ambos os metamodelos que sero usados e encontrar relaes entre eles. Esta fase foi extremamente difcil, pois os metamodelos apesar de terem algumas semelhanas, so bastante diferentes. Para alm disso, apesar de haver muita documentao relativa ao metamodelo UML do UML2 ao qual, no mbito da transformao, se designou por UML2_UMLClassModel, a documentao do metamodelo JavaModel inexistente, portanto foi um grande desafio tentar compreender o seu funcionamento e encontrar elementos coincidentes entre eles. Visto que se pretende transformar o metamodelo JavaModel, procedeu-se ao estudo das semelhanas s suas classes e respectivos atributos e referncias.

4.3.1 JModelElement (abstracta) / Element (abstracta) A classe JModelElement, classe abstracta, o elemento base do

EMF_JavaModel, sendo que todos os restantes elementos do metamodelo ao qual pertence so suas subclasses. O seu equivalente no UML2_UMLClassModel a classe Element, cujas caractersticas so semelhantes. Relativamente aos atributos do JModelElement: Atributo name, nome de um elemento, corresponde a um atributo com o mesmo nome, pertencente classe NamedElement, que suporta expresses no tipo de dados string.

Tabela 2 Relao entre metamodelos: JModelElement EMF_JavaModel


EClass::JModelElement EAttribute::name:EString

UML2_UMLClassModel
EClass:Element EAttribute::name:EString (NamedElement)

39

Atlas Transformation Language Transformao de Modelos Java em Modelos de Classes UML

4.3.2 JCompilationUnit A classe JCompilationUnit representa toda a unidade de compilao Java. Esta classe no pode ser representada no metamodelo UML2_UMLClassModel. Visto que no existe correspondncia directa no metamodelo

UML2_UMLClassModel, sugere-se vrias alternativas. Estas no foram abordadas no contexto deste trabalho pois como est inserido num projecto maior ainda nada foi decidido. As possveis alternativas seriam: Para um elemento JCompilationUnit, embora no seja representado explicitamente no UML2, poderia implicitamente dizer-se que este existe para todas as classes do modelo UML que no esto definidas no contexto de outra classe (isto , no so inner classes). Usar mecanismos de extenso dos modelos UML, como por exemplo esteretipos (stereotypes) para acrescentar informao que o modelo no suporta. Alterar o metamodelo UML2_UMLClassModel para incluir este conceito.

4.3.3 JMember (abstracta) A classe JMember tambm uma classe abstracta, subclasse directa de JModelElement e superclasse directa das classes: JClass JField JInitializer JMethod

No existe nenhuma classe abstracta no UML2_UMLClassModel cujo objectivo seja o mesmo que esta. No entanto possvel relacionar os seus atributos: Atributo static, varivel booleana, com o isStatic, do mesmo tipo, que pertence classe Feature.

40

Atlas Transformation Language Transformao de Modelos Java em Modelos de Classes UML

Atributo visibility, varivel booleana, com uma varivel com o mesmo nome mas cujo tipo VisibilityKind, da classe NamedElement.

Atributo comment cuja equivalente a varivel body da classe Comment.

Visto que no existe equivalncia para a classe JMember, automaticamente no faria sentido existir uma referncia equivalente referncia containingType. Estas relaes esto esquematizadas na tabela 2.

Tabela 3 Relao entre metamodelos: JMember EMF_JavaModel


EClass::JMember EGeneric Super Type::JModelElement EAttribute::name:EString EAttribute::name:EString (NamedElement) EAttribute::static:Eboolean EAttribute::isStatic:Boolean (Feature) EAttribute::visibility:JVisibility EAttribute::visibility:VisibilityKind (NamedElement) EAttribute::comment:EString EReference::containingType:JClass EAttribute::body:String (Comment) -

UML2_UMLClassModel
-

4.3.4 JPackage / Package A Classe JPackage do JavaModel tem uma classe equivalente no

UML2_UMLClassModel chamada Package, no entanto, relativamente s suas superclasses, enquanto que o JPackage apenas tem o JModelElement, o seu correspondente tem as superclasses: Element NamedElement PackageableElement ParameterableElement TemplateableElement

41

Atlas Transformation Language Transformao de Modelos Java em Modelos de Classes UML

Relativamente aos atributos: Referncia types, referncia para JClasses de um JPackage, equivalente ao packagedElement que especifica os packageable elements (JClasses) que pertencem a esse Package.

Tabela 4 Relao entre metamodelos: JPackage EMF_JavaModel


EClass::JPackage EGeneric Super Type::JModelElement

UML2_UMLClassModel
EClass::Package EGeneric Super Types::Element; NamedElement; Namespace; ParameterableElement; PackageableElement; TemplateableElement

EAttribute::name:EString EReference::types:JClass

EAttribute::name:EString (NamedElement) EReference::packagedElement:PackageableElement

4.3.5 JClass / Class A classe JClass do JavaModel pode ser transformada numa Class e tem como superclasses: JMember

JModelElement Enquanto que a Class tem como superclasses: BeavioredClassifier Classifier Element EncapsulatedClassifier NamedElement Namespace PackageableElement ParameterableElement

42

Atlas Transformation Language Transformao de Modelos Java em Modelos de Classes UML

RedefinableElement StructuredClassifier TemplateableElement Type Atributos e referncias da classe JClass com correspondentes no metamodelo UML2_UMLClassModel: Atributo abstract, booleano, corresponde ao atributo isAbstract, booleano, da classe Classifier. Atributo final, booleano, corresponde ao atributo isLeaf, booleano, da classe RedefinableElement. Referncia fields, que referencia todos os elementos do tipo JField de uma JClass, corresponde referncia ownedAttribute da classe StructuredClassifier, que referencia todos os elementos do tipo Property (elemento equivalente a JField no metamodelo

UML2_UMLClassModel). Referncia methods, que referencia todos os elementos do tipo JMethod de uma JClass, corresponde referncia ownedOperation da classe Class, que referencia todos os elementos do tipo Operation (elemento equivalente a JMethod no metamodelo UML2_UMLClassModel). Referncia superTypes, que referencia todas as superclasses de uma dada classe, corresponde referncia superClass da classe Class. Referncia package, que referencia todos o JPackage ao qual uma dada JClass pertence (se aplicvel), corresponde a uma referncia com o mesmo nome, da classe Type. Referncia types, que referencia todos os elementos JClass que fazem parte de uma dada JClass, corresponde referncia nestedClassifier da classe Class.

43

Atlas Transformation Language Transformao de Modelos Java em Modelos de Classes UML

Os restantes atributos e referncias no tm qualquer relao com outros no metamodelo UML2_UMLClassModel. Todas estas relaes enunciadas esto esquematizadas na tabela 4.
Tabela 5 Relao entre metamodelos: JClass EMF_JavaModel
EClass::JClass EGeneric Super Type::JMember;

UML2_UMLClassModel
EClass::Class EGeneric Super Types::EncapsulatedClassifier; BeavioredClassifier; StructuredClassifier; Classifier; Type; packageableElement; RedefinableElement; Namespace; TemplateableElement; Element; ParameterableElement; NamedElement;

EAttribute::name:EString EAttribute::static:Eboolean EAttribute::visibility:JVisibility

EAttribute::name:EString (NamedElement) EAttribute::isStatic:Boolean (Feature) EAttribute::visibility:VisibilityKind (NamedElement)

EAttribute::comment:EString EAttribute::abstract:Eboolean

EAttribute::body:String (Comment) EAttribute::isAbstract:Boolean (Classifier)

EAttribute::final:EBoolean

EAttribute::isLeaf:Boolean (RedefinableElement)

EAttribute::interface:EBoolean EAttribute::throwable:EBoolean EReference::fields:JField

EReference::ownedAttribute:Property (StructuredClassifier)

EReference::methods:JMethod EReference::superTypes:JClass EReference::allSuperTypes:JClass EReference::members:JMember EReference::componentType:JClass EReference::arrayType:JClass EReference::unit:JCompilationUnit EReference::allMethods:JMethod EReference::allFields:JField EReference::package:JPackage

EReference::ownedOperation:Operation EReference::superClass:Class EReference::package:Package (Type)

44

Atlas Transformation Language Transformao de Modelos Java em Modelos de Classes UML

EReference::types:JClass EReference::allTypes:JClass

EReference::nestedClassifier:Classifier -

4.3.6 JField / Property A classe JField pode ser transformada numa Property e tem como superclasses: JMember

JModelElement As superclasses da Property so: ConnectableElement DeploymentTarget Element Feature MultiplicityElement NamedElement ParameterableElement RedefinableElement StructuralFeature TemplateableElement TypedElement Atributos e referncias da classe JField com correspondentes no metamodelo UML2_UMLClassModel: Atributo final, tipo booleano, corresponde ao atributo isLeaf, tambm booleano, da classe RedifinableElement. Atributo volatile, do tipo booleano, corresponde ao atributo

isReadOnly, do mesmo tipo, pertencente classe StructuralFeature. Relaes esquematizadas na Tabela 5.


45

Atlas Transformation Language Transformao de Modelos Java em Modelos de Classes UML

Tabela 6 Relao entre metamodelos: JField EMF_JavaModel


EClass::JField EGeneric Super Type::JMember

UML2_UMLClassModel
EClass::Property EGeneric Super Types::ConnectableElement; DeploymentTarget; Element; Feature; MultiplicityElement; NamedElement; ParameterableElement; StructuralFeature; TemplateableElement; TypedElement

EAttribute::name:EString

EAttribute::name:EString (NamedElement)

EAttribute::static:Eboolean

EAttribute::isStatic:Boolean (Feature)

EAttribute::visibility:JVisibility

EAttribute::visibility:VisibilityKind (NamedElement)

EAttribute::comment:EString EAttribute::final:EBoolean

EAttribute::body:String (Comment) EAttribute::isLeaf:Boolean (RedifinableElement)

EAttribute::transient:EBoolean EAttribute::volatile:EBoolean

EAttribute::isReadOnly:Boolean (StructuralFeature)

EAttribute::initializer:EString EReference::type:JClass

4.3.7 JInitializer Esta classe no pode ser representada no metamodelo UML2_UMLClassModel.

4.3.8 JMethod / Operation A Classe JMethod corresponde classe Operation no UML2_UMLClassModel e tem como superclasses: JMember JModelElement

As superclasses da classe Operation so:

46

Atlas Transformation Language Transformao de Modelos Java em Modelos de Classes UML

BehavioralFeature Element Feature NamedElement Namespace ParameterableElement RedefinableElement TemplateableElement

Atributos e referncias da classe JMethod com correspondentes no metamodelo UML2_UMLClassModel: Atributo abstract, do tipo booleano, corresponde ao atributo

isAbstract, tambm booleano, da classe Classifier. Atributo final, tipo booleano, corresponde ao atributo isLeaf, tambm booleano, da classe RedifinableElement. Atributo synchronized, do tipo booleano, corresponde ao atributo concurrency, do tipo CallConcurrencyKind, pertencente classe BehavioralFeature. Referncia ownedParameter, do tipo Parameter, que referencia todos os elementos do tipo Parameter que pertencem Operation.

47

Atlas Transformation Language Transformao de Modelos Java em Modelos de Classes UML

Tabela 7 Relao entre metamodelos: JMethod EMF_JavaModel


EClass::JMethod EGeneric Super Types::JMember

UML2_UMLClassModel
EClass::Operation EGeneric Super Types::BehavioralFeature; Element; Feature; NamedElement; Namespace; ParameterableElement; RedefinableElement; TemplateableElement;

EAttribute::name:EString EAttribute::static:Eboolean EAttribute::visibility:JVisibility

EAttribute::name:EString (NamedElement) EAttribute::isStatic:Boolean (Feature) EAttribute::visibility:VisibilityKind (NamedElement)

EAttribute::comment:EString EAttribute::abstract:Eboolean EAttribute::final:EBoolean

EAttribute::body:String (Comment) EAttribute::isAbstract:Boolean (Classifier) EAttribute::isLeaf:Boolean (RedifinableElement)

EAttribute::native:EBoolean EAttribute::synchronized:EBoolean

EAttribute::concurrency:CallConcurrencyKind (BehavioralFeature)

EAttribute::constructor:EBoolean EAttribute::body:EString EReference::parameters:JParameter

Ereference::ownedParameter:Parameter (Behavioral Feature)

EReference::exceptions:JClass EReference::returnType:JClass

4.3.9 JParameter A classe JParameter no EMF_JavaModel corresponde classe Parameter do UML2_UMLClassModel e apenas tem uma superclasse designada por

JModelElement. No entanto, a classe Parameter tem as superclasses: ConnectableElement Element ParameterableElement MultiplicityElement

48

Atlas Transformation Language Transformao de Modelos Java em Modelos de Classes UML

NamedElement TypedElement

A nica referncia com equivalncia a method, do tipo JMethod, que referencia qual o JMethod ao qual o JParameter pertence. Esta corresponde referencia operation, do tipo Operation, da classe Parameter.

Tabela 8 Relao entre metamodelos: JParameter EMF_JavaModel


EClass::JParameter EGeneric Super Type::JModelElement

UML2_UMLClassModel
EClass::Parameter EGeneric Super Types::ConnectableElement; Element; ParameterableElement; MultiplicityElement; NamedElement; TypedElement

EAttribute::name:EString

EAttribute::name:EString (NamedElement)

EAttribute::final:EBoolean EReference::method:JMethod EReference::type:JClass

EReference::operation:Operation -

4.4 Criao de cdigo ATL


Visto que j se sabe todas as relaes entre os metamodelos, procede-se com a criao das regras (rules) de cdigo ATL. Em todas as regras ser utilizada a varivel s para os modelos fonte (source) e a varivel t para os modelos alvo (target). Primeiramente faz-se a construo do cdigo ATL de transformao do elemento JPackage para Package. O seguinte cdigo representa uma matched rule usada para essa transformao:

49

Atlas Transformation Language Transformao de Modelos Java em Modelos de Classes UML

rule JPackage2Package{ from s: EMF_JavaModel!JPackage to t: UML2_UMLClassModel!Package ( --Attributes-name <- s.name, --String --Associations-packagedElement <- s.types --PackageableElement --Class ) }

Cdigo 10 Matched rule JPackage2Package

Esta regra, chamada JPackage2Package, representa a transformao dos elementos do modelo fonte JPackage (metamodelo EMF_JavaModel) para os elementos do modelo alvo Package (metamodelo UML2_UMLClassModel). Esta regra apenas contm os padres fonte e alvo, obrigatrios. O padro fonte no tem nenhum filtro definido, significa ento que todas as classes JPackage do metamodelo EMF_JavaModel sero correspondidas de acordo a regra. O padro alvo contm um nico elemento padro, chamado t, que criar classes Package para cada elemento correspondente JPackage. Os atributos dos elementos gerados so inicializados com os correspondentes atributos dos elementos do modelo fonte. Para as restantes transformaes foram tambm usadas matched rules, sendo que o funcionamento descrito idntico para todas elas.

O cdigo ATL relativo transformao do elemento JClass para Class representado atravs da seguinte matched rule:

50

Atlas Transformation Language Transformao de Modelos Java em Modelos de Classes UML

rule JClass2Class{ from s: EMF_JavaModel!JClass to t: UML2_UMLClassModel!Class ( --Attributes-isAbstract <- s.abstract, --Boolean isLeaf <- s.final, --Boolean name <- s.name, --String visibility <- s.visibility, --VisibilityKind --Associations-nestedClassifier <- s.members, --Classifier --(JClass) ownedAttribute <- s.members, --Property --(JField) ownedOperation <- s.members, --Operation --(JMethod) ownedComment <- t2 --Comment ), t2: UML2_UMLClassModel!Comment ( --Attributes-body <- s.comment --String ) }
Cdigo 11 Matched rule JClass2Class

O cdigo ATL relativo transformao do elemento JField para Property representado atravs da seguinte matched rule:

rule JField2Property{ from s: EMF_JavaModel!JField to t: UML2_UMLClassModel!Property ( --Attributes-name <- s.name, --String isLeaf <- s.final, --Boolean visibility <- s.visibility, --VisibilityKind isStatic <- s.static, --Boolean isReadOnly <- s.volatile.alterar(), --Boolean --Associations-ownedComment <- t2 --Comment ), t2: UML2_UMLClassModel!Comment ( body <- s.comment --String ) }
Cdigo 12 Matched rule JField2Property

51

Atlas Transformation Language Transformao de Modelos Java em Modelos de Classes UML

Nesta regra utilizado um helper simples chamado alterar. Quando chamado, no caso da varivel do tipo booleana ser true alterada para false e vice versa. Esse helper apresentado atravs do cdigo seguinte:

helper context Boolean def: alterar() : Boolean = if self= true then false else true endif;
Cdigo 13 Helper alterar()

O cdigo ATL relativo transformao do elemento JMethod para Operation representado atravs da seguinte matched rule:

rule JMethod2Operation{ from s: EMF_JavaModel!JMethod to t: UML2_UMLClassModel!Operation ( --Attributes-name <- s.name, --String isAbstract <- s.abstract, --Boolean isStatic <- s.static, --Boolean isLeaf <- s.final, --Boolean visibility <- s.visibility, --VisibilityKind --concurrency <- if s.synchronized ='True' then 'Sequencial' else 'Concurrent' endif, --Associations-ownedParameter <- s.parameters, --Parameter ownedComment <- t2 --Comment ), t2: UML2_UMLClassModel!Comment ( --Attributes-body <- s.comment --String ) }
Cdigo 14 Matched rule JMethod2Operation

O cdigo ATL relativo transformao do elemento JParameter para Parameter representado atravs da seguinte matched rule:

52

Atlas Transformation Language Transformao de Modelos Java em Modelos de Classes UML

rule JParameter2Parameter{ from s: EMF_JavaModel!JParameter to t: UML2_UMLClassModel!Parameter ( --Attributes-name <- s.name --String ) }


Cdigo 15 Matched rule JParameter2Parameter

4.5 Execuo das configuraes


Por fim, no menu principal da plataforma Eclipse, escolher: Run > Run Configuration > Run As configuraes so executadas, feita a transformao ATL e o ficheiro uml.uml alterado dando origem ao modelo de Classes UML exemplo, representado na figura seguinte.

53

Atlas Transformation Language Transformao de Modelos Java em Modelos de Classes UML

Figura 18 Modelo de Classes UML do ficheiro uml.uml

Neste momento pode ser feita qualquer alterao ao modelo java, seguida da execuo das configuraes, sendo automaticamente gerado um novo modelo uml relativo nova transformao.

54

Atlas Transformation Language Transformao de Modelos Java em Modelos de Classes UML

5 Concluses
5.1 Objectivos realizados
O objectivo proposto de desenvolver suporte experimental para que modelos java pudessem ser manipulados e transformados em modelos de classes UML foi atingido. Numa primeira fase foi necessrio estudar e compreender a framework EMF do Eclipse, e os metamodelos relativos aos modelos Java e aos modelos de classes UML. Neste ponto foi encontrada uma grande dificuldade relativa compreenso do metamodelo do Java, o JavaModel, presente no EMF, pois no existe documentao a ele relativa. Em seguida passou-se ao estabelecimento de relaes entre os metamodelos, que apesar de no ter sido concludo deveu-se apenas incompatibilidade entre determinados elementos dos metamodelos. Por fim, estudou-se a linguagem de transformao ATL e passou-se construo das transformaes que permitiram atingir o objectivo principal, em que qualquer que fosse o modelo Java criado pudesse ser transformado com sucesso num modelo de classes UML.

5.2 Limitaes & trabalho futuro


Um dos problemas encontrados ao longo de anlise das relaes entre metamodelos prendeu-se com a falta de documentao relativa ao metamodelo JavaModel, o que dificultou muito a compreenso dos conceitos a ele inerentes. Relativamente ao objecto em si, a transformao entre modelos, apresenta algumas limitaes. Nem todos os elementos do metamodelo JavaModel, sejam eles atributos ou referncias, tm uma representao igual ou equivalente no metamodelo UML do UML2, apesar da sua grandeza e complexidade. No entanto no invalida o sucesso deste projecto pois o objectivo deste consistia nisso mesmo, pesquisar, analisar e desenvolver suporte experimental.

55

Atlas Transformation Language Transformao de Modelos Java em Modelos de Classes UML

Num trabalho futuro pretende-se que seja desenvolvido o processo inverso a este projecto, suporte para a manipulao de Modelos de Classes UML e transformao em Modelos Java. Ambas as transformaes sero integradas numa framework open source de suporte ao desenvolvimento baseado em modelos de linhas de produtos de software baseada na metodologia MoDeLine.

5.3 Apreciao final


A nvel pessoal, o projecto foi bastante gratificante pois promoveu o desenvolvimento de soft e hard skills. Permitiu o contacto e experincia com este novo paradigma, Model-Driven Development, em que os artefactos de software so manipulados como modelos e ainda o conhecimento de novas plataformas de desenvolvimento, frameworks e linguagens de modelao. Foi muito gratificante ver que o trabalho desenvolvido ao longo destes meses foi concludo e ser utilizado para um projecto de maior grandeza. Deixo uma nota de agradecimento ao Professor Doutor Alexandre Bragana por todo o apoio disponibilizado desde o primeiro dia, promovendo o sucesso deste projecto.

56

Atlas Transformation Language Transformao de Modelos Java em Modelos de Classes UML

Bibliografia
Atlas Transformation Language (ATL): (2006) ATL: Atlas Transformation Language, ATL User Manual, version 0.7, Lina & Inria(Atlas Group), University of Nantes, France, Fev. http://www.eclipse.org/m2m/atl/ http://wiki.eclipse.org/index.php/ATL

Eclipse: http://www.eclipse.org/ http://wiki.eclipse.org/Eclipse http://help.eclipse.org/

Eclipse Modeling Framework (EMF): Steinberg, D., Budinsky, F., Merks, E., Ellersick, R., Grose, T.J. (2003) Eclipse Modeling Framework: A Developer's Guide, Addison Wesley Professional. Tibrea, E. (2006), Enriching EMF models with behavioral specifications, Hamburg University of Science and Technology, Software Systems Institute (STS), Hamburg, German. http://www.eclipse.org/modeling/emf/ http://wiki.eclipse.org/EMF

Eclipse Modeling Project: http://www.eclipse.org/modeling/ http://wiki.eclipse.org/Modeling

Model-Driven Architecture (MDA): http://www.omg.org/mda/mda_files/Model-Driven_Architecture.pdf http://www.omg.org/mda/

57

Atlas Transformation Language Transformao de Modelos Java em Modelos de Classes UML

Model-Driven Engineering (MDE): Schmidt, D.C. (2006) Model-Driven Engineering, IEEE Computer Society, Vanderbilt University. Jzquel, J. (2006), Introduction to Model-Driven Engineering, Univ. Rennes 1 & INRIA, Triskell Team, IRISA, France. Bzivin, J. (2004), In Search of a Basic Principle for Model Driven Engineering, The European Journal for the Informatics Professional, Vol. V, No. 2, pp.21-24. Model Development Tools (MDT): http://www.eclipse.org/modeling/mdt/ http://wiki.eclipse.org/MDT

Model-To-Model (M2M): http://www.eclipse.org/m2m/ http://wiki.eclipse.org/M2M

Object Constraint Language (OCL): http://wiki.eclipse.org/MDT/OCL

Object Management Group (OMG): http://www.omg.org/

Unified Modeling Language (UML): (2009) OMG Unified Modeling Language (OMG UML), Infrastructure, Version 2.2, formal/2009-02-04, Object Management Group, Fev

(http://www.omg.org/spec/UML/2.2/Infrastructure/PDF/). (2009) OMG Unified Modeling Language (OMG UML), Superstructure, Version 2.2, formal/2009-02-02,
Object Management Group, Fev

(http://www.omg.org/spec/UML/2.2/Superstructure/PDF/). http://www.uml.org/ http://www.uml.org/

58

Atlas Transformation Language Transformao de Modelos Java em Modelos de Classes UML

UML2: http://www.eclipse.org/uml2/ http://wiki.eclipse.org/MDT-UML2

59

Atlas Transformation Language Transformao de Modelos Java em Modelos de Classes UML

Anexo 1

Metamodelo EMF_JavaModel

Figura 19 Metamodelo EMF_JavaModel Jclass

Figura 20 Metamodelo EMF_JavaModel JcompilationUnit

Figura 21 Metamodelo EMF_JavaModel JField

Pedro Dias

61

Atlas Transformation Language Transformao de Modelos Java em Modelos de Classes UML

Figura 22 Metamodelo EMF_JavaModel JInitializer

Figura 23 Metamodelo EMF_JavaModel JMember

Figura 24 Metamodelo EMF_JavaModel JMethod

Figura 25 Metamodelo EMF_JavaModel JModelElement

Figura 26 Metamodelo EMF_JavaModel JPackage

62

Atlas Transformation Language Transformao de Modelos Java em Modelos de Classes UML

Figura 27 Metamodelo EMF_JavaModel JParameter

Figura 28 Metamodelo EMF_JavaModel JVisibility

63

Atlas Transformation Language Transformao de Modelos Java em Modelos de Classes UML

Anexo 2

Metamodelo

UML2_UMLClassModel

Figura 29 Metamodelo UML2_UMLClassModel EData Types

Figura 30 Metamodelo UML2_UMLClassModel EClass::Comment

Figura 31 Metamodelo UML2_UMLClassModel EClass::Feature

Figura 32 Metamodelo UML2_UMLClassModel EEnum::VisibilityKind

Pedro Dias

64

Atlas Transformation Language Transformao de Modelos Java em Modelos de Classes UML

Figura 33 Metamodelo UML2_UMLClassModel EClass::TypedElement

Figura 34 Metamodelo UML2_UMLClassModel EClass::TemplateableElement

Figura 35 Metamodelo UML2_UMLClassModel EClass::ParameterableElement

Figura 36 Metamodelo UML2_UMLClassModel EClass::ConnectableElement

65

Atlas Transformation Language Transformao de Modelos Java em Modelos de Classes UML

Figura 37 Metamodelo UML2_UMLClassModel EClass::BehavioralFeature

Figura 38 Metamodelo UML2_UMLClassModel EClass::DeploymentTarget

Figura 39 Metamodelo UML2_UMLClassModel EClass::EncapsulatedClassifier

Figura 40 Metamodelo UML2_UMLClassModel EClass::PackageableElement

66

Atlas Transformation Language Transformao de Modelos Java em Modelos de Classes UML

Figura 41 Metamodelo UML2_UMLClassModel EClass::Element

67

Atlas Transformation Language Transformao de Modelos Java em Modelos de Classes UML

Figura 42 Metamodelo UML2_UMLClassModel EClass::NamedElement

Figura 43 Metamodelo UML2_UMLClassModel EClass::Namespace

68

Atlas Transformation Language Transformao de Modelos Java em Modelos de Classes UML

Figura 44 Metamodelo UML2_UMLClassModel EClass::Package

Figura 45 Metamodelo UML2_UMLClassModel EClass::Type

69

Atlas Transformation Language Transformao de Modelos Java em Modelos de Classes UML

Figura 46 Metamodelo UML2_UMLClassModel EClass::Classifier

70

Atlas Transformation Language Transformao de Modelos Java em Modelos de Classes UML

Figura 47 Metamodelo UML2_UMLClassModel EClass::Parameter

Figura 48 Metamodelo UML2_UMLClassModel EClass::RedefinableElement

71

Atlas Transformation Language Transformao de Modelos Java em Modelos de Classes UML

Figura 49 Metamodelo UML2_UMLClassModel EClass::MultiplicityElement

Figura 50 Metamodelo UML2_UMLClassModel EClass::Class

72

Atlas Transformation Language Transformao de Modelos Java em Modelos de Classes UML

Figura 51 Metamodelo UML2_UMLClassModel EClass::Property

73

Atlas Transformation Language Transformao de Modelos Java em Modelos de Classes UML

Figura 52 Metamodelo UML2_UMLClassModel EClass::Operation

Figura 53 Metamodelo UML2_UMLClassModel EClass::StructuredClassifier

74

Atlas Transformation Language Transformao de Modelos Java em Modelos de Classes UML

Figura 54 Metamodelo UML2_UMLClassModel EClass::BehavioredClassifier

75

Anda mungkin juga menyukai