ARQUITETURA DO SISTEMA ERP PEGASUS



Documentos relacionados
SISTEMA DE WORKFLOW PARA MODELAGEM E EXECUÇÃO DE PROCESSOS DE SOFTWARE. Aluno: Roberto Reinert Orientador: Everaldo A. Grahl

Manual de Procedimentos para Desenvolvimento de Softwares

PLATAFORMA DE DESENVOLVIMENTO PINHÃO PARANÁ PADRÃO PARA ORGANIZAÇÃO FÍSICA DE ARQUIVOS EM APLICAÇÕES JAVA WEB

PROJETO PEDAGÓGICO DE CURSOS

SISTEMA DE AGENDAMENTO E GERENCIAMENTO DE CONSULTAS CLÍNICAS

Aplicativo web para definição do modelo lógico no projeto de banco de dados relacional

Gerência de Configuração. Professor: Dr. Eduardo Santana de Almeida Universidade Federal da Bahia

Documento de Análise e Projeto VideoSystem

UFG - Instituto de Informática

NETBEANS IDE UTILIZAÇAO DE RECURSOS PARA DESENVOLVIMENTO DE PROJETO JAVA WEB

CURSO DESENVOLVEDOR JAVA WEB E FLEX Setembro de 2010 à Janeiro de 2011

4 Um Exemplo de Implementação

IplanRio DOP - Diretoria de Operações GIT - Gerência de Infraestrutura Tecnológica Gerente da GIT

Ferramenta de apoio a gerência de configuração de software. Aluno: Rodrigo Furlaneto Orientador: Everaldo Artur Grahl

Diretrizes de Qualidade de Projetos

Projeto Demoiselle. Para perguntas e respostas, utilizem a lista de discussões de usuários da comunidade: demoiselle-users@lists.sourceforge.

3 Um Framework Orientado a Aspectos para Monitoramento e Análise de Processos de Negócio

Desenvolvimento de aplicação web com framework JavaServer Faces e Hibernate

UM ESTUDO SOBRE ARQUITETURA PARA DESENVOLVIMENTO DE SOFTWARE WEB UTILIZANDO NOVAS TECNOLOGIAS

Documento de Arquitetura

Desenvolvimento de um sistema de gestão acadêmica com software livre Rodrigo Bainy Fagundes

Sistema Web para Cotação de Preços. Vitae Tec Tecnologia a Serviço da Vida!

Projeto Arquitetural do IEmbedded

Anexo I Formulário para Proposta

Melhoria no Desenvolvimento Ágil com Implantação de Processo de Integração Contínua Multiplataforma para Java e.net. Hudson

GERADOR DE CÓDIGO JSP BASEADO EM PROJETO DE SGBD. Acadêmico: Maicon Klug Orientadora: Joyce Martins

DOCUMENTAÇÃO DO FRAMEWORK - versão 2.0

Cargo Função Superior CBO. Tarefas / Responsabilidades T/R Como Faz

Outlook XML Reader Versão Manual de Instalação e Demonstração UNE Tecnologia

QUESTINAMENTOS AO EDITAL DE CONCORRÊNCIA 01/2013

Integração de sistemas utilizando Web Services do tipo REST

ORDEM DE SERVIÇO OS 003/DINFO/ /09/2013

Manual BitFarmácia Popular Versão 2 Software Autorizador Farmácia Popular

Cartilha da Nota Fiscal Eletrônica 2.0 Hábil Empresarial PROFISSIONAL & Hábil Enterprise

DESENVOLVENDO APLICAÇÃO UTILIZANDO JAVA SERVER FACES

INTEGRAÇÃO DE TÉCNICAS DE SISTEMAS DISTRIBUÍDOS APLICADA AO DESENVOLVIMENTO DE UM AMBIENTE PARA O JOGO DE XADREZ

SCE-557. Técnicas de Programação para WEB. Rodrigo Fernandes de Mello

Sistemas Distribuídos na WEB (Plataformas para Aplicações Distribuídas) Sumário. Java 2 Enterprise Edition. J2EE (Java 2 Enterprise Edition)

UFG - Instituto de Informática

Plano de Gerenciamento do Projeto Baseado na 5ª edição do Guia PMBOK

Linguagem de Programação JAVA. Professora Michelle Nery Nomeclaturas

Como criar um EJB. Criando um projeto EJB com um cliente WEB no Eclipse

