Vous êtes sur la page 1sur 40

FACULDADE DE TECNOLOGIA DE SÃO JOSÉ DOS CAMPOS

FATEC PROFESSOR JESSEN VIDAL

RAFAEL CASSIANO DA SILVA

PLATAFORMA DO ESCRITÓRIO DE CARREIRAS 1.0

São José dos Campos


2015
RAFAEL CASSIANO DA SILVA

PLATAFORMA DO ESCRITÓRIO DE CARREIRAS 1.0

Trabalho de Graduação apresentado à


Faculdade de Tecnologia São José dos
Campos, como parte dos requisitos
necessários para a obtenção do título de
Tecnólogo em Banco de Dados.

Orientador: Me. Eduardo Sakaue

São José dos Campos


2015
Dados Internacionais de Catalogação-na-Publicação (CIP)
Divisão de Informação e Documentação
SILVA, Rafael
Plataforma do Escritório de Carreiras 1.0.
São José dos Campos, 2015.
39f.

Trabalho de Graduação – Curso de Tecnologia em Banco de Dados,


FATEC de São José dos Campos: Professor Jessen Vidal, 2015.
Orientador: Me. Eduardo Sakaue.

1. Áreas de conhecimento. I. Faculdade de Tecnologia. FATEC de São José dos Campos:


Professor Jessen Vidal. Divisão de Informação e Documentação. II. Título

REFERÊNCIA BIBLIOGRÁFICA –

SILVA, Rafael. Plataforma do Escritório de Carreiras 1.0. 2015. 39f. Trabalho de


Graduação - FATEC de São José dos Campos: Professor Jessen Vidal.

CESSÃO DE DIREITOS –

NOME DO AUTOR: Rafael Cassiano da Silva


TÍTULO DO TRABALHO: Plataforma do Escritório de Carreiras 1.0.
TIPO DO TRABALHO/ANO: Trabalho de Graduação / 2015.

É concedida à FATEC de São José dos Campos: Professor Jessen Vidal permissão para
reproduzir cópias deste Trabalho e para emprestar ou vender cópias somente para propósitos
acadêmicos e científicos. O autor reserva outros direitos de publicação e nenhuma parte deste
Trabalho pode ser reproduzida sem a autorização do autor.

Rafael Cassiano da Silva


Rua: Saturno, 83 – Jardim da Granja
CEP 12227-480 – São José dos Campos – São Paulo
iv

Rafael Cassiano da Silva

PLATAFORMA DO ESCRITÓRIO DE CARREIRAS 1.0

Trabalho de Graduação apresentado à


Faculdade de Tecnologia de São José dos
Campos, como parte dos requisitos
necessários para a obtenção do título de
Tecnólogo em Banco de Dados.
v

RESUMO
O Escritório de Carreiras é um departamento da FATEC São José dos Campos que visa

aproximar a instituição acadêmica do setor produtivo, e auxiliar os alunos na descoberta do

caminho a ser seguido para atingir seus objetivos. Este departamento conta com processos e

pessoas especializadas para atender os alunos e compatibilizá-los de acordo com as vagas

oferecidas pelas empresas. Contudo os processos iniciais não contam com ferramentas

especializadas. Sem o apoio das ferramentas certas, o trabalho no departamento ficaria lento e

impraticável. A Plataforma do Escritório de Carreiras 1.0 foi desenhada para informatizar

algumas etapas desses processos, facilitando a distribuição e organização da informação. A

informatização dessas etapas torna viável a execução dos processos e possibilita a coleta de

dados para construção dos perfis dos alunos.

Palavras-Chave: Desenvolvimento; Java; Struts; MVC; Hibernate; jQuery; Bootstrap;


Liquibase;
vi

ABSTRACT
The Career Office is a department of FATEC São José dos Campos that aims to

approach the academic institution with the productive sector and assist students

in finding the way to achieve their own goals. This department has processes and skilled

people to assist students and harmonizing them according to the vacancies offered by

companies. However, the initial processes do not rely on specialized tools. Without the

support of these specialized tools, the work in the department becomes slow

and impractical. The Career Office Platform 1.0 was designed to computerize some steps of

those processes, facilitating the information’s distribution and organization. The

computerization of these steps makes possible the execution of processes and enables the data

gathering for the construction of student profiles.

Keywords: Development; Java; Struts; MVC; Hibernate; jQuery; Bootstrap; Liquibase;


vii

SUMÁRIO
1- INTRODUÇÃO 8
1.1- Objetivo 9
1.2- Cronograma 9

2- LEVANTAMENTO DE REQUISITOS 10
2.1- Casos de Uso 10
2.1.1- Controle de Acesso 10
2.1.2- Importação de Alunos 12
2.1.3- Plano de desenvolvimento individual 13
2.1.4- Vagas 15
2.1.5- Agendamento 16
2.1.6- Currículo 18
2.2- Protótipos de tela 18
2.2.1- Protótipo de tela do agendamento 18
2.2.2- Protótipo da tela do PDI 19
2.3- Tecnologias escolhidas 20

3- DESENVOLVIMENTO 21
3.1- Arquitetura do Sistema 21
3.1.1- Banco de dados 22
3.1.1.1- Dicionários de dados referentes ao PDI 22
3.1.1.2- Dicionários de dados referentes ao Agendamento 23
3.1.2- Modelo 24
3.1.2.1- Classes referentes ao PDI 26
3.1.2.2- Classes referentes ao Agendamento 26
3.1.3- Visão 26
3.1.3.1- Tela do PDI 26
3.1.3.2- Tela do Agendamento 31

