Os softwares tem sido historicamente desenvolvidos, gerenciados e integrados usando um conjunto de metodologias, ferramentas e middleware que sempre surgem para dar continuidade às inovações. Tem sido constatado ao longo dos anos, o resultado dos esforços da OMG e W3C, na padronização dos modelos semânticos e para os modelos de representação de troca de dados. Dentre as contribuições da OMG estão CORBA, UML, XMI, MOF e CWM. As contribuições do W3C incluem XML, XML Schema e XML-P para trabalho em grupo. Estas tecnologias podem ser usadas para integrar completamente a série de valores ou ciclo de vida, que serão adotadas para o desenvolvimento e distribuição de aplicações baseadas em componentes para diversas arquiteturas e plataformas de software.
O ciclo de vida de uma aplicação pode variar dependendo da necessidade de construção de uma nova aplicação ou se apenas adiciona-se um pacote de funções para uma aplicação já existente.
No modelo tradicional, mostrado na Figura abaixo, os artefatos gerados após a conclusão de cada uma das atividades e suas interações, são gerados de forma manual ou com o auxílio de ferramentas, porém, baseadas unicamente em texto, mas entre o processo de codificação e geração são necessárias novas interferências dos engenheiros de software a cada mudança de requisitos funcionais ou não-funcionais

Essa necessidade de modificação de requisitos é intrínseca a todos os projetos, gerando redefinições de regras, atividades, estados, casos de uso e interações que serão desencadeadas até o código fonte. A demanda de re-trabalho gerada pode causar atrasos no cumprimento dos cronogramas, como também, problemas de atualização de documentação e modelos.
A Figura abaixo mostra as modificações no ciclo de vida de um projeto com a utilização do MDA. O ganho de produtividade, aderência aos requisitos e suas mudanças são facilitadas pelo uso dos modelos PIM, ferramentas de transformação e modelos PSM que garantirão de forma automática as adaptações e evoluções necessárias durante o ciclo de vida de um projeto.

As modificações dos requisitos que podem acontecer durante o ciclo de vida do projeto, serão re-avaliadas na fase de análise e daí por diante o processo de atualização se tornará automático com a geração do modelo PIM, seguido do PSM até o código fonte final dentro das fases do ciclo de vida.
MDA oferece suporte aos passos mais comuns existentes no desenvolvimento e distribuição de modelos de dispositivos baseados em componentes. O aspecto chave do MDA está no suporte completo ao ciclo de vida que cobre a análise e projeto, implementação, distribuição e gerenciamento. Um exemplo está no uso da UML, XMI, MOF e CWM que mudaram os conceitos de troca de informações entre ferramentas e aplicações.
As características do MDA estão baseadas nas tecnologias da OMG (MOF,UML,CWM). Estas tecnologias são utilizadas para descrever os PIM´s. Um PIM pode ser refinado e redefinido tanto quanto for necessário até que sejam obtidos todos os níveis de descrição de um sistema. Então, após a definição da infra-estrutura tecnológica, o PIM é transformado em PSM, que também pode ser redefinido quantas vezes forem necessárias
UML
A UML (Linguagem Unificada de Modelagem) é uma linguagem gráfica para visualização, especificação, construção e documentação de artefatos de sistemas complexos de software. Ela proporciona uma forma padrão para a preparação de planos de arquitetura de projetos de sistemas, incluindo aspectos conceituais tais como processo de negócios e funções de sistemas, além de itens concretos como as classes escritas em determinada linguagem de programação, esquemas de bancos de dados e componentes de software reutilizáveis.
Dentre os papeis que a UML exerce no MDA destaca-se a separação da sintaxe abstrata da sintaxe concreta, onde são definidos modelos semânticos formais. Estes modelos definem os conceitos que a modelagem UML usa e os associa a uma sintaxe abstrata ao contrário que em notações gráficas. A notação gráfica é uma sintaxe concreta que permite expressar o que está definido por meio da sintaxe abstrata.
O modelo formal de UML está definido como um metamodelo da UML. Metamodelos são como modelos de um modelo. Em um modelo de um banco incluem elementos como Conta, Cliente, Poupança. Em um modelo de um modelo incluem elementos como classes, operações, atributos, parâmetros, associações.
XMI
Adaptado e padronizado pela OMG em 1998, XMI surgiu para facilitar e acabar com as dificuldades constatadas durante os mapeamentos de modelos MOF para XML. A aplicação de XMI aos metamodelos UML produzem DTD´s (Definição de Tipos para Documentos) para troca de modelos UML. O XMI também define um conjunto de regras para a produção de documentos XML que são validados contra as DTD´s geradas. Estas regras são necessárias porque as regras de produção de uma DTD especificam somente a sintaxe XML para a representação de modelos.
O XMI é utilizado como um padrão de troca de dados utilizado entre várias ferramentas, repositórios de dados e middleware. Também podem ser utilizados automaticamente a partir de procedimentos XML-DTD e SCHEMAS, UML e modelos MOF, para possibilitar um mecanismo de serialização para estes artefatos.
MOF
MOF estabelece padrões para modelagem e construtores de troca de dados utilizados pelo MDA. Outros modelos padrões da OMG, incluindo UML e CWM, são também definidos pelos padrões dos construtores MOF. Estes padrões fornecem a base fundamental para a interoperabilidade e a troca entre os modelos e os metadados, através dos mecanismos já analisados no tópico sobre XMI.
Um metamodelo usa MOF para definição formal da sintaxe abstrata de um conjunto de construtores de modelos. Em outras palavras, com MOF define-se construtores formalmente. Um metamodelo também especifica informalmente algumas semânticas através de linguagem natural. Chama-se metamodelo MOF a combinação dessas definições formais e informais
CMW
CMW é o padrão da OMG para o armazenamento de dados. Ele cobre todo o ciclo de vida desde o projeto, construção e manutenção de aplicações de data warehouse. Possui um conjunto de metamodelos específicos para bancos de dados relacionais, multidimensionais, estrutura de registros e XML, como também, um conjunto de vários metamodelos para regras de processamento de dados como Processamento Analítico Online (OLAP), Mineração de Dados e Transformação de dados.
Transformação de dados é um requisito significante não só para o data warehouse, mas também para Enterprise Application Integration (EAI) e Business-to-Business Integration (B2Bi). As transformações necessárias podem ser a partir do formato de um banco de dados relacional (BDR) para outro, de um formato XML para outro, de um BDR para XML, de um XML para BDR ou de um banco multidimensional para BDR.
No próximo e final post sobre esse tema falarei sobre algumas ferramentas que implementam o MDA e quais os desafios para o seu uso.