Model Driven Architecture (MDA)
Por Natã Melo
(nata.venancio.melo@gmail.com)
A abordagem Model Driven Architecture (MDA) é a realização predominante de Model Driven Development (MDD), uma subárea de Engenharia de Software, que se estabeleceu desde o ano de 2003.

Model Driven Development (MDD) é uma subárea de Engenharia de Software estabelecida nas comunidades acadêmicas e no mercado, que promove o uso de modelos como artefatos essenciais no processo de desenvolvimento de software. Com o objetivo de realizar o propósito de MDD, surgiram diversos padrões, ferramentas e abordagens.

Dentre as abordagens que buscam a realização de MDD, estão: Domain-Oriented Programming (DOP), Agile Model-Driven Development e Model Driven Architecture (MDA). No entanto, MDA foi a abordagem que mais cresceu e ganhou espaço nas comunidades de Engenharia de Software. MDA constitui um framework definido pela Object Management Group (OMG) composto por um conjunto de padrões para definição de modelos, metamodelos, transformações do tipo modelo para modelo e transformações do tipo modelo para texto.

O conceito principal de MDA é mudar a ênfase do esforço e tempo empregado nas atividades de desenvolvimento de software dedicadas à implementação passando o foco para atividades de modelagem, metamodelagem e transformações entre modelos.

Para conhecer a abordagem MDA, precisamos entender alguns conceitos básicos:

  • Metamodelos – descrevem como devem ser construídos os modelos. É equivalente a uma gramática que define uma linguagem de programação;
  • Modelos – representam as instâncias dos metamodelos;
  • Transformações – possuem um conjunto de regras que definem como um modelo (de entrada) pode ser transformado em outro (modelo de saída).

MDA define uma abordagem de modelos distribuídos em quatro camadas, sendo esses:

  • Computational Independent Model (CIM) – Modelo da camada de mais alto nível, possui, portanto, maior nível de abstração e compõe os requisitos independentes dos requisitos computacionais do sistema.
  • Platform Independent Model (PIM) – Modelo que compõe os requisitos computacionais do sistema, contudo, é independente de sua plataforma de implementação.
  • Platform Specific Model (PSM) – Modelo que acrescenta ao PIM detalhes de implementação da plataforma na qual o sistema será executado.
  • Código – É a sintaxe concreta, gerada a partir do PSM. Contudo, pode-se gerar código a partir de um PIM, apesar da alta complexidade envolvida nessa transformação.

Na Figura 1, é representado o framework MDA. Vemos que é aplicada uma série de transformações que começa a partir de um PIM e vai até a geração de sintaxe concreta.

Figura 1 – Framework MDA.

Inicialmente, define-se um PIM a partir do metamodelo Metamodel 1. Em seguida, aplica-se sob esse PIM uma definição de transformação do tipo modelo para modelo que mapeia os elementos do Metamodel 1 para o Metamodel 2. O resultado dessa transformação (que é aplicada por uma ferramenta de transformação) é um PSM.

A partir do PSM gerado, aplica-se uma transformação do tipo modelo para texto (por meio de uma ferramenta geradora de código), em que cada elemento do Metamodel 2 é mapeado para os elementos de uma determinada linguagem. O resultado dessa transformação é o código propriamente dito. Note que, na definição de transformação de modelo para texto apenas é necessário utilizar um metamodelo, aquele que define o modelo de entrada, nesse caso, o Metamodel 2 que define o PSM.

Além das transformações discutidas, diversos tipos de transformações podem ser definidos, são exemplos: PIM para PIM, PSM para PSM, PIM para código concreto, etc.

No Laboratório de Práticas de Software (SPLab) do Departamento de Sistemas e Computação da Universidade Federal de Campina Grande, existem diversos trabalhos desenvolvidos na área de MDD, a exemplo de: MetaCG – Uma Abordagem Baseada em Metamodelos para a Escrita de Geradores de Código e MDA-Veritas: Uma Arquitetura MDA Estendida para Transformações de Sistemas Concorrentes Preservadoras de Semântica.

Fonte:

  • MDA explained (The model-driven architecture: practice and promise). Kleppe, A., Warmer, J. and Bast, W. Object-Technology Series. Addison-Wesley. 2003.
Jornal PETNews - Edição: Caio Paes - Revisão: Janderson Jason e Joseana Fechine
Grupo PET Computação UFCG, 2011. All rights reserved.