Desenvolvimento - Modelagem

Model Driven Architecture – Conceitos Fundamentais

Este artigo introduz os conceitos fundamentais da Model Driven Architecture, uma abordagem de Desenvolvimento Dirigido por Modelos proposta pelo Object Management Group (OMG), cuja proposta é direcionar o desenvolvimento de software pela atividade de modelagem, permitindo a geração automática de aplicações através de modelos de alto nível.

por Thiago Silva-de-Souza



O progresso no desenvolvimento de software durante as últimas décadas não demonstrou tanto avanço quanto o demonstrado na área de hardware. Muitos problemas ainda persistem. Constantes avanços de tecnologia forçam que boa parte do trabalho seja refeita. Outro problema é a constante mudança de requisitos. Durante o desenvolvimento, as fases iniciais produzem basicamente papel (especificações e diagramas). Ao codificar, esses documentos acabam perdendo valor, pois o desenvolvedor naturalmente, ao realizar uma manutenção, toma um atalho e efetua as mudanças diretamente no código, sem atualizar os modelos. Outro problema é a necessidade de portabilidade e o aproveitamento de parte do trabalho já realizado em desenvolvimentos anteriores. Com o surgimento de novas tecnologias de forma cada vez mais rápida, os sistemas acabam sendo refeitos, aproveitando muito pouco do trabalho já feito.

A arquitetura Model Driven Architecture (MDA) proposta pelo Object Management Group (OMG) reconhece a importância dos modelos no processo, tornando-os o ponto-chave no desenvolvimento. Ela define que o processo de desenvolvimento de software deve ser direcionado pela atividade de modelagem do sistema, no nível conceitual, independente de qualquer plataforma/implementação, e através de transformações realizadas sobre esse modelo conceitual, novos modelos, com níveis de abstração cada vez mais específicos e ligados à implementação sejam gerados, de forma que o sistema final seja gerado automaticamente, a partir da especificação definida no modelo conceitual. Os modelos construídos são mais formais, evitando ambigüidade, modelos que podem ser entendidos por sistemas de software. MDA, na verdade, é uma especificação para apoiar o desenvolvimento dirigido por modelos, chamado de Model-Driven Development (MDD). MDD não é algo recente, mas ganhou notoriedade após o OMG lançar a especificação MDA, em 2001. A arquitetura MDA compreende três passos principais:

ü o primeiro passo é a geração do modelo Computation Independent Model (CIM), uma visão do sistema de um ponto-de-vista independente de computação. O CIM representa apenas requisitos do sistema e não mostra detalhes de sua estrutura. Apesar de constar na especificação MDA, o CIM ainda é um conceito pouco explorado e omitido na grande maioria das ferramentas e publicações sobre MDA.

ü o segundo passo é a geração, a partir do CIM, do modelo chamado Platform Independent Model (PIM), definido com um alto grau de abstração, independente de qualquer tipo de tecnologia. O PIM descreve o sistema de software de uma perspectiva que melhor represente o negócio sendo modelado;

ü o terceiro passo é a geração de um ou mais Platform Specific Models (PSMs). Cada PSM é gerado levando em conta detalhes específicos de uma determinada tecnologia a ser utilizada na implementação. Para cada PIM, vários PSMs podem ser gerados.

ü o último passo é a geração de código a partir de cada PSM. Esta geração de código não constrói apenas estruturas básicas e templates, como fazem algumas ferramentas CASE tradicionais; o código gerado no MDA deve ser o mais próximo possível da solução de software definitiva, incluindo as regras de negócio.

A Figura 1 representa os passos da arquitetura MDA, com seus artefatos e relacionamentos.

Figura 1: Passos da especificação MDA.

A MDA define, além destes três modelos, as transformações entre os modelos. Uma transformação é uma geração automática de um modelo em outro, conforme uma especificação de transformação, que abrange um conjunto de regras de transformação que descrevem como um modelo pode ser transformado em outro. A partir de um CIM, um PIM deve ser criado e, então, transformado em um ou mais PSMs, que são então transformados em código.

Os principais benefícios que MDA sugere são:

ü Produtividade – embora o uso da arquitetura MDA implique na geração das regras de transformação entre os modelos PIM, PSM e de código, essa geração deve ser realizada apenas uma vez, para cada plataforma. Uma vez definidas as regras, as transformações se tornam automáticas, e apenas o modelo conceitual (PIM) deveria ser atualizado, enquanto que os demais modelos, inclusive a implementação, seriam automaticamente atualizados, reduzindo o tempo de desenvolvimento e aumentando a qualidade do artefato final.

ü Portabilidade – uma vez que o PIM é, por definição, independente de plataforma, o mesmo PIM pode ser transformado automaticamente para vários PSMs, específicos para as diferentes plataformas.

ü Interoperabilidade – a interoperabilidade em MDA é alcançada através de bridges, que realizam a comunicação entre PSMs e códigos de diferentes plataformas. Para obter interoperabilidade as ferramentas de transformação devem gerar não só os PSMs, mas também as bridges entre eles.

ü Manutenção e Documentação – todo o trabalho de manutenção não é mais feito no código, mas sim no nível mais alto de abstração (o modelo PIM). Desta forma, a manutenção é facilitada e a documentação constantemente atualizada. E, no caso da manutenção ser realizada diretamente no PSM, deve ser possível atualizar automaticamente o PIM e manter os modelos consistentes.

Apesar de MDA vislumbrar tais benefícios ela ainda não se encontra totalmente madura. Para obter benefícios na sua totalidade, todas as transformações entre modelos devem ser automatizadas, o que o atual estado da tecnologia ainda não permite plenamente. Ainda há muitas questões a serem resolvidas e as ferramentas disponíveis atualmente não suportam toda a especificação MDA. Entretanto, MDA é flexível a ponto de permitir que uma ferramenta transforme um PIM diretamente em código, sem produzir um PSM.

Esse artigo tem como objetivo apresentar os conceitos fundamentais da abordagem MDA. Os próximos artigos demonstrarão exemplos práticos de construção de aplicações através de ferramentas MDA.

Referências bibliográficas

1. KLEPPE, A.; WARMER, J.; BAST, W. MDA explained: the model driven architecture: practice and promise. Boston: Pearson Education, 2003.

2. MELLOR, S. J. et al. MDA distilled: principles of Model-Driven Architecture. Boston: Addison-Wesley, 2004.

3. OBJECT MANAGEMENT GROUP. MDA guide version 1.0.1. OMG: 2003. Disponível em <http://www.omg.org/docs/omg/03-06-01.pdf>.

Thiago Silva-de-Souza

Thiago Silva-de-Souza - Especialista em Gerência e Desenvolvimento de Sistemas Distribuídos (NCE/UFRJ) e Bacharel em Sistemas de Informação (UNIGRANRIO). Possui também as certificações Sun Certified Associate for Java Platform (SCJA) e ISTQB Certified Tester Foundation Level (CTFL).
Analista de Sistemas do Serviço Federal de Processamento de Dados (SERPRO), onde atua no desenvolvimento de sistemas JEE voltados para o comércio exterior.
Paralelamente, atua como Professor da Escola de Engenharia e Computação da Universidade do Grande Rio (UNIGRANRIO), lecionando disciplinas de Engenharia de Software e Programação em Java.