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.