PROTÓTIPO DE UM SISTEMA DE GERENCIAMENTO DE...
Transcript of PROTÓTIPO DE UM SISTEMA DE GERENCIAMENTO DE...
UNIVERSIDADE REGIONAL DE BLUMENAU
CENTRO DE CIÊNCIAS EXATAS E NATURAIS
CURSO DE CIÊNCIAS DA COMPUTAÇÃO – BACHARELADO
PROTÓTIPO DE UM SISTEMA DE GERENCIAMENTO DE
PROJETOS E ATIVIDADES UTILIZANDO JEE
LAÉRCIO LÉO PEDROZO HARDOCK
BLUMENAU 2008
2008/1-22
LAÉRCIO LÉO PEDROZO HARDOCK
PROTÓTIPO DE UM SISTEMA DE GERENCIAMENTO DE
PROJETOS E ATIVIDADES UTILIZANDO JEE
Trabalho de Conclusão de Curso submetido à Universidade Regional de Blumenau para a obtenção dos créditos na disciplina Trabalho de Conclusão de Curso II do curso de Ciências da Computação — Bacharelado.
Prof. Wilson Pedro Carli, Mestre - Orientador
BLUMENAU 2008
2008/1-22
PROTÓTIPO DE UM SISTEMA DE GERENCIAMENTO DE
PROJETOS E ATIVIDADES UTILIZANDO JEE
Por
LAÉRCIO LÉO PEDROZO HARDOCK
Trabalho aprovado para obtenção dos créditos na disciplina de Trabalho de Conclusão de Curso II, pela banca examinadora formada por:
______________________________________________________ Presidente: Prof. Wilson Pedro Carli, Mestre – Orientador FURB
______________________________________________________ Membro: Prof. Adilson Vahldick, Especialista – FURB
______________________________________________________ Membro: Prof. Evaristo Baptista, Mestre – FURB
Blumenau, 09 de julho de 2008.
Dedico este trabalho à minha família, pelo apoio que me deram do decorrer da realização deste trabalho e a Maximiza, empresa na qual trabalho, por ter me possibilitado usar os recursos computacionais na realização deste.
AGRADECIMENTOS
À minha família, que me deu apoio na realização deste trabalho.
A Maximiza, empresa na qual trabalho, por ter me cedidos recursos computacionais
para a realização deste trabalho.
Ao meu orientador, Wilson Pedro Carli, por ter acreditado na conclusão deste trabalho.
"A mente que se abre a uma nova idéia jamais voltará ao seu tamanho original."
Albert Einstein
RESUMO
Este trabalho consiste no desenvolvimento de um protótipo de um sistema web para controle de projetos e tarefas, que tem por objetivo gerenciar as tarefas de projetos, bem como quem irá realizá-las. Para tanto, o presente trabalho foi desenvolvido baseando-se na arquitetura JEE, através das tecnologias JSF e JPA, o que permite que a aplicação possa ser executada em diversos servidores com suporte a JEE e a diversos bancos de dados que possuam um driver JDBC.
Palavras-chave: Gerência de projetos. Java. JSF. JPA.
ABSTRACT
This work consists on the development of a web system about project and task management. Therefore, the work was developed being based on the JEE architecture, using the JSF and JPA technologies. That make possible deploy the application in many web servers with JEE support and to those databases with JDBC drivers support. Key-words: Project management. Java. JSF. JPA.
LISTA DE ILUSTRAÇÕES
Figura 1 – Mapeamento de componentes do JSF .................................................................. 20
Figura 2 – Mapeamento entre o objeto Java e a tabela no banco de dados............................. 23
Quadro 1 – Classe com mapeamento via anotações .............................................................. 24
Figura 3 – Cadastros do sistema ........................................................................................... 29
Quadro 2 – Descrição do Caso de Uso Login ....................................................................... 30
Quadro 3 – Descrição do Caso de Uso Manter empresa........................................................ 30
Quadro 4 – Descrição do Caso de Uso Manter colaborador .................................................. 31
Quadro 5 – Descrição do Caso de Uso Manter material........................................................ 31
Quadro 6 – Descrição do Caso de Uso Manter categoria ...................................................... 31
Quadro 7 – Descrição do Caso de Uso Manter projeto ......................................................... 32
Quadro 8 – Descrição do Caso de Uso Manter atividade ...................................................... 32
Quadro 9 – Descrição do Caso de Uso Manter item.............................................................. 33
Quadro 10 – Descrição do Caso de Uso Associar material/item............................................ 33
Figura 4 – Diagrama de classes das entidades....................................................................... 36
Figura 5 – Mapeamento Objeto Relacional........................................................................... 37
Figura 6 – Diagrama de atividade do fluxo de navegação do protótipo ................................. 38
Figura 7 – Diagrama de seqüência para visualização dos materiais....................................... 39
Figura 8 – Diagrama de interação do acesso as telas do sistema ........................................... 40
Figura 9 – Modelo das entidades do sistema......................................................................... 41
Quadro 11 - Configuração de uma aplicação JEE................................................................. 44
Quadro 12 - Configuração adicional para uma aplicação JSF ............................................... 44
Quadro 13 - Configuração do arquivo faces-config.xml do protótipo ................................... 45
Quadro 14 - Método da classe MaterialView e componente JSF .......................................... 46
Quadro 15 – Configuração do AJAX do protótipo................................................................ 47
Quadro 16 – Configuração do JPA do protótipo ................................................................... 48
Quadro 17 – Código JSF para exibição de informação e botões de ações.............................. 49
Figura 10 – Componente de visualização de materiais e botões de ações.............................. 50
Quadro 18 – Métodos da classe MaterialModel para persistência de materiais...................... 51
Quadro 19 – Métodos da classe MaterialDAO para persistência de materiais ....................... 52
Figura 11 – Dispositivos acessando a aplicação.................................................................... 53
Figura 12 – Autentificação do usuário.................................................................................. 54
Figura 13 - Menu do protótipo ............................................................................................. 54
Figura 14 – Tela de atividades – visualização de registros .................................................... 55
Figura 15 – Tela de atividades edição de registros................................................................ 56
Figura 16 –Tela de atividades – inserção de registros ........................................................... 57
Quadro 20 – Telas da aplicação............................................................................................ 58
Figura 17 – Cadastro de registros pelo gerente ..................................................................... 59
Figura 18 – Conclusão de uma atividade por um colaborador............................................... 59
Quadro 21 – Tecnologias empregas na aplicação ................................................................. 60
Quadro 22 – Comparativo entre protótipo e trabalhos correlatos .......................................... 62
LISTA DE SIGLAS
AJAX – Asynchronous Javascript And XML
API – Application Programming Interface
DOM – Document Object Model
EJB – Enterprise JavaBeans
HSQLDB – Hypersonic SQL Database
HTML – HiperText Markup Language
IDE – Integrated Development Environment
IU – Interface de Usuário
JDBC – Java Database Connectivity
JEE – Java Enterprise Edition
JPA – Java Persistence API
JSE – Java Standart Edition
JSF – Java Server Faces
RUP – Rational Unified Process
SQL – Structured Query Language
UML – Unified Modeling Language
XHTML – eXtensive HiperText Markup Languague
SUMÁRIO
1 INTRODUÇÃO ............................................................................................................. 13
1.1 OBJETIVOS DO TRABALHO .................................................................................... 13
1.2 ESTRUTURA DO TRABALHO .................................................................................. 14
2 FUNDAMENTAÇÃO TEÓRICA ................................................................................ 15
2.1 GERÊNCIA DE PROJETOS ......................................................................................... 15
2.1.1 Ciclo de vida de um projeto......................................................................................... 15
2.1.2 O papel do Gerente de Projetos ................................................................................... 16
2.1.2.1 Planejamento............................................................................................................ 16
2.1.2.2 Recursos Humanos e Materiais................................................................................. 16
2.1.2.3 Acompanhamento dos Projetos................................................................................. 17
2.2 JEE E JSF ...................................................................................................................... 17
2.2.1 JPA ............................................................................................................................. 22
2.2.1.1 Provedores JPA ........................................................................................................ 22
2.2.1.2 Mapeamento Objeto/Relacional................................................................................ 21
2.3 BANCO DE DADOS ORACLE E HSQLDB................................................................. 25
2.4 TRABALHOS CORRELATOS ..................................................................................... 25
3 DESENVOLVIMENTO................................................................................................ 27
3.1 REQUISITOS PRINCIPAIS DO PROBLEMA A SER TRABALHADO ..................... 27
3.1.1 REQUISITOS FUNCIONAIS..................................................................................... 27
3.1.2 REQUISITOS NÃO FUNCIONAIS............................................................................ 28
3.2 ESPECIFICAÇÃO........................................................................................................ 28
3.3 DIAGRAMA DE CASO DE USO ................................................................................. 29
3.4 DIAGRAMA DE CLASSE............................................................................................ 36
3.5 DIAGRAMA DE ATIVIDADE ..................................................................................... 38
3.6 DIAGRAMA DE SEQUÊNCIA .................................................................................... 39
3.7 DIAGRAMA DE INTERFACE ..................................................................................... 40
3.8 MODELO ENTIDADE RELACIONAMENTO DA BASE DE DADOS ....................... 41
3.9 IMPLEMENTAÇÃO ..................................................................................................... 42
3.9.1 Técnicas e ferramentas utilizadas ................................................................................ 42
3.9.2 Implementação do Protótipo........................................................................................ 43
3.9.2.1Configuração do JSF ................................................................................................. 43
3.9.2.2 Configuração do AJAX ............................................................................................ 46
3.9.2.3 Configuração da JPA................................................................................................ 47
3.9.2.4 Exemplo da implementação de uma tela da aplicação ............................................... 48
3.9.3 Operacionalidade da implementação ........................................................................... 53
3.9.3.1 Estudo de caso – Gerente cria uma atividade para um colaborador executar ............. 55
3.9.3.1.1 Cadastro de empresas ............................................................................................ 56
3.9.3.1.2 Cadastro de colaboradores ..................................................................................... 56
3.9.3.1.3 Cadastro de projetos e atividades ........................................................................... 56
3.9.3.1.4 Cadastro de itens de uma atividade e materiais ...................................................... 58
3.9.3.1.5 Colaborador verifica suas atividades...................................................................... 60
3.10 RESULTADOS E DISCUSSÃO.................................................................................. 61
4 CONCLUSÕES ............................................................................................................. 65
4.1 EXTENSÕES ............................................................................................................... 66
REFERÊNCIAS BIBLIOGRÁFICAS.............................................................................. 67
13
1 INTRODUÇÃO
A gestão de projetos e de tarefas realizadas por empresas e indivíduos torna-se cada
vez mais complexa, exigindo o controle de diversas etapas (iniciação, planejamento,
execução, controle e encerramento do projeto), que visam a resolução de um determinado
objetivo. O risco de fracasso de um projeto aumenta de acordo com a presença de incerteza
durante todos os estágios do projeto, em razão disto, a função do gerenciamento de projetos é
manter os riscos de fracasso em um nível tão baixo quanto necessário durante o ciclo de vida
do projeto, tendo como função definir e alcançar objetivos ao mesmo tempo em que se
otimiza o uso de recursos tais como tempo, dinheiro, pessoas, espaço, dentre outros.
Por conseguinte, o objetivo deste trabalho é a apresentação de um Sistema Gerenciador
de Projetos que facilite o controle de projetos e tarefas a serem realizadas por um usuário ou
grupo de pessoas. A aplicação tem diversos módulos, tais como: cadastros de colaboradores,
de empresas, de projetos, atividades e itens de atividades a serem realizados e módulo de
acompanhamento de projetos pelo gestor responsável e pelos colaboradores que irão realizar
as tarefas.
Para o desenvolvimento do sistema utiliza-se a linguagem de programação Java e a
arquitetura de desenvolvimento de aplicações para a web Java Enterprise Edition (JEE).
Também utiliza-se o Java Server Faces (JSF), um framework que separa o código da
aplicação em diferentes camadas, separando a parte visual dos códigos das regras de negócios.
Para a persistência dos dados é utilizado a Java Persistence API (JPA), que permite
persistir os dados em bancos de dados diversos através da utilização de objetos em Java sem
que seja necessária a utilização da Structured Query Language (SQL) para persistência das
informações. Os bancos de dados utilizados para armazenar os dados persistidos pela JPA são
o Oracle 10g Express Edition e o Hypersonic SQL Database (HSQLDB).
14
1.1 OBJETIVOS DO TRABALHO
O objetivo deste trabalho é o desenvolvimento de um protótipo de um sistema web em
Java que possibilite que o usuário possa administrar projetos e atividades diversas.
Os objetivos específicos do trabalho são:
a) desenvolver um módulo para manter e controlar projetos;
b) manter informações sobre empresas e colaboradores;
c) delegar atividades aos usuários colaboradores;
d) implementar um aplicativo para acompanhar as tarefas delegadas aos
colaboradores;
e) implementar um aplicativo que permita que o colaboradores possam acompanhar o
andamento dos projetos;
f) desenvolver um módulo que mostre a informação do custo previsto e do custo real
de um projeto, com base no custo de hora trabalhada dos colaboradores que
executam as atividades.
1.2 ESTRUTURA DO TRABALHO
O trabalho está organizado em quatro capítulos. O capítulo 1 apresenta uma breve
introdução sobre o trabalho e os principais objetivos pretendidos.
No capítulo 2 é apresentada a fundamentação de alguns assuntos e tecnologias que são
relevantes para o entendimento deste trabalho. Entre eles estão o conceito de gerência de
projetos, as tecnologias JEE, JSF, JPA e bancos de dados utilizados no trabalho.
No capítulo 3 é detalhado o desenvolvimento do trabalho descrevendo os requisitos do
sistema, especificação da sua estrutura, os passos para publicação do sistema e um caso de uso
sobre a operacionalidade do protótipo desenvolvido. Por fim são apresentados os resultados
obtidos.
No último capítulo são apresentadas as conclusões e sugestões para trabalhos futuros.
15
2 FUNDAMENTAÇÃO TEÓRICA
Neste capítulo são apresentados os conceitos de Gerência de Projetos e sua relevância
para o sucesso na administração de tarefas a serem realizadas. Também são vistas as
tecnologias que são essenciais para o entendimento do desenvolvimento do trabalho e os
trabalhos correlatos.
2.1 GERÊNCIA DE PROJETOS
Um projeto pode ser considerado como um empreendimento que tem a finalidade de
atingir o objetivo de produzir um produto ou serviço, levando em consideração diversos
fatores como tempo, custo, recursos envolvidos e qualidade (VIEIRA, 2003, p. 5).
Todo projeto tem uma ou mais metas a atingir e devem ser divididas em tarefas a
serem executadas por uma seqüência clara e lógica de eventos. Para a execução das diversas
tarefas que possam a vir a serem criadas, deve-se selecionar os recursos humanos e materiais
necessários a execução das diversas atividades a fim de que as metas estabelecidas sejam
alcançadas.
2.1.1 Ciclo de vida de um projeto
Para a execução de um projeto e sua conclusão há diversos fatores a serem observados,
como tempo, custo e recursos humanos e materiais. Segundo Dinsmore (2005, p. 3), os
processos de gerenciamento de projetos podem ser classificados em cinco grupos:
a) iniciação – início formal do projeto, sendo elaborados as versões iniciais de
orçamento, cronogramas, proposta inicial e escolha da equipe de projeto;
b) planejamento – elaboração com maior nível de detalhes da etapa anterior
(orçamento e cronograma) e desenvolvimento e teste dos protótipos iniciais;
c) execução – os planos propostos são postos em prática;
d) monitoramento / controle – acompanhamento das tarefas propostas;
e) encerramento – entrega do produto ou serviço produzido.
16
Após a conclusão do conjunto de etapas, um produto ou serviço é obtido, tendo-se
assim alcançado o objetivo proposto.
2.1.2 O papel do Gerente de Projetos
De acordo com Vieira (2003, p. 23), um gerente de projetos tem diversas tarefas que
deve ter sobre seu controle, tais como o planejamento, a escolha dos recursos humanos e
materiais e o acompanhamento dos projetos sobre seu controle.
Para que o gerente de projeto possa exercer sua função, ele deve possuir uma série de
habilidades de administração geral:
a) liderança;
b) comunicação;
c) negociação;
d) solução de problemas;
e) Influência na organização.
Um gerente de projetos deve ter acuidade com o planejamento, com recursos humanos
e materiais e com o acompanhamento dos projetos.
2.1.2.1 Planejamento
O gerente de projetos deve definir o cronograma das atividades, atentando para os
custos e prazos e objetivos dos projetos. Para tanto deve ter em mão os requisitos do projeto, o
orçamento disponível e os recursos humanos e materiais disponíveis para que possa assim
montar a equipe do projeto a ser executado e assim criar e distribuir as tarefas entre os
colaboradores da equipe.
2.1.2.2 Recursos Humanos e Materiais
Para que as tarefas programadas possam ser executadas adequadamente é muito
17
importante que sejam escolhidos os recursos humanos e materiais para a correta execução das
atividades. Para cada projeto o gerente deverá escolher a equipe de colaboradores que melhor
preencha os requisitos para realização das tarefas a serem executadas, tendo como objetivo a
qualidade, o custo e o prazo do projeto.
2.1.2.3 Acompanhamento dos Projetos
O gerente de projetos deve acompanhar o desenvolvimento das etapas do projeto,
atentando para os prazos, custos e qualidade do projeto. Conforme Vieira (2003, p. 103), há
diversos processos de controle que um gerente deve acompanhar ao longo do projeto, sendo
eles:
a) relatório de progresso;
b) previsões em termos de situação atual e andamento;
c) verificação de escopo – processo de formalização do aceite do escopo do projeto
por todos os envolvidos;
d) controle de mudanças do escopo;
e) controle do cronograma;
f) controle de custo;
g) controle de qualidade;
h) controle de resposta a riscos.
Os processos de controle do projeto são importantes para a condução do projeto, pois
possibilitam que o gerente de projetos tome as decisões corretas para que o projeto termine de
acordo com seu cronograma e metas.
2.2 JEE E JSF
Conforme SUN (2008a), JEE é a especificação do Java para o desenvolvimento de
aplicações para a Internet. Utiliza-se a plataforma Java para possibilitar o desenvolvimento de
aplicações portáteis, robustas, escaláveis e seguras. Para o desenvolvimento de aplicações JEE
foi utilizado o padrão de desenvolvimento Java Server Faces (JSF) proposto pela empresa
18
Sun Microsystems. O objetivo do JSF, segundo SUN (2008b), é criar um padrão para
aplicações web, visando simplificar a construção de interfaces de usuário, possibilitando que
componentes de interface com o usuário sejam reaproveitadas.
Segundo Geary (2005, p. 3), pode-se dividir o JSF em três partes:
a) um conjunto de componentes de Interface de Usuário (IU) pré-desenvolvidos;
b) um modelo de programação dirigido a eventos;
c) um modelo de componentes que permite a desenvolvedores independentes
fornecerem componentes adicionais.
No JSF há uma separação entre as camadas de visualização, programação das
funcionalidades da aplicação (camada de negócio) e navegação entre as diversas telas. A
camada de visualização é construída com componentes JSF, conforme descrito anteriormente,
a camada de negócio (manipulação da lógica da aplicação) é definido através do uso de
JavaBeans (classes Java) e a navegação entre telas é definida através do configuração de um
arquivo eXtensible Markup Language (XML).
A camada de visualização disponibiliza alguns componentes de IU para utilização para
a construção de telas. Cada componente HiperText Markup Language (HTML) possui um
componente correspondente próprio para utilização com o JSF. O componente da HTML
para entrada de dados <input type=’TEXT’> possui no JSF o seu equivalente
<h:inputText>. Para o desenvolvimento de aplicações é necessário utilizar as tags JSF
em vez das tags HTML. Além desses componentes é possível desenvolver componentes
novos para utilização nas aplicações, tais como menus, componentes de upload de imagens,
visualização de registros de um banco de dados. A programação é semelhante da camada de
visualização é semelhante a programação com HTML, porém utilizando os comandos do JSF.
Conforme Burke e Monson-Haefel (2007), para a camada de negócios utiliza-se
JavaBeans (classes Java com métogos get e set para acesso as variáveis), onde os
componentes da camada de visualização fazem referência as camadas de negócios através dos
métodos get e set e através dos métodos disponíveis da camada de negócios. Por exemplo, os
componentes de um formulário, como um campo de entrada de dados, devem referenciar um
método get de um JavaBean. O JavaBean quando utilizada na função de tratar a camada de
negócios de uma aplicação JSF é chamado de ManagedBean, devido a ter a função de
gerenciar a camada de negócios. No ManagedBean pode ter outros métodos, como métodos
de validação de dados, captura de informações de um banco de dados, conversão de valores,
armazenamento das informações de uma tela e outros.
O ManagedBean é usado para tratar os eventos ocorridos na camada de visualização,
19
isto é, quando ocorre ações como selecionar um campo numa lista de valores, apertar um
botão numa tela, um método no ManagedBean é ativado. Nesse momento, o fluxo de dados é
passado para o ManagedBean, que executa a lógica de negócios e em seguida é renderizado
novamente a camada de visualização com os dados processados.
O processo de navegação entre páginas é feito através da configuração do arquivo
XML faces-config.xml. Este arquivo além de configurar o fluxo de navegação, permite
disponibilizar os ManagedBean para que sejam acessados pela camada de visualização,
permitindo que a camada de visualização e a camada de negócios possam trocar informações.
Na Figura 1 pode-se ver como é mapeada a informação entre a camada de
visualização, de negócios e de controle. O componente <h:inputText> acessa a variável
email através do método getEmail() e setEmail() do ManagedBean OlaMundoMB.
O ManagedBean é disponibilizado para a camada de visualização através do arquivo de
configuração faces-config.xml, onde é informado que a classe OlaMundoMB estará
disponível à aplicação pelo nome OlaMundoMB.
20
Fonte: Globalcode (2008).
Figura 1 – Mapeamento de componentes do JSF
O JSF possui suporte a Asynchronous Javascript And XML (AJAX) através das
bibliotecas AJAX4JSF (JBOSS, 2008a) e RichFaces (JBOSS, 2008b). Segundo Gonçalves
21
(2007, p. 589), o AJAX não é uma tecnologia e sim o uso de diversas tecnologias, como o
JavaScript, HTML, eXtensible Hyper-Text Markup Language (XHTML) e Document Object
Model (DOM). O uso conjunto dessas tecnologias é capaz de tornar o navegador web mais
interativo, exigindo menos recarregamento das telas. Com o uso de AJAX é possível atualizar
apenas um fragmento da tela, não sendo necessário atualizar a tela inteira.
2.2.1 JPA
A persistência de dados é crítica para a maioria das aplicações porque é requerido
acesso a uma base relacional como o HSQLDB, MySQL, Derby, entre outros. O dialeto da
SQL entre um banco de dados e outro pode conter algumas diferenças, o que dificulta a
transição de uma aplicação de um sistema de banco de dados para outro. A linguagem Java é
orientada a objetos, enquanto que o banco de dados funciona de modo completamente
diferente.
Em razão das diferenças de sintaxe entre os diversos bancos de dados relacionais e da
diferença no modo na utilização da linguagem Java e na manipulação do banco de dados,
foram criados diversos mecanismos de persistência orientado-relacional, dentre os quais pode-
se citar:
a) JBoss Hibernate;
b) Oracle Toplink Essentials.
Conforme Gonçalves (2007, p. 544), o TopLink Essentials é a implementação de
referência da EJB 3.0 Java Persistence API, e o Hibernate é um framework open-source e
muito utilizado pela comunidade de desenvolvimento Java. Embora existam inúmeros
mecanismos de persistência orientado a objeto, não há nenhum mecanismo de persistência
padrão para a plataforma Java que pode ser usado tanto no ambiente Java EE e no Java SE.
Em razão disso foi criado o padrão EJB3 Java Persistence API (JPA) para padronizar a
persistência de dados na plataforma Java.
Segundo a Sun (2007), o JPA é uma especificação para persistência de dados através
do uso de objetos em Java. A JPA foi acrescentada à API do framework de persistência
Enterprise Java Beans (EJB), tornando assim a programação com EJB (na versão EJB3) mais
simplificada e tornando-se um padrão para persistência objeto/relacional.
22
2.2.1.1 Provedores JPA
A JPA é parte da especificação EJB 3.0 - JSR-220 (JCP, 2008), e padroniza o
mapeamento objeto/relacional em Java. Com a especificação JPA, diversos provedores de
API de mapeamento objeto/relacional como o Oracle Toplink e o Hibernate, podem
implementar a especificação e liberar uma API de persistência de acordo com a especificação.
Uma aplicação Java (JSE ou JEE) utiliza a JPA e esta se encarrega de fazer a conexão
com o banco de dados. A JPA faz parte da especificação JSR 220 – EJB3, e necessita de
modo semelhante ao JDBC, de um provedor JPA que implemente a especificação. Há
diversas implementações da JPA, como Hibernate, Kodo, OpenJPA, TopLink, sendo esta
última a implementação de referência. O provedor é responsável por utilizar da API JDBC
para manipular informações no banco de dados, utilizando para isso o driver JDBC para o
banco de dados utilizado (BELLIA, 2007).
2.2.1.2 Mapeamento Objeto/Relacional
As classes para a persistência de dados são chamadas de entidades e são classes Java
simples, com métodos get e métodos set. Para a persistência das informações tem-se que
mapear uma classe do tipo entidade para a tabela correspondente do banco de dados,
conforme mostrado na Figura 2.
23
Fonte: Sacramento (2008).
Figura 2 – Mapeamento entre o objeto Java e a tabela no banco de dados
Há dois modos de mapear uma classe a uma tabela no banco de dados. A primeira é
através de metadados através do uso de anotações nas classes de entidades, conforme o
Quadro 1. Como se mostra no Quadro 1, pode-se ver que a anotação
@Table(name="MESSAGES") mapeia a classe Message para a tabela MESSAGES.
Assim é feito com as variáveis que podem ser mapeadas como colunas de uma tabela. Outra
forma de mapear as classes de entidade é através de um arquivo de mapeamento em que se
mapeia todas as entidades e que geralmente é o arquivo orm.xml.
24
package hello;
import javax.persistence.*;
@Entity
@Table(name = "MESSAGES")
public class Message {
@Id
@GeneratedValue
@Column(name = "MESSAGE_ID")
private Long id;
@Column(name = "MESSAGE_TEXT")
private String text;
@ManyToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "NEXT_MESSAGE_ID")
private Message nextMessage;
private Message() {
}
public Message(String text) {
this.text = text;
}
public Long getId() {
return id;
}
private void setId(Long id) {
this.id = id;
}
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
public Message getNextMessage() {
return nextMessage;
}
public void setNextMessage(Message nextMessage) {
this.nextMessage = nextMessage;
}} Fonte: Bauer e King (2007, p. 69).
Quadro 1 – Classe com mapeamento via anotações
25
2.3 BANCO DE DADOS ORACLE E HSQLDB
Segundo Carmo (2008), a JPA pode utilizar diversos bancos de dados, bastando alterar
o arquivo persistence.xml e disponibilizar o driver do banco de dados. O banco de
dados Oracle possui uma versão gratuita (Oracle 10G Express) que pode ser utilizada em
aplicações de menor porte (ORACLE, 2008).
O HSQLDB é um banco de dados com recursos avançados, que aliada a baixa
demanda por recursos computacionais e simplicidade de instalação e configuração, tornando-
se um bom mecanismo de persistência de dados (THE HSQLDB DEVELOPER GROUP,
2008). O HSQLDB é um banco de dados freeware, podendo ser utilizado gratuitamente em
aplicações tanto de uso pessoal quanto profissional.
Segundo Stephens (2003, p. 331), os bancos de dados possuem diferenças no dialeto
da SQL, que faz com que determinados comandos apenas sejam interpretados por
determinado banco de dados. Porém a JPA consegue interpretar essas diferenças, gerando o
SQL específico para o banco de dados selecionado.
2.4 TRABALHOS CORRELATOS
Foram avaliados dois trabalhos similares ao trabalho proposto, um desenvolvido em
Java e o outro em Oracle Forms/Reports.
Melo (2000), desenvolveu um sistema de gerência de projetos, porém voltado para
controle de projetos de software baseado no Rational Unified Process (RUP). O sistema trata
dos processos e das pessoas envolvidas no processo de desenvolvimento de software. É
realizado um estudo sobre o RUP e o protótipo desenvolvido possui os módulos de atividades
de projeto, recursos humanos, métricas e de riscos do projeto. O aplicativo disponibiliza estas
funcionalidades através de uma aplicação web, desenvolvida na plataforma JEE, utilizando a
linguagem de programação Java. As páginas web são programadas através de JSP e os dados
são persistidos no banco de dados Access.
Já Schumacker (2005), implantou uma aplicação em Oracle Forms/Reports na Bunge
Alimentos S.A. para gestão de outsourcing. O trabalho apresenta a proposta de melhorar a
gestão dos serviços prestados por empresas de informática que prestam serviço para a Bunge.
26
O sistema controla o cadastro de profissionais, fornecedores, serviços prestados, projetos e
atividades concluídas e abertas.
27
3 DESENVOLVIMENTO
Neste capítulo têm-se as descrições do sistema proposto, a metodologia aplicada, os
requisitos funcionais e não funcionais, a modelagem entidade relacionamento (MER) do
banco de dados. São apresentados os diagramas de casos de uso, diagrama de classes e de
seqüência, a implementação da aplicação e demonstração da parte operacional, bem como os
resultados obtidos com o protótipo.
3.1 REQUISITOS PRINCIPAIS DO PROBLEMA A SER TRABALHADO
Na seqüência são apresentados os requisitos funcionais e não funcionais.
3.1.1 REQUISITOS FUNCIONAIS
Como requisitos funcionais tem-se:
a) permitir o cadastro de colaboradores;
b) permitir o cadastro de empresas;
c) permitir o cadastro de materiais;
d) os projetos devem estar relacionados a uma empresa;
e) um projeto devem estar relacionados a um colaborador que será responsável pelo
projeto;
f) os projetos devem ter um colaborador responsável pela sua execução;
g) cada projeto pode ter diversas atividades e cada atividade pode ter diversos itens;
h) as atividades devem estar relacionadas ao colaborador que irá executá-la;
i) a elaboração de projeto, atividade e item de atividade só pode ser criado pelos
colaboradores que tiverem status de administrador do sistema como um todo ou de
um determinado projeto;
j) os usuários somente poderão visualizar suas tarefas a serem feitas, não podendo
visualizar outras tarefas que foram atribuídas a outros colaboradores;
28
k) o usuário ao concluir uma atividade, deve informar através de um campo de status
que a tarefa foi concluída;
l) permitir agrupar as tarefas em categorias.
3.1.2 REQUISITOS NÃO FUNCIONAIS
Como requisitos não funcionais tem-se:
a) a aplicação deve apresentar uma interface web, possibilitando que qualquer usuário
acesse o sistema através de um navegador web;
b) a aplicação deve suportar múltiplos usuários simultâneos;
c) a aplicação deve ser flexível para utilizar bancos de dados relacionais diversos que
tenham um driver JDBC disponível;
d) a aplicação deve manter compatibilidade com o navegador web Internet Explorer;
e) utilizar Cascading Style Sheet (CSS) para a formatação do layout da aplicação
web.
3.2 ESPECIFICAÇÃO
Utilizou-se para a especificação do projeto uma metodologia orientada a objetos,
representada através de diagramas que fazem parte da Unified Modeling Language (UML),
tendo como ferramenta de suporte a esta especificação a Enterprise Architect, que foi
utilizada para a construção do diagrama de casos de uso, diagrama de classes e diagrama de
atividades.
Para a criação do modelo conceitual da base de dados foi utilizado a ferramenta
DBDesigner.
29
3.3 DIAGRAMA DE CASO DE USO
Para melhor entendimento do sistema, foram elaborados três diagramas de caso de
uso, um para as dependências entre os casos de uso, um para os cadastros e outro para as
associações entre os cadastros.
Na Figura 3 tem-se o caso de uso sobre os cadastros do protótipo.
Figura 3 Cadastros do sistema
30
No Quadro 2 apresenta-se o caso de uso "Login".
Nome do Caso de Uso Login
Descrição Usuário acessa aplicação via navegador Internet e informa dados para login e senha
armazenados no cadastro do colaborador.
Ator Usuário
Pré-condição Sistema deve estar hospedado no servidor web.
Usuário deve estar cadastrado no banco de dados.
Fluxo principal 1. Usuário preenche seu login e sua senha;
2. Sistema valida os dados de login e senha do usuário;
3. Sistema direciona o Usuário para a página de menu do protótipo.
Fluxo alternativo (a) • nome de usuário e/ou senha inválido(s)
• alerta com mensagem “usuário ou senha inválida” é mostrada.
Pós-condição Usuário entra conectado ao sistema.
Quadro 2 – Descrição do caso de uso Login
No Quadro 3 apresenta-se o caso de uso "Manter empresa".
Nome do Caso de Uso Manter empresa
Descrição Usuário acessa o link Empresa para manter dados de empresas. Serão mantidos os
dados: nome da empresa, bairro, cidade, endereço, estado, telefone comercial e cep.
Ator Usuário
Pré-condição Usuário deve fazer login no sistema.
Fluxo principal 1. Sistema informa as empresas cadastradas;
2. Usuário opta por editar, apagar ou cadastrar uma empresa;
Cenário – Visualização Sistema mostra os registros de empresas cadastradas para o Usuário.
Cenário – Edição 1. Sistema mostra registros cadastrados;
2. Usuário seleciona um registro para edição;
3. Sistema mostra o nome, bairro, cidade, endereço, estado, telefone e cep da
empresa para edição;
4. Usuário altera registro e seleciona opção para atualizar os dados (nome, bairro,
cidade, endereço, estado, telefone e cep);
5. Sistema mostra os registros cadastrados com o registro alterado.
Cenário – Inclusão 1. Sistema mostra registros cadastrados;
2. Usuário inclui um novo registro;
3. Sistema mostra os registros cadastrados.
Cenário – Exclusão 1. Sistema mostra registros cadastrados;
2. Usuário seleciona um registro para exclusão;
3. Sistema exclui o registro e mostra os registros restantes.
Pós-condição Usuário visualizou, editou, apagou ou cadastrou uma empresa.
Quadro 3 – Descrição do caso de uso Manter empresa
31
No Quadro 4 apresenta-se o caso de uso "Manter colaborador".
Nome do Caso de Uso Manter colaborador
Descrição Usuário acessa o link Colaborador para manter dados de colaboradores. Serão
mantidos os dados: bairro, cidade, descrição sobre o colaborador, endereço, estado,
telefone comercial, nome, cep, valor de quanto ganha por hora. Deverá ser
informado em qual empresa o colaborador trabalha.
Ator Usuário
Pré-condição Usuário deve fazer login no sistema.
Sistema deve ter pelo menos uma empresa cadastrada.
Fluxo principal a) o sistema informa os colaboradores cadastrados;
b) usuário opta por editar, apagar ou cadastrar um colaborador;
c) ao optar por editar ou cadastrar, usuário deve associar uma empresa ao
colaborador;
Cenário – Visualização Sistema mostra os registros de colaboradores cadastrados para o Usuário.
Cenário – Edição 1. Sistema mostra registros cadastrados;
2. Usuário seleciona um registro para edição;
3. Sistema mostra o nome, descrição, bairro, cidade, endereço, estado, telefone,
cep, valor por hora do colaborador para edição;
4. Usuário altera registro e seleciona opção para atualizar os dados (nome,
descrição, bairro, cidade, endereço, estado, telefone, cep, valor por hora);
5. Sistema mostra os registros cadastrados com o registro alterado.
Cenário – Inclusão 1. Sistema mostra registros cadastrados;
2. Usuário inclui um novo registro;
3. Sistema mostra os registros cadastrados.
Cenário – Exclusão 1. Sistema mostra registros cadastrados;
2. Usuário seleciona um registro para exclusão;
3. Sistema exclui o registro e mostra os registros restantes.
Pós-condição Usuário visualizou, editou, apagou ou cadastrou um colaborador da empresa.
Quadro 4 – Descrição do caso de uso Manter colaborador
No Quadro 5 apresenta-se o caso de uso "Manter material".
Nome do Caso de Uso Manter material
Descrição Usuário acessa o link Material para manter dados dos materiais. Serão mantido a
descrição do material.
Ator Usuário
Pré-condição Usuário deve fazer login no sistema.
Fluxo principal a) o sistema informa os materiais cadastrados;
b) usuário opta por editar, apagar ou cadastrar um material;
Cenário – Visualização Sistema mostra os registros de materiais cadastrados para o Usuário.
32
Cenário – Edição 1. Sistema mostra registros cadastrados;
2. Usuário seleciona um registro para edição;
3. Sistema mostra a descrição do material para edição;
4. Usuário altera registro e seleciona opção para atualizar a descrição do material;
5. Sistema mostra os registros cadastrados com o registro alterado.
Cenário – Inclusão 1. Sistema mostra registros cadastrados;
2. Usuário inclui um novo registro;
3. Sistema mostra os registros cadastrados.
Cenário – Exclusão 1. Sistema mostra registros cadastrados;
2. Usuário seleciona um registro para exclusão;
3. Sistema exclui o registro e mostra os registros restantes.
Pós-condição Usuário visualizou, editou, apagou ou cadastrou um material.
Quadro 5 – Descrição do caso de uso Manter material
No Quadro 6 apresenta-se o caso de uso "Manter categoria".
Nome do Caso de Uso Manter categoria
Descrição Usuário acessa o link Categoria (Categoria das Atividades). Informa o tipo de
categoria ao qual uma atividade pertence. Será mantido a descrição da categoria.
Ator Usuário
Pré-condição Usuário deve fazer login no sistema.
Fluxo principal a) o sistema informa as categorias cadastradas;
b) usuário opta por editar, apagar ou cadastrar uma categoria;
Cenário – Visualização Sistema mostra os registros de categorias cadastradas para o Usuário.
Cenário – Edição 1. Sistema mostra registros cadastrados;
2. Usuário seleciona um registro para edição;
3. Sistema mostra a descrição da categoria para edição;
4. Usuário altera registro e seleciona opção para atualizar a descrição da categoria;
5. Sistema mostra os registros cadastrados com o registro alterado.
Cenário – Inclusão 1. Sistema mostra registros cadastrados;
2. Usuário inclui um novo registro;
3. Sistema mostra os registros cadastrados.
Cenário – Exclusão 1. Sistema mostra registros cadastrados;
2. Usuário seleciona um registro para exclusão;
3. Sistema exclui o registro e mostra os registros restantes.
Pós-condição Usuário visualizou, editou, apagou ou cadastrou uma categoria.
Quadro 6 – Descrição do caso de uso Manter categoria
33
No Quadro 7 apresenta-se o caso de uso "Manter projeto".
Nome do Caso de Uso Manter projeto
Descrição Usuário acessa o link Projeto para manter dados de projetos. Serão mantidos os
dados: descrição do projeto, observação, status de conclusão indicando se finalizado
ou não, orçamento previsto para o projeto, prazo para termino do projeto. Deverá
informar a empresa ao qual o projeto pertence e o colaborador responsavel.
Ator Usuário
Pré-condição Usuário deve fazer login no sistema.
Sistema deve ter pelo menos uma empresa cadastrada.
Fluxo principal a) o sistema informa os projetos cadastrados;
b) usuário opta por editar, apagar ou cadastrar um projeto;
c) ao optar por editar ou cadastrar, usuário deve associar uma empresa ao projeto;
Cenário – Visualização Sistema mostra os registros de projetos cadastrados para o Usuário.
Cenário – Edição 1. Sistema mostra registros cadastrados;
2. Usuário seleciona um registro para edição;
3. Sistema mostra descrição do projeto, observação, status, orçamento previsto
proeteo para edição;
4. Usuário altera registro e seleciona opção para atualizar os dados (descrição do
projeto, observação, status, orçamento previsto do projeto);
5. Sistema mostra os registros cadastrados com o registro alterado.
Cenário – Inclusão 1. Sistema mostra registros cadastrados;
2. Usuário inclui um novo registro;
3. Sistema mostra os registros cadastrados.
Cenário – Exclusão 1. Sistema mostra registros cadastrados;
2. Usuário seleciona um registro para exclusão;
3. Sistema exclui o registro e mostra os registros restantes.
Pós-condição Usuário visualizou, editou, apagou ou cadastrou um projeto da empresa.
Quadro 7 – Descrição do caso de uso Manter projeto
No Quadro 8 apresenta-se o caso de uso "Manter atividade".
Nome do Caso de Uso Manter atividade
Descrição Usuário acessa o link Atividade (Atividade do Projeto) para manter dados das
atividades que um projeto possui. Serão mantidos os dados: descrição da atividade,
observação, status de conclusão da atividade. Informar o tipo de categoria da
atividade e o funcionário encarregado de realizar a atividade.
Ator Usuário
Pré-condição Usuário deve fazer login no sistema.
Sistema deve ter pelo menos uma empresa cadastrada.
Sistema deve ter pelo menos um projeto cadastrado.
34
Fluxo principal a) o sistema informa as atividades cadastradas;
b) usuário opta por editar, apagar ou cadastrar uma atividade;
c) ao optar por editar ou cadastrar, usuário deve associar uma empresa e um projeto
à atividade;
Cenário – Visualização Sistema mostra os registros de atividades cadastrados para o Usuário.
Cenário – Edição 1. Sistema mostra registros cadastrados;
2. Usuário seleciona um registro para edição;
3. Sistema mostra a descrição da atividade, nome do projeto ao qual pertence,
observação, status da atividade para edição;
4. Usuário altera registro e seleciona opção para atualizar os dados (descrição da
atividade, observação, status);
5. Sistema mostra os registros cadastrados com o registro alterado.
Cenário – Inclusão 1. Sistema mostra registros cadastrados;
2. Usuário inclui um novo registro;
3. Sistema mostra os registros cadastrados.
Cenário – Exclusão 1. Sistema mostra registros cadastrados;
2. Usuário seleciona um registro para exclusão;
3. Sistema exclui o registro e mostra os registros restantes.
Pós-condição Usuário visualizou, editou, apagou ou cadastrou uma atividade do projeto.
Quadro 8 – Descrição do caso de uso Manter atividade
No Quadro 9 apresenta-se o caso de uso "Manter item".
Nome do Caso de Uso Manter item
Descrição Usuário acessa o link Item (Item da Atividade). Cada atividade poderá ter diversos
itens associados. Sera mantido a descrição do item da tarefa a ser realizado, sendo
que o item deverá ser associado a uma atividade. Cada item pode ter diversos
materiais associados que serão necessários para a realização do trabalho a ser feito.
Ator Usuário
Pré-condição Usuário deve fazer login no sistema.
Sistema deve ter pelo menos uma empresa cadastrada.
Sistema deve ter pelo menos um projeto cadastrado.
Sistema deve ter pelo menos uma atividade cadastrada.
Fluxo principal a) o sistema informa os itens da atividade cadastrados;
b) usuário opta por editar, apagar ou cadastrar um item;
c) ao optar por editar ou cadastrar, usuário deve associar uma atividade ao item;
Cenário – Visualização Sistema mostra os registros de itens das atividades cadastrados para o Usuário.
Cenário – Edição 1. Sistema mostra registros cadastrados;
2. Usuário seleciona um registro para edição;
3. Sistema mostra a descrição do item e a atividade a qual pertence para edição;
4. Usuário altera registro e seleciona opção para atualizar a descrição do item;
35
5. Sistema mostra os registros cadastrados com o registro alterado.
Cenário – Inclusão 1. Sistema mostra registros cadastrados;
2. Usuário inclui um novo registro;
3. Sistema mostra os registros cadastrados.
Cenário – Exclusão 1. Sistema mostra registros cadastrados;
2. Usuário seleciona um registro para exclusão;
3. Sistema exclui o registro e mostra os registros restantes.
Pós-condição Usuário visualizou, editou, apagou ou cadastrou um item da atividade.
Quadro 9 – Descrição do caso de uso Manter item
No Quadro 10 apresenta-se o caso de uso "Associar material/item".
Nome do Caso de Uso Associar material/item
Descrição Usuário acessa o link Material da tela de Item da Atividade para associar os
materiais usados por um item. Um item pode ter vários materiais, então deve-se
associar um material a um item.
Ator Usuário
Pré-condição Usuário deve fazer login no sistema.
Sistema deve ter pelo menos uma empresa cadastrada.
Sistema deve ter pelo menos um projeto cadastrado.
Sistema deve ter pelo menos uma atividade cadastrada.
Sistema deve ter pelo menos um item da atividade cadastrado.
Sistema deve ter pelo menos um material cadastrado.
Fluxo principal a) o sistema informa os materiais de um item cadastrados;
b) usuário opta por desassociar ou associar um material a um item;
c) ao optar por editar ou cadastrar, usuário deve associar uma atividade ao item;
Cenário – Associar 1. Sistema mostra registros cadastrados de itens para o usuário;
2. Usuário seleciona um registro de um item;
3. Usuário associa materiais ao item selecionado;
4. Sistema mostra os registros de itens cadastrados e de seus materiais.
Cenário – Desassociar 1. Sistema mostra registros cadastrados de itens para o usuário;
2. Usuário seleciona um registro de um item;
3. Usuário seleciona um material do item e desassocia;
4. Sistema mostra os registros de itens cadastrados e de seus materiais.
Pós-condição Usuário associou um material a um item de uma atividade.
Quadro 10 – Descrição do caso de uso Associar material/item
36
3.4 DIAGRAMA DE CLASSES
Na Figura 4 se apresenta o diagrama de classes com as classes que representam as
entidades serão persistidas no banco de dados. Cada classe de entidade é representada no
banco de dados como uma tabela.
Figura 4– Diagrama de classes das entidades
A função de cada classe de entidade está descrita a seguir:
a) classe Empresa - classe que possui os atributos referentes as empresas do sistema;
b) classe Colaborador - classe que possui os atributos referentes aos colaboradores
de uma empresa;
c) classe Categoria - classe que possui os atributos referentes aos tipos de categoria;
d) classe Material - classe que possui os atributos referentes aos materiais a serem
utilizados pelos itens das atividades;
37
e) classe Projeto - classe que possui os atributos referentes aos projetos de uma
empresa;
f) classe Atividade - classe que possui os atributos referentes às atividades de um
projeto;
g) classe Item - classe que possui os atributos referentes aos itens de uma atividade.
Cada classe que representa uma entidade é convertida pela JPA em uma tabela de
banco de dados. Na Figura 5 tem-se a classe Material e a tabela Material. A anotação @Entity
informa que a classe é do tipo entidade e a anotação @Table(name="MATERIAL") nforma o
nome da tabela que deverá ser criada no banco de dados.
Figura 5 – Mapeamento objeto relacional
38
3.5 DIAGRAMA DE ATIVIDADES
No diagrama de atividade da Figura 6 mostra-se o fluxo de navegação do protótipo.
Figura 6 – Diagrama de atividade do fluxo de navegação do protótipo
39
3.6 DIAGRAMA DE SEQÜÊNCIA
Na Figura 7 pode-se observar um diagrama de seqüência que descreve a seqüência de
passos realizados para que um usuário possa visualizar os materiais da tela de Material.
Figura 7 – Diagrama de seqüência para visualização dos materiais
40
3.7 DIAGRAMA DE INTERFACE
Na Figura 8 pode-se observar um diagrama de interface que descreve as telas que cada
usuário tem permissão para acessar.
Figura 8 – Diagrama de interação do acesso as telas do sistema
41
3.8 MODELO ENTIDADE RELACIONAMENTO DA BASE DE DADOS
O protótipo utiliza uma base de dados para armazenar os dados do sistema. Na Figura
9 pode-se observar o modelo entidade relacionamento das entidades que serão persistidos no
banco de dados.
Figura 9 – Modelo das entidades do sistema
42
A base de dados possui oito tabelas conforme descrito abaixo:
a) tabela de empresa - nesta tabela ficam armazenados os dados de todos as empresas
do sistema;
b) tabela de colaborador - nesta tabela ficam armazenados os dados de todos as
colaboradores das empresas - cada colaborador é associado a uma empresa;
c) tabela de material - nesta tabela ficam armazenados os dados de todos as materiais;
d) tabela de categorias - nesta tabela ficam armazenados os dados de todos as
categorias. As categorias definem o tipo da atividade;
e) tabela de projeto - nesta tabela ficam armazenados os dados de todos as projetos -
cada projeto é associado a uma empresa;
f) tabela de atividade - nesta tabela ficam armazenados os dados de todas as
atividades - cada atividade é associado a um projeto. Uma atividade pode ter
diversos itens associados;
g) tabela de item - nesta tabela ficam armazenados os dados de todos os itens de uma
atividade - cada item é associado a uma atividade de um projeto. Um item
representa uma tarefa a ser realizada;
h) tabela de item_material - nesta tabela ficam armazenados os dados dos materiais
que cada item possui. Um item representa uma tarefa a ser realizada, e essa tarefa
pode necessitar de materiais para sua execução.
3.9 IMPLEMENTAÇÃO
Nas seções seguintes são mostradas as técnicas e ferramentas utilizadas para o
desenvolvimento deste trabalho e a operacionalidade da implementação.
3.9.1 Técnicas e ferramentas utilizadas
Para implementação do sistema web, foi utilizado a linguagem de programação Java e
a plataforma JEE. Foram utilizadas as tecnologias JSF, RichFaces, Ajax4JSF e JPA da
linguagem de programação Java. A JSF permite a separação da aplicação em camadas
distintas para a visualização da tela e para a programação da camada de negócios, enquanto
43
que as API(s) RichFaces e Ajax4JSF permitem o desenvolvimento de aplicações web mais
dinâmicas através do uso de AJAX. Por fim, para a persistência dos dados foi utilizado a API
JPA, que permite a persistência de classes de entidade em um banco de dados relacional.
Para a modelagem da aplicação foi utilizado a ferramenta DBDesigner para modelação
do banco de dados e a ferramenta Enterprise Architect para modelar os diagramas de casos de
uso, classe, atividade, seqüência e de interface. Para programação em Java foi utilizado a
Integrated Development Environment (IDE) NetBeans (NETBEANS.ORG, 2008) e o servidor
Apache Tomcat (APACHE GROUP, 2008) para hospedar a aplicação. Para a persistência dos
dados fui utilizado os bancos de dados Oracle, MySQL e HSQLDB.
3.9.2 Implementação do Protótipo
Nesta sessão mostra-se as configurações do protótipo e estrutura e códigos principais
da aplicação.
3.9.2.1 Configuração do JSF
A configuração do JSF é realizada em um arquivo no formato texto chamado web.xml,
localizado no WEB-INF da aplicação web.
Neste arquivo, a configuração ajustada para que os arquivos com a extensão jsf
sejam controlados pelo JSF, através da classe javax.faces.webapp.FacesServlet. Isto
significa que sempre que um arquivo com a extensão jsf for chamado, o controle de fluxo
dos dados da aplicação ficará a cardo do servlet FacesServlet. Também é necessário a
criação do arquivo faces.config.xml, localizado no diretório WEB-INF. Esse arquivo
contém as informações sobre o fluxo de navegação da aplicação e das classes da camada de
negócios.
No Quadro 11 tem-se o código do arquivo web.xml de uma aplicação JEE que não
utiliza JSF e no Quadro 12 tem-se o código que se deve acrescentar para se ter suporte a JSF.
44
Quadro 11 - Configuração de uma aplicação JEE
O arquivo "web.xml" esta informando que a sessão se encerra em 30 segundos e que
a página inicial da aplicação web é o arquivo "index.jsp".
Quadro 12 - Configuração adicional para uma aplicação JSF
O Quadro 13 mostra o arquivo faces.config.xml com um exemplo de fluxo de
navegação e uma classe Java disponível para uso pela camada de negócios.
45
Quadro 13 - Configuração do arquivo faces-config.xml do protótipo
No arquivo faces.config.xml temos uma classe Java que é utilizada na aplicação e
um fluxo de navegação. As classes Java disponibilizadas neste arquivo são chamadas de
ManagedBean. Os métodos desta classe ficam disponíveis para a camada de visualização
através do nome materialView, que corresponde a classe
web.jsf.model.MaterialModel. O Quadro 9 mostra dois métodos da classe materialView
e no Quadro 14 é mostrado como acessar um métodos através de um componente JSF da
camada de visualização.
46
Quadro 14 - Método da classe MaterialView e componente JSF
O método getTodos()é responsavel por trazer a informação de todos o registros de
materiais persistidos no banco de dados. A classe é disponibilizado na aplicação com o nome
de materialView, e o método esta sendo acessando através do comando
#{materialView.todos}.
3.9.2.2 Configuração do AJAX
O arquivo web.xml é responsável por conter a configuração da API AJAX RichFaces.
O Quadro 15 mostra as configurações de configuração do AJAX no arquivo web.xml.
47
Quadro 15 – Configuração do AJAX do protótipo
3.9.2.3 Configuração da JPA
A configuração do JPA é realizada pelo arquivo persistence.xml que se encontra no
pasta WEB-INF/classes/META-INF. O Quadro 16 mostra o código do arquivo de
configuração. O arquivo de configuração informa a localização e o driver do banco de dados e
o usuário e senha para conexão.
48
Quadro 16 – Configuração do JPA do protótipo
3.9.2.4 Exemplo da implementação de uma tela da aplicação
Cada tela possui os recursos de menu de navegação, visualização dos registros
cadastrados, cadastro, edição e exclusão de registros. Todos os recursos de edição de dados
são implementados através do uso de AJAX, o que faz com que não seja necessário ter
diversos arquivos para cada uma dessas funções e também com que não seja necessário
recarregar toda a tela para atualização dos dados da tela.
O JSF faz a separação da camada de visualização da camada de regras de negócios. Na
camada de visualização é utilizado um arquivo JSP com suas respectivos comandos e também
os comandos AJAX. Esse arquivo único contém todo o código visual para visualização,
cadastro, edição e exclusão de registros. O Quadro 17 mostra a parte do código que mostra os
registros da tela de materiais e os componentes para edição, exclusão e cadastro de registro. O
resultado da execução do código é mostrado na Figura 10.
49
Quadro 17 – Código JSF para exibição de informação e botões de ações
50
O comando value="#{materialView.todos}" var="item" é responsável por
acessar o método getTodos() da classe MaterialModel. A classe Material contém todas as
regras de negócio da aplicação. Esse método por sua vez, executa o método
getTodosRegistroS() da classe MaterialDAO. A classe MaterialDAO é responsável por
encapsular toda a lógica de persistência dos materiais no banco de dados, utilizando para isso
a API JPA. No Quadro 18 mostram-se os métodos para visualização, inclusão, atualização e
exclução de um registro da classe MaterialModel enquanto que no Quadro 19 mostra-se os
métodos correspondentes na classe MaterialDAO. A classe MaterialModel tem todos os
métodos referentes a tela de materiais, enquanto que a classe MaterialDAO tem somente os
métodos para a persistência dos dados.
Figura 10 – Componente de visualização de materiais e botões de ações
51
Quadro 18 – Métodos da classe MaterialModel para persistência de materiais
52
Quadro 19 – Métodos da classe MaterialDAO para persistência de materiais
53
3.9.3 Operacionalidade da implementação
A aplicação web para poder ser acessada deve estar num servidor disponível em uma
rede de computadores ou na Internet. Os dispositivos que acessaram a aplicação também
devem estar conectados a Internet e devem acessar o endereço eletrônico da aplicação que se
encontra no servidor. O computador servidor hospedara a aplicação em um servidor web com
suporte a JEE. A persistência das informações é realizado em um banco de dados que pode
estar instalado no mesmo computador do servidor web ou em algum outro computador. Na
Figura 11 temos a representação do acesso de diversos dispositivos ao servidor com a
aplicação.
Figura 11 – Dispositivos acessando a aplicação
Para se ter acesso à aplicação o usuário deve estar devidamente autorizado e
autentificado pelo sistema. Para isso o usuário deve informar seu código de usuário e sua
senha conforme mostra a Figura 12. Após a autentificação com sucesso, o usuário será
encaminhado para a tela de menu mostrado na Figura 13.
54
Figura 12 – Autentificação do usuário
Figura 13 - Menu do protótipo
O usuário com permissão de gerente tem permissão para navegar para ver todo o
menu, enquanto que para um usuário com permissão de colaborador apenas terá disponíveis
55
as telas de Atividade e do Item da Atividade.
Cada tela do protótipo tem as funcionalidades de visualização, exclusão, edição e
inserção de dados.
No Quadro 20 tem-se a descrição das telas do protótipo.
Tela Descrição
Login Autentificação da aplicação. Cada colaborador possui uma senha para
acesso.
Menu Menu com links para todas as telas.
Empresa Tela de cadastro de empresas. Tem como função cadastra as empresas que
terão projetos no sistema.
Colaborador Tela de cadastro dos usuários do sistema. São dois tipos de usuários, gerente
e colaborador.
Material Cadastros dos materiais que serão utilizados nos itens das atividades.
Categoria Cadastros das categorias das atividades. Cada atividade deve ter uma
categoria.
Projeto Cadastros dos projetos das empresas.
Atividade Cadastro das atividades dos projetos.
Item Cadastro dos itens a serem executados para cada atividade de um projeto.
Quadro 20 - Telas da aplicação
3.9.3.1 Estudo de caso – Gerente cria uma atividade para um colaborador executar
Um gerente deseja cadastrar uma atividade para ser realizada. Essa atividade será
desempenhada por um determinado funcionário, com um determinado prazo. O gerente quer
que a atividade tenha alguns itens. Para a realização dos itens será necessária a utilização de
alguns materiais.
56
3.9.3.1.1 Cadastro de empresas
Caso a empresa do gerente não esteja cadastrada, o gerente cadastra sua empresa e
cadastra seu usuário nessa empresa. Dessa forma sempre que conectar ao sistema, seu usuário
estará relacionado com a empresa onde trabalha. A Figura 14 mostra as empresas
cadastradas.
Figura 14 – Tela de empresas
3.9.3.1.2 Cadastro de Colaboradores
O gerente de projetos deve cadastrar os colaboradores da empresa para que esses
possam ser vinculados a uma atividade.
3.9.3.1.3 Cadastro de projetos e atividades
Toda atividade para ser criada, necessita ser vinculada a um projeto. Então antes de
criar a atividade cria-se um projeto. Depois de criado o projeto, cria-se uma atividade para
este projeto.
57
A Figura 14 mostra o cadastro de atividades de um projeto. O gerente pode visualizar
uma atividade filtrando por projeto, colaborador, categoria. Nesta tela pode realizar as opções
de visualização, exclusão do registro, edição ou inclusão de uma nova atividade. Na Figura 15
mostra-se a inclusão de uma atividade para um colaborador.
Figura 15 – Tela de atividades – visualização de registros
Cada atividade possui uma categoria, que identifica o tipo de atividade. Conforme a
Figura 14 mostra, as atividades do projeto são atividades do tipo Web, indicando que são
projetos voltados para a Web. Na Figura 15 temos algumas categorias cadastradas pelo
gerente.
Figura 16 – Categorias cadastradas
58
Figura 17 – Tela de atividades – inserção de registros
Para inserir um novo registro, clica-se no botão de inserção. Após a inclusão do
registro, somente a tabela de registros será atualizada. Atividades inseridas podem ser editas
ou apagas. Ao realizar as funções de inclusão, edição será aberta uma tela para
preenchimento de dados enquanto que a tela de fundo se torna inacessível até que se confirme
ou se cancele o processo. As alterações serão aplicadas sem que seja necessária uma
atualização da tela, apenas se atualizando na tela as partes que serão alteradas. Ao se excluir
um registro apenas a tabela com os dados de registros será atualizada, não necessitando
atualizar a tela inteira. Isso ocorre devido ao recurso de AJAX.
3.9.3.1.4 Cadastro de itens de uma atividade e de materiais.
O gerente cadastra os itens de uma atividade que o colaborador irá executar e associa
os materiais a serem utilizados na realização da tarefa.
Para cadastrar itens para uma atividade, o gerente seleciona uma atividade e seleciona
a aba de itens da tela de atividade, adicionando itens para a atividade previamente
59
selecionada. Na Figura 14 mostra-se itens adicionados a uma atividade selecionada. Para
adicionar materiais a um item, seleciona-se o item e clica-se na aba de materiais para
adicionar os materiais ao item, como mostra-se na Figura 16.
Figura 18 – Itens de uma atividade
Figura 19 – Materiais de um item
60
3.9.3.1.5 Colaborador verifica suas atividades
Primeiramente o colaborador deve se autentificar no sistema, executando em seguida a
tela de menu. O colaborador pode apenas ver e executar suas tarefas, então ele acessa a tela de
tarefas, onde irá ter as suas tarefas pendentes para execução. Cada tarefa pode ter diversos
itens para serem executados. Após a conclusão da atividade, o colaborador a conclui.
61
3.10 RESULTADOS E DISCUSSÃO
O protótipo deve persistir diferentes tipos de dados em um sistema de Banco de Dados.
Inicialmente foram desenvolvidas as telas sem o uso de AJAX, e três telas para cada tipo de
cadastro. Uma para visualização dos dados e que também permite a exclusão, outra para
edição de registros e por fim uma para inclusão de registros. Isso faz com que ao se navegar
de uma tela para outra seja feito carregado todas as informações da tela. Com o uso de AJAX
foi possível realizar todas as tarefas de persistência na mesma tela, sem que fosse necessário
atualizar toda a tela, apenas atualizando e exibindo informações especificas.
Os resultados com as tecnologias utilizadas e os resultados obtidos podem ser vistas no
Quadro 21.
Tecnologia/Metodologia Resultado obtido
Sistema para a web Foi utilizado o navegador Firefox no
desenvolvimento da aplicação e testes
esporádicos no Internet Explorer. Ocorreram
ao longo do desenvolvimento diversos
problemas de diferenças na interface de layout
da tela. As telas em Firefox e Internet
Explorer possuem pequenas diferenças de
layout.
JSF Integrado o JSF ao JEE para separação das
camadas de visualização e regras de negocio.
API. Procurou-se utilzar recurso de templates
de telas, porém a API de templates se mostrou
incompatível com o servidor Tomcat 6
utilizado no desenvolvimento, devido a
problemas de compatibilidade da API de JSF
do NetBeans 6. Trocado a implementação de
JSF foi solucianado o problema, porém foi
62
observado muitas diferenças de layout entre o
Internet Explorer e o Firefox. Isso se deve
porque o sistema de templates obriga que se
utilize XHTML em toda a aplicação e há
diferenças na renderização dos componentes
XHTML de um navegador para outro. Em
razão disso não se utilizou templates.
AJAX Integrado o AJAX ao JSF através da API
RichFaces. Grande dificuldade no tratamento
de eventos dos componentes e integração com
a camada de regras de negocio e JPA.
Documentação da aplicação não muito
abrangente, não focando partes importantes
dos componetes.
JPA Utilizou-se a implementação TopLink do
JPA, por ser a implementação de referencia
para a tecnologia. Dificuldade na
interpretação de erros na programação em
JPA. Mensagens de erro não muito intuitivas,
em alguns casos mostrava um tipo de erro,
porém o motivo do erro era outro. Para
utilização de outros bancos de dados é
necessário apenas alterar o driver do banco de
dados.
BANCO DE DADOS Ao longo do desenvolvimento utilizou-se o
banco de dados MySQL por ser um banco de
dados que não utiliza muitos recursos do
computador. Foi feito testes nos bancos de
dados Oracle e HSQLDB, o que se fez
necessário apenas à mudança do driver para
acesso ao banco de dados.
Quadro 21 – Tecnologias empregadas na aplicação
Devido a problemas encontrados na tecnologia, houve dificuldade e atrasos na
63
implementação do protótipo. Os casos de uso foram implementados e as entidades de
empresa, projeto, atividades, itens, material, categoria e colaboradores persistidas no banco de
dados, porém não foram implementadas relatórios, gráficos ou filtros mais detalhados para
busca de informações no sistema. As atividades não são vinculadas umas as outros, não tem
uma ordem especifica para execução, podem ser baixadas pelo colaborador
independentemente de ordem de execução.
No Quadro 22 apresenta-se o comparativo entre o protótipo desenvolvido e os
trabalhos correlatos.
Legenda das ferramentas:
1. Gerência de Projetos de Software;
2. Gestão Outsourcing na Bunge;
3. Protótipo desenvolvido.
Ferramenta
Funcionalidade 1 2 3
Sistema para a web Não Não Sim
Utiliza recurso AJAX Não Não Sim
Possibilidade de usar diferentes bancos de dados Não Não Sim
Controle de empresas Não Sim Sim
Controle de fornecedores de Serviços Não Sim Não
Controle de projetos Sim Sim Sim
Controle de projetos de software Sim Não Não
Cadastro do time de desenvolvimento do projeto Sim Não Não
Controle de colaboradores Sim Sim Sim
Cadastro de profissões Não Sim Não
Controle de atividades do projeto Sim Sim Sim
Controle de itens de uma atividade Não Não Sim
Registro de necessidades de recursos e especializações Não Sim Não
Cadastro de grupo de avaliadores Não Sim Não
Registro de avaliação de colaboradores e atividades Não Sim Não
Plano de métricas Não Sim Não
Registro de riscos do projeto Sim Não Não
Cadastro de materiais a serem utilizados nos itens de uma atividade Não Não Sim
Cadastro de categorias das atividades Não Não Sim
64
Quadro 22 – Comparativo entre protótipo e trabalhos correlatos
Conforme visto no Quadro 22, algumas funcionalidade do protótipo implementado no
trabalho não são encontradas nas ferramentas correlatas. Em contrapartida algumas
funcionalidades que são encontradas nas ferramentas correlatas não foram implementadas no
protótipo desenvolvido.
65
4 CONCLUSÕES
Como visto neste presente trabalho, é possível obter um resultado prático
desenvolvendo sistemas com JSF e JPA, criando aplicações com AJAX que possibilitam que
a aplicação execute menos atualizações de telas no navegador, tornando mais rápido e prático
a utilização da tela e exigindo menos arquivos de telas a serem criados. A utilização do
RichFaces como API AJAX possui muitos componentes que auxiliam no desenvolvimento da
aplicação, porém a API carece de uma melhor documentação quanto ao uso desses
componentes. A troca de banco de dados através do uso da JPA é muito simples de ser
realizada, o que viabiliza o porte da aplicação para outros bancos de dados.
Com a utilização dessas tecnologias obteve-se êxito na implementação de um protótipo
para controle de projetos e tarefas, permitindo que a aplicação seja acessada em um navegador
web. Em termos de limitações, o protótipo não possui um detalhamento grande das entidades
da aplicação, como muitas informações sobre as empresas e colaboradores, tais como
especializações do funcionário e profissão. Também não possui relatórios nem gráficos para
que se possa fazer um acompanhamento das atividades.
A maior facilidade encontrada na elaboração deste trabalho foi em relação à escolha
das ferramentas utilizadas para desenvolvimento de páginas web em Java, já que no mercado
existem inúmeras ferramentas que auxiliam os desenvolvedores na criação de sistemas web.
Tais ferramentas atenderam adequadamente no desenvolvimento da aplicação.
A maior dificuldade enfrentada durante a elaboração deste trabalho foi encontrar
material adequado e amplo para o estudo das técnicas AJAX através da API RichFaces, erros
de compatibilidade entre JSF, NetBeans e Tomcat na hora de usar templates,
incompatibilidades entre os navegadores Internet Explorer e Firefox na renderização de
páginas XHTML, o que acabou inviabilizando o uso de templates. Também houve grande
dificuldade aos erros de código reportados pela JPA que não indicavam adequadamente o
motivo de determinado erro.
A JSF, AJAX, JPA possibilitam o desenvolvimento de aplicações com maior controle
de código, devido à separação da camada de visualização e das regras de negócios da
aplicação, bem como o desenvolvimento de telas mais práticas e rápidas com o uso de AJAX,
bem como a facilidade e independência na escolha do banco de dados para persistência dos
dados.
66
4.1 EXTENSÕES
Entre possíveis extensões para este trabalho, destacam-se:
a) utilização de mais recursos e componentes AJAX através do uso do RichFaces, ou
de outra API AJAX, como IceFaces, Tomahawk ou ADF;
b) criar funcionalidades novas como relacionamento de ordem de executação das
atividades, cadastros de profissão, plano de métricas, riscos do projeto, cadastro de
especializações e recurso de PERT/CPM;
c) criar relatórios e gráficos para as telas;
d) criar sistema de backup da aplicação e sistema para transferência das informações
de um banco de dados para outro;
e) melhorar a interface gráfica com o usuário e as diferenças de renderização da tela
entre o Internet Explorer e o Firefox;
f) possibilitar a gerência de projetos de softwares;
g) integração com outras ferramentas para a extração de projetos e atividades, como
por exemplo o Microsoft Project;
h) permitir que os dados da aplicação sejam persistidos em arquivos XML.
67
REFERÊNCIAS BIBLIOGRÁFICAS
APACHE GROUP. Apache Tomcat. [S.l.], [2008?]. Disponível em: <http://tomcat.apache.org/>. Acesso em: 15 jan. 2008.
BAUER, Christian; KING, Gavin. Java Persistence with Hibernate. Greenwich: Manning, 2007.
BELLIA, Renato. Provedores JPA. Java Magazine, São Paulo, n. 44, p. 28, 2007.
BURKE, Bill; MONSON-HAEFEL, Richard. Enterprise javebeans 3.0. São Paulo: Pearson Prentice Hall, 2007.
CARMO, Raquel. Enterprise JavaBeans 3.0: passo a passo. [S.l.], [2008?]. Disponível em: <http://www.jeebrasil.com.br/mostrar/118>. Acesso em: 20 maio. 2008.
DINSMORE, Paul C.; CAVALIERI, Adriane. Como se tornar um profissional em gerenciamento de projetos. 2. ed. Rio de Janeiro: Qualitymark, 2005.
GENTLEWARE. Poseidon for UML. [S.l.], [2008?]. Disponível em: <http://www.gentleware.com/products.html/>. Acesso em: 15 jan. 2008.
GEARY, David F; HORSTMANN, Cay. Core JavaServer Faces: o guia autorizado. Rio de Janeiro: Alta Books, 2005.
GLOBALCODE. Java Persistence. [S.l.], [2008?]. Disponível em: <http://www.javanoroeste.com.br/tech_days_votuporanga/palestras/Java_Persistence_API.pdf>. Acesso em: 20 abr. 2008.
GONÇALVES, Edson. Desenvolvendo aplicações web com JSP, servlets, JavaServer Faces. Rio de Janeiro: Ciência Moderna, 2007.
JBOSS. JBoss Ajax4JSF. [S.l.], [2008a]. Disponível em: <http://www.jboss.org/jbossajax4jsf/>. Acesso em: 30 dez. 2007.
JBOSS. JBoss RichFaces. [S.l.], [2008b]. Disponível em: <http://www.jboss.org/jbossrichfaces/>. Acesso em: 20 maio. 2008.
JCP. JSR-000220 Enterprise JavaBeans 3.0. [S.l.], [2008?]. Disponível em: <http://jcp.org/aboutJava/communityprocess/final/jsr220/index.html/>. Acesso em: 10 jan. 2008.
LONEY, Kevin; THERIAULT, Marlene. Oracle9i: o manual do DBA. Rio de Janeiro: Campos, 2002.
68
MELO, Eduardo da Fonseca. WebManager - Uma ferramenta para gerência de projetos de software baseada no Rational Unified Process . 2000. 67 f. Trabalho de Conclusão de Curso (Bacharelado em Engenharia de Software) - Centro de Informática, Universidade Federal de Pernambuco, Recife.
NETBEANS.ORG. Netbeans. [S.l.], [2007?]. Disponível em: <http://www.netbeans.org/>. Acesso em: 15 jan. 2008.
ORACLE. Oracle 10G Express. [S.l.], [2008?]. Disponível em: <http://www.oracle.com/pls/xe102/homepage>. Acesso em: 15 jan. 2008.
SACRAMENTO, Wendell Miranda. Introdução à Java Persistence API – JPA. [S.l.], [2008?]. Disponível em: < http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=4590>. Acesso em: 10 jan. 2008.
SCHUMACKER, Adilson. Gestão de outsourcing na Bunge Alimentos S.A.. 2005. 75 f. Trabalho de Conclusão de Curso (Bacharelado em Sistemas de Informação) - Centro de Ciências Exatas e Naturais, Universidade Regional de Blumenau, Blumenau.
STEPHENS, Ryan; PLEW, Ron. Aprenda em 24 horas SQL3. Rio de Janeiro: Campus, 2003.
SUN. The Java Persistence API. [S.l.], [2007?]. Disponível em: <http://java.sun.com/developer/technicalArticles/J2EE/jpa/>. Acesso em: 15 ago. 2007.
SUN. Java EE: do more with less work. [S.l.], [2008a]. Disponível em: <http://java.sun.com/javaee/>. Acesso em: 01 jan. 2008.
SUN. JavaServer Faces technology. [S.l.], [2008b]. Disponível em: <http://java.sun.com/javaee/javaserverfaces/>. Acesso em: 01 jan. 2008.
THE HSQLDB DEVELOPER GROUP. Hsqldb - 100% Java Database. [S.l.], [2008?]. Disponível em: <http://www.hsqldb.org/>. Acesso em: 15 jan. 2008.
VIEIRA, Marconi F. Gerenciamento de projetos: de tecnologia da informação. Rio de Janeiro: Campus, 2003.