Prática da Disciplina de Sistemas Distribuídos Serviços Web IFMA DAI Professor Mauro Lopes C. Silva

SIMEC Sistema Integrado de Planejamento, Orçamento e Finanças

Manual de Instalação do OASIS

Ensino Superior: IESB Instituto de Educação Superior de Brasília Ciências da Computação - Cursando

Integração Contínua com Rational Team Concert, Jenkins e SonarQube

Prevayler. Perola. André Luís Sales de Moraes Juliana Keiko Yamaguchi Tatiana Yuka Takaki

Java Server Pages: Apresentação e Instalação

Uma Abordagem sobre Mapeamento Objeto Relacional com Hibernate

HIBERNATE EM APLICAÇÃO JAVA WEB

INTRODUÇÃO E CONFIGURAÇÃO DO PRIMEFACES MOBILE EM APLICAÇÕES JSF


ABORDAGEM DE FRAMEWORKS PARA JSF QUE AUXILIAM O DESENVOLVIMENTO DE SOFTWARE

Boletim Técnico. Criação de formulário dinâmico para o módulo WEB. Produto : TOTVS Web,

Guia do Demoiselle Audit Demoiselle Audit Paulo Gladson Ximenes Pinheiro Clóvis Lemes Ferreira Júnior

Scriptlets e Formulários

Aula 03 - Projeto Java Web

Use a Cabeça! FREEMAN, Eric e Elisabeth. HTML com CSS e XHTML BASHMAN, Brian / SIERRA Kathy / BATES, Bert. Servlets & JSP

Produto: Webscan Relatório II Programas desenvolvidos, testados e documentados

ANEXO 11. Framework é um conjunto de classes que colaboram para realizar uma responsabilidade para um domínio de um subsistema da aplicação.

MAPEAMENTO OBJETO RELACIONAL: UM ESTUDO DE CASO

GED CRIAÇÃO DE NOVO DOCUMENTO E OBJETO AUTOMÁTICO

Associação Carioca de Ensino Superior Centro Universitário Carioca

Argo Navis J931 - Padrões de Design J2EE. Introdução. Objetivos de aprender padrões J2EE. Conhecer padrões para uso na plataforma J2EE

Intranets. FERNANDO ALBUQUERQUE Departamento de Ciência da Computação Universidade de Brasília 1.INTRODUÇÃO

GUIA INTEGRA SERVICES E STATUS MONITOR

JDBC Java Database Connectivity

Clóvis Diego Schuldt. Orientador: Prof. Wilson Pedro Carli

Guia de Atualização TOTVS Segurança e Acesso 11.6

1 Criar uma entity a partir de uma web application que usa a Framework JavaServer Faces (JSF)

ARCO - Associação Recreativa dos Correios. Sistema para Gerenciamento de Associações Recreativas Plano de Desenvolvimento de Software Versão <1.

Instalando o WordPress em localhost

Roteiro do Trabalho Prático

Documento de Projeto de Sistema

DESENVOLVIMENTO WEB UTILIZANDO FRAMEWORK PRIMEFACES E OUTRAS TECNOLOGIAS ATUAIS

CURSO DESENVOLVEDOR JAVA Edição Intensiva de Férias

OPORTUNIDADES CWI: Principais atividades: - Análise e desenvolvimento de sites Cross-plataform (IE/Firefox/Chrome/Safari).

Histórico de Revisão Data Versão Descrição Autor

Sistemas Distribuídos

Padrão ix. Manual de Instalação do Q-Ware Server Versão

MANUAL DO ADMINISTRADOR LOCAL. Entidade Municipal

IV Mostra de Tecnologia do Ministério Público Brasileiro. Arquitetura de referência para aplicações Web MPPE

UNIVERSIDADE FEDERAL DO PARANÁ - UFPR Bacharelado em Ciência da Computação

Projeto Disciplinar de Infra-Estrutura de Software SISPA FACULDADE SENAC

Universidade da Beira Interior

e-stf WebServices Processo Eletrônico Smart Client Manual de Instalação

Metodologias de Desenvolvimento de Sistemas. Analise de Sistemas I UNIPAC Rodrigo Videschi

Manual de Integração Web Service

PROGRAMAÇÃO SERVIDOR PADRÕES MVC E DAO EM SISTEMAS WEB. Prof. Dr. Daniel Caetano

