Exemplo de Projeto de Arquitetura Do Software
Exemplo de Projeto de Arquitetura Do Software
Exemplo de Projeto de Arquitetura Do Software
Documento de Arquitetura
Projeto AMADeUS
CCTE
Histórico de Revisões
1. Introdução
A arquitetura é a base de todo o desenvolvimento e das soluções, envolvidas na implementação, de sistema.
2. Objetivos
3. Considerações Gerais
4. Responsabilidades
5. Referências
3. Bergenti, F., Garijo, M., Poggi, A., Somacher, M. and Velasco J.R. Enhancing Collaborative
Work through Agents. VIII Convegno dell'Associazione Italiana per l'Intelligenza Artificiale,
2002.
4. Bourning, A. and Travers, M. Two approaches to casual Interaction on Computer and Video
Networks. Proceedings of International Networking Conference, 1991.
6. Ellis, C.A., Barthelmess, P., Quan, B. e Wainer, J. NEEM: An Agent Based Meeting
Augmentation System. Technical Report CU-CS-937-02, University of Colorado at Boulder,
Computer Science Department, 2002.
7. Ellis, C.A. e Wainer, J. Groupware and Computer Supported Cooperative Work. In Weiss, G.
(Ed.) Multiagent, Systems, MIT Press, 1999.
10. Fish, R. S., Kraut R. E. and Chalfonte, B. L. The VideoWindow System in Informal
Communications. Proceedings CSCW, 1990.
6. Arquitetura
O que é? E como é composta?
Além das classes que são peça-chave dentro da arquitetura, foi adicionada também à
“última milha”, classes de apoio ao desenvolvimento, ou melhor, classes que fazem o papel
de ferramentas, onde possuem métodos que serão utilizados da mesma forma em todos os
sistemas. Por exemplo, classes responsáveis por fazer a leitura das propriedades do sistema,
classes que representam as constantes do sistema, classes que facilitaram a validação e a
formatação dos dados de entrada no sistema, entre outros.
• Cadastro
• Controlador
• Exceção
• Fachada
• WEB
o JSP
o TagLibs
Nos próximos capítulos iremos discutir cada componente listado anteriormente e qual
o seu papel dentro da arquitetura como um todo, além de discutir de forma sucinta a
tecnologia e/ou o padrão adotado para a implementação do mesmo.
Com esse tipo de solução conseguimos realmente separar das regras de negócio a
implementação de funcionalidades básicas de acesso à base de dados, controles transacionais
e gerenciadores de conexão.
6.4. Cadastro
Qual a sua principal finalidade?
6.5. Controlador
Onde é implementada a regra de negócio?
Por esse motivo foi criado o elemento chamado Controlador dentro da arquitetura. Um
controlador é responsável pela execução de um ou mais fluxos de execução que são
modeladas em um caso de uso, ou seja, podemos dizer que o controlador é em si a
implementação da regra de negócio. O mesmo pode ser modularizado, quando existem
algumas particularidades dentro da implementação das regras, em classes que chamamos de
RN (regras de negócio). O controlador faz uso do cadastro para obter as informações
necessárias para o seu processamento.
Com isso temos para cada caso de uso existente no sistema um controlador
responsável por implementá-lo, assim temos um controle transacional muito mais robusto
(por caso de uso ou pela interação entre eles), por exemplo, cada método dentro do
controlador estará sempre sobre o mesmo contexto transacional.
6.6. Exceções
Para que servem?
Com isso houve a necessidade de criarmos algumas exceções com mais recursos
dentro da nossa arquitetura. Algumas exceções criadas são apenas o encapsulamento de
exceções já existentes, só que, com mais recursos que facilitarão o desenvolvimento dos
sistemas dentro da arquitetura e outras exceções são novas, e foram criadas para estarem
dentro do contexto da arquitetura.
6.7. Fachada
A porta de entrada para as regras de negócio.
Até agora só falamos dos principais elementos que compõem a camada de regras de
negócio, ou seja, não falamos nada de interface gráfica ou até mesmo de interações externas
com as mesmas. É ai que entra o papel fundamental da fachada.
De uma forma sucinta podemos descrever a fachada como sendo a porta de entrada
para um conjunto de casos de usos, que possuem afinidades, que serão acessadas por
elementos externos como interfaces gráficas e/ou sistemas. Podemos ter, por exemplo, mais
de uma fachada por sistema.
6.8. WEB
Como é dividida? Quais seus principais elementos?
As taglibs são tags criadas para facilitar a criação das interfaces gráficas web. Com
isso conseguimos criar tags com lógicas que facilitam a programação e a manutenção das
JSP’s (Java Server Pages, as páginas dinâmicas do J2EE).
JSP
Fachada
Controlador
Cadastro
ClasseBasica
Interface
RepositórioBDOR
Apresentação
Negócio
Acesso a Dados
7. Padrões de Projeto
7.1. Facade
O padrão de projeto Facade oferece um ponto centralizado e unificado para um
conjunto de interfaces em um subsistema ou do sistema como um todo, que representa o
conjunto de serviços oferecidos. O SETA implementa a Fachada como um ponto de acesso
único para as funcionalidades, isolando os diversos componentes do sistema.
7.2. PDC
O PDC – Persistent Data Collection – é um padrão de projeto que destrincha cada
coleção persistente de dados em duas classes e uma interface: uma classe Cadastro da
coleção propriamente dita (e diretamente ligada à classe Cadastro da análise) e uma
classe Repositório que implementa uma forma de persistência física específica, em
conjunto com uma interface para isolá-la do Cadastro.
7.3. Singleton
Assegura que a classe terá uma única instância e provê um ponto único de acesso a
ela. O padrão Singleton é usado, portanto, dentro da classe Fachada, para limitar a sua
instância, acessível a partir de um único ponto específico. Isto é importante por que é a
Fachada que serve de ponto de acesso a todos os serviços oferecidos pelo SETA, e que
dispõe do conjunto de dados que será compartilhado entre os usuários.
Esta seção descreve os requisitos e objetivos do software que têm algum impacto na
arquitetura, tais como: segurança, proteção de dados, privacidade, portabilidade, distribuição,
reuso. Também são descritos nesta seção restrições arquiteturais que se aplicam ao projeto,
tais como: estratégias de modelagem e implementação, ferramentas de desenvolvimento,
sistemas legados.
1. Persistência de tipagem (ex: formato de CPF, Data) devem ser feitos no cliente via
JavaScript.