Esse artigo faz parte da revista Engenharia de Software 9 edição especial. Clique aqui para ler todos os artigos desta edição

 

Projeto

Model Transformation com ATL

Pondo em prática a M2M Model Transformation

 

De que se trata o artigo:

O artigo tem como objetivo apresentar a criação de um pequeno projeto baseado nos conceitos iniciais da MDD e MDA, com foco principal nas transformações de modelos do tipo Model-to-Model (M2M) utilizando a linguagem ATL.

 

Para que serve:

É muito comum os iniciantes desta nova abordagem de desenvolvimento de software terem a curiosidade sobre como aplicar os conceitos vistos na teoria sobre MDA na prática. Sendo assim, fornecemos este artigo para que seja possível por em prática tais conceitos.

 

Em que situação o tema é útil:

Quando se trabalha com o desenvolvimento de software com MDA é necessário realizar transformações de modelos para geração automática/semi-automática de novos modelos ou código-fonte. Este artigo lhe oferece os conceitos básicos para realização destas etapas mostrando o passo a passo de como construir transformações de modelos através das linguagens ATL, KM3, Ecore e XMI.

 

 

Model Driven Development (MDD) é uma nova abordagem de desenvolvimento de software que está alcançando grandes proporções no mundo da engenharia de software. É possível encontrar inúmeras matérias, artigos e trabalhos sobre o assunto, porém, o que realmente pesa na mente de um iniciante nesta nova abordagem é como colocar os conceitos vistos na teoria em prática. Neste artigo vamos apresentar alguns fundamentos iniciais sobre MMD e MDA, e então, colocar em prática o conceito de transformações de modelos (Model Transformation) (ler Nota 1).

 

Nota 1. Definições

Ecore: É um padrão introduzido junto com o Eclipse Modeling Framework (EMF) que define a linguagem utilizada para definir modelos padronizados, ou seja, linguagem utilizada para criação de metamodelos.

 

KM3: A finalidade do KM3 é dar uma solução relativamente simples para a definição de um meta-modelo, ou seja, ele é uma Domain Specific Language (DSL) utilizada para definição de meta-modelos. Para mais informações acesse http://wiki.eclipse.org/index.php/KM3.

 

DSL: Domain-Specific Language foi criado para solucionar problemas em um determinado domínio específico e não se destina a resolver problemas fora do contexto que foi aplicado.

 

OCL: É uma linguagem de expressões utilizada para especificar regras sobre modelos. As expressões OCL são utilizadas para definir condições às classes representadas em um modelo e também são utilizadas para especificar as pré e pós-condições em operações aplicadas às classes deste modelo.

 

XMI: É um formato padrão baseado no XML definido pela OMG, que tem como objetivo o intercâmbio de dados para o compartilhamento de modelos e ferramentas de modelagem diferentes. Os seus maiores benefícios são a consistência e compatibilidade em sistemas criados em ambientes distintos.

MDD/MDA

MDD é uma abordagem de desenvolvimento de software que se concentra na criação dos modelos do sistema. O foco principal é abstrair todas as funcionalidades e recursos do sistema expressando-as em um conjunto de modelos, por exemplo, UML. O empenho na construção de um sistema não fica mais a cargo da criação de código-fonte e sim na modelagem do sistema. Modelar reduz o tempo e os custos durante o ciclo de desenvolvimento do sistema, proporcionando aos desenvolvedores menor preocupação com o código-fonte por ser gerado automaticamente [1].

Model Driven Architecture (MDA) é outra abordagem padronizada destinada a dar suporte ao MDD definida pela Object Management Group (OMG). É utilizada na definição do sistema com foco na separação da especificação das funcionalidades do sistema e a especificação da plataforma tecnológica utilizada no desenvolvimento. Ou seja, os modelos criados no início do desenvolvimento não terão nenhuma dependência quanto às plataformas tecnológicas, ao invés disso, terão como escopo apenas a lógica funcional do sistema. Em um segundo momento ocorrerá a geração de modelos específicos a plataformas tecnológicas através do conceito de transformação de modelos [1].

O que o MDA nos traz em termos de melhorias no processo de desenvolvimento de software são:

·         Produtividade – Transformações automáticas de modelos independentes de plataforma (PIM) em modelos dependentes de plataforma tecnológica (PSM) assim como a geração automática de código-fonte;

·         Portabilidade – Menor esforço para portar um sistema construído em uma determinada plataforma para uma plataforma diferente;

·         Qualidade – Modelagem independente de plataforma tecnológica. O foco principal da construção do sistema fica apenas nas funcionalidades e recursos do mesmo;

·         Redução nos custos de desenvolvimento – Mudanças no sistema são facilmente realizadas. Como o foco do desenvolvimento está nos modelos, as alterações são feitas em nível de abstração (nos modelos) e não em código. Portanto, ao finalizar todas as mudanças, basta gerar novamente o código-fonte. Observe a Figura 1.

 

Figura 1. Ciclo de vida do desenvolvimento MDA

 

Figura 2. Ciclo de vida do desenvolvimento tradicional

 

As etapas do ciclo de vida do desenvolvimento MDA são idênticas as de um ciclo de desenvolvimento tradicional. A diferença está nos artefatos que são criados durante o processo. Em MDA estes artefatos são modelos formais.

Geralmente, na prática, os documentos e os diagramas gerados nas três primeiras etapas do ciclo de vida do desenvolvimento tradicional (Figura 2) desvalorizam-se assim que a codificação é iniciada. Quando ocorrem mudanças ao longo do desenvolvimento, amplia-se cada vez mais a distância entre estes. Isso acontece pelo fato de que as mudanças são feitas apenas em código, pois, muitas vezes não existe tempo disponível para atualização dos documentos de alto nível [1] ...

Quer ler esse conteúdo completo? Tenha acesso completo