Olá,
Estou fazendo minhas primeiras leituras em Engenharia de Software, e gostaria de começar a aplicar alguns conceitos. Nesse momento, gostaria de definir a arquitetura de uma aplicação que pretendo desenvolver.
O aplicativo é um mecanismo de busca em cima de um certo tipo de documento XML. O sistema recebe uma série de parâmetros de consulta e retorna uma lista com o resultado. O sistema seria acessado por uma pessoa, através de um browser, ou por outro sistema, através de XML-RPC.
Pensei em usar uma arquitetura em 5 camadas, das quais estou me fixando em 3: interface, aplicação e domínio. A estrutura das camadas seria mais ou menos essa:
Interface
[list] IUWebBrowser[/list]
Aplicação
[list]ServletBuscarViaBrowser[/list]
[list]ServletBuscarViaRPC[/list]
Domínio
[list]MecanismoDeBusca[/list]
[list]ResultadoDaBusca [/list]
A IUWebBrowser é uma página HTML ou JSP, que funciona como front-end do sistema. Os servlets são responsáveis pela comunicação com a camada de interface e com o cliente XML-RPC, respectivamente. O mecanismo de busca faz a busca e armazena o resultado na classe ResultadoDaBusca. Esse resultado tem a forma de um documento XML/DOM residente na memória. O nome das classes não precisa ser necessariamente o que está no esquema (por exemplo, acho IUWebBrowser um nome ruim).
Tenho duas dúvidas, que queria submeter a quem puder ajudar. Primeiro, queria um parecer sobre a arquitetura como um todo. Se está tudo ok na segmentação das classes, camadas, etc. Segundo, uma coisa que pode parecer evidente para quem sabe, mas vá lá: eu tenho que passar o resultado da busca da camada de domínio para a camada de aplicação. Qual a melhor forma de fazer isso? A maneira mais simples seria fazer um método MecanismoDeBusca.buscar() que fizesse a busca e retornasse um Document (ou seja, o nó principal de um documento DOM) com o resultado. Seria “correto” fazer assim? Geraria algum problema? Tem outra maneira?
Obrigado,
Hel_All