MDA - Model Driven Architeture

Extraído do site: www.portaljava.com
por Evandro Broering

Freqüentemente no desenvolvimento de software, nós parecemos destinados a repetir erros feitos por programadores no passado. Um erro significante que tem conseqüências a longo prazo, especialmente para grandes aplicações distribuídas, é que a arquitetura da aplicação é escrita freqüentemente para um hardware específico ou sistema operacional. Esta situação pode não apresentar nenhum problema inicialmente, mas com o passar do tempo hardware e sistemas operacionais mudam freqüentemente de modos imprevisíveis.

Então há outro software do que você pode depender, como o servidor de aplicação, browser, ou sistema de administração de banco de dados. Em muitos casos, estas aplicações tendem a ser até mesmo mais dinâmico que o hardware subjacente e SO. O resultado freqüentemente destas mudanças de tecnologia subjacentes requer mudanças significantes na aplicação para continuar o funcionamento. Em alguns casos, a arquitetura da aplicação é amarrada a estas tecnologias mutáveis e então a aplicação inteira tem que ser inutilizada ou redesenhada.

Model Driven Architecture (MDA) é um modo para separar a arquitetura de uma aplicação de sua implementação. Assim, seus proponentes esperam que a mudança de software e hardware não farão a aplicação empresarial tornar-se obsoleta antes do tempo. Mais importante, através do desaclopamento da arquitetura da aplicação de seu ambiente de execução, o uso MDA pode resultar em melhores projetos para aplicações dando uma vida útil mais longa e portabilidade a outras plataformas.

MDA está baseado na Unified Modeling Language (UML), junto com Meta Object Facility (MOF) e Common Warehouse Metamodel (CWM), além disso, MDA tem alguns modelos de núcleo, ou perfis para desenvolvimento empresarial e outro para desenvolvimento em tempo real (tempo real no sentido de sistemas de hardware/software devem ter tempo de resposta previsível). Outros modelos de núcleo serão oferecidos como padrões com o passar do tempo. O MDA é um padrão do Object Modeling Group, o mesmo grupo de padrões que mantém o CORBA e padrões de UML.

UML provê uma combinação de técnicas de modelagens visuais de forma que não seja ambíguo a descrição de um sistema de software UML define várias visões gráficas que provem diferentes perspectivas do sistema em desenvolvimento. Cada diagrama mostra um aspecto diferente de todo o modelo. Por exemplo, diagramas de use-case e seqüência representado por gráficos, são usados para analisar o sistema e determinar os requerimentos do sistema. Pode ser modelado o comportamento do sistema usando representações gráficas de estados.

UML esquematiza o modelo da arquitetura da aplicação, seu comportamento, e sua relação com outras partes do sistema. UML representa a arquitetura física de um sistema com diagramas de desenvolvimento.

Diagramas não ambíguos:

Colaboração ajuda a determinar onde a aplicação se ajusta no ambiente global de computação, um aspecto importante a uma plataforma específica. Modelos de UML colaboram pelo uso de diagramas de colaboração que focalizam na estrutura estática dos objetos colaborados. Também é possível usar diagramas de seqüencia para este propósito; diagramas de seqüencia ilustram as mensagens entre objetos.

O primeiro passo na aplicação MDA é criar o modelo de aplicação em UML, especificamente concentrando-se em áreas que definem sua arquitetura, comportamento, e colaboração. Há produtos disponíveis para geração de código a partir de diagramas UML, mas você está perdendo um ingrediente importante: as características do sistema operacional e middleware que a aplicação pode precisar usar. Exemplos são janelas e caixas de diálogo. Em muitos casos, eles tiram proveito de sistema operacional ou serviços da plataforma (no caso de Java) e é implementado com a plataforma específica.

Então há middleware. Para implementar uma aplicação distribuída, decisões têm que ser feitas sobre CORBA, COM, Java Message Service (JMS), Web services, e outras tecnologias. Todas estas tecnologias precisam ser levadas em conta na implementação da aplicação, mas eles normalmente estão fora da extensão do modelo.

