[quote=patrickbrgs]Bom fico muito agradecido pelas respostas, mas vou tentar clarear um pouco mais o que eu quero.
Na verdade essa aplicação será minha, no caso sou eu o cliente, por estes motivos eu tentei apenas modelar um diagrama de caso de uso, assim identifiquei os agentes e os casos de uso em si. Estou tentando pular as etapas de documentação do software para agilizar no desenvolvimento.
Respondendo ao amigo Berg.pb, eu sou um desses que programam tecnologias antigas, trabalho com COBOL, Natural/Adabas, DB2 e etc, mas não tenho como desenvolver esse software online em COBOL, por isso o Java, pois já tenho noção de como trabalhar com ele.
Sendo assim, eu nem estou tentando discutir muito quanto a que tipo de linguagem utilizar, e sim quais melhores práticas dentro do java para desenvolver esse software, tipo o que é melhor utilizar para garantir a segurança do software, o que utilizo para persistência de dados, logs do sistema e por aí vai.
[/quote]
A primeira coisa é definir a sua arquitetura. Pelos visto já escolheu web. Então comece dai.
A arquitetura web é formada por dois nodos o cliente e o servidor. O cliente é o browser e o servidor é seu.
Poranto já de cara vc precisa sabser como escrever seu cliente e seu servidor.
Se vc usar JSF ou coisa assim , o cliente sai “automaticamente” porque é gerado pelo servidor. Ok, um problema a menos.
Dentro do servidor existem 4 camadas básicas. Apresentação, Dominio, Integração e Recursos.
A apresentação é o codigo que vc escreve com o JSF e companhia.
O Dominio são as entidades, os serviços , os valdiadores, e os repositorios.
A integração é o acesso a arquivos, o acesso a banco de dados e o acesso a outros sistema.
Os recursos são o banco de dados em si, os arquivos em si, e os outros sistema em si.
Então a primeira boa prática que vimos aqui é : Separação Em Camadas.
Depois que vc tem a separação em camadas e consegue identificar onde cada responsabilidade recai, fica mais simples.
Apresentação : gera a UI e prover o fluxo de navegação
Dominio, prover as entidades, suas relações, serviços que se aplicam a elas e repositorios onde as procurar.
Integração . prover acesso aos recursos.
Agora vc escolhe as tecnologias. normalmente vc vai encontrar tecnologia para a apresentação (JSF) para a dominio normalmente usará EJB 3.1 + JPA/HIbernate para a integração, se vc usa JEE nem precisa se preocupar muito.
O banco e os arquivos são o que são. Se vc conectar com outros sistemas, a camada de integração via precisar de serviços que se comuniquem com esses sistemas. isso vc terá que criar vc mesmo.
Toda a “cola” para juntar isto também vc vai ter que fazer sozinho.
Existem padrões de projeto que podem ajudar em cada camada, mas antes de chegar ai vc precisa enxergar o fluxo dos seus dados entre as camadas. normalmente a apresentação requisita um processamento de um serviço ou uma pesquisa em um repositorio, eles executam isso e respondem. Os serviços podem usar outros serviços e repsoitorios. Os repositorios chama a camada de integração para obter os dados do banco ou de arquivos. E básicamente é isto.
A separação em camadas e os design patterns comuns em cada camada lhe dá um design base. O resto vc ter que saber exactamene o que vai fazer. à medida que vc vai para o concreto fica mais fácil de escolher opções. Mas em geral é isto aqui.