Engineering for a better life
Metamodelo para
Mappings
Entendendo o propósito
José G. de Souza Júnior
direção: Dr. Denivaldo Lopes
LESERC
(Laboratório de Engenharia de Software e Rede de Computadores)
Web Site: http://www.leserc.dee.ufma.br/
Contato: denivaldo.lopes AT dee.ufma.br
Mapping em MDA
► Um
dos temas que mais tem se investido na
arquitetura dirigida por modelos é a
correspondência entre modelos
independentes da plataforma (PIM) e
específicos da plataforma (PSM)
► Efetuar ligações entre elementos de
modelos é uma tarefa que se mostra
atualmente árdua por sua complexidade
Mapping em MDA
►
►
►
Um modelo de mapping baseado em linguagem natural
proporciona menos complexidade algorítmica, porém é
uma abordagem propensa a erros e menos eficiente do
que uma abordagem automatizada
Por outro lado, técnicas de mapeamentos automáticos
utilizam-se de algoritmos de correspondência bem mais
complexos do que o anterior.
Observa-se então que mappings devem estar totalmente
coerentes com o sistema para que não ocorram
ambigüidades e realizações defeituosas de modelos de
transformação
Metamodelo de Mapping
► Podemos
definir uma função de transformação
como uma função que, dado um modelo A do
sistema, conforme a um metamodelo X e dada
uma correspondência entre o metamodelo X e o
metamodelo Y, conforme a um metamodelo Z,
obtemos um modelo B do sistema, conforme a um
metamodelo Y
► Transf(Ma(s)/Mx, Cma->mb/Mz) = Mb(s)/My
► Para que essa função possa ser efetuada,
devemos definir o metamodelo Z, o metamodelo
de mapping
Metamodelo de Mapping
► Em
MDE, um modelo de mapping deverá
ser conforme a um metamodelo. Aqui,
apresentaremos o metamodelo
graficamente e a nossa implementação em
EMF.
Nosso Metamodelo de mapping
►A
fim de tornarmos a metamodelagem mais
clara possível, nesta nova reformulação do
metamodelo foram criadas duas partes
separadas que sem complementam:
► a parte mapping, que é a especificação da
correspondência propriamente dita
► a parte versioning, que trata de versões de
mappings.
Metamodelo de Mapping - Básico
Metamodelo de Mapping - Básico
► Element:
uma generalização para todos os
elementos do mapping com um nome e um
note como observação
► Specification: representa uma especificação
de referências entre dois ou mais
metamodelos. Faz isso através de
correspondências entre estes
Metamodelo de Mapping - Básico
► Correspondence:
relacionamentos entre dois ou
mais elementos de metamodelo
► MetaModelHandler: permite navegação dentro de
um metamodelo
► Left: expressa um elemento esquerdo de um
mapping, um elemento do metamodelo fonte
► Right: identifica os elementos da direita de um
mapping, os elementos do metamodelo alvo
Metamodelo de Mapping - Básico
► ElementHandler:
possibilita navegação dentro dos
elementos mapeados sem alterá-los
► TypeConverter: através de uma expressão OCL
obtém um elemento específico do metamodelo
esquerdo que se relaciona com um elemento do
metamodelo direito
► PropertyDefinition: utilizada para definir
propriedades inerentes a um Element
► PropertyValue: armazena o valor de uma
propriedade definida por PropertyDefinition
Metamodelo de Mapping - Versioning
Metamodelo de Mapping - Versioning
► No
contexto atual, em que o
desenvolvimento de software passa por
sucessivas modificações em pequenos
espaços de tempo, achamos interessante
prover uma abordagem para gerenciar a coexistência entre as diversas versões de
metadados, nesse caso em relação aos
modelos de mapeamento
Metamodelo de Mapping - Versioning
► Worspace:
possui as informações sobre as versões
de modelos de mapping
► VersionHistory: detem cada história de um modelo
de mapping. Ela sinaliza a primeira e a última
versões
► Version: é a versão propriamente dita, com suas
informações
► Label: anexada para incrementar informações
sobre a versão
► SpecificationRef: referência para uma
especificação de um modelo de mapeamento
Implementação do Metamodelo
►A
implementação foi feita no Framework de
Modelagem Eclipse (EMF)
► Através do editor do EMF, colocamos os
relacionamentos especificados nos gráficos
anteriores
► Com o metamodelo especificado como um plugin
pela geração do código deste através do
.genmodel, podemos criar modelos desse nosso
metamodelo em tempo de execução (runtime)
Apresentação do Metamodelo na
forma de árvore (mapping)
Apresentação do Metamodelo na
forma de árvore (versioning)
Modelo conforme ao metamodelo de
mapping (runtime)
Modelo conforme ao metamodelo de
mapping versioning (runtime)
Conclusão
►
►
►
►
Neste texto apresentamos nosso metamodelo de mapping,
que como já foi dito, será a base na qual os modelos de
mapping, em nossa ferramenta de geração de
especificação de correspondências, serão conformes.
Este metamodelo é importante porque ele define
claramente o papel de cada elemento especificado nas
ligações entre elementos de metamodelos.
No nosso trabalho futuro, faremos uso desse metamodelo
apresentado para basearmos algoritmos de modelos de
mapeamento, ao passo que este irá gerar a definição de
transformação, justamente aquilo que estamos procurando
alcançar.
É perceptível que todo esse processo depende de todas as
fases que temos mencionado durante todo esse texto.
Referências
► LOPES,
Denivaldo, HAMMOUDI, Slimane,
ABDELOUAHAB, Zair, Schema Matching in the
Context of Model Driven Engineering: From Theory
to Practice, In: Advances in Systems, Computing
Sciences and Software Engineering ed. : Springer,
2006.
► LOPES,
Denivaldo, HAMMOUDI, Slimane, Alan
Bontempo, José Junior, Metamodel Matching:
Experiments and Comparison, In: International
Conference on Software Engineering Advances ICSEA 2006, 2006.
Download

Metamodelo para Mappings: Entendendo o propósito