Em áreas de negócio mais dinâmicas, a mudança e evolução do domínio de um sistema de software é algo natural e ocorre de forma frequente. Nesse cenário, é importante que a arquitetura da aplicação seja criada de forma a permitir que alterações possam ser feita de forma simples e rápida, de preferência sem mudanças no código fonte. O Modelo de Objetos Adaptativos (Adaptive Object Model ? AOM) é um estilo arquitetural que permite a criação de modelos de domínio mais flexíveis. Apesar de haverem diversos padrões documentados a respeito de AOMs, sua implementação é complexa e, devido a suas peculiaridades, muitas vezes não é possível a reutilização de outras implementações ou o auxílio de frameworks preexistentes. Essa dificuldade pode impedir uma adoção com sucesso desse estilo arquitetural.
O framework Esfinge AOM Role Mapper provê anotações de mapeamento que permitem que um modelo AOM específico da aplicação possa ser visto a partir de uma API uniforme. Dessa forma, frameworks reutilizáveis podem ser desenvolvidos com base nessa API e serem utilizados para implementações distintas do modelo AOM. O desacoplamento causado por essa arquitetura permite que a aplicação enxergue um modelo próximo de seu domínio e os frameworks enxerguem um modelo geral e uniforme. Esse tipo de abordagem tem o potencial de simplificar a implementação de sistemas com domínio dinâmico através da reutilização de componentes. Atualmente o framework dá suporte apenas aos padrões estruturais básicos de AOM e possui implementado um framework de persistência que utiliza o MongoDB como base de dados.
Já está disponível a primeira versão para download e a documentação explicando os conceitos básicos de AOM e como utilizar o framework.
Um artigo a respeito da abordagem utilizada no Esfinge AOM Role Mapper foi publicado no SBCARS 2012 e sua apresentação será realizada no dia 24 de setemebro no CBSoft em Natal!
O projeto Esfinge é um “guarda-chuva” para frameworks que utilizam metadados para buscar reduzir a quantidade de código e torna-lo mais desacoplado. Atualmente estão disponíveis o Esfinge QueryBuilder (gera consulta através da assinatura de métodos), o Esfinge Comparison (lista as diferenças entre duas instâncias da mesma classe) e o Esfinge AOM Role Mapper, que está sendo disponibilizado agora. Para acessar a página do projeto entre em http://esfinge.sourceforge.net/.