3. Arquitetura dos Sistemas

Uma das causas da falta de qualidade dos sistemas decorre da forma como o sistema foi concebido e desenvolvido.
Muitas vezes, pela falta de visão inicial da abrangência do sistema, ou pela urgência atribuída ao seu desenvolvimento, a equipe é levada a supor que um determinado sistema é um sistema de pequeno porte, isolado em relação a outros sistemas e de atuação departamental, quando de fato aquele sistema era um sistema corporativo que precisava se integrar com outros sistemas e cujo tempo de desenvolvimento ficaria acima de seis meses. A história dos desenvolvimentos mostra que essas situações são freqüentes.

A partir da constatação da mudança de escopo do sistema, a concepção do sistema é redirecionada, ainda em tempo de desenvolvimento, e dificuldades enormes aparecem decorrentes da sua estruturação inicial.

A arquitetura dos sistemas visa organizar as partes componentes dos sistemas, no sentido de permitir que mudanças na tecnologia empregada ou no próprio negócio possam ser implementadas sem maiores problemas.

A arquitetura serve para organizar o desenvolvimento, estruturar a solução, minimizar riscos técnicos e identificar oportunidade de reuso de código.

A arquitetura que está sendo definida neste documento prevê que todo sistema deverá ser dividido em camadas especializadas que são: GUI ou Graphic User Interface (Inteface Gráfica com o Usuário), Adaptação e transformação, Negócio e Dados.

A camada de Interface Gráfica com o Usuário é a camada que conterá o código que irá implementar a interação do sistema com os usuários (telas, relatórios e troca de dados). Utiliza serviços da camada de Adaptação e Transformação.

A camada de Adaptação e Transformação conterá o código que tratará a lógica de apresentação dos resultados das requisições dos usuários e a troca de dados com sistemas externos. Utiliza serviços da camada de Negócio.

A camada de Negócio conterá o código que irá implementar todas as regras de negócio do sistema. Utiliza serviços da camada de Dados.

A camada de Dados conterá o código que irá realizar todo o acesso aos dados.

Cada camada deverá ser independente das demais, em termos de tecnologia. Desta forma, se para um determinado projeto, na GUI, a equipe substituir a tecnologia Java pela tecnologia .Net, as demais camadas não sofrerão mudanças. Situação semelhante ocorre quando da mudança de um banco de dados Oracle para o DB2, por exemplo, na camada de Dados, onde as demais camadas não são modificadas.