Integração TOTVS Colaboração 2.0 Recepção NFS-e - Datasul

FERRAMENTA PARA GERENCIAMENTO DE ARTEFATOS EM PROJETO DE MELHORIA NO PROCESSO DE TESTES.

Este livro é dedicado a minha esposa Edna e a todos os desenvolvedores que fizeram do software livre um meio profissional levado a sério.

Resumo: Perguntas a fazer ao elaborar um projeto arquitetural

Plataforma Open Source de Desenvolvimento e Sustentação de Sistemas. Daniel Darlen Lucius Curado Ridai Pombo

Struts 2 : Projeto e Programação Editora: Ciência Moderna Autor: Antunes Budi Kurniawan Número de páginas: 600

Transcrição:

ARQUITETURA DO SISTEMA ERP PEGASUS Elaborado por: Bruno Duarte Nogueira Arquiteto de Software Data: 05/03/2012 1

Sumário 1. Introdução... 3 2. Tecnologias... 3 2.1. Web Tier... 3 2.1.1. Facelets 1.1.14... 3 2.1.2. JSF 1.2... 3 2.1.3. DWR 3.0... 3 2.1.4. JQuery 1.7.1... 3 2.2. Business Tier... 3 2.2.1. EJB 3.0... 3 2.2.2. JUnit 4.82... 4 2.3. Persistence Tier... 4 2.3.1. EJB 3.0... 4 2.3.2. JPA 1.0... 4 3. Ferramentas... 4 3.1. Eclipse Indigo... 4 3.2. Apache Maven 3.0.4... 4 3.3. VisualSVN 2.5.3... 5 3.4. Oracle GlassFish 3.1... 5 3.5. ireport 4.5.0... 5 3.6. PostgreSQL 9.1.3... 5 4. Padrões de Códigos... 5 4.1. Formatação de código... 5 4.2. Nomes de Variáveis... 5 4.3. Nomes de Métodos... 6 4.4. Documentação de Métodos... 6 4.5. Estrutura de Pacotes... 6 4.6. Nomenclaturas de JavaScript... 7 4.7. Nomenclaturas em geral... 7 5. Testes Unitários... 8 6. SVN... 8 6.1. Estrutura de diretórios... 8 6.2. Regras para versionamento... 9 7. Visão geral da Arquitetura... 9 2

1. Introdução Projeto Pegasus Arquitetura do Sistema Versão 1.0.0 Este documento tem como objetivo descrever a arquitetura do ERP Pegasus, bem como definir a política de normas e padrões adotados no decorrer do desenvolvimento. De maneira geral, serão retratados tópicos como formatação de código, testes unitários, tecnologias e ferramentas utilizadas, estrutura do projeto, entre outros. 2. Tecnologias O projeto Pegasus utilizará as seguintes tecnologias: 2.1. Web Tier 2.1.1. Facelets 1.1.14 Será utilizado apenas o recurso de templates do facelets, a fim de agilizar a criação das páginas do sistema. 2.1.2. JSF 1.2 As requisições síncronas serão realizadas através do JSF, sem o uso de extensões para este. Sua função será única e exclusivamente transferir os dados inseridos na tela para o(s) objeto(s) contido(s) no managed bean. 2.1.3. DWR 3.0 As requisições assíncronas serão realizadas através do DWR (Direct Web Remoting). A escolha desta tecnologia se deu pela agilidade que a mesma traz ao utilizar o Ajax. Os dados transferidos nestas requisições respeitarão o padrão JSON (JavaScript Object Notation) 2.1.4. JQuery 1.7.1 As iterações e efeitos entre os componentes da tela serão implementadas com o auxílio do JQuery, por possuir complexos recursos javascript abstraídos em funções fáceis de utilizar. 2.2. Business Tier 2.2.1. EJB 3.0 Serão utilizados beans de sessão com intuito de disponibilizar regras de negócio para os módulos Web de maneira independente, ou seja, poderão haver vários módulos acessando 3

