A OutSystems indica
a utilização de 3 regras para o desenho da arquitetura. Há uma ferramenta
chamada Discovery Tool que analisa as dependências entre os módulos e valida se
essas regras estão sendo cumpridas.
No Upward References
Vamos direto ao
exemplo. A referência da biblioteca E está em desacordo com a regra, pois ela
gera uma dependência da camada de negócio (intermediária) em relação a camada
de interface (mais alto nível).
Nesse caso o módulo
D possui a seguinte dependência: D >
E > A > C.
Como corrigir: neste caso o correto seria
isolar o que E está consumindo de A, e criar um novo módulo F, ou se for
pertinente, incluir a funcionalidade no módulo E.
No side references among End-users or Orchestrations
Além de referências
verticais, devem ser evitadas referências horizontais, pois elas criam
dependências desnecessárias. No caso abaixo, A está dependendo agora de B, e
indiretamente de D, E e G. Na camada End-User e Orquestração os módulos devem
ser independentes.
Como corrigir: o correto para esse caso seria
ter um módulo "AB" que contenha funcionalidades compartilhadas entre
A e B e que não possuam dependências só de A ou só de B.
No cycles among Cores or Libraries
Deve-se evitar
também referência cíclica entre os módulos. Essa dependência cíclica pode
dificultar a manutenção dos módulos.
Como corrigir: neste caso o ideal é criar um
terceiro módulo que contém as rotinas que B consome de A, e dessa forma a
dependência seria A > B > C.