sexta-feira, 29 de maio de 2009

MDE - Model Driven Engineering - Uma Perspectiva Evolutiva

Arquitetura baseada em modelos é a mais recente, mais madura e mais produtiva forma de desenvolvimento de software. Para entender melhor do que se trata esta forma de arquitetura vou fazer uma analogia com a evolução da fabricação de produtos ao longo da evolução da humanidade no século passado.

Programação - O trabalho manual - Manufatura

Fazer um trabalho manual é uma arte. Você pode gostar de fazer isto, ou não. Tudo vai ficar como você gostaria que fosse, no seu tempo. Em desenvolvimento de software isto seria o desenvolvimento de software de forma manual. É o desenvolvimento de sistema desde o mais baixo nível possível até o mais alto. Os frameworks disponíveis hoje, como o Java Platform, o .NET framework e os frameworks open source podem facilitar muito, porém o trabalho continua sendo manual. Eu não considero programação como desenvolvimento orientado à modelos. A programação é um conceito centrado no código. Sua intencionalidade é expressa apenas pelos comentários no código ( code-centric ).






Geração de Código - Automação - Pré-Industrial

No início da indústria, muitas tarefas puderam ser automatizadas. Os operários precisavam aprender sobre como funcionavam as máquinas, porém, uma vez que se dominavam a operação das mesmas, boa parte do trabalho manual podia ser automatizado. Em desenvolvimento de software, o trabalho manual ( programação ) também pode ser automatizado. Em vez de escrever código, você pode criar modelos. Estes modelos podem ser usados para gerar código. Você precisa, primeiramente, aprender como criar modelos, mas, uma vez aprendido, boa parte do trabalho manual pode ser criado automaticamente. Isto representa um grande avanço na forma de desenvolver software.No começo, era comum geradores de código para interfaces gráficas. Atualmente existem várias ferramentas para gerar código a partir de modelos, geralmente através de templates ( code-centric ).

MDA ( Model Driven Architecture ) - Abstração - Industrial

Na perspectiva anterior, nós precisávamos de ferramentas especializadas para cada tarefa. Isto fazia com que fosse necessária a aprendizagem de diversas ferramentas para se gerar um código inteiro. Nas fábricas do período industrial, muitas máquinas eram usadas para se gerar um produto final, muitas vezes usando fornecedores diferentes. Podemos subir um nível em abstração e temos uma fábrica, que possui todos os recursos para se criar um produto. Do modelo conceitual até ao produto final. Isto é o que acontece em desenvolvimento de sistemas com o MDA. Cria-se primeiramente um modelo conceitual CIM ( Computacional Independent Model ou Modelo Independente de Computação ), o PIM ( Platform Independent Model ou Modelo Independente de Plataforma ) eo PSM ( Platform Specific Model ou Modelo para Plataforma Específica ). Desta forma, o MDA tem como objetivo a possibilidade de independência técnica.De um modelo UML ( PIM ) pode-se criar um modelo específio de uma plataforma ( PSM ). Note que apenas de se partir de um modelo ( UML ) ainda se trata de um conceito centrado no código. O objetivo é transformar um modelo ( por exemplo de classes, sequência, etc ) em código executável. O Objetivo é apenas automatizar este processo, criando-se independência de plataforma ( code-centric ).

DSL ( Domain Specific Language ) - Especialização - Fábricas Modernas

A produtividade, mesmo com o aumento da complexidade, das fábricas modernas advem, basicamente, da especialização que elas obtiveram ao longo do tempo.As DSLs tem o mesmo objetivo, em desenvolvimento de software. A especialização do modelo de domínio funcional, aumenta drasticamente a produtividade.O DSM ( Domain specific modeling ) difere das perspectivas anteriores por mudar o foco do problema. Em vez de se preocupar com as transformações de modelos de código, ela objetiva construir software a partir do modelo de domínio funcional ( domain-centric )



Model Driven Engineering - Abrangência

Nós podemos falar muito sobre como automatizar e especializar mais e mais, porém, o grande salto em produtividade está no alinhamento. A produção de mercadorias precisa estar alinhada com as necessidades dos consumidores. Muitas vezes para se produzir uma mercadoria, há necessidade de se adquirir matérias-primas de várias outras indústrias para se chegar a um produto final. O foco não está em se automatizar cada vez mais as indústrias, mas sim de se objetivar as necessidades do consumidor.
A perspectiva do MDE difere das anteriores por fazer uma distinção entre as transformações ( MDA ) horizontas e as verticais. Transformação horizontal do domínio do problema para o domínio da solução, e a vertical do dominio da solução para os modelos executáveis ( Business-Centric ).
Em resumo o MDE foca no domínio do problema, ou seja mais foca no negócio da empresa e não na implementação em si. Só esta perspectiva, em si, garante um salto em produtividade.

Nenhum comentário:

Postar um comentário