MDA ( Arquitetura orientada a Modelos ) é uma abordagem que usa modelos para o desenvolvimento de software aumentando o poder de modelos naquele trabalho. Apesar de ser desenvolvida pela OMG a mesma que desenvolveu CORBA MDA não é um framework para a construção de softwares de sistemas distribuídos ou qualquer framework. O MDA ( Arquitetura orientada a modelos ) começa com a idéia de separar as especificações das operações do sistema dos detalhes da maneira de como ele será construído. Sendo assim o sistema ( que pode ser qualquer coisa como um programa, um mini sistema computacional, um bd, ou um junção de módulos e etc. )
Veja resumidamente como funciona um processo MDA Um desenvolvedor usando MDA inicia uma aplicação descrevendo os requerimentos e funcionalidades na criação de um modelo baseado na UML. Neste momento não deve existir a preocupação com a tecnologia que será empregada, o banco de dados que será utilizado ou mesmo a linguagem ou o servidor de aplicações que será adotado, pois a única preocupação que o desenvolvedor tem neste momento é em descrever da maneira mais fiel possível a necessidade do usuário. Desta maneira é criado um modelo de classes, um modelo de atividades e um modelo de seqüência que no seu conjunto servem para se criar a aplicação desejada independente da linguagem disponível que será a mais adequada naquele momento. Em um determinado momento, quando estes modelos já forem devidamente refinados e validados o próximo passo previsto na metodologia é a transformação destes modelos em outras formas de representação que aí sim definem o banco de dados que será utilizado, a linguagem em que será implementada a solução e a arquitetura em que será definido o sistema. O que diferencia o MDA de outras abordagens (ferramentas) de desenvolvimento é como é feita esta transformação, ou seja com o MDA as transformações deverão ser feitas usando-se padrões (Patterns) que necessariamente são códigos previamente testados e adotados pelo mercado como as melhores práticas de programação. Este compromisso é esperado do fornecedor que se propõe a desenvolver uma ferramenta em conformidade com o MDA. Continuando no processo de desenvolvimento o que temos após a primeira transformação é um modelo mais próximo do sistema final, pois já existe a representação dos objetos específicos da linguagem adotada na implementação e também já existe as definições de tabelas e conexões à base de dados que receberá o sistema. O desenvolvedor precisa apenas trabalhar no refinamento destas informações garantindo que no próximo processo de transformação esteja criado um sistema quase totalmente acabado. Como já ficou claro o desenvolvedor aplica uma nova transformação no modelo trabalhado e conseguimos um código na linguagem desejada já disponível para testes e validações de funcionalidades. O que queremos dizer com tudo isso que está sendo apresentado, várias coisas, mas principalmente produtividade. Em avaliações feitas por empresas independentes pelo mundo já existem alguns comparativos para o desenvolvimento utilizando a abordagem do MDA e a forma tradicional que demonstram uma economia apenas durante o desenvolvimento de mais de 30%, chegando em alguns casos a eliminar a necessidade de escrever códigos. Isto significa muito em um mundo como o atual, além do dinheiro, o fator principal é conseguir atender o cliente com mais qualidade em um espaço de tempo menor, garantido sua satisfação e fidelidade. Com isso o MDA é capaz de: — Especificar um sistema independentemente da plata forma que o suporta, — Especificar Plataformas — Escolher uma plataforma particular do sistema — Transformar a especificação do sistema em uma plataforma particular.
As três primeiras metas do MDA são: Portabilidade, interoperabilidade e reusabilidade. Com essas medidas o MDA ganha um pouco mais na parte de Projeto e codificação. Hoje em dia o projeto é concebido em 6 fases: Conceitualização e Coleta de requisitos Analise e Descrição funcional Projetar Codificar Testar Distribuição
O MDA tem as seguintes passagens:
Com isto o MDA pode gerar algum código, que provavelmente será refinado por um programador, dando um ganho de tempo na implementação da aplicação.
|