a mesma regra. Estes EJBs serão globais no servidor, fornecendo, com alta disponibilidade, recursos para todas as requisições feitas a ele. O acesso aos mesmos seguirá a especificação JSR-299 do J2EE. 2.2.2. JUnit 4.82 O primeiro nível de garantia de qualidade do código desenvolvido será contemplado através da criação de testes unitários baseados na camada Business. Desta forma, diminuiremos significativamente a probabilidade de erros durante a homologação do sistema. Estes testes unitários serão disparados pelo Apache Maven a cada compilação do projeto. 2.3. Persistence Tier 2.3.1. EJB 3.0 Serão utilizados beans de sessão com intuito de disponibilizar regras de persistência para os módulos de negócio de maneira independente, ou seja, poderão haver vários módulos acessando a mesma regra. Estes EJBs serão globais no servidor, fornecendo, com alta disponibilidade, recursos para todas as requisições feitas a ele. O acesso aos mesmos seguirá a especificação JSR-299 do J2EE. 2.3.2. JPA 1.0 Será utilizada a API de persistência nativa do Java, pois a mesma oferece todos os requisitos necessários para viabilização do módulo de persistência do projeto, como gerenciamento de transações, recursos de lock e isolamento, controle de consistência das informações, entre outros. 3. Ferramentas Serão utilizadas as seguintes ferramentas para desenvolvimento do ERP: 3.1. Eclipse Indigo O Eclipse será adotado como a IDE para o desenvolvimento do projeto pelo fato de, além de ser padrão de mercado, é uma ferramenta flexível no que diz respeito à instalação de plugins para utilização de outras tecnologias. Outro fator importante é a integração que o Maven possui com ele. 3.2. Apache Maven 3.0.4 O ERP será estruturado com o Apache Maven para, além da compilação e execução automatizada dos testes unitários, será utilizado como facilitador na geração do pacote do 4

projeto, utilização de plug-ins para o desenvolvimento e conexão com ferramentas de integração contínua. 3.3. VisualSVN 2.5.3 Foi o serviço de versionamento adotado no projeto por já ser utilizado na companhia. 3.4. Oracle GlassFish 3.1 Será utilizado por não ter custos de licenças e contemplar todos os recursos da especificação J2EE. 3.5. ireport 4.5.0 A escolha desta ferramenta para geração de relatórios foi influenciada por sua integração com recursos externos, como geração de código de barras, por sua completa documentação e total auxílio da comunidade Java. 3.6. PostgreSQL 9.1.3 Banco de dados grátis e robusto, comumente utilizado em órgãos públicos. 4. Padrões de Códigos As principais vantagens de seguir padrões são: Código limpo e organizado. Fácil assimilação e manutenção. Maior qualidade do código produzido. Menos conflitos no SVN. Abaixo estão descritos os padrões de codificação que deverão ser rigorosamente seguidos durante a implementação do sistema. 4.1. Formatação de código Antes de subir uma classe Java ou uma JSP para o SVN, a mesma deverá ser formatada, utilizando o atalho [Ctrl] + [Shift] + F do eclipse. Para classes Java, as importações de outras classes deverão ser organizadas, utilizando o atalho [Ctrl] + [Shift] + O. 4.2. Nomes de Variáveis Os nomes das variáveis deverão ser suficientemente claros a fim de saber sua função apenas pelo seu nome, por exemplo: 5

4.3. Nomes de Métodos Nomes de métodos deverão ser suficientemente claros a fim de saber sua função apenas pelo seu nome, por exemplo: Os nomes dos métodos deverão possuir um verbo no infinitivo representando a função que será executada e um complemento para distinguir onde a operação terá efeito, como mostra o trecho abaixo: O quê? Cadastro. Onde? Usuário. Método: cadastrarusuario(). 4.4. Documentação de Métodos Todos os métodos do sistema deverão possuir JavaDoc, a fim de identificar a função do método, quem o implementou e quando foi criado, facilitando a comunicação entre o time com relação à eventuais dúvidas que possam surgir sobre o código desenvolvido. Segue um modelo: 4.5. Estrutura de Pacotes A estrutura de pacotes principal será net.goldsystem.erp.<modulo>, onde <modulo> pode ser persistence. business. web.<nome> (<nome> será substituído por cemitério, financeiro, planos, etc). Sub pacotes: 6

Entidades JPA: pojo. Beans de sessão. o Interfaces: ejb. o Implementação das interfaces: ejb.impl. Exceções: exception. Classes Utilitárias (constantes, formatações, máscaras, etc): util. Data Transfer Object: dto. Managed Beans: mbean. Enums: enum. Servlet Filter: filter. Facade Classes: facade. Stub Classes: stub. 4.6. Nomenclaturas de JavaScript Os arquivos com extensão *.js possuirão a seguintes regras de nomes: <prefixo>.<módulo>.<função>-<versão>.js, onde prefixo: possuirá o valor fixo gs. módulo: representará o módulo ao qual o arquivo JavaScript se refere, por exemplo, usuário. função: representará qual a tarefa exercida pelo JavaScript, por exemplo, cadastro. versão: representará a versão do arquivo, por exemplo, 1.0. O arquivo JavaScript para a tela de cadastro de usuários se chamaria, portanto: gs.usuario.cadastro-1.0.js 4.7. Nomenclaturas em geral Abaixo seguem os padrões, representados em exemplos, das nomenclaturas para o projeto Pegasus: cadastrarusuario.xhtml: Página utilizada para cadastro de usuários. BusinessException: Exceção que será utilizada no módulo de negócios da aplicação. UsuarioFacade.java: Classe que possuirá os métodos de faixada para utilização do DWR. UsuarioMBean.java: Managed Bean usado para controle dos componentes da página de cadastro de usuário no nível servidor. UsuarioBusinessEJB.java: Classe que conterá todas as regras de negócio atreladas ao módulo de usuário. TipoLovEnum: Enum que conterá todas as constantes que envolverão os tipos de listas de valores do sistema. 7

UsuarioPersistenceEJB.java: Classe que terá todas as operações de persistência envolvidas no módulo de usuário. Usuario.java: Classe que representa a entidade Usuário, possuindo todos os atributos comuns de usuário. UsuarioDTO: Classe que receberá todas as informações referentes a usuário, podendo representar uma estrutura que contemple uma ou mais entidades. FiltroAcesso: Representa o filtro que controlará as regras de acesso ao sistema. FormatacaoUtil.java: Classe que terá todos os métodos utilitários para formatação de dados na aplicação. BuscaCepStub.java: Classe que terá a chamada ao webservice de busca de endereços. BaseUsuario.java: Classe pai de usuário. Todas as classes genéricas ou pais, deverão conter o prefixo Base. 5. Testes Unitários Os testes unitários serão criados na camada Business, utilizando a tecnologia JUnit, respeitando as seguintes regras: Um JUnit para cada bean de sessão. A classe JUnit deverá ter o mesmo nome do bean de sessão ao qual ela corresponde, com o prefixo Teste. 6. SVN As políticas adotadas para a gestão do repositório do projeto seguirá as premissas abaixo: 6.1. Estrutura de diretórios O repositório possuirá a seguinte estrutura de diretórios: + branches --- PegasusERP_<OS> + tags --+ release --- PegasusERP-<VERSÃO> --+ sprint --- PegasusERP-<SPRINT> + trunk --+ PegasusERP --- AnaliseDesign --- Dettec --- PegasusERP 8

Abaixo estão descritos os detalhes de cada item dentro do SVN: branches > PegasusERP-<OS>, onde <OS> será o número da solicitação de mudança/correção que gerou a branch. tags > release > PegasusERP-<VERSÃO>, onde <VERSÃO> representará a versão da release, por exemplo, r1.2.7. tags > sprint > PegasusERP-<SPRINT>, onde <SPRINT> representará o número do Sprint que a tag em questão representa, por exemplo, s001. trunk > PegasusERP > AnaliseDesign: local onde serão armazenados os artefatos referentes à análise do sistema, como documento de requisitos, diagramas de casos de uso, estudo de viabilidade, protótipos, etc. trunk > PegasusERP > Dettec: local onde serão armazenados os artefatos referentes ao detalhamento técnico do sistema, como documentos de arquitetura e configuração de ambiente, scripts de banco de dados, dumps, bibliotecas, etc. trunk > PegasusERP > Fontes: local onde serão armazenados os fontes do sistema. 6.2. Regras para versionamento A cada final de Sprint, uma tag será gerada para o mesmo, conforme tópico 6.1 deste documento. A cada release entregue, uma tag será gerada para a mesma. A tag deverá ser gerada apenas após o aceite do Product Owner, no caso de Sprint, e aceite do solicitante, no caso de release. Uma branch deverá ser criada para cada solicitação de mudança e/ou correção que houver no sistema. Depois de finalizada a solicitação, a codificação da mesma deverá ser integrada ao código fonte, realizando um merge no trunk e/ou tag que necessitou de alteração. 7. Visão geral da Arquitetura Abaixo segue a ilustração da arquitetura proposta para o ERP Pegasus: 9

10