UFFinder - Universidade Federal Fluminense

42
UNIVERSIDADE FEDERAL FLUMINENSE INSTITUTO DE COMPUTAÇÃO SISTEMAS DE INFORMAÇÃO GABRIEL ROLAND GUSSEN GABRIEL TEIXEIRA LOBO UFFinder Niterói 2019

Transcript of UFFinder - Universidade Federal Fluminense

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.

26

Figura 13 - Diagrama de classes UFFinder

Fonte: Autoria própria, 2019

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.