Anais da Semana de Informática CESIT/UEA. Volume 1, Número 1. Manaus/AM: UEA Edições, 2013. ISSN 2319-0418
Um Estudo Sobre Transformações Modelos-Modelos
Baseado na Arquitetura Dirigida Por Modelos
Stephany C. da Silva1, Romário L. Batista1, Christophe Saint-Christie de L.
Xavier1, Jonatan L. da Silva1
1
Instituto de Ciências Exatas e Tecnologia– Universidade Federal do Amazona (UFAM)
– Itacoatiara – AM – Brazil
[email protected], [email protected],
[email protected], [email protected]
Abstract. This paper describes a study on model transformations through the
literature search and study of related work. In addition, this study also
illustrates an experiment performed using transformation into a Petri net
model which simulates an assembly line of package.
Resumo. Este artigo descreve um estudo sobre transformações de modelos,
através da pesquisa bibliográfica e estudo de trabalhos correlatos. Além
disso, o presente estudo demonstra também um experimento realizado, usando
dentro da transformação de modelos uma Rede de Petri que simula uma linha
de montagem de pacote.
1. Introdução
A Arquitetura Dirigida por Modelo - MDA é uma abordagem onde o desenvolvimento
de softwares está baseado em modelos, metamodelos e transformações de modelos.
Segundo Barbosa (2011), dentro do contexto da MDA, entendem-se como modelos as
representações da estrutura, função ou comportamento de sistemas. Os metamodelos são
modelos que descrevem a estrutura dos modelos e definem a forma de entender os
modelos e as linguagens para a construção das modelagens ou programas sem que
ocorram ambiguidades. As transformações entre modelos são conjuntos de regras que
descrevem como gerar um modelo de saída a partir de um ou vários modelos de entrada,
usando para isso consultas aos metamodelos.
A MDA foi desenvolvida pela Object Management Group - OMG baseada nas
ideias presentes dentro do cenário da Model-Driven Engineering – MDE, uma
abordagem onde modelos é a base para a implementação e evolução dos softwares, o
que permite a criação de sistemas mais claros e concisos. As transformações de modelos
possuem um papel chave dentro do processo MDA. Segundo Pelligrini (2010),
permitem a implementação de sistemas baseados em modelos independentes de
plataforma Plataform Independent Model - PIM, que através dessas transformações
geram modelos para plataformas específicas Plataform Specific Model – PSM e assim a
partir de tais modelos geram códigos-fonte livres de erros.
Para que as transformações entre modelos sejam expressas de uma forma
simples e, que a execução automática do código aconteça, utiliza-se a linguagem padrão
criada pela OMG (2005), chamada Query View Transformation – QVT. A sigla QVT
vêm de consulta, visão e transformação. Durante a consulta, o modelo é inserido na
entrada e elementos específicos deles são extraídos. Na visão ocorre uma projeção de
um metamodelo que pode gerar modelos na linguagem de modelagem UML e nas
transformações, o modelo inserido na entrada é atualizado, gerando em seguida um
novo modelo.
O presente trabalho faz um estudo dos conceitos existentes dentro das
transformações de modelos, da própria Arquitetura Dirigida Por Modelos e da Rede de
Petri, como um meio de compreender o funcionamento da Rede de Petri dentro das
transformações Modelo-modelo. Além disso, apresenta um experimento realizado
utilizando tais conceitos.
Além dessa Seção, as demais estão organizadas da seguinte forma: a Seção 2
apresenta a Model Driven Architecture e o seus conceitos; A Seção 3 define a Rede de
Petri; A Seção 4 apresenta os métodos utilizados para a realização do trabalho; A Seção
5 descreve o experimento realizado a qual foi utilizado um modelo em Rede de Petri
para a realização da transformação Modelo-Modelo; A Seção 6 discute os resultados
obtidos com o experimento; A conclusão é apresentada na Seção 7.
2. Model Driven Architecture (MDA)
A Model Driven Architecture (MDA) é uma abordagem de desenvolvimento de
software desenvolvido pela Object Management Group - OMG baseado na Model
Driven Engineering - MDE. Segundo Alves (2011), a MDA segue os princípios da
MDE, que visa o aumento de produtividade ao lado da diminuição do tempo e custo no
desenvolvimento de um software através do uso efetivo de modelos. A ideia é que a
partir do uso das técnicas da MDE o foco do desenvolvimento deixe de ser a codificação
do software e se torne os modelos do sistema e as regras de transformações entre tais
modelos.
A MDA segue a mesma ideia e segundo Alves (2011), é um framework
sustentado pela OMG. O mesmo se baseia num conjunto de padrões já bem
estabelecidos e difundidos por esta organização, que tem por principal objetivo ao
propor tal abordagem, padronizar vários modelos para que as empresas os usem a fim de
poderem representar suas aplicações. Dentro dos principais padrões utilizados e que
sustentam a MDA estão:
1.Unified Modeling Language 2.0 (UML2), linguagem usada para
representar de forma os sistemas computacionais. É composta por treze
diagramas diferentes que permitem a modelagem desde a parte estática
(diagramas de classes, de componentes, etc.) à dinâmica (diagramas de
sequência, de atividades, etc.) de um sistema computacional.
2.Query/View/Transformation (QVT), é uma linguagem para descrever as
regras de transformação entre modelos.
Os modelos que são descritos em MDA possuem em sua maioria quatro níveis
de abstração, segundo Alves (2011) são eles:
1. CIM (Computational Independent Model) são os modelos de domínio.
Tais modelos representam os requisitos e o domínio onde o sistema está
inserido. São os modelos de maior nível de abstração.
2. PIM (Platform Independent Model) são os modelos que já possuem
detalhes (estruturais, comportamentais, etc.) de como os sistemas serão
computacionalmente. Porém, tais modelos serão livres de detalhes de uma
tecnologia (ou plataforma) específica.
3. PSM (Platform Specific Model), modelos que além das informações já
presentes ao nível PIM também incluem descrições detalhadas e elementos
específicos da plataforma.
4. Código, código-fonte executável do sistema.
2.1. Modelos, Metamodelos e Transformações de Modelos.
Segundo Soares (2009), dentro do contexto MDA, entende-se como modelos as
representações da estrutura, função ou do comportamento de quaisquer sistemas. Um
exemplo simples que pode ser citado como um modelo presente no mundo real são os
mapas geográficos, os quais permitem uma visualização gráfica de um dado local.
Por permitirem uma visualização gráfica, modelos fornecem uma visão
antecipada do funcionamento de um determinado sistema antes de sua implementação.
Entretanto, para se compreender tais modelos, faz-se necessário a criação de um ou
vários outros modelos capazes de interpretá-los. Tais modelos interpretativos são
chamados de metamodelos. Sendo assim, os mesmos são modelos que descrevem a
estrutura funcional e comportamental de outros modelos, segundo Soares (2009). Além
disso, definem a forma de entender os modelos e as linguagens para a construção das
modelagens ou programas sem que ocorram ambiguidades. Neste contexto, os mapas
seriam como os modelos e as legendas que permitem interpretar os mesmos de maneira
clara e concisa, ao mesmo tempo em que repassam uma dada informação contida nos
modelos seriam os metamodelos.
Segundo Pereira (2007), a transformação de modelos é um dos principais focos
da MDA, pois apoia o desenvolvimento rápido de sistemas de software através da
realização de transformações de modelos e também através da obtenção de códigos em
linguagem de programação de uma forma automática. Tais transformações são
conjuntos de regras que descrevem como gerar um modelo de saída a partir de um ou
vários modelos de entrada, usando para isso consultas aos metamodelos.
As transformações podem ser chamadas de Modelo-Modelo ou Modelo-texto. A
Figura 1, ilustra os conceitos básicos da transformação Modelo-Modelo. Segundo
Pereira (2007), para que ocorra a transformação entre modelos é preciso definir as
Regras de Mapeamento responsáveis pela transformação.
Figura 1. Definição de regras de transformações (Pereira 2007).
Estas regras são baseadas no conhecimento das estruturas dos elementos
Metamodelo Origem e do Metamodelo Destino. Toda transformação acontece de acordo
com as regras de mapeamento que foram definidas. Assim, um Modelo Origem é
transformado em um Modelo Destino. Entretanto, uma transformação de modelo do tipo
Modelo-texto acontece quando o código fonte é gerado a partir de um modelo de
entrada.
Todavia, apesar das transformações de modelos e a própria MDA ser uma
tendência dentro da área de desenvolvimento de software, segundo Barbosa (2011),
ainda assim não existe a formalização de alguns de seus artefatos e processos, o que
acarreta vários questionamentos sobre a corretude dos códigos gerados durante essas
transformações. O fato de atualmente, não existir a garantia de que as transformações
MDA usem modelos formais o suficiente para se permitir o uso de técnicas de
verificação de equivalência, ocasiona críticas em relação à eficácia de tal abordagem.
Nesse contexto, o uso de um método formal durante o processo de modelagem poderia
ser uma solução para os problemas que ocorrem dentro das transformações de modelos.
3. Rede de Petri
Segundo Lachtermacher (2008), a linguagem formal conhecida como Rede de Petri é
uma ferramenta gráfica em forma de grafo que permite a modelagem de uma série de
sistemas e que permite também a verificação formal dos modelos criados.
Um grafo é um diagrama que consiste de pontos, chamados nós ou vértices, que
estão unidos por linhas, chamadas arestas. Este diagrama tem outra especificidade: cada
aresta une exatamente dois vértices. Neste caso, como definido por Paquete (2013)
dizemos que os dois vértices são vizinhos. A Figura 2 apresenta um grafo simples.
Figura 2. Modelo de um grafo.
Os Grafos são muito úteis na representação de problemas da vida real e são
usados em várias funções profissionais. Por exemplo, podemos representar um mapa de
estradas através dos Grafos e desenvolver um algoritmo para determinar o caminho mais
curto, ou mais econômico. Por permitir a visualização gráfica de algum problema, os
grafos podem ser vistos como modelos.
A partir disso, uma Rede de Petri é um grafo orientado que tem dois tipos de
nós: uma ativa denominada transição, que corresponde a uma ação realizada dentro do
sistema, e o outro passivo denominado lugar, relacionado a uma variável de estado do
sistema. As ações estão associadas à pré-condições (variáveis de estado), ou seja, há
uma relação entre lugares e transições que permitem assim a realização de uma ação.
Com isso, após uma ação ser realizada, determinados lugares terão suas informações
alteradas. De forma gráfica, os lugares são representados por círculos e as transições por
traços ou barras.
A Rede de Petri é orientada simultaneamente por estados e ações. Ao estado da
rede chama-se de marcação, cada um dos lugares é definido pela quantidade de marcas
presentes. A função de cada transição dentro de uma Rede de Petri consiste em destruir
e/ou criar marcas. Como as transições, segundo Lachtermacher (2008), estão
obrigatoriamente entre lugares é através da sua ação, denominado disparo que um lugar
altera a sua marcação. Os arcos por sua vez indicam para cada transição, os lugares
sobre os quais estas atuam.
A Teoria inicial das Redes de Petri foi apresentada em 1962, na tese de
doutorado de Carl Adam Petri, chamada Kommunikation mit Automaten, que fora
defendida na faculdade de Matemática e Física da Universidade de Darmstadt,
Alemanha. Segundo Pádua (2002), as redes de Petri são uma ferramenta para estudo de
sistemas, pois permitem representação matemática e análise, fornecendo assim
informações importantes sobre a estrutura e o comportamento dinâmico dos sistemas
modelados. A partir desse contexto, a utilização de uma Rede de Petri dentro da MDA
poderia ser um meio de formalizar o processo das transformações de modelos.
4. Material e Métodos
O presente trabalho foi elaborado de acordo com as etapas previstas. Foram realizadas
as seguintes atividades:
1. Pesquisa Bibliográfica. Foram realizadas pesquisas bibliográficas, estudos de
artigos e de trabalhos relacionados ao tema proposto pelo o trabalho. Além disso, foram
realizados experimentos na plataforma de desenvolvimento Java-Eclipe e em alguns de
seus plug-ins como: o Eclipse Modeling Framework, Graphical Modeling Framework e
o QVT Transformation.
2. Análise das Transformações de modelos e da linguagem
Query/View/Transformation. Foram realizados estudos sobre o funcionamento das
transformações de modelos para obtenção de conhecimento sobre os conceitos
abordados dentro da área. Isso por meio, de estudos dirigidos realizados na plataforma
de desenvolvimento Eclipse e de estudos de trabalhos correlacionados ao assunto. Para
se compreender o funcionamento do plug-in QVT Transformation (plu-gin usado para
realizar a transformação Modelo-modelo), foram realizados estudos embasados em
trabalhos correlacionados a Linguagem QVT, como o trabalho de Lachtermacher (2008)
que permitiu a compreensão lógica do funcionamento de tal linguagem e da maneira que
as transformações são feitas. O trabalho estudado realiza a transformação de um modelo
feito em UML para um modelo em Rede de Petri usando a linguagem QVT.
3. Análise do ambiente Eclipse e dos plug-ins Eclipse Modeling Framework,
Graphical Modeling Framework e QVT Transformation. Com intuito de se utilizar um
modelo em Rede de Petri dentro das transformações de modelos, fez-se necessário à
criação de um editor gráfico capaz de permitir a criação de um modelo usando uma
Rede de Petri. Criou-se então, primeiramente, o metamodelo usando o plug-in Eclipse
Modeling Framework, através do Diagrama Ecore que especifica as classes e os tipos de
transição entre eles como mostrado na Figura 3.
Figura 3. Metamodelo ecore.
Com a implementação do metamodelo, utilizou-se o plug-in Graphical Modeling
Framework que transformou o mesmo em algo mais abstrato, ou seja, em interface
gráfica. Esse estudo foi realizado, através da análise de tutoriais e de trabalhos
relacionados ao assunto como o trabalho de Lachtermacher (2008).
4. Estudo sobre Rede de Petri. Nesta etapa, foram realizados estudos de
trabalhos correlacionados a Rede de Petri com objetivo de entender o seu
funcionamento e de suas propriedades gerais.
5. Realização de experimentos usando Rede de Petri dentro das
transformações Modelo-modelo. Foram realizados transformações de modelos usando
um modelo em Rede de Petri e scripts criados usando a linguagem QVT no plug-in QVT
transformation.
3. Experimento
Fazendo uso da interface gráfica para Rede de Petri desenvolvida foi possível à
realização de um experimento usando o modelo em Rede de Petri que simula o
funcionamento de uma linha de montagem (figura 4).
Figura 4. Representação gráfica em Rede de Petri de uma linha de montagem.
No modelo, foi descrito o empacotamento e o envio ao setor de expedição
(depósito) de conjuntos de porcas, parafusos. O sistema descrito na Figura 4, forma
conjuntos de duas porcas e de dois parafusos. Um novo conjunto só poderá ser
empacotado quando o atual conjunto for enviado à próxima fase do processo e quando a
única ferramenta da linha de montagem voltar ao seu lugar de origem. Quando os
pacotes estão formados, os mesmos são enviados ao setor de depósito o que libera a
máquina para formar novos pacotes.
Após a manufatura dos parafusos eles são armazenados no lugar Parafusos, o
mesmo acontece com as porcas que são armazenadas no lugar Porcas e o lugar
Ferramenta recebe uma ferramenta que será responsável em unir as porcas e parafusos.
A transição T1 (monta pacote inicial) representa a tarefa de unir em um só os pacotes
contendo porcas, parafusos e ferramenta. Essa transição só estará habilitada a serem
usados, quando receber duas porcas, dois parafusos e uma ferramenta. Após receber
esses conjuntos, a transição T1 é responsável em enviá-las para o lugar Máquina
(monta pacote final) que será responsável em unir porcas e parafusos em um pacote,
enviá-los para o Lugar Estoque e depois devolver a ferramenta para o lugar
Ferramentas, fazendo assim, com o processo seja feito novamente.
No experimento em questão, o modelo foi transformado em três novos modelos.
Para isso foi utilizada a transformação Modelo-modelo através da linguagem QVT.
Dentro do processo de tal transformação, o Modelo de origem é transformado é um
novo modelo usando um script contendo as regras da transformação. O novo modelo
recebe as informações importantes do Modelo Origem, tais como, o nome de cada lugar
e além de novas informações que são definidas através do script QVT. A partir disso,
foi realizado implementação de um script usando o plu-gin Qvt Transformation. Tais
scripts foram capazes de transformar o modelo origem apresentada na Figura 4 em
outros três modelos que são apresentados na Figura 5, Figura 6 e Figura 7.
.
Figura 5. Modelo gerado durante a primeira transformação.
Figura 6. Modelo gerado durante a segunda transformação.
Figura 7. Modelo gerado durante a terceira transformação.
Para cada execução dos scripts um novo modelo era gerado. Os três modelos
obtidos através da transformação Modelo-modelo representam em sequência o
funcionamento da linha de montagem descrita no modelo origem contido na Figura 4.
Como pode ser observado nas Figuras 5, 6 e 7 ocorreram mudanças em relação ao
número de marcas que cada lugar possuía no modelo origem. Isso aconteceu por conta
das transformações realizadas, ou seja, a transformação Modelo-modelo permitiu alterar
os estados de um modelo de acordo com o que foi definido no script QVT.
5. Discussões
No experimento realizado, o modelo origem criado no editor gráfico que desenvolvemos
para Rede de Petri foi transformado em outros modelos de forma automática, através de
um script criado na linguagem QVT e usando o Qvt Transformation (plug-in
pertencente à plataforma de desenvolvimento em Java, o Eclipse). Como pode ser
observado nas Figuras 5, 6 e 7 ocorreram mudanças em relação ao número de marcas
que cada lugar possuía no modelo origem. Isso aconteceu por conta das transformações
realizadas, ou seja, a transformação Modelo-modelo permitiu alterar os estados de um
modelo de acordo com o que foi definido no script QVT. Entretanto, se algo estiver
errado no modelo origem consequentemente os demais modelos gerados a partir do
mesmo também estarão errados, isso ocasionará problemas no código fonte que for
gerado posteriormente.
Sendo assim, o experimento realizado permitiu compreender o funcionamento
das transformações Modelo-modelo, além de que, permitiu a compreensão dos conceitos
presentes dentro da Rede de Petri e a forma que a mesma pode ser usada dentro das
transformações de modelos, como um meio de confirmar a corretude dos modelos
origens criados antes dos mesmos serem transformados. Como trabalho futuro,
pretende-se agora, realizar a transformação chamada Modelo-texto, onde serão usados
como modelo origem os três Modelos descritos nas Figuras 6, 7 e 8 e que foram gerados
durante as transformações anteriores. A partir disso, pretende-se transformar em código
fonte os modelos usando para isso a linguagem ATL e o plug-in ATL transformation.
6. Conclusão
Este artigo apresentou um estudo sobre transformação Modelo-Modelo baseado na
Arquitetura Dirigida Por Modelos, exemplificando com a transformação de um modelo
em Rede de Petri. A importância do estudo está no fato de que no contexto do
desenvolvimento de um software, o uso das transformações de modelos e a própria
Arquitetura Dirigida Por Modelos está se tornando uma tendência por automatizar e
acelerar o processo de desenvolvimento ao fornecer o código fonte através de
modelagem. Sendo assim, o estudo realizado permitiu compreender o funcionamento
das transformações Modelo-modelo e dos conceitos presentes dentro da Rede de Petri, e
a forma que a mesma pode ser usada como um meio de assegurar a corretude dos
processos existentes dentro das transformações de modelos e da própria MDA.
7. Agradecimentos
Os autores agradecem primeiramente a Deus que nos deu força e coragem para não
desistir durante as dificuldades que surgiram, a FAPEAM (Fundação de Amparo a
Pesquisa do Amazonas) pelo apoio financeiro, a UFAM (Universidade Federal do
Amazonas) pela a estrutura cedida para que o trabalho pudesse ser realizado e a todos
aqueles que contribuíram de alguma forma para o sucesso do presente trabalho.
Referências
Alves, E. L. G. (2011). “Usando MDA e MDT para Modelagem e Geração Automática
de Arquiteturas de Teste para Sistemas de Tempo Real”, Universidade Federal de
Campina Grande Centro de Engenharia Elétrica e Informática, Coordenação de PósGraduação em Ciência da Computação.
Barbosa, P. E. S. (2011). “MDA-Veritas: Uma Arquitetura MDA Estendida para
Transformações de Sistemas Concorrentes Preservadoras de Semântica”,
Universidade Federal de Campina Grande, Coordenação do Curso de Pós-Graduação
em Ciência da Computação.
Lachtermacher, L., (2008), “Transformando o Diagrama de Atividade em uma Rede de
Petri, Pontifica Universidade Católica do Rio de Janeiro”.
Paquete (2013), “Grafos”, Universidade de Coimbra,
(http://academy.deic.uc.pt/page/programacao/progAvancado/Grafos).
Pellegrini, Fabrício G. (2013), “Transformações de Modelos para um processo MDA”,
Universidade Federal da Bahia, Faculdade Ruy Barbosa. Departamento de Ciência da
Computação. 2011.
Pereira, M. A. (2007), “Transformação de Modelos Orientados a Objetos em Modelos
de Banco de Dados Objeto-Relacional”, Dissertação de Mestrado, Universidade
Federal de São Carlos, Departamento de Computação, Programa de Pós-Graduação
em Ciência da Computação.
Download

Instruções aos Autores de Contribuições para o SIBGRAPI