uffinder - universidade federal fluminense
TRANSCRIPT
UNIVERSIDADE FEDERAL FLUMINENSE
INSTITUTO DE COMPUTAÇÃO
SISTEMAS DE INFORMAÇÃO
GABRIEL ROLAND GUSSEN
GABRIEL TEIXEIRA LOBO
UFFinder
Niterói
2019
GABRIEL ROLAND GUSSEN
GABRIEL TEIXEIRA LOBO
UFFinder
Trabalho de conclusão de curso
apresentado ao curso de Bacharelado em
Sistemas de Informação, como requisito
parcial para conclusão do curso.
Orientador:
Prof. Dr. Flávio Seixas
Niterói
2019
GABRIEL ROLAND GUSSEN
GABRIEL TEIXEIRA LOBO
UFFinder
Trabalho de conclusão de curso
apresentado ao curso de Bacharelado em
Sistemas de Informação, como requisito
parcial para conclusão do curso. Área de
concentração
Aprovada em 19 de dezembro de 2019
BANCA EXAMINADORA
Niterói
2019
RESUMO
Este estudo analisa o desenvolvimento de um sistema web cujo foco é informar a localização
de uma sala de aula. Com base na dificuldade que os alunos possuem para localizar a sala de
aula, foi desenvolvido um sistema web que busca solucionar esse problema. Para tal, se fez uso
de uma pesquisa para entender essas dificuldades e de outra para estabelecer um comparativo
com aplicações semelhantes ao UFFinder. Com base nos resultados obtidos, foi feita a análise
de requisitos do sistema e, a partir destes, foram feitos os diagramas pertinentes. Para o
desenvolvimento do sistema web, foi usada a linguagem de programação PHP em conjunto
com o framework CodeIgniter e o banco de dados relacional MySQL. Foi desenvolvido um
scraper cujo propósito é obter todas as disciplinas cadastradas no Quadro de Horários da
Universidade Federal Fluminense e popular o banco de dados do UFFinder. Com as
informações fornecidas pelo UFFinder, ficará mais fácil localizar uma sala de aula, evitando
que os alunos percam tempo e conteúdo.
Palavras-chave: Sala de aula. Sistema web. UFFinder.
ABSTRACT
This study analyzes the development of a web system whose focus is to inform the location of
a classroom. Based on the difficulty students have in locating the classroom, a web system was
developed to solve this problem. For this, was used a survey to understand these difficulties and
a research to stablish a comparison with applications similar to UFFinder. Based on the results
obtained, the system requirements analysis was performed and, from these, the relevant
diagrams were made. For the development of the web system, the PHP programming language
was used in conjunction with the CodeIgniter framework and the MySQL relational database.
For the development of the web system, the PHP programming language was used in
conjunction with the CodeIgniter framework and the MySQL relational database. A scraper
was developed with the purpose to obtain all the subjects registered in the Timesheet of the
Fluminense Federal University and populate the UFFinder’s database. With the information
provided by UFFinder, it will be easier to locate a classroom, preventing students from wasting
time and content.
Keywords: Classroom. Web system, UFFinder.
.
LISTA DE ILUSTRAÇÕES
Figura 1 – Respostas da questão 2 da pesquisa ........................................................... 9
Figura 2 – Respostas da questão 3 da pesquisa ........................................................... 9
Figura 3 – Respostas da questão 5 da pesquisa ........................................................... 10
Figura 4 – Tela inicial Nativo UFF ............................................................................. 13
Figura 5 – Página inicial guia de salas da Agrha Consultoria ..................................... 14
Figura 6 – Busca de sala de aula usando o guia de salas da Agrha Consultoria ......... 14
Figura 7 – Telas do aplicativo FindMyClass ............................................................... 15
Figura 8 – Diagrama de casos de uso do UFFinder ..................................................... 21
Figura 9 – Diagrama de atividade, Cadastrar Usuário ................................................. 22
Figura 10 – Diagrama de atividade, Cadastrar Sala ....................................................... 22
Figura 11 – Diagrama de atividade, Buscar Sala ........................................................... 23
Figura 12 – Funcionamento do MVC ............................................................................ 25
Figura 13 - Diagrama de classes do UFFinder .............................................................. 26
Figura 14 – Funcionamento do UFFinder scraper .......................................................... 28
Figura 15 – Tela inicial do UFFinder ............................................................................. 30
Figura 16 – Tela de login do UFFinder .......................................................................... 30
Figura 17 – Tela de cadastro de usuário do UFFinder ................................................... 31
Figura 18 – Tela de resultado de busca do UFFinder..................................................... 32
Figura 19 – Tela de cadastro de sala do UFFinder ........................................................ 32
Figura 20 – Tela com as turmas cadastradas pelo usuário no UFFinder ....................... 33
Quadro 1 - Comparativo entre sistemas semelhantes ................................................... 16
Quadro 2 - Requisitos funcionais ................................................................................. 17
Quadro 3 - Requisitos não funcionais .......................................................................... 19
Quadro 4 - Atividade para o teste de usabilidade do UFFinder ................................... 35
Quadro 5 - Perguntas do SUS usadas no teste do UFFinder ........................................ 35
Tabela 1 - Índices de referência do System Usability Scale ....................................... 34
Tabela 2 - Resultado do teste de usabilidade do UFFinder ......................................... 36
LISTA DE ABREVIATURAS
MVC Model-View-Controller
RF Requisitos funcionais
PHP Hypertext Preprocessor
RNF Requisitos não funcionais
SUS System Usability Scale
UFF Universidade Federal Fluminense
SUMÁRIO
1 INTRODUÇÃO ........................................................................................... 8
2 TRABALHOS RELACIONADOS .............................................................. 12
2.1 Nativo UFF .................................................................................................. 12
2.2 Agrha – Aplicação sem nome ..................................................................... 13
2.3 FindMyClass ................................................................................................ 15
2.4 Comparação dos aplicativos ........................................................................ 15
3 ANÁLISE DO SISTEMA ........................................................................... 17
3.1 Requisitos funcionais e não funcionais ....................................................... 17
3.2 Casos de uso .................................................................................................. 20
3.2.1 Cenários de casos de uso ............................................................................... 20
3.2.2 Diagrama de casos de uso ............................................................................. 20
3.3 Diagramas de atividade ............................................................................... 21
4 PROJETO DO SISTEMA .......................................................................... 24
4.1 Arquitetura geral .......................................................................................... 24
4.2 UFFinder scraper ........................................................................................ 27
5 IMPLEMENTAÇÃO .................................................................................. 29
5.1 Escolha de tecnologias ................................................................................. 29
5.2 Protótipos de telas ........................................................................................ 29
5.3 Teste de usabilidade ..................................................................................... 33
6 CONCLUSÕES .......................................................................................... 36
REFERÊNCIAS .........................................................................................
8
1 INTRODUÇÃO
A ideia do UFFinder surgiu da dificuldade relatada por muitos alunos da Universidade
Federal Fluminense em encontrar as salas de aula onde serão lecionadas as disciplinas nas quais
estão matriculados. Este cenário é particularmente visível nos casos de estudantes recém-
ingressos na instituição. Neste caso, os alunos são inscritos nas disciplinas contidas em um
plano de estudo criado pela própria coordenação, que geralmente se encarrega de também
informar onde elas serão ministradas. Porém, a falta de familiaridade com a estrutura física da
universidade, que só em Niterói possui diversos campus, pode se tornar um grande obstáculo.
O Instituto de Computação geralmente informa, por meio de uma tabela fixada em um
painel localizado no andar térreo de seu principal prédio, as salas onde serão ministradas as
aulas das disciplinas lecionadas por professores do seu corpo docente. No entanto,
especialmente no caso do curso de Sistemas de Informação, que possui em seu currículo
disciplinas de diversos departamentos, dentre eles, Administração, Ciência da Informação,
Direito, Matemática, etc. é comum que a informação sobre os locais das aulas não seja
repassada entre as coordenações. Em alguns casos mais graves, alguns departamentos não
sabem informar com precisão sequer sobre as próprias disciplinas.
Para o estudo, foi realizada uma pesquisa com o auxílio da plataforma Google Forms
com o fim de quantificar o nível de dificuldade encontrada pelos alunos ao tentar localizar suas
salas de aula. Essa pesquisa foi disponibilizada no Facebook, nos grupos UFF Niterói e UFF
SI. Todas as pessoas que participaram da pesquisa são alunos da UFF e a grande maioria faz
parte do curso Sistemas de Informação. Nas Figuras 1 a 3 são exibidas graficamente a proporção
das respostas mais relevantes para o estudo.
9
Figura 1 – Respostas da questão 2 da pesquisa
Fonte: Autoria própria, 2019
Figura 2 – Respostas da questão 3 da pesquisa
Fonte: Autoria própria, 2019
A Figura 2 mostra a dificuldade dos alunos em localizar a sala de aula dentro do próprio
instituto ou departamento. Apenas uma pequena parte, 15%, tem bastante ou muita dificuldade
em localizar a sala, enquanto que a grande maioria, 85%, tem nenhuma, média ou pouca
30%25%
30%
5% 10%0%
10%
20%
30%
40%
NENHUMA DIFICULDADE
POUCADIFICULDADE
DIFICULDADEMÉDIA
BASTANTEDIFICULDADE
MUITADIFICULDADE
Questão 4: De 1 a 5, você já teve dificuldade
em localizar a sala de aula de alguma
disciplina dentro do seu próprio instituto ou
departamento?
10
dificuldade em localizar a sala. Isso demonstra que, quando se trata do instituto ou departamento
no qual o aluno faz parte, localizar a sala é uma tarefa mais fácil. Uma das razões para isso é o
conhecimento prévio que os alunos possuem sobre o funcionamento de seu instituto o que torna
mais fácil a aquisição das informações que o aluno necessita.
A Figura 3 mostra a dificuldade dos alunos de localizarem a sala em um instituto ou
departamento diferente do dele. A grande maioria, 80%, tem bastante ou muita dificuldade em
localizar a sala, enquanto que, 20%, tem nenhuma ou uma dificuldade média em localizar a
sala. A última pergunta do questionário reforça essa ideia. Foi perguntado aos alunos a pior
experiência pela qual eles passaram ao tentar localizar uma sala de aula. Uma das respostas
dada a essa questão foi a seguinte: “Quando era necessário realizar uma disciplina em um
campus de pouco acesso, como o Direito, era praticamente impossível ter o número da sala de
antemão. O que ocorria era de toda a turma se juntar no anexo e aguardar até a professora da
disciplina chegar para definir qual seria a sala.” As respostas obtidas na última pergunta do
questionário evidenciam claramente as dificuldades enfrentadas pelos alunos.
Figura 3 - Respostas da questão 5 da pesquisa
Fonte: Autoria própria, 2019
A Universidade Federal Fluminense conta com a ferramenta Conexão UFF, que pode
ser usada, tanto por alunos quanto por professores, para informar onde será lecionada uma aula.
No entanto, os alunos podem consultar apenas páginas de turmas nas quais estão inscritos, o
10% 0% 10%25%
55%
0%10%20%30%40%50%60%
NENHUMADIFICULDADE
POUCADIFICULDADE
DIFICULDADEMÉDIA
BASTANTEDIFICULDADE
MUITADIFICULDADE
Questão 5: De 1 a 5, você já teve ou tem
alguma dificuldade em localizar a sala de aula
de alguma disciplina em outros institutos ou
departamentos?
11
que pode ser um problema no caso de inscrições realizadas durante o período de ajustes, tendo
em vista que o sistema demora a atualizar o plano de estudos. Além disso, o Conexão UFF
também conta com baixa adesão de ambas as partes.
Para desenvolver o UFFinder foram necessárias a realização de algumas etapas. A etapa
de coleta de dados, desenvolvimento do sistema, projeto do sistema e a implementação. Essas
etapas foram divididas em capítulos que são tratadas neste estudo. São eles: o Capítulo 2
descreve os trabalhos relacionados. No Capítulo 3, é feita a análise do sistema, descrevendo os
requisitos funcionais e não funcionais, analisando casos de uso e diagramas de casos de uso e
de atividades. No Capítulo 4, com base na análise do sistema, é descrita a escolha arquitetural
do sistema e o desenvolvimento da ferramenta UFFinder scraper. No Capítulo 5, é descrito as
escolhas das tecnologias necessárias para a implementação do sistema, os protótipos de telas e
é analisado o teste de usabilidade feito no UFFinder. No Capítulo 6, são discutidas as
conclusões do estudo e são sugeridos trabalhos futuros.
12
2 TRABALHOS RELACIONADOS
Como parte do estudo, foram selecionadas e testadas três aplicações com
funcionalidades semelhantes a proposta do UFFinder e, no final, foi feito um comparativo entre
essas aplicações e o UFFinder. Os assuntos foram divididos nas subseções: Nativo UFF
(Subseção 2.1), Agrha – aplicativo sem nome (Subseção 2.2), FindMyClass (Subseção 2.3) e a
comparação de aplicativos (Subseção 2.4).
2.1 Nativo UFF
Foi desenvolvido por Tesla Jr. e Papo Design, com apoio da Agrha Consultoria,
empresas juniores alocadas na UFF e está apenas disponível para Android. O Nativo UFF
possui funcionalidades de conexão ao plano de estudo do aluno através do IDUFF, localização
das salas de aula de acordo com o plano de estudo, contagem de faltas, localização de
professores e fluxograma dos cursos. Com exceção do plano de estudo, todas as outras
informações são imputadas manualmente pela a equipe de desenvolvimento. Não há
funcionalidade que permita ao aluno procurar uma sala de aula específica usando um campo de
busca. No entanto, nenhuma das funcionalidades apresentou o comportamento esperado
durante os testes realizados. A tela inicial do Nativo UFF com suas funcionalidades pode ser
vista na Figura 4.
13
Figura 4 - Tela inicial Nativo UFF
Fonte: Autoria própria, 2019
2.2 Agrha – Aplicação sem nome
A Agrha Consultoria possui um sistema web com funcionalidades semelhantes ao
UFFinder, a tela inicial do sistema pode ser vista na Figura 5. Ele possui a funcionalidade de
mostrar a sala de aula por meio de um campo de busca (Figura 6), mas possui uma relação
limitada de disciplinas. Está disponibilizado no link https://agrhaconsultoria.wixsite.com/guia.
14
Figura 5 - Página inicial guia de salas da Agrha Consultoria
Fonte: Autoria própria, 2019
Figura 6 - Busca de sala de aula usando o guia de salas da Agrha Consultoria
Fonte: Autoria própria, 2019
15
2.3 FindMyClass
O aplicativo FindMyClass (Figura 7), disponível para IOS e Android, possui as
seguintes funcionalidades: busca por campus ou prédio, trajeto entre localização atual do
usuário e a localização do destino em um mapa. Todos os dados são imputados pela equipe de
desenvolvimento. Funciona somente nos EUA.
Figura 7 - Telas do aplicativo FindMyClass
Fonte: Autoria própria, 2019
2.4 Comparação dos aplicativos
O Quadro 1 apresenta um comparativo entre UFFinder e das demais aplicações
vistas nesta seção, com base em suas principais funcionalidades, sendo elas: cadastro de sala;
cadastro de usuário; endereço web; aplicativo mobile; mapa; busca sem login; campo de busca;
responsividade.
.
16
Quadro 1 - Comparativo entre sistemas semelhantes
Sistemas UFFinder Nativo UFF Agrha FindMyClass
Cadastro de sala
Cadastro de usuário
Aplicativo web
Aplicativo mobile
Mapa
Busca sem login
Campo de busca
Responsivo
Dentre todos os sistemas testados e pesquisados, o que mais apresentou semelhanças
com o UFFinder foi o guia de salas da Agrha Consultoria. O sistema da Agrha Consultoria
possui funcionalidades semelhantes as do UFFinder. Como, por exemplo, a busca sem precisar
efetuar login. O FindMyClass, apesar de permitir a busca sem efetuar o login, difere em quase
todos os outros aspectos. Ele não permite a busca por salas, somente busca por instituições e
prédios. O Nativo UFF, apesar de fazer uma comunicação com o plano de estudo do aluno, ele
não permite uma busca de salas específica, grande parte das funcionalidades anunciadas, não
estavam funcionando corretamente em nossos testes. Uma grande diferença UFFinder com
relação as outras aplicações aqui citadas, é que apenas o UFFinder não depende de uma equipe
de desenvolvimento para imputar dados manualmente. O banco de dados de salas de aula é
mantido pelos alunos.
17
3 ANÁLISE DO SISTEMA
Neste capítulo é feita a análise do sistema, ou seja, são descritos os requisitos funcionais
e não funcionais (Subseção 3.1), são analisados os casos de uso e o diagrama de casos de uso
que foi obtido com base nos requisitos do sistema (Subseção 3.2) e os diagramas de atividades
das principais funcionalidades do sistema (Subseção 3.3).
3.1 Requisitos funcionais e não funcionais
Um requisito funcional é aquele que especifica uma função que o sistema ou
componente deve ser capaz de realizar. Estes são requisitos de software que definem o
comportamento do sistema, ou seja, o processo ou transformação que componentes de software
ou hardware efetuam sobre as entradas para gerar as saídas. Esses requisitos capturam as
funcionalidades sob o ponto de vista do usuário. Os requisitos funcionais estão listados no
Quadro 2.
Um requisito não funcional de software é aquele que descreve não o que o sistema fará,
mas como ele fará. Assim, por exemplo, têm-se requisitos de desempenho, requisitos da
interface externa do sistema, restrições de projeto e atributos da qualidade. A avaliação dos
requisitos não funcionais é feita, em parte, por meio de testes, enquanto que outra parte é
avaliada de maneira subjetiva. Os requisitos não funcionais estão listados no Quadro 3.
Quadro 2 - Requisitos funcionais (continua)
ID Descrição
RF1 O sistema deverá cadastrar usuário, a fim de fornecer diferentes níveis de acesso
(visitante, usuário, administrador).
RF2 Como visitante, o sistema deverá permitir somente a consulta de sala de aula, a
fim de fornecer a informação ao usuário.
18
Quadro 2 - Requisitos funcionais (conclusão)
ID Descrição
RF3 Como usuário cadastrado, o sistema deverá permitir a consulta de sala de aula,
a fim de fornecer a informação ao usuário.
RF4 Como usuário cadastrado, o sistema deverá permitir o cadastro de salas de aula
a fim de fornecer dados ao sistema.
RF5 Como usuário cadastrado, o sistema deverá permitir o reporte de erros, a fim de
manter a confiabilidade dos dados.
RF6
Como usuário cadastrado, o sistema deverá permitir a edição das salas de aulas
cadastradas pelo próprio usuário, a fim de manter a confiabilidade dos dados.
RF7 Como usuário cadastrado, o sistema deverá permitir a edição dos próprios dados
do usuário, a fim de manter os dados atualizados.
RF8 Como administrador, o sistema deverá permitir o cadastro de salas de aula a fim
de fornecer dados ao sistema.
RF9
Como administrador, o sistema deverá permitir a edição das salas de aula
cadastradas, a fim de manter a confiabilidade dos dados.
RF10 Como administrador, o sistema deverá permitir averiguação dos erros
reportados, a fim de manter a confiabilidade dos dados.
RF11 Como administrador, o sistema deverá permitir a consulta de sala de aula, a fim
de fornecer a informação ao usuário.
RF12 Como administrador, o sistema deverá permitir a alteração de seus próprios
dados cadastrais, a fim de manter os dados atualizados.
RF13 Como administrador, o sistema deverá permitir a geração de um relatório com
todas as salas do curso.
19
Quadro 3 - Requisitos não funcionais
ID Descrição
RNF1
Usabilidade
O sistema deverá ficar disponível 99% do tempo nos dias
úteis, das 7h às 22h.
RNF2
Eficiência
O sistema deverá disponibilizar, em condições de pico de uso
que, geralmente, ocorrem nas primeiras semanas de cada
período, 99.9% de sua carga.
RNF3
Eficiência
O sistema deverá garantir a notificação dos erros que foram
reportados pelos usuários cadastrados, ao administrador, a fim
de agilizar o processo de averiguação.
RNF4
Interoperabilidade
O sistema deverá ser capaz de validar dados através do e-mail
@xx.uff.br.
RNF5
Confiabilidade
A cada 1000 operações, o sistema não pode apresentar falhas
em não mais do 0,5%.
RNF6
Integridade
O sistema não deverá permitir que usuário cadastrado veja
dados de outros usuários cadastrados.
RNF7
Integridade
O sistema não deverá permitir que visitante veja dados de
usuários cadastrados.
RNF8
Usabilidade
O sistema deverá permitir que uma busca seja feita em menos
de 3 minutos.
RNF9
Usabilidade
O sistema deverá permitir que o cadastro de usuários seja feito
em no máximo 5 minutos.
RNF10
Portabilidade
O sistema deverá poder ser utilizado em qualquer navegador,
em computadores e em celulares.
20
3.2 Casos de uso
3.2.1 Cenários de caso de uso
Abaixo são descritos os dois principais cenários de casos de uso do sistema: usuário faz
cadastro da sala de aula e o usuário faz a busca por uma sala de aula no sistema.
Cenário 1: Usuário faz cadastro da sala de aula.
Usuário cadastrado no sistema acessa o sistema, faz login, seleciona o código da
disciplina, o sistema preenche automaticamente o nome da disciplina, o usuário coloca o
número da turma, o número da sala, campus e o prédio. O sistema valida as informações e as
salva em seu banco de dados.
Cenário 2: Usuário tenta localizar sala.
Usuário cadastrado ou não acessa o sistema, seleciona o menu busca, informa ao sistema
o código da disciplina e a turma. O sistema faz a busca e retorna na tela o resultado.
3.2.2 Diagrama de casos de uso
O diagrama de Casos de Uso do UFFinder (Figura 8) foi obtido através da análise dos
requisitos funcionais, requisitos não funcionais e dos cenários de casos de uso.
Ele traz as princinpais funcionalidades do sistema. Ele descreve o que o usuário
cadastrado e não cadastrado podem fazer. Por exemplo, o usuário cadastrado pode procurar
sala, cadastrar uma sala, fazer login no sistema. Já o usuário não cadastrado só pode se
cadastradar no sistema ou procurar uma sala. Ele também evidencia a necessidade de
subsistemas para validar o usuário e salas cadastradas no sistema.
21
Figura 8 - Diagrama de casos de uso do UFFinder
Fonte: Autoria própria, 2019
3.3 Diagramas de atividade
Um diagrama de atividade é essencialmente um gráfico de fluxo, mostrando o fluxo de
controle de uma atividade para outra, ele ilustra graficamente como será o funcionamento do
software (em nível micro ou macro), como será a execução de alguma de suas partes, como será
a atuação do sistema na realidade de negócio na qual ele está inserido. Abaixo estão os
diagramas de atividade das principais funcionalidades do sistema:
A Figura 9 demonstra como é feito o cadastro de usuário. O usuário acessa o sistema,
pede para se cadastrar e o sistema retorna a tela de cadastro para o usuário. Uma função
importante do sistema é a verificação de usuário. Se o usuário já possui um cadastro, o sistema
deve informa que o usuário já está cadastrado e deve perguntar se ele deseja recuperar a senha.
22
Figura 9 - Diagrama de atividade, Cadastrar Usuário
Fonte: Autoria própria, 2019
A Figura 10 demonstra como o cadastro de sala é feito. O usuário, após realizar login
no sistema, acessa a página de cadastro de salas, preenche os dados e clica em “cadastrar sala”.
Se a sala a ser cadastrada já tenha sido cadastrada pelo mesmo usuário, o sistema
pergunta se ele deseja editar o cadastro já existente. Caso tenha sido cadastrada por outro
usuário, o sistema pergunta se ele tem certeza que deseja cadastrar aquela sala. No final da
sequência, a sala tem seu cadastro realizado ou atualizado.
Figura 10 - Diagrama de atividade, Cadastrar Sala
Fonte: Autoria própria, 2019
23
A Figura 11 demonstra como a busca de sala é feita. Por exemplo, o usuário deseja
localizar a sala de Cálculo I, ele acessa o sistema através da paginá inicial, faz a busca pela
disciplina desejada, o sistema retorna para o usuário uma página com o resultado da busca. Caso
o sistema retorne uma busca sem resultados, ele deve perguntar ao usário se ele quer cadastradar
a sala. Em caso positivo, o sistema deve vefiricar se o usuário está logado.
Figura 11 - Diagrama de atividade, Buscar Sala
Fonte: Autoria própria, 2019
24
4 PROJETO DO SISTEMA
Neste capítulo será descrita a escolha do padrão arquitetural do sistema (Subseção 4.1),
a necessidade de desenvolvimento de uma ferramenta para popular o banco de dados com as
diversas disciplinas diferentes e será descrito o digrama de classes o UFFinder (Subseção 4.2).
4.1 Arquitetura geral
O UFFinder segue o padrão arquitetural MVC (Model-view-controller), bastante
difundido entre aplicações web, pois favorece a manutenibilidade de código, o reuso de
componentes e a escalabilidade da aplicação. O MVC é implementado por diversas
frameworks, nas mais variadas linguagens de programação, o que facilitou a escolha de uma
tecnologia que suprisse as necessidades do projeto.
MVC é um padrão de arquitetura de software que separa a aplicação em três camadas.
A camada de interação do usuário (view), a camada de manipulação dos dados (model) e a
camada de controle (controller). Elas podem ser definidas da seguinte forma:
• A camada model é responsável pela leitura e escrita dos dados e de suas
validações, ou seja, é responsável pela manipulação de dados.
• A camada view é responsável pela exibição dos dados, por meio de uma html ou
xhtml, ou seja, é a camada de interação com o usuário.
• A camada controller é responsável por todas as requisições dos usuários. Seus
métodos são responsáveis por uma página, controlando qual model usar e qual
view será mostrado ao usuário.
O funcionamento do MVC é demonstrado na Figura 12.
25
Figura 12 - Funcionamento do MVC
Fonte: Autoria própria, 2019
O diagrama de classes do UFFinder (Figura 13) apresenta todas as classes
implementadas na camada de model e controller. No CodeIgniter, a camada de view não é
implementada através de classes e, portanto, esta não está representada no diagrama.
Na camada de model, estão presentes classes cujos métodos se relacionam diretamente
com o banco de dados. Com exceção da classe LoginModel, criada com o fim de separar os
métodos relacionados ao login da classe UsuariosModel, todas as classes da camada de model
estão diretamente relacionadas à uma tabela no banco de dados.
Na camada de controller, são implementadas classes cujos métodos realizam as regras
de negócio. A classe Home tem um único método, index, responsável pelo carregamento da
página inicial do sistema. As classes Login, Turmas e Usuarios estão relacionadas
exclusivamente a seus equivalentes da camada de model e possuem métodos relacionados ao
CRUD e validação. Por fim, a classe Salas, embora semelhante as anteriores, também carrega
as classes CampusModel, DisciplinasModel e PrediosModel, visto que essas entidades são
manipuladas apenas em conjunto com a classe SalasModel.
27
4.2 UFFinder scraper
Uma das principais características desejadas para o UFFinder em sua concepção, era a
presença de todas as disciplinas oferecidas pela Universidade Federal Fluminense, assim como
todas as turmas cadastradas, em seu banco de dados.
No entanto, como essa informação não se encontra disponível oficialmente de forma
compilada em nenhum canal público, teve-se a ideia de desenvolver, paralelamente ao
UFFinder, uma aplicação de web scraping, com o intuito de recuperar essas informações do
quadro de horários da UFF (disponível em: https://app.uff.br/graduacao/quadrodehorarios).
Para tanto, o UFFinder scraper conta com dois scripts, escritos em Python. O principal,
scraper.py, com o auxílio da biblioteca BeautifulSoup, realiza o parse do conteúdo HTML da
página do quadro de horários a fim de buscar e armazenar em uma lista o nome de cada
departamento contido no dropdown pertinente presente na página.
O algoritmo então itera a lista gerada, realizando requisições passando como parâmetro,
através da URL do quadro de horários, o código do departamento, o período desejado e o
número da página. É realizado o parse no conteúdo da tabela de disciplinas da nova página
acessada pelo scraper, a fim de armazená-las em uma segunda lista. Enquanto as requisições a
um determinado departamento continuarem retornando um objeto HTML, o código realiza uma
nova requisição, apenas incrementando o contador da página, até que todas as turmas de todas
as disciplinas do departamento iterado sejam recuperadas, para então seguir para o próximo
departamento.
A Figura 14 mostra a requisição feita pelo quadro de horários da UFF e os parâmetros
relavantes, vistos atráves da aba network das ferramentas de desenvolvedor do navegador
Google Chrome.
28
Figura 14 - Funcionameto do UFFinder scraper
Fonte: Autoria própria, 2019
Por fim, os dados são armazená-las de forma estruturada em um arquivo do tipo JSON.
Um segundo script, db_connect.py, tem função secundária e atua para inserir os dados
coletados pelo scraper.py no banco de dados do UFFinder.
29
5 IMPLEMENTAÇÃO
Neste capítulo é discutido as tecnologias usadas para a implementação do sistema
(Subseção 5.1), os protótipos de telas (Subseção 5.2) e o teste de usabilidade (Subseção 5.3)
5.1 Escolha de tecnologias
A linguagem escolhida para desenvolver o UFFinder foi o PHP, exclusivamente pela
escolha da framework CodeIgniter.
A escolha do CodeIgniter se deve principalmente a sua simplicidade, sendo
consideravelmente menor e de mais fácil implementação, comparada a outras frameworks
disponíveis no mercado e, no entanto, sendo bastante robusta do ponto de vista de integridade.
Como banco de dados, foi escolhido o MySql, que possui integração nativa com o
CodeIgniter, e tem implantação igualmente fácil.
Para o desenvolvimento do UFFinder scraper, foi utilizada a linguagem Python, que em
muito graças a biblioteca BeautifulSoup, é bastante difundida no desenvolvimento de scrapers
em geral.
Para o versionamento de código foi utilizado o Git, estando o UFFinder e UFFinder
scraper armazenados em repositórios no GitHub (disponíveis em: https://github.com/Gabriel-
Lobo/UFFinder e https://github.com/Gabriel-Lobo/UFFinder-Scraper).
5.2 Protótipos de telas
Na Figura 15 é demonstrada a tela inicial do UFFinder. O usuário logado ou não, ao
tentar procurar uma sala no sistema, como descrito no diagrama de atividade Buscar Sala
(Figura 11), encontrará esta tela ao acessar o sistema.
30
Figura 15 - Tela inicial UFFinder
Fonte: Autoria própria, 2019
Na Figura 16 é demonstrada a tela de login do UFFinder. Esta tela será mostrada ao
usuário não logado que está, por exemplo, tentado cadastrar uma sala, como descrito no
diagrama de atividade Cadastrar Sala (Figura 10).
Figura 16 - Tela de login UFFinder
Fonte: Autoria própria, 2019
31
Na Figura 17 é demonstrada a tela de cadastro de usuário. Esta tela será mostrada ao
usuário que quer se cadastrar no sistema, como demonstrado no diagrama de atividade
Cadastrar Usuário (Figura 9).
Figura 17 - Tela de cadastro de usuário do Uffinder
Fonte: Autoria própria, 2019
Na Figura 18 é demonstrada a tela de resultado de busca do UFFinder. Esta tela será
mostrada ao usuário quando ele fizer uma busca no sistema, como demonstrado no diagrama
de atividade Buscar Sala (Figura 11). Ao clicar na disciplina desejada, as salas cadastradas com
suas diferentes turmas são mostradas na tela.
32
Figura 18 - Tela de resultado da busca do UFFinder
Fonte: Autoria própria, 2019
A Figura 19 demonstra a tela de cadastro de sala do sistema. Essa tela será mostrada
quando o usuário logado no sistema decidir cadastrar uma sala, como demonstrado no diagrama
de atividade Cadastrar Sala (Figura 10).
Figura 19 - Tela de cadastro de sala do UFFinder
Fonte: Autoria própria, 2019
A Figura 20 demonstra a tela de salas cadastradas pelo usuário. Esta tela permite ao
usuário que ele edite ou apague as informações das salas cadastradas por ele.
33
Figura 20 - Tela com as salas cadastradas pelo usuário no UFFinder
Fonte: Autoria Própria, 2109
5.3 Teste de usabilidade
Para o teste de usabilidade foi o escolhido o método System Usability Scale (SUS). Ele
foi criado por John Brooke, é um método quantitativo, cientificamente apurado e não é longo
para o usuário nem para o pesquisador. Pode ser usado para avaliar softwares, hardwares,
aplicações e qualquer outro tipo de interface.
O System Usability Scale, através de um questionário de dez perguntas, ajuda a avaliar
três critérios: efetividade, eficiência e satisfação. Cada pergunta é respondida na escala de
Likert, ou seja, ela especifica o nível de concordância com uma certa afirmação. No caso do
SUS, usa-se a escala de 1 a 5, onde 1 significa “discordo completamente” e 5 significa
“concordo completamente”.
Para avaliar o sistema, o método usa uma pontuação que é calculada da seguinte forma:
para as respostas ímpares (1, 3, 5, 7, 9), é subtraído 1 da pontuação respondida pelo usuário;
para as respostas pares (2, 4, 6, 8, 10), a pontuação respondida pelo usuário é usada para subtrair
de 5, ou seja, se foi respondido 3, a pontuação contabilizada será 2. No final, todas as pontuação
são somadas e multiplicadas por 2,5, gerando o resultado do teste.
34
Para avaliar se o sistema tem uma boa usabilidade, o SUS possui índices de referência
que podem ser usados para comparar com o resultado obtido no teste. O índice completo pode
ser visto na Tabela 1.
Tabela 1 - Índices de referência do System Usability Scale
Pontuação Usabilidade
< 60 Inaceitável
60 - 70 Aceitável
70 - 80 Boa
80 - 90 Excelente
>90 Melhor usabilidade possível
Fonte: SUS - A quick and dirty usability scale
Por ser um sistema maduro, a comunidade científica conseguiu estabelecer a média de
68 pontos. Qualquer resultado abaixo disso, considera que o sistema tem sérios problemas de
usabilidade.
Para o teste do UFFinder, foram selecionados cinco alunos, para os quais foi enviado
um e-mail, como pode ser visto no Quadro 5, contendo uma pequena introdução do sistema e a
atividade que eles teriam que realizar. Após a realização da tarefa, foi pedido a eles que
respondessem a um formulário no Google Forms (disponível em:
https://forms.gle/uychAEErmqxxzJ466). Neste formulário estão as dez perguntas do SUS
usadas no teste. No Quadro 5, estão descritas todas as perguntas usadas no teste.
35
Quadro 4 - Atividade para teste de usabilidade do UFFinder
Teste de usabilidade UFFinder
Olá, participante, obrigado por fazer parte do teste de usabilidade do UFFinder. Nossa sessão
durará cerca de 15 minutos e prosseguirá de seguinte forma: o sistema será apresentado a
vocês e, após essa breve apresentação, será pedido que vocês realizem uma atividade. Não
poderemos tirar nenhuma dúvida enquanto você realiza a atividade e, ao fim da atividade,
responda a um formulário com 10 perguntas simples que pode ser encontrado no link
https://forms.gle/Xpdp2S82mZnVypMR9. Com esse teste, queremos descobrir se há algum
problema com a interface do sistema que dificulte o seu uso.
Atividade: Tente cadastrar uma sala de aula no site do UFFinder. Disponível no link
http://uffinder.herokuapp.com/.
Quadro 5 - Perguntas do SUS usadas no teste do UFFinder
Perguntas do teste de usabilidade do UFFinder
Pergunta 1 Eu acho que gostaria de usar esse sistema com frequência.
Pergunta 2 Eu acho o sistema desnecessariamente complexo.
Pergunta 3 Eu achei o sistema fácil de usar.
Pergunta 4 Eu acho que precisaria de ajuda de um técnico para usar o sistema.
Pergunta 5 Eu acho que as várias funções do sistema estão muito bem integradas.
Pergunta 6 Eu acho que o sistema apresenta muita inconsistência.
Pergunta 7 Eu imagino que as pessoas aprenderão como usar esse sistema rapidamente.
Pergunta 8 Eu achei o sistema atrapalhado de usar.
Pergunta 9 Eu me senti confiante ao usar o sistema.
Pergunta 10 Eu precisei aprender várias coisas novas antes de conseguir usar o sistema.
A Tabela 2 traz as pontuações individuais obtidas no teste e o resultado calculado de
todos os participantes do teste.
36
Tabela 2 - Resultado do teste de usabilidade do UFFinder
Itens Participante
1
Participante
2
Participante
3
Participante
4
Participante
5
Pergunta 1 5 (5 -1 = 4) 5 (5 -1 = 4) 5 (5 -1 = 4) 5 (5 -1 = 4) 5 (5 -1 = 4)
Pergunta 2 1 (5 - 1 = 4) 1 (5 - 1 = 4) 1 (5 - 1 = 4) 1 (5 - 1 = 4) 1 (5 - 1 = 4)
Pergunta 3 5 (5 - 1 = 4) 5 (5 -1 = 4) 5 (5 -1 = 4) 5 (5 -1 = 4) 5 (5 -1 = 4)
Pergunta 4 1 (5 - 1 = 4) 1 (5 - 1 = 4) 1 (5 - 1 = 4) 1 (5 - 1 = 4) 1 (5 - 1 = 4)
Pergunta 5 3 (3 -1 = 2) 4 (4 - 1 = 3) 5 (5 -1 = 4) 3 (3 -1 = 2) 4 (4 - 1 = 3)
Pergunta 6 1 (5 - 1 = 4) 1 (5 - 1 = 4) 1 (5 - 1 = 4) 2 (5 - 2 = 3) 2(5 - 2 = 3)
Pergunta 7 1 (5 - 1 = 4) 5 (5 -1 = 4) 2 (2 -1 = 1) 5 (5 -1 = 4) 5 (5 -1 = 4)
Pergunta 8 1 (5 - 1 = 4) 1 (5 - 1 = 4) 2 (5 - 2 = 3) 2(5 - 2 = 3) 1 (5 - 1 = 4)
Pergunta 9 1 (5 - 1 = 4) 5 (5 -1 = 4) 4 (4 -1 = 3) 5 (5 -1 = 4) 4 (4 - 1 = 3)
Pergunta 10 1 (5 - 1 = 4) 1 (5 - 1 = 4) 1 (5 - 1 = 4) 1 (5 - 1 = 4) 1 (5 - 1 = 4)
Total 38x2,5=95 39x2,5= 97,5 35x2,5=87,5 36x2,5=90 38x2,5 = 95
Analisando os resultados individuais, conclui-se que o UFFinder obteve pontuação igual
ou superior a 87,5 pontos. Comparando a pontuação individual com os índices mostrados na
Tabela 1, a aplicação atingiu a classificação de “excelente” ou “melhor usabilidade possível”.
Somando todos os resultados e dividindo pelo número de participantes, obteve-se a média de
93 pontos, o que coloca o sistema na categoria de melhor usabilidade possível.
37
6 CONCLUSÕES
Este estudo apresentou uma solução para a dificuldade que os alunos possuem em
localizar a sala de aula, seja em seu próprio campus ou em um campus diferente. A pesquisa
realizada no início do estudo indica que a falta de um sistema ou método de distribuição da
informação, onde o aluno possa identificar corretamente o local da sala, pode fazer com que o
aluno se sinta desmotivado, perca conteúdo e, assim, prejudicando seu desempenho acadêmico.
Apesar de existirem soluções semelhantes no mercado e dentro da universidade, nenhuma
dessas soluções cumprem com eficiência o que propõem ou suprem a necessidade apontada no
estudo. Um sistema como o UFFinder pode ajudar a mitigar essa deficiência que a universidade
possui, além de facilitar o dia a dia do estudante da universidade. Os resultados alcançados
com o teste de usabilidade do sistema indicam que é um sistema simples e de baixa
complexidade, possibilitando o uso por qualquer pessoa, seja ela expert na área de tecnologia
da informação ou uma pessoa leiga.
O UFFinder já está funcional, no entanto, outras funcionalidades são vistas como
necessárias, como: avaliação de salas cadastradas, onde um usuário poderá avaliar as salas
cadastradas no sistema, a fim de determinar se aquela informação está ou não correta. Caso uma
sala cadastrada receba muitos votos negativos, ela será ocultada dos resultados de busca e o
administrador será notificado para decidir que ação deverá ser tomada. Resolução de conflitos,
para que, em casos onde haja mais de uma sala cadastrada para um mesmo conjunto de
turma/disciplina e a funcionalidade de avaliação de salas cadastradas não seja suficiente para
determinar qual informação está correta, o administrador do sistema será notificado para
intervir. Plano de estudos, que permitirá que usuários cadastrem em seu perfil as
disciplinas/turmas que desejarem, a fim de receber notificações sobre novas salas cadastradas
ou atualizações nos cadastros existentes. Recuperação de senha, caso o usuário esqueça seus
dados que foram cadastrados.
A partir deste, poderiam ser desenvolvidos outros trabalhos com o intuito de estudar a
viabilidade da integração das funcionalidades propostas pelo UFFinder com a infraestrutura já
existente nos sistemas de informação da universidade, como por exemplo, conectar o UFFinder
diretamente ao banco de dados da universidade, permitindo assim que informações referentes
a disciplinas e turmas sejam atualizadas automaticamente. Da mesma forma, outra possibilidade
seria a integração do UFFinder aos sistemas UFF Mobile ou Conexão UFF, que já contam com
38
o plano de estudos do aluno. Desta forma, o aluno teria em mãos uma plataforma mais completa
e não teria a necessidade de fazer uso de mais um sistema.
39
REFERÊNCIAS
GUEDES, Gilleanes T. A. UML 2: uma abordagem prática. 2ª edição. São Paulo: Novatec,
2011.
MITCHELL, Ryan. Web Scraping Com Python: Coletando Mais Dados Da Web Moderna. 2ª
edição. São Paulo: Novatec, 2019.
PRESSMAN, Roger S; MAXIM, Bruce R. Engenharia de Software: Uma Abordagem
Profissional. 8ª edição. Porto Alegre: AMGH, 2016.
BROOKE, John. SUS-A quick and dirty usability scale. Inglaterra: Redhatch Consulting Ltd.
Disponível em: <https://hell.meiert.org/core/pdf/sus.pdf>. Acesso em: 2 dez. 2019.
ALFF, Francisco. O que são requisitos funcionais e requisitos não funcionais? 2017.
Disponível em: < https://analisederequisitos.com.br/requisitos-funcionais-e-requisitos-nao-
funcionais-o-que-sao/>. Acesso em: 15 abr. 2019
MEDEIROS, Higor. Introdução ao Padrão MVC, 2013. Disponível em:
<https://www.devmedia.com.br/introducao-ao-padrao-mvc/29308>. Acesso em: 2 dez. 2019.
TEIXEIRA, Fabrício. O que é o SUS (System Usability Scale) e como usá-lo em seu site,
2015. Disponível em: < https://brasil.uxdesign.cc/o-que-%C3%A9-o-sus-system-usability-
scale-e-como-us%C3%A1-lo-em-seu-site-6d63224481c8>. Acesso em: 2 dez. 2019.
CodeIgniter, CodeIgniter at a Glance, 2019. Disponível em:
<https://codeigniter.com/user_guide/overview/at_a_glance.html>. Acesso em: 26 jun. 2019
VIEIRA, Jon. Teste de usabilidade: tudo o que você precisa saber! 2019. Disponível em:
< https://medium.com/aela/teste-de-usabilidade-o-que-voc%C3%AA-precisa-saber-
39a36343d9a6>. Acesso em: 1 dez. 2019.
DANTAS, André. Um rápido estudo de prototipagem, 2018. Disponível em:
< https://brasil.uxdesign.cc/uma-r%C3%A1pido-estudo-de-prototipagem-81a1b300471b>.
Acesso em; 27 jun. 2019.
IBM KNOWLEDGE CENTER. Diagrama de Atividades, 2019. Disponível em:
< https://www.ibm.com/support/knowledgecenter/pt-br/
SS8PJ7_9.6.0/com.ibm.xtools.modeler.doc/topics/cactd.html> Acesso em: 29 jun. 2019.
40
NATIVO UFF. Nativo UFF, 2018. Disponível em:
<https://play.google.com/store/apps/details?id=br.com.nativouff.app&hl=pt_BR>. Acesso
em: 25 nov. 2019.
SCHMIDTY APPS. FindMyClass. 2016. Disponível em:
<https://play.google.com/store/apps/details?id=com.kineticsparks.campusmaps&hl=pt_BR>
Acesso em: 25 nov. 2019.
AGRHA. Agrha Consultoria. Disponível em: < https://www.agrha.com/>. Acesso em: 25 nov.
2019.
AGRHA CONSULTORIA. Guia de Salas da Agrha Consultoria para o Campus da Praia
Vermelha. Disponível em: < https://agrhaconsultoria.wixsite.com/guia/>. Acesso em 25 nov.
2019.
VEDOATO, Roberto. Artigo Engenharia de Software 16 - Cenários e Casos de uso:
Fundamentos e Conceitos, 2009. Disponível em:
< https://www.devmedia.com.br/artigo-engenharia-de-software-16-cenarios-e-casos-de-uso-
fundamentos-e-conceitos/14186> Acesso em: 16 jun. 2019.
Tesla Jr. 2019. Disponível em: < https://teslajunior.com.br/>. Acesso em: 26 nov. 2019.
TYBEL, Douglas. Orientações básicas na elaboração de um diagrama de classes, 2016.
Disponível em: < https://www.devmedia.com.br/orientacoes-basicas-na-elaboracao-de-um-
diagrama-de-classes/37224>. Acesso em: 30 jun. 2019.
PARUCHURI, Vik. Aprendendo sobre web scraping em Python utilizando BeautifulSoup,
2016. Disponível em: < https://imasters.com.br/back-end/aprendendo-sobre-web-scraping-
em-python-utilizando-beautifulsoup>. Acesso em: 8 jul. 2019.
LONDOM, Ian. Web Scraping: Discovering Hidden APIs. Disponível em:
< https://ianlondon.github.io/blog/web-scraping-discovering-hidden-apis/>. Acesso em: 10
jul. 2019.