Tendo uma idéia do que se trata o MDA, é interessante agora conhecer as intensões da arquitetura. Escolhi o position paper "
Model-Driven Architecture: Vision, Standards And Emerging Technologies" de John D. Poole por descrever separadamente o que a MDA busca para o presente, e o que se pretende alcançar a longo prazo.
Então, como foi dito, descreverei bem brevemente a visão a curto prazo (near term vision), com o que é necessário para se desenvolver um sistema que atenda a MDA; e a visão a longo prazo (long term vision), e as possibilidades que os sistemas oferecerão para facilitar a proposta da MDA.
----
1 - Visão da MDA a Curto PrazoO que se espera alcançar da MDA em um futuro imediato é um ambiente interoperabilidade eficiente e quase sem suturas (remendos) entre diversas aplicações, ferramentas e databases é alcançado através da troca de modelos compartilhados (os metamodelos).
Para realizar essa visão, são considerados os seguintes quesitos:
Importância da Metadata"In fact, metadata
is the primary means by which interoperability is achieved"
Metadata é o meio primário para se conseguir interoperabilidade, o que quer dizer que, duas aplicações desenvolvidas apartir de modelos, que por sua vez são definidos por um metamodelo compartilhado, conseguem interagir sem preocupação com as diferenças entre seus modelos.
Troca de dados, transformações e mapeamentos entre fontes de dados dissimilares podem ser orientados através de descrições em metadata, formal e independente de produto, das transformações, dos tipos de dados e do sistema de mapeamento.
Em um sistema MDA, não é necessário que modifique a representação interna da metadata nas aplicações, ferramentas e databases. Metadata compartilhada consiste na externalização das definições compartilhadas entre os componentes. Em outras palavras, o que interliga os componentes é o que deve seguir o metamodelo definido, e não os componentes em si, que se mantém como estão.
Para garantir que a metadata será compreendida por todos os participantes, os sistemas baseados em MDA deve padronizar o seguinte:
- Uma linguagem formal (sintaxe e semântica) para representar a metadata
- Um formato para troca e publicação de metadata
- Um modelo de programação para acesso e descoberta de metadata
- Mecanismo para extender cada um dos itens mencionados
- Um serviço de metadata opcional, onde estarão as metadatas publicadas
Serviços Comuns e Modelos de ProgramaçãoMais um bloco de construção importante dos sistemas interoperáveis. Se trata da padronização dos sistemas comuns e serviços a nível de aplicação, assim como as APIs usadas para acessar os serviços.
Especificação de PlataformaCada instância de um sistema baseado em MDA inclui um
descritor que especifica quais os recursos suportados pela mesma.
2 - Visão da MDA a Longo PrazoAbordando agora uma visão do que se pretende alcançar com a MDA em um futuro mais distante. Um exemplo do que seria possível é um software capaz de identificar automaticamente as propriedades do ambiente e se adaptar de várias maneiras, incluindo mudar seu próprio comportamento.
Temos então alguns recursos que se tornarão realidade:
Orientação Baseada em ConhecimentoA funcionalidade do sistema se torna cada vez mais baseada em conhecimento (knowledge-based) e capaz de descobrir propriedades em comum de domínios dissimilares, tomando decisões inteligentes, e criando e armazenando as inferências produzidas.
Arquitetura DinâmicaExperiências obtidas no desenvolvimento de sistemas MDA baseados em objetos extendíveis resultarão na criação de sistemas que podem interpretar modelos e modificar seu comportamento de acordo com o necessário ao invés de mapear explicitamente visões externas de metadata para modelo de implementação.
Sistemas AdaptativosCom classes altamente dinâmicas e sistemas auto-organizáveis, será possível então que o sistema possa se acomodar a mudanças imprevistas e reagir apropriadamente sem a necessidade da intervenção do programador.
----
Bem, é isso. Enquanto agora está se criando padrões para que seja mais fácil reaproveitar e interligar aplicações em um sistema, mira-se que o sistema se adapte automaticamente e faça inferências para dar menos trabalho ainda para o programador, de forma que todo o aplicativo acabe por se desenvolver com simples "clicar de botão".
...Sorte dos futuros programadores.