Assim o próximo passo é levar aquele modelo UML e torna-lo em alguma coisa q faca apenas isto. Como resultado, o próximo passo do processo de MDA é levar o modelo inicial e traçar um modelo UML específico para uma plataforma. A representação UML da aplicação permanece o mesmo, mas é completado por informação que dirige a implementação específica da tecnologias.

Uma vez o modelo UML traçado a uma plataforma específica de tecnologias, pode ser implementado dentro de outros ambientes parte interessante do processo. Para obter um modelo específico a plataforma e a implementação especifica a plataforma, você tem que fazer certamente mais do que gerar o código de fonte o que é especialmente verdade para aplicações Web baseadas, distribuídas. Para estes tipos de aplicações você terá provavelmente uma combinação de arquivos fontes, arquivos de configuração, definições de arquivo, e recursos de arquivo em outras palavras, todas as partes que você normalmente produziria ao construir tal aplicação.

Esta aproximação não lhe parece muito util a menos que pelo menos algum deste processo de criação de arquivo seja automatizado. Afinal de contas, com só uma ferramenta de modelagem UML e gerador de código, você teria que levar o código gerado do modelo e adaptaria manualmente de qualquer forma a sua plataforma. Tendo o modelo UML específico da plataforma sem a habilidade para gerar o código automaticamente pode não ser mais vantajoso que o que já está disponível hoje. Porém, uma vez que a cadeia de ferramentas de modelagem UML, com geração de código para plataforma específica, o MDA começará a pegar.

MDA não é certamente específico para Java e Java 2 Platform, Enterprise Edition (J2EE). Para permanecer independente de tecnologia, MDA permite implementar uma arquitetura usando J2EE, .NET, CORBA, Web services, ou qualquer tecnologia que suporte aplicações distribuídas. Mas aplicações Java, especialmente que são distribuídas por sistemas e usando uma interface Web, será eventualmente capaz com a influência MDA construir aplicações mais depressa.

Por que uma aproximação ao MDA no desenvolvimento interessa aos desenvolvedores J2EE? Por causa da natureza dinâmica do Java e a velocidade às quais a comunidade Java propõe e aceita novas tecnologias, pode representar MDA o unico possível modo de aplicações em desenvolvimento que podem ter um período de vida além das tecnologias para suportá-las. Enquanto a aplicação subjacente puder mudar com o passar do tempo, um MDA corretamente construído pode continuar pela vida inteira da aplicação.

Graças à vitalidade da comunidade Java, a plataforma Java muda mais rapidamente que qualquer outra. A habilidade para projetar uma aplicação sem considerar o impacto das tecnologias Java e versões que você está focado trazem rápidos benefícios e confiança. Em muitos casos, você gasta que muito tempo adaptando para diferentes versões de Java Virtual Machines (JVMs) e Java Development Kit (JDK) na codificação da aplicação. MDA tem a oportunidade de ocupar este intervalo no ciclo de desenvolvimento.

Um número crescente de ferramentas de desenvolvimento estão reivindicando para ser complacente ao MDA. Estes principalmente no lado Java, como Java oferece um caminho mais fácil na independencia de plataforma para modelar para uma plataforma específica. O que significa para ser complacente a MDA? Não muito, pelo menos não tudo. Em geral, ferramentas UML que criam modelos independente de plataforma estão sendo apresentadas como complacentes a MDA. Tais produtos provem a habilidade para automatizar a primeira parte do processo, a criação do modelo, e também em alguns casos geram código focados a uma plataforma particular.

Onde ferramentas ainda estão emergindo na área de transformar modelos de plataforma independente ao modelo de plataforma específica. Levando um modelo e aplicando aspectos específicos da plataforma, simplesmente não são bem entendidos ainda. É mais que geração de código; está tendo uma compreensão embutida dessas tecnologias, e sabendo traduzir um design na construção de blocos para aquela tecnologia.

A Próxima Fase:

Mais importante para a qualidade de aplicações, UML deixa desenvolvedores trabalhar a um nível mais alto de abstração, enquanto deixa o software fazer o detalhe do trabalho. MDA representa a próxima fase no desenvolvimento de aplicação, que promete avançar e melhora o processo às vezes caótico de construir aplicações J2EE.
Mas não é uma panacéia. MDA fará aplicações com desenvolvimento mais fácil, mas só se você já sabe seus materiais.