4- RESULTADOS 34
4.1- Utilização 34
4.2- Melhorias Encontradas 36
4.3- Trabalhos Futuros 37

5- SUMÁRIO EXECUTIVO 38

REFERÊNCIAS 39

ANEXOS 40
8

1- INTRODUÇÃO
O escritório de carreiras da FATEC SJC, tem como propósito preparar os alunos para
ingressar no mercado de trabalho e providenciar a aproximação da instituição com o setor
produtivo.
Para isso, conta com mentores capazes de orientar profissionalmente os alunos,
estabelecendo um Plano de Desenvolvimento Individual (FATEC SJC, 2015).
O Plano de Desenvolvimento Individual (PDI), é a definição das principais
competências a serem desenvolvidas pelo aluno para que alcance seu objetivo. Para definir
quais devem ser trabalhadas, primeiramente o aluno deve responder um questionário, contendo
uma questão aberta, referente ao cargo almejado, e outras questões quantitativas, referentes as
suas competências atuais.
O escritório também é responsável pela divulgação de vagas de estágio e emprego, e
pelo encaminhamento de alunos para empresas.
Para possibilitar uma melhor organização e agilidade nas atividades do escritório é
possível informatizar partes do processo. Com isso foi levantada a necessidade de
desenvolvimento de uma plataforma para centralizar as informações, contribuindo para seu
acesso e divulgação.
A Figura 1 apresenta os três elementos que compõem o escritório de carreiras: Pessoas,
Processos e Ferramentas. A Plataforma do Escritório de Carreiras 1.0 atuará como uma
ferramenta especializada para atender aos processos desenvolvidos no escritório.

Figura 1 - Composição do Escritório de Carreiras


9

1.1- Objetivo

O objetivo deste trabalho é o desenvolvimento da Plataforma do Escritório de Carreiras


1.0. Esta plataforma deve proporcionar as seguintes funcionalidades:
 Agendamento de atendimentos com um mentor.
 Preenchimento e acompanhamento semestral do Plano de Desenvolvimento
Individual.
 Preenchimento e disponibilização de currículos.
 Painel de Vagas.
o Inscrição nas vagas.

1.2- Cronograma

Tabela 1 - Cronograma
Etapa Agosto Setembro Outubro Novembro Dezembro
Levantamento de Requisitos
Desenvolvimento
Publicação da versão prévia
Coleta e análise dos resultados
Publicação da versão final
10

2- LEVANTAMENTO DE REQUISITOS
Neste capítulo serão apresentados os casos de uso e os protótipos de tela necessários para o
desenvolvimento do sistema.

2.1- Casos de Uso

Os casos de uso estão divididos em controle de acesso, importação de alunos, plano de


desenvolvimento individual (PDI), vagas, agendamento e currículo.

Figura 1 – Diagrama de Casos de Uso

Fonte: Elaborada pelo autor.

2.1.1- Controle de Acesso

Foram definidos dois perfis de acesso, Mentor e Aluno. Ambos perfis possuem a
funcionalidade de troca de senha.
O perfil Mentor possui acesso as funcionalidades de importação de alunos, cadastro de
vagas, liberação de datas de agendamento, liberação do questionário do plano de
desenvolvimento individual e adição de observações nos questionários respondidos.
O perfil Aluno possui acesso as funcionalidades de agendamento, visualização do
quadro de vagas, candidatura de vagas, responder o questionário PDI que estiver liberado e
atualização de currículo.
11

Tabela 2 – Caso de Uso: Efetuar Acesso


Nome do Caso de Uso Efetuar Acesso
Ator Principal Usuário
Esse caso de uso descreve as etapas percorridas pelo usuário para se
Resumo autenticar no sistema.
Ter solicitado previamente ao administrador do sistema a criação de um
Pré-condições usuário.
Fluxo Principal
Ações do ator Ações do sistema
1 - Acessar página de autenticação.
2 - Informar usuário (R.A.) e senha.
3 - Clicar em entrar.
4 - Redirecionar usuário para tela principal.
Restrições/Validações 1 - É necessário informar usuário e senha corretos.
Fluxo de Exceção - Informações de autenticação incorretas
Ações do ator Ações do sistema
1 - Apresentar mensagem "Usuário ou senha incorretos".

Tabela 3 – Caso de Uso: Alterar Senha


Nome do Caso de Uso Alterar senha
Ator Principal Usuário
Esse caso de uso descreve as etapas percorridas pelo usuário para
Resumo efetuar a alteração de sua senha.
Pré-condições Executar o caso de uso "Efetuar Acesso"
Fluxo Principal
Ações do ator Ações do sistema
1 - Clicar no link "Alterar senha".
2 - Informar senha atual.
3 - Validar senha atual.
4 - Informar nova senha.
5 - Validar nova senha.
6 - Repetir a nova senha no campo de
confirmação.
7 - Validar confirmação da senha.
Restrições/Validações 1 - É necessário informar usuário e senha corretos.
Fluxo de Exceção - Informações incorretas
Ações do ator Ações do sistema
1 - Exibir ícone indicando quais campos estão incorretos.

Tabela 4 – Caso de Uso: Sair do Sistema


Nome do Caso de Uso Sair do sistema
Ator Principal Usuário
Esse caso de uso descreve as etapas percorridas pelo usuário para sair
Resumo do sistema.
Pré-condições Executar o caso de uso "Efetuar Acesso"
Fluxo Principal
Ações do ator Ações do sistema
1 - Clicar no ícone de saída.
2 - Redirecionar usuário para tela de autenticação.
12

2.1.2- Importação de Alunos

A importação de alunos é realizada através de uma carga de dados proveniente de uma


