Em projetos de Software, modelagem nunca é demais. Essa é uma afirmação que condiz com a realidade de desenvolvimento de software hoje em dia. Existem problemas de diversas naturezas contribuindo para que mais projetos de software não sejam finalizados respeitando prazo de entrega, custo e necessidades dos clientes: os sistemas estão ficando cada vez maiores e mais complexos com equipes de grande tamanho o que impõe novos desafios de produtividade, além do desafio do uso da crescente infra-estrutura computacional que utiliza inúmeras tecnologias que devem trabalhar em conjunto; A Internet vem impondo novos desafios de portabilidade e interoperabilidade a cada dia, além de muitas vezes a necessidade de utilizações de sistemas legados. Esses são alguns fatores que retratas a importância de uma modelagem precisa e contínua.

Atualmente o tempo despendido em modelar o software é maior que codificar, porque modelos bem definidos minimizam os desafios acima descritos. Já é de consentimento geral que uma modelagem mal feita resulta em maior esforço nas fases posteriores do projeto e a grande possibilidade de não satisfazer o cliente. Além dos desafios de desenvolvimento, vemos que os custos de manutenção do sistema ultrapassam o de desenvolvimento o que exige uma modelagem fácil de modificar e que possibilite a operação com novas plataformas, linguagens e até sistemas.

Foi baseado nessas necessidades que a OMG (Object Management Group) uniu esforços no desenvolvimento do MDA (Model Driven Architecture).

MDA é uma abordagem para criar um bom modelo de software que possa lidar com múltiplas tecnologias de implementação e com software de período de vida prolongado. É baseado em UML (Unified Modeling Language) e em outros padrões para visualização, armazenamento e troca de modelos de software. Contudo, ao contrário de UML, MDA promove a criação de modelos que podem ser lidos por ferramentas e que são desenvolvidos independentes da tecnologia que será implementado.

As linguagens de modelagem visual, como o UML, forneceram uma maneira de engenheiros documentassem suas idéias e visões através de uma linguagem simples e de fácil entendimento, o que levou a um aumento substancial no uso de modelagem visual. Contudo, essas linguagens estão sendo vistas apenas como uma maneira de desenhar figuras do software, figuras que depois devem ser traduzidas para código executável de uma maneira bastante trabalhosa.

MDA permite aos desenvolvedores construir sistemas de acordo com as regras e dados do negócio independente de qualquer hardware, sistema operacional ou middleware existente na empresa.

MDA enfatiza na criação de modelos que possam ser lidos por máquinas e armazenados em repositórios padronizados. O esforço investido nesses modelos não vai simplesmente para o papel e posteriormente para a mesa de algum programador que o codificará. Os modelos MDA são entendidos por ferramentas automáticas de múltiplos fabricantes que geram esquemas, esqueleto de código, casos de testes, código de integração e código de depuração para as múltiplas plataformas usadas em um projeto típico. Os modelos MDA são reusados para gerar múltiplos componentes e serem atualizados durante o tempo de vida da aplicação. Provê documentação precisa dos limites e possibilidades de integração do software ao invés de imagens estáticas de como as partes do sistema devem parecer no final da fase de analise.

MDA está na vanguarda do desenvolvimento de software: depois de desenvolvimento baseado em modelo e desenvolvimento orientação à objeto, o passo atual é arquitetura baseada em modelo.