SGT: Visão geral

O SGT é composto de duas partes principais:
Camada de negócio14:
Toda a lógica de negócio é implementada utilizando ``EJBs15''. Este código roda no servidor de aplicações, no caso o JBoss.
A lógica de negócio é implementada por Entity Beans(persistência), Session Beans(controle de fluxos) e objetos auxiliares(Value Objects, Util Objects.).
Camada de apresentação16:
É composta pelas interfaces a partir das quais o cliente usa o sistema.
Para desenvolvê-la utilizamos: jsp, html, JavaScript.
Tratamos de não colocar nenhuma regra de negócio nesta camada da aplicação, a fim de permitir a criação de outros tipos de cliente sem a necessidade de reprogramar as regras.
O sistema foi construído utilizando a arquitetura J2EE17 pois, durante o desenvolvimento do MetaNaeg, nos deparamos com diversos problemas que, utilizando-a, poderiam ser resolvidos mais facilmente.
As principais razões desta desta escolha foram:
Lógica versus Apresentação
É mais fácil fazer a separação entre a lógica do negócio e a apresentação ao cliente.
Transações
O servidor de aplicações fica encarregado de gerenciar as transações.
Concorrência
O servidor de aplicações também cuida deste aspecto. O desenvolvedor nem deve inserir código18 que manipula concorrência dos ``EJBs''.
Segurança
É possível definir permissões de acesso e execução de ações com o uso de papéis.
O importante é notar que isto é feito de maneira declarativa, à parte do código da aplicação.
No caso do MetaNaeg a validação das permissões estava no próprio código.
Persistência
O servidor de aplicações faz a persistência automaticamente utilizando-se Persitência Gerenciada pelo Container(``CMP'').
Código ``limpo''
A maior parte destes aspectos pode ser configurada em arquivos chamados ``deployment descriptors''.
Desta maneira, o código do sistema fica livre de código que trata destes aspectos ortogonais19 à aplicação.
Além disso, podemos alterar os ``deployment descriptors'', mudando assim alguma característica do sistema sem, no entanto, precisarmos alterar uma linha de código do mesmo. Por exemplo: podemos alterar uma permissão de execução de uma determinada função, sem precisarmos alterar código do sistema, bastando para isso, alterar o ``deployment descriptor``.
Desta maneira, podemos notar que o desenvolvedor pode se concentrar na lógica do negócio, deixando a cargo do servidor de aplicações a gerência dos aspectos ortogonais à aplicação citados. Além disso, como no código do sistema não encontramos código que trata de aspectos ortogonais à aplicação, o código torna-se mais fácil de ser alterado e entendido.



... negócio14
Aplicação servidora.
... ``EJBs15
Enterprise JavaBeans: são os componentes que rodam no servidor de aplicações.
... apresentação16
Aplicação cliente.
...J2EE17
Java Enterprise Edition
... código18
O uso de métodos synchronized não é permitido.
... ortogonais19
Segurança, concorrência, entre outros.
Fabio Pisaruk 2004-12-07