planilha Microsoft Excel preenchida de acordo com um formato pré-definido.
Será possível gerar uma planilha modelo com a configuração pré-estabelecida para o
preenchimento.
Tabela 5 – Caso de Uso: Importação de Alunos
Nome do Caso de Uso Importação de alunos
Ator Principal Mentor
Esse caso de uso descreve as etapas percorridas pelo mentor para
Resumo realizar uma importação de alunos (carga de dados).
Pré-condições Executar caso de uso "Efetuar Acesso".
Fluxo Principal
Ações do ator Ações do sistema
1 - Clicar no link Importação Alunos.
2 - Redirecionar usuário para a tela de importação de alunos.
3 - Clicar em Arquivo.
4 - Selecionar arquivo a ser importado.
5 - Clicar em importar.
6 - Efetivar importação.
7 - Exibir mensagem de sucesso.
1 - O arquivo de importação deve estar no formato xls ou xlsx. 2 - Os
Restrições/Validações campos devem estar nas posições corretas, conforme modelo.
Fluxo de Exceção - Campos obrigatórios em branco
Ações do ator Ações do sistema
1 - Exibir uma mensagem informando quais linhas do arquivo
possuem campos obrigatórios em branco.
13

2.1.3- Plano de desenvolvimento individual

O Plano de desenvolvimento individual (PDI) é composto por um questionário semestral


constituído por questões previamente definidas, sendo elas quantitativas, com valores entre 1 e
5 e uma questão dissertativa. O objetivo do PDI é analisar a evolução do aluno através dos
semestres cursados e possibilitar que o mentor consiga auxiliá-lo a desenvolver habilidades
necessárias para atingir seus objetivos.

Tabela 6 – Caso de Uso: Liberar Questionário PDI


Nome do Caso de Uso Liberar Questionário PDI
Ator Principal Mentor
Esse caso de uso descreve as etapas percorridas pelo mentor para liberar
Resumo o questionário semestral para os alunos.
Pré-condições Executar caso de uso "Efetuar Acesso".
Questionário do semestre atual não pode ter sido liberado
Pós-condições anteriormente.
Fluxo Principal
Ações do ator Ações do sistema
1 - Clicar no link do PDI
2 - Redirecionar usuário para tela de liberação do PDI e listagem de
alunos.
3 - Clicar em "Liberar PDI"
4 - Solicitar confirmação de liberação do PDI, avisando que o PDI
anterior será bloqueado.
5 - Clicar em sim.
6 - Gerar questionários.
Fluxo Alternativo - Mentor não confirma a liberação
Ações do ator Ações do sistema
1 - Fechar tela de confirmação.

Tabela 7 – Caso de Uso: Responder Questionário PDI


Nome do Caso de Uso Responder Questionário PDI
Ator Principal Aluno
Esse caso de uso descreve as etapas percorridas pelo aluno para
Resumo responder o questionário.
Pré-condições Executar caso de uso "Efetuar Acesso".
Pós-condições Possuir algum questionário liberado.
Fluxo Principal
Ações do ator Ações do sistema
1 - Clicar no link do PDI
2 - Redirecionar usuário para tela do questionário.
3 - Selecionar as respostas desejadas
ou, caso seja uma pergunta aberta,
digitar a resposta.
4 - Clicar em salvar.
5 - Salvar as respostas.
14

Tabela 8 – Caso de Uso: Visualizar Questionário PDI


Nome do Caso de Uso Visualizar Questionário PDI
Ator Principal Mentor
Esse caso de uso descreve as etapas percorridas pelo mentor para
Resumo visualizar o questionário de um determinado aluno.
Pré-condições Executar caso de uso "Efetuar Acesso".
Pós-condições Filtrar alunos na tela de PDI/Listagem de alunos.
Fluxo Principal
Ações do ator Ações do sistema
1 - Clicar no link do PDI
2 - Redirecionar usuário para tela de liberação do PDI e listagem de
alunos.
3 - Selecionar aluno.
4 - Clicar em Filtrar.
5 - Buscar informações.
6 - Apresentar informações.
7 - Clicar no ícone de Visualização.
8 - Redirecionar usuário para tela de visualização do questionário.
Fluxo Alternativo - Adicionar observação ao questionário.
Ações do ator Ações do sistema
1 - Preencher o campo Observações.
2 - Clicar em salvar.
3 - Salvar Observação.
Fluxo Alternativo - Filtrar alunos por curso
1 - Na tela de listagem de alunos
selecionar o curso.
2 - Buscar informações.
3 - Apresentar Informações.
15

2.1.4- Vagas

O mentor cadastra as vagas disponíveis, cada uma pode ter um e-mail de contato ou a
possibilidade de candidatar-se diretamente na Plataforma. A lista de candidatos é visualizada
pelo Mentor e encaminhada para a empresa solicitante. Para visualizar o quadro de vagas não é
necessário realizar acesso ao sistema, porém para candidatar-se é preciso estar autenticado.

Tabela 9 – Caso de Uso: Cadastrar Vaga


Nome do Caso de Uso Cadastrar Vaga
Ator Principal Mentor
Esse caso de uso descreve as etapas percorridas pelo mentor
Resumo para efetuar o cadastro de vagas.
Pré-condições Executar caso de uso "Efetuar Acesso".
Fluxo Principal
Ações do ator Ações do sistema
1 - Clicar no link Vagas
2 - Redirecionar usuário para tela de listagem de vagas.
3 - Clicar no ícone de inclusão (+).
4 - Redirecionar usuário para tela de inclusão de vagas.
5 - Preencher campos obrigatórios.
6 - Clicar em salvar.
7 - Salvar vaga.
8 - Redirecionar usuário para tela de listagem de vagas.
Restrições/Validações 1 - Campos título e descrição devem ser preenchidos.
Fluxo de Exceção - Campos obrigatórios em branco
Ações do ator Ações do sistema
1 - Exibir uma mensagem informando quais campos
possuem preenchimento obrigatório.
Fluxo Alternativo - Ativar/Desativar vaga
1 - Na tela de listagem de alunos clicar no ícone de
ativação/desativação.
2 - Exibir tela de confirmação.
3 - Confirmar ativação/desativação.
4 - Efetivar operação.
Fluxo Alternativo - Editar vaga
1 - Na tela de listagem de alunos clicar no ícone de
edição.
2 - Redirecionar usuário para a tela de edição.
3 - Editar informações desejadas.
4 - Clicar em salvar.
5 - Salvar vaga.
16

Tabela 10 – Caso de Uso: Visualizar Painel de Vagas


Nome do Caso de Uso Visualizar Painel de Vagas
Ator Principal Qualquer um
Esse caso de uso descreve as etapas percorridas por qualquer pessoa
Resumo para visualizar o painel de vagas.
Fluxo Principal
Ações do ator Ações do sistema
1 - Na tela de autenticação, clicar no
link Vagas.
2 - Redirecionar usuário para o painel de vagas.
3 - Exibir 5 ultimas vagas.
4 - Selecionar filtros desejados e clicar
em Pesquisar.
5 - Exibir painel com o resultado da pesquisa.

Tabela 11 – Caso de Uso: Candidatar-se a uma vaga


Nome do Caso de Uso Candidatar-se a uma vaga
Ator Principal Aluno
Esse caso de uso descreve as etapas percorridas pelo aluno para
Resumo candidatar-se a uma vaga.
Pré-condições Executar caso de uso "Efetuar Acesso".
Fluxo Principal
Ações do ator Ações do sistema
1 - Clicar no link Vagas
2 - Redirecionar usuário para o painel de vagas.
3 - Exibir 5 ultimas vagas.
4 - Selecionar filtros desejados e clicar
em Pesquisar.
5 - Exibir painel com o resultado da pesquisa.
6 - Clicar no ícone de candidatura.
7 - Exibir tela de confirmação de candidatura.
8 - Clicar em Sim.
9 - Salvar candidatura.
10 - Trocar ícone de candidatura por ícone de remoção de candidatura.
Fluxo Alternativo - Remover candidatura
1 - Clicar no link de remoção de
candidatura.
2 - Efetivar remoção da candidatura.
3 - Trocar ícone de remoção de candidatura por ícone de candidatura.

2.1.5- Agendamento

O mentor libera datas no sistema para que o aluno possa agendar reuniões para
orientação individual e esclarecimento de dúvidas.
17

Tabela 12 – Caso de Uso: Liberar Datas para Agendamento


Nome do Caso de Uso Liberar datas para Agendamento
Ator Principal Mentor
Esse caso de uso descreve as etapas percorridas pelo mentor para
Resumo disponibilizar as datas para agendamento de reunião.
Pré-condições Executar caso de uso "Efetuar Acesso".
Fluxo Principal
Ações do ator Ações do sistema
1 - Clicar no link Agendamento.
2 - Redirecionar usuário para a tela de Agendamento.
3 - Selecionar horários a liberar.
4 - Exibir tela de confirmação da liberação.
5 - Clicar em Sim.
6 - Efetivar liberação dos horários.
Restrições/Validações 1 - Não é possível selecionar mais de uma vez o mesmo horário.
Fluxo Alternativo - Limpar Agenda
Ações do ator Ações do sistema
1 - Clicar em Limpar.
2 - Exibir mensagem de confirmação de limpeza.
3 - Clicar em Sim.
4 - Excluir horários.
Fluxo Alternativo - Remover um horário
Ações do ator Ações do sistema
1 - Clicar no X vermelho.
2 - Remover horário.

Tabela 13 – Caso de Uso: Agendar Reunião


Nome do Caso de Uso Agendar reunião
Ator Principal Aluno
Esse caso de uso descreve as etapas percorridas pelo aluno para
Resumo realizar o agendamento de uma reunião com o mentor.
Pré-condições Executar caso de uso "Efetuar Acesso".
Pós-condições Existir ao menos um horário disponível para agendamento.
Fluxo Principal
Ações do ator Ações do sistema
1 - Clicar no link Agendamento.
2 - Redirecionar usuário para a tela de Agendamento.
3 - Selecionar horário
4 - Exibir tela de confirmação de agendamento.
5 - Clicar em Sim.
6 - Efetivar agendamento.
1 - Não é possível selecionar horários passados. 2 - Não é possível
Restrições/Validações selecionar um horário que tenha sido agendado por outro aluno.
18

2.1.6- Currículo

Através do currículo o mentor pode verificar se determinado aluno possui as


qualificações necessárias para a vaga concorrida e indicá-lo a novas vagas.
Tabela 14 – Caso de Uso: Cadastro de Currículo
Nome do Caso de Uso Cadastro de currículo
Ator Principal Aluno
Esse caso de uso descreve as etapas percorridas pelo aluno para cadastrar
Resumo seu currículo.
Pré-condições Executar caso de uso "Efetuar Acesso".
Fluxo Principal
Ações do ator Ações do sistema
1 - Clicar no link Currículo.
2 - Redirecionar usuário para a tela de cadastro de currículo.
3 - Preencher campos.

4 - Clicar em salvar.
5 - Salvar informações.

2.2- Protótipos de tela

Neste subcapitulo serão apresentados alguns protótipos desenvolvidos para auxiliar na


construção das telas do sistema.

2.2.1- Protótipo de tela do agendamento

A Figura 2 apresenta o protótipo da tela do agendamento que será visualizada por


usuários com o perfil mentor. Para usuários com perfil aluno a tela será semelhante, porém não
possuirá o botão limpar.
19

Figura 2 – Protótipo da Tela do Agendamento (Visão do Mentor)

Fonte: Elaborada pelo autor.

2.2.2- Protótipo da tela do PDI

A Figura 3 apresenta o protótipo da tela do PDI que será visualizada por usuários com
o perfil mentor. Para usuários com perfil aluno será possível editar as respostas do PDI corrente.

Figura 3 – Protótipo da tela do PDI (Visão do Mentor)

Fonte: Elaborada pelo autor.


20

2.3- Tecnologias escolhidas

Para possibilitar o desenvolvimento do sistema foram escolhidas as seguintes


tecnologias:
Tabela 15 – Tecnologias Escolhidas
Nome Versão Licença
Java 6 BCL
MySQL 5.5 GPL
Struts 2.5 ALv2
Hibernate ORM 5.0.1 LGPL 2.1
Bootstrap 3.3.5 MIT License
jQuery 1.11.3 MIT License
Liquibase 3.1.1 ALv2

O framework Struts 2 é responsável por facilitar o desenvolvimento no padrão MVC.


Tem como principal função realizar a separação da lógica de negócio da visão. Ele atua na
camada de controle, ou seja, é responsável por tratar as informações vindas da visão, acionar o
modelo e retornar as informações para a visão novamente (APACHE STRUTS, 2015).
O framework Hibernate ORM é responsável por realizar o mapeamento entidade
relacional. Com ele conseguimos, de maneira simples, transformar as informações de um banco
de dados relacional em objetos, e executar operações envolvendo banco de dados sem a
necessidade de escrever comandos SQL (HIBERNATE ORM, 2015).
Bootstrap é um framework para desenvolvimento de interfaces responsivas. Ele
possibilita que a interface seja desenvolvida de maneira simples, sem necessidade de muito
conhecimento em CSS (BOOTSTRAP, 2015).
O jQuery é uma biblioteca de funções javascript, que facilita o desenvolvimento para
múltiplas plataformas. Com ele é possível, de maneira simples, executar chamadas AJAX e
realizar a manipulação de HTML (JQUERY, 2015).
Liquibase é um framework de versionamento de scripts de banco de dados. Sua
configuração é feita através de arquivos XML. Ele executa automaticamente os scripts assim
que o sistema é iniciado, evitando assim que algum script seja esquecido (LIQUIBASE, 2015).
21

3- DESENVOLVIMENTO
Neste capítulo será apresentado o desenvolvimento do sistema, expondo a arquitetura
utilizada e referenciando os casos de uso associados.

3.1- Arquitetura do Sistema

Para a consecução do sistema foi adotado o padrão de projeto MVC (Modelo, Visão,
Controlador) conforme Figura 4.
Como visto na Figura 4, o usuário, através do navegador, faz uma requisição direta ao
controlador passando os parâmetros através de beans, quando a requisição é efetuada através
um formulário HTML, ou JSON, quando a requisição é efetuada via chamada AJAX. O
controlador trata as informações vindas da visão e aciona o modelo. O modelo se comunica
com o banco de dados, através de um driver, e efetua as operações necessárias via comandos
do banco de dados.
Nos subcapítulos seguintes será detalhada a divisão da arquitetura.

Figura 4 – Estrutura do sistema.

Fonte: Elaborada pelo autor.


22

3.1.1- Banco de dados

A Figura 5 representa o modelo de banco de dados concebido para atender os casos de


usos definidos no levantamento de requisitos.
Todos os detalhes a partir daqui serão focados em casos de uso do PDI e do
Agendamento

Figura 5 – Modelo Lógico do Banco de Dados

Fonte: Elaborada pelo autor.

3.1.1.1- Dicionários de dados referentes ao PDI

A seguir serão apresentados os dicionários de dados das tabelas criadas para atender os
casos de uso do PDI.
23

Tabela 16 – Dicionário de Dados: pdi


Entidade: pdi
Atributo Classe Domínio Tamanho Descrição
pdi_id Determinante Númerico Chave primária
usuario_id Determinante Texto 50 Chave estrangeira - RA do Aluno
ano_mes Simples Númerico Formato yyyymm
observacao Simples Texto 500

Tabela 17 – Dicionário de Dados: questao


Entidade: questao
Atributo Classe Domínio Tamanho Descrição
questao_id Determinante Númerico Chave primária
questao Simples Texto 200
fg_ativo Simples Booleano Valor padrão é 1
fg_aberta Simples Booleano Valor padrão é 0
valor_maximo Simples Númerico

Tabela 18 – Dicionário de Dados: resposta_questao


Entidade: resposta_questao
Atributo Classe Domínio Tamanho Descrição
resposta_questao_id Determinante Númerico Chave primária
pdi_id Determinante Númerico Chave estrangeira
questao_id Determinante Númerico Chave estrangeira
resposta Simples Texto 200
data_resposta Simples Data

3.1.1.2- Dicionários de dados referentes ao Agendamento

A seguir será apresentado o dicionário de dados da tabela criada para atender os casos
de uso do Agendamento

Tabela 19 – Dicionário de Dados: agendamento


Entidade: agendamento
Atributo Classe Domínio Tamanho Descrição
agendamento_id Determinante Númerico Chave primária
usuario_id Determinante Texto 50 Chave estrangeira
data_hora Simples Data
24

3.1.2- Modelo

A Figura 6 apresenta o diagrama de classes desenvolvido para atender aos requisitos


levantados.
A classe BasicAction possui métodos para facilitar a utilização do Struts, por isso todas
as classes action herdam dela.
A classe ApplicationSecurityInterceptor, que não está ligada a nenhuma outra, é
responsável por interceptar todas as requisições vindas da visão e decidir o que fazer com elas.
Para saber se é possível dar continuidade na requisição, ela verifica qual é o tipo da instância
da action acionada.
Foram definidas duas interfaces, SecurityAction e AdministratorAction. Caso a action
acionada seja uma instância de SecurityAction é necessário que o usuário esteja autenticado no
sistema para poder efetivar a requisição. Caso seja uma instância de AdministratorAction, o
usuário autenticado deve possuir o perfil mentor. Caso não seja instância de nenhuma das duas
não é necessário que o usuário esteja autenticado para efetivar a requisição, um exemplo disso
é a classe PainelVagaAction.
As classes HibernateUtil e Util, são classes utilitárias, possuem métodos que podem ser
acessados por quaisquer classes, por isso também não estão associadas a nenhuma outra classe
no diagrama.
A classe JSP é uma classe de constantes, seus atributos são estáticos e finais. Cada
atributo representa o caminho de um arquivo JSP.
A seguir serão explicadas as classes dos casos de uso do PDI e do Agendamento.
Anexo ao trabalho segue o javadoc completo.
25

Figura 6 – Diagrama de Classes

Fonte: Elaborada pelo autor.


26

3.1.2.1- Classes referentes ao PDI

Conforme os Casos de Uso do PDI, foram criadas as classes PDI, Questao e


RespostaQuestao, representando as tabelas do banco de dados.
Para realizar a manipulação dos dados no banco de dados foram criadas as classes
PDIModel e RespostaQuestaoModel. Neste primeiro momento não foi necessário criar uma
classe para manipular os dados referentes as questões, pois elas são fixas e foram inseridas
diretamente no banco de dados.
A classe PDIModel é responsável por buscar os PDIs dos alunos, liberar novos PDIs, e
atualizar suas informações.
A classe RespostaQuestaoModel é responsável por atualizar as respostas dos PDIs. Para
cada pergunta respondida no PDI é realizado um update na tabela resposta_questao.

3.1.2.2- Classes referentes ao Agendamento

Conforme os Casos de Uso do Agendamento, foi necessário criar a classe Agendamento,


para representar a tabela.
Para realizar a manipulação de dados referente ao agendamento foi criada a classe
AgendamentoModel.
A classe AgendamentoModel é responsável por liberar datas de agendamento, buscar as
datas disponíveis, efetivar o agendamento, deletar uma data especifica de agendamento e limpar
toda a agenda.

3.1.3- Visão

Neste subcapitulo serão apresentadas algumas telas desenvolvidas junto com uma
explicação relacionando as telas com o diagrama de classes.

3.1.3.1- Tela do PDI

A Figura 7 apresenta a tela de PDI, construída conforme protótipo. Seu funcionamento


está de acordo com os casos de uso levantados.
27

Figura 7 – Tela do PDI (Visão do aluno)

Fonte: Elaborada pelo autor.

Ao clicar em salvar é submetido o formulário, que aciona o método responder da classe


PDIAction, passando as respostas como parâmetro.
28

pdi_aluno.jsp
<div class="panel-body">
<div>
<s:iterator value="pdis">
<div>
<s:form namespace="/PDI" action="responder">
<input type="hidden" name="pdiId" value="${id}" />
<div class="table-responsive">
<table class="table table-bordered table-striped">
<thead>
<tr>
<th><s:text name="pdialuno.questao.label" /></th>
<th><s:text name="pdialuno.resposta.label" /></th>
</tr>
</thead>
<tbody>
<s:iterator value="respostas" status="respStatus">
<tr>
<td>${questao.questao}</td>
<td><input type="hidden" name="questoes[${respStatus.index}]"
value="${questao.id}" />
<s:if test="questao.fgAberta">
<textarea rows="3" cols="50" name="respostas[${respStatus.index}]"
maxlength="200" >${resposta}</textarea>
</s:if>
<s:else>
<s:if test="questao.valorMaximo != null">
<s:iterator value="questao.listaValores" var="i">
<label>${i}</label>
<s:if test="resposta.equalsIgnoreCase(#i)">
<input type="radio" name="respostas[${respStatus.index}]"
checked="checked" value="${i}" />
</s:if>
<s:else>
<input type="radio" name="respostas[${respStatus.index}]"
value="${i}" />
</s:else>
</s:iterator>
</s:if>
</s:else>
</td>
</tr>
</s:iterator>
</tbody>
<tfoot>
<tr>
<td colspan="2" align="center"><input class="btn-primary"
type="submit" value="<s:text name='pdialuno.salvar.label'/>"
/></td>
</tr>
</tfoot>
</table>
</div>
</s:form>
</div>
</s:iterator>
</div>
</div>
29

O método responder aciona o método salvar respostas, da classe


RespostaQuestaoService, passando como parâmetros o id do PDI, a lista contendo os ids das
questões respondidas e a lista contendo as respostas.
RespostaQuestaoAction.java
/**
* Se o usuario logado possuir o perfil MENTOR redireciona para a
tela
* inicial, caso contrario aciona o servico responsavel por persistir
as
* respostas.
*
* @return Retorna HOME se o usuario logado possuir o perfil MENTOR,
caso
* contrario retorna SUCCESS.
*/
@Action(value = "responder", results = { @Result(name = SUCCESS,
type = REDIRECT_ACTION, params = {
"actionName", INICIAR }) })
public String responder() {
if (getUsuarioLogado().getPerfil() ==
Perfil.MENTOR.ordinal()) {
return HOME;
}
new RespostaQuestaoService()
.salvarRespostas(pdiId, questoes, respostas);
return SUCCESS;
}

O método salvarRespostas, da classe RespostaQuestaoService, percorre as informações


das listas e aciona o método salvarResposta da classe RespostaQuestaoModel, passando como
parâmetros o id do PDI, o id da Questão e o id da Resposta.
30

RespostaQuestaoService.java
/**
* Classe responsável por tratar a informação vinda da Action e acionar o
Model
* para realizar as persistência dos dados.
*
* @author Rafael Cassiano
*
*/
public class RespostaQuestaoService {
/**
* Recebe uma lista contendo os ids das questões, uma lista com as
respostas
* e o id do PDI respondido. Para cada questão contida na lista,
verifica se
* existe uma resposta correpondente. Caso exista uma resposta aciona
o
* model.
*
* @param pdiId
* Id do PDI
* @param questoes
* Lista contendo os ids das questões do PDI
* @param respostas
* Lista contendo as respostas das questões
*/
public void salvarRespostas(long pdiId, List<Long> questoes,
List<String> respostas) {
if (questoes == null || respostas == null) {
return;
}
RespostaQuestaoModel model = new RespostaQuestaoModel();
for (int i = 0; i < questoes.size(); i++) {
if (i >= respostas.size()) {
break;
}
if (respostas.get(i) == null
|| StringUtils.isBlank(respostas.get(i))) {
continue;
}
model.salvarResposta(pdiId, questoes.get(i),
StringUtils.trim(respostas.get(i)));
}
}
}

O método salvarResposta da classe RespostaQuestaoModel abre uma conexão com o


banco de dados e realiza um update na tabela resposta_questao, utilizando os parâmetros
passados para o método.
31

RespostaQuestaoModel.java
/**
* Classe responsável por realizar a persistência dos dados
*
* @author Rafael Cassiano
*
*/
public class RespostaQuestaoModel {
/**
* Atualiza a resposta de acordo com o id do PDI e o id da Questão.
*
* @param pdiId
* Id do PDI
* @param questaoId
* Id da Questão
* @param resposta
* Resposta
*/
public void salvarResposta(long pdiId, Long questaoId, String
resposta) {
EntityManager em = HibernateUtil.getEntityManager();
try {
StringBuilder sb = new StringBuilder();
sb.append(" update resposta_questao set resposta =
:resposta, data_resposta = :dataResposta ");
sb.append(" where pdi_id = :pdiId and questao_id =
:questaoId ");
Query query = (Query)
em.createNativeQuery(sb.toString());
query.setParameter("resposta", resposta);
query.setParameter("pdiId", pdiId);
query.setParameter("questaoId", questaoId);
query.setParameter("dataResposta", new Date());
em.getTransaction().begin();
query.executeUpdate();
em.getTransaction().commit();
} finally {
em.close();
}
}
}

3.1.3.2- Tela do Agendamento

A Figura 8 apresenta a tela do agendamento, construída de acordo com o protótipo. Seu


funcionamento está de acordo com os casos de uso levantados.
32

Figura 8 – Tela do Agendamento (Visão do aluno)

Fonte: Elaborada pelo autor.

Ao confirmar o agendamento de uma reunião é acionado o método agendar da classe


AgendamentoAction passando como parâmetros o id do horário selecionado e o id do aluno.
Esse método apenas aciona o método agendar da classe AgendamentoService, passando
os mesmos parâmetros, que por sua vez aciona o método agendar da classe AgendamentoModel
também passando os mesmos parâmetros.
O método agendar realiza um update na tabela agendamento atribuindo um id de usuário
no registro de agendamento de acordo com o id, mas apenas se o horário ainda não tiver sido
agendado por outro usuário.
33

AgendamentoModel.java
/**
* Método responsável por atribuir um usuário ao horário selecionado.
*
* @param agendamentoId
* Id do horário selecionado
* @param usuarioId
* Id do usuário logado
*/
public void agendar(long agendamentoId, String usuarioId) {
EntityManager em = HibernateUtil.getEntityManager();
try {
StringBuilder sb = new StringBuilder();
sb.append(" update agendamento set usuario_id = :usuarioId ");
sb.append(" where agendamento_id = :agendamentoId and
usuario_id is null ");
Query query = em.createNativeQuery(sb.toString());
query.setParameter("usuarioId", usuarioId);
query.setParameter("agendamentoId", agendamentoId);
em.getTransaction().begin();
query.executeUpdate();
em.getTransaction().commit();
} finally {
if (em.getTransaction().isActive()) {
em.getTransaction().rollback();
}
em.close();
}
}
34

4- RESULTADOS
Nesse capitulo serão apresentados os resultados obtidos. Para capturar as informações
quantitativas de acesso e utilização do sistema foi utilizado o Google Analytics (GOOGLE
ANALYTICS, 2015).

4.1- Utilização

Dia vinte de outubro foi realizada a publicação da versão prévia para que passasse por
um período de avaliação. Esse período de avaliação teve a duração de vinte e um dias,
finalizando então no dia onze de novembro.
Durante esse período o sistema foi acessado por professores e por uma turma do curso
de logística. Tanto os professores quanto os alunos conseguiram utilizar o sistema sem a
necessidade de um treinamento prévio.
Conforme Figura 9, no período de avaliação o sistema foi acessado por 88 usuários,
sendo que alguns desses usuários acessaram mais de uma vez, totalizando 121 sessões, 843
visualizações de página, uma média de 6,97 páginas por sessão, as sessões tiveram duração
média de 11 minutos e 32 segundos. A taxa de rejeição, que representa o percentual de usuários
que não passaram da primeira página do sistema, foi de 9,92%.

Figura 9 – Informações quantitativas de utilização e acesso

Fonte: print screen de um relatório gerado pelo Google Analytics.


35

A Figura 10 apresenta as 10 páginas que tiveram maior número de visualizações. O


tempo médio de visualização por página foi de 1 minuto e 56 segundos, o percentual de saída,
que representa a quantidade saída do site a partir de uma página especifica ou um conjunto de
páginas, foi de 14,35%.

Figura 10 – Informações de utilização por página

Fonte: print screen de um relatório gerado pelo Google Analytics.


36

4.2- Melhorias Encontradas

Durante o período de avaliação não foram encontrados erros ou inconsistências na


utilização do sistema, porém foram levantadas algumas possíveis melhorias:
 Limitar o tamanho dos textos exibidos nas colunas das tabelas, evitando
assim que o layout seja afetado, e fazer com que a informação completa seja exibida ao
passar o ponteiro do mouse em cima da coluna.
 Sincronizar agenda do sistema com a agenda do Google.
 Alterar a funcionalidade de limpeza da agenda para que elimine apenas
os agendamentos posteriores a data corrente.
 Adicionar uma lista de funcionalidades na página de acesso.
 Gerar um aviso sempre que uma reunião for agendada (será resolvido ao
sincronizar com agenda do Google).

Houve a necessidade de criação de um relatório contendo as respostas dos PDIs, por


aluno, para possibilitar a construção dos perfis. Foi desenvolvido cruzando as informações do
R.A do aluno, com as questões e as respostas, sem qualquer filtro, busca apenas as respostas
dos PDIs que foram respondidos. O relatório foi disponibilizado, e foram encontradas as
seguintes melhorias:
 Adicionar coluna final, contendo a observação adicionado pelo mentor.
 Gerar por semestre.
 Permitir filtrar por curso.

Outra possível melhoria seria a migração do sistema para um outro servidor, ou para
uma versão superior desse mesmo servidor. Atualmente o sistema está hospedado no OpenShift,
utilizando a versão gratuita, que tem recursos limitados (OPENSHIFT, 2015). Uma dessas
limitações é o desligamento do banco de dados após 24 horas sem nenhum acesso, causando
um erro, vide Figura 11, quando o sistema tenta realizar uma conexão. Esse erro é momentâneo,
sendo que ao atualizar a página já é possível realizar o acesso normalmente.
37

Figura 11 – Erro de indisponibilidade

Fonte: Elaborada pelo autor.

4.3- Trabalhos Futuros

A Plataforma do Escritório de Carreiras 1.0 é apenas a primeira versão da plataforma,


com isso existem diversas possibilidades de trabalhos futuros, como:
 Desenvolvimento de um jogo que permita capturar o perfil do aluno.
 Integração da plataforma com um sistema de geração de relatórios.
 Desenvolvimento de uma funcionalidade de avaliação automática de
currículos, para que as vagas possam ser facilmente direcionadas.
 Realizar integração da plataforma com o SIGA.
 Aperfeiçoar a forma de acompanhamento semestral.
38

5- SUMÁRIO EXECUTIVO
O Escritório de Carreiras é um projeto da FATEC São José dos Campos e tem como
objetivo aproximar alunos e diplomados do mercado de trabalho, e auxiliá-los a desenvolver
competências e talentos que possam impulsionar seu futuro profissional.
A Plataforma do Escritório de Carreiras 1.0 é responsável pela informatização de parte
dos processos do Escritório de Carreiras, proporciona uma comunicação ágil e efetiva entre os
alunos e a Faculdade, onde os mentores poderão analisar a situação do aluno e melhorar o
contato com empresas. Esta é a principal forma de organizar e distribuir responsabilidades e
informações dentro da instituição acadêmica, possibilitando inclusive, através da extração dos
dados gerados, a construção de perfis para estudo.
Dentre os processos disponíveis na plataforma estão o preenchimento e consulta do
questionário do plano de desenvolvimento individual, cadastramento e disponibilização de
vagas e currículos, e o agendamento de reuniões.
39

REFERÊNCIAS
APACHE STRUTS. Apache Struts 2 Documentation. Disponível em:
https://struts.apache.org/docs/home.html. Acesso em: 15/11/2015.
BOOTSTRAP. Getting started. Disponível em: http://getbootstrap.com/getting-started/.
Acesso em: 15/11/2015.
FATEC SJC. Escritório de Carreiras. Disponível em: http://www.fatecsjc.edu.br/escritorio-
de-carreiras. Acesso em: 19/11/2015.
GOOGLE ANALYTICS. Google Analytics. Disponível em:
https://www.google.com/analytics/. Acesso em: 15/11/2015.
HIBERNATE ORM. Hibernate ORM: Idiomatic persistence for Java and relational
databases. Disponível em: http://hibernate.org/orm/. Acesso em: 15/11/2015.
JQUERY. jQuery: write less, do more. Disponível em: https://jquery.com/. Acesso em:
15/11/2015.
LIQUIBASE. LIQUIBASE. Disponível em:
http://www.liquibase.org/documentation/index.html. Acesso em: 15/11/2015.
OPENSHIFT. Develop, Host, and Scale Your Apps in the Cloud. Disponível em:
https://www.openshift.com/. Acesso em: 15/11/2015.
40

ANEXOS
Anexo 1 – JAVADOC

doc\index.html

Vous aimerez peut-être aussi