Arquitetura Baseada em Modelos
Tags: mda, architecture, braziliandevs
Published: 2022-05-18 12:21:15

   Arquitetura baseada em orientação a modelos, com objetivo de lidar melhor com a complexidade e interdependência de sistemas complexos.
Sem levar em conta o objetivo final do sistema, o processo em si consiste em criar um modelo independente de plataforma expresso pela UML, que depois é transformado em algo mais específico para uma plataforma como .NET, JEE2, SOAP.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1smr87y08n9vgfdekzcl.gif)

   O processo em si consiste em criar um CIM que irá contér o “core” do negócio, mostrando requisitos que o sistema necessita mas sem detalhar estrutura, passamos então a criação do PIM, ainda em um alto nível de abstração, descrevendo o sistema de software sem entrar em detalhe de nenhuma tecnologia, para então irmos ao PSM que usa a tecnologia como base para o desenvolvimento, sendo transformado em código. 


**CIM - Modelo de Computação Independente**
Referido também como modelo de negócio ou domínio, apresenta exatamente o que se espera que o sistema realize, mas mantém escondida toda a parte de informação referente a tecnologia, permanecendo assim independente.

**PIM - Modelo Independente de Plataforma**
Irá demonstrar apenas o suficiente em termos de independência, para que o mapeamento a outras plataformas se torne possível. É atingido criando alguns serviços de maneira a abstrair detalhes técnicos. 

**PSM - Modelo Específico de Plataform**a
Aqui o Modelo Independente será incluído junto a detalhes que uma plataforma específica necessita para executar. 

Em resumo:

- Etapa 1 Construção do modelo o mais abstrato possível.
- Etapa 2 Modelo é transformado em algo mais específico de uso e em termos de implementação.
- Etapa 3 Modelo virá código.

   Um padrão que transcende as noções de CIM/PIM/PSM, são dois conceitos chave do MDA: modelos e transformações. 
Transformação dentro do assunto MDA é a atividade de produzir diferentes modelos, ideias ou artefatos, geralmente de uma representação a outra, como um PIM se transforma em vários PSM. O conceito ou ideia inicial do PIM se mantém, porém no PSM terá outra forma (mobile, desktop, cloud).

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/donx8eo3s3gskqyfhmvc.png)



**Pontos fortes**

- Produtividade: Modelo específico precisa ser definido apenas uma vez. (PSM)

- Portabilidade: Modelo independente (PIM) pode gerar divisões específicas para diferentes plataformas

- Interoperabilidade: Os diferentes PSM podem trabalhar em conjunto com diversas plataformas, pois o modelo independente "cria" pontes através das especificações técnicas.

- Adaptação e mudanças são os principais aspectos da engenharia orientada a modelo, a evolução do software, na literatura onde é chamada de maintenance, tem três principais razões para acontecer:

> Razão 1 -  Correção - Indica uma alteração no sistema para solucionar um processo, performance ou implementação;
> Razão 2 - Adaptiva - Alteração engatilhada por motivos técnicos ou regras de negócio;
> Razão 3 - Perfectiva - Realizada para melhorar qualidade (Eficiência de processamento, aperfeiçoamento de performance, etc) e da mantenabilidade do sistema.

**Pontos fracos**

Manutenção do modelo UML;

- Alteração geralmente requerem intervenções manuais e tediosas, o modelo UML precisa refletir as mudanças para cada instância na qual o padrão ou regra arquitetural é usado.

- Problemas de arquitetura - Segurança, transações, modelos de persistência não são bem encapsulados, sendo difícil a abstração e o reuso em diferentes plataformas.

-  Proliferação de middleware - Quase impossível depender de apenas um sistema de middleware e padronizar, com o tempo e a evolução constante, fica cada vez mais difícil e mais caro realizar uma migração.

- Reuso - O design de padrões pode levar ao desenvolvimento de modelos inadequados à tarefa proposta pela regra de negócio.


Esse é um resumo que criei enquanto estudava sobre a arquitetura baseada em modelos, pois é a arquitetura que estou desenvolvendo hoje junto a empresa que atuo. 




Referências:
"The Fast Guide to Model Driven Architecture" por Frank Truyen;
"Object Management Group Model Driven Architecture (MDA) MDA Guide rev. 2.0" disponível no site da OMG.