Buscar

TCC_Tecnologia_da_Informacao_e_Comunicacao_Igor_Pires_da_Silva

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 62 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 62 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 62 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

UNIVERSIDADE FEDERAL DE SANTA CATARINA 
CAMPUS ARARANGUÁ 
CENTRO DE CIÊNCIAS, TECNOLOGIAS E SAÚDE 
CURSO DE TECNOLOGIAS DA INFORMAÇÃO E COMUNICAÇÃO 
 
 
 
 
 
Igor Pires da Silva 
 
 
 
 
 
 
 
SABEPI: Sistema avaliativo baseado em peer instruction 
 
 
 
 
 
 
 
 
 
 
 
 
 
Araranguá 
2022 
 
 
Igor Pires da Silva 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
SABEPI: Sistema avaliativo baseado em peer instruction 
 
 
 
 
 
 
 
Trabalho Conclusão do Curso de Graduação em 
Tecnologias da Informação e Comunicação do Centro 
de Ciências, Tecnologias e Saúde da Universidade 
Federal de Santa Catarina como requisito para a 
obtenção do título de Bacharel em Tecnologias da 
Informação e Comunicação. 
Orientador: Prof. Cristian Cechinel, Dr. 
 
 
 
 
 
 
 
Araranguá 
2022 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Igor Pires da Silva 
 
 
Sabepi: Sistema avaliativo baseado em Peer Instruction 
 
 
Este Trabalho de Conclusão de Curso foi julgado adequado para obtenção do Título de 
Bacharel em Tecnologias da Informação e Comunicação e aprovado em sua forma final pelo 
Curso de Tecnologias da Informação e Comunicação. 
 
Araranguá, 15 de dezembro de 2022 
 
 
 
________________________ 
Prof. Vilson Gruber, Dr. 
Coordenador do Curso 
 
Banca Examinadora: 
 
 
 
________________________ 
Prof. Cristian Cechinel, Dr. 
Orientador 
Universidade Federal de Santa Catarina 
 
 
 
________________________ 
Prof. Fabrício Herpich, Dr. 
Avaliador 
Universidade Federal de Santa Catarina 
 
 
 
________________________ 
Prof. Vinicius Faria Culmant Ramos, Dr. 
Avaliador 
Universidade Federal de Santa Catarina 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Dedico este trabalho aos meus queridos pais. 
 
 
RESUMO 
 
Introdução: O peer struction é uma metodologia ativa através da instrução em pares que visa 
melhorar a aprendizagem do aluno em sala. Pode ser aplicada de forma simples, em papel, 
mas a ferramenta tecnológica pode otimizar o processo de aplicação e correção. Objetivo: 
Elaborar um sistema web, utilizando a metodologia peer instruction como base para a 
modelagem do sistema. Metodologia: Para elabora o sistema, foi utilizado a metodologia ágil 
Kanban através do processo just in time, ajustando as atividades por demanda. Tecnologias: 
Para desenvolver a aplicação foi utilizado o framework Ruby on Rails e Boostrap. Para 
atualizar partes da página sem a necessidade de atualizá-la por completo, foi utilizado jQuery. 
Limitações: O tempo foi um grande limitador para concluir este projeto. Possibilidades 
Futuras: Transformar a aplicação em um API, adicionar novas funcionalidades, como agrupar 
alunos que divergem em suas respostas, adicionar um chat para que seja possível discutir suas 
respostas. 
 
 
Palavras-chave: peer instruction. Metodologias ativas. Software. 
 
 
 
 
 
ABSTRACT 
 
Introduction: Peer instruction is an active methodology through instruction in pairs that aims 
to improve student learning in the classroom. It can be applied simply, on paper, but the 
technological tool can optimize the application and correction process. Objective: Develop a 
web system, using the peer instruction methodology as a basis for system modeling. 
Methodology: To develop the system, the agile Kanban methodology was used through the 
just in time process, adjusting activities according to demand. Technologies: To develop the 
application, the framework Ruby on Rails and Boostrap were used. To update parts of the 
page without the need to update it completely, jQuery was used. Limitations: Time was a 
major constraint to complete this project. Future Possibilities: Transform the application into 
an API, add new features, such as grouping students who differ in their answers, adding a chat 
so that it is possible to discuss their answers. 
 
Keywords: peer construction. Active methodologies. Software. 
 
 
 
 
 
 
LISTA DE FIGURAS 
 
Figura 1 Diagrama do processo de implementação do peer instruction .................... 18 
Figura 2 - Aluno se identificando para acessar uma sala Kahoot............................... 20 
Figura 3 – Quadro Kanban ......................................................................................... 22 
Figura 4 – Quadro Kanban SABEPI .......................................................................... 23 
Figura 5 – Fluxo de uma requisição em uma aplicação Rails .................................... 25 
Figura 6 – Parte de uma tarefa que cria administradores falsos. ................................ 27 
Figura 7 – Parte do modelo relacional do presente sistema ....................................... 28 
Figura 8 – Exemplo de uma tabela HTML usando DataTable ................................... 29 
Figura 9 – Processo de identificação de um aluno ..................................................... 31 
Figura 10 – Cadastrando uma pergunta ...................................................................... 32 
Figura 11 – Cadastro de uma turma ........................................................................... 32 
Figura 12 – Lista de turmas ........................................................................................ 33 
Figura 13 – Lista das últimas aulas ............................................................................ 33 
Figura 14 – Configurando uma aula ........................................................................... 34 
Figura 15 – Exemplo genérico utilizando o comando generate model ...................... 35 
Figura 16 – Migration gerada pelo comando generate ............................................... 35 
Figura 17 – Modelo lógico ......................................................................................... 36 
Figura 18 – Tabela User ............................................................................................. 37 
Figura 19 – Tabela Classroom .................................................................................... 37 
Figura 20 – Tabela Class_occurrence......................................................................... 38 
Figura 21– Utilizando um relacionamento para selecionar um registro..................... 38 
Figura 22– Tabelas Subject e Course ......................................................................... 39 
Figura 23– Tabelas Topic ........................................................................................... 39 
Figura 24– Tabelas Answer_occurrence .................................................................... 40 
Figura 25– Tabelas Answer ........................................................................................ 40 
Figura 26– Tabelas Answer ........................................................................................ 41 
Figura 27 – Página inicial do sistema ......................................................................... 42 
Figura 28 – Lista de cursos cadastrados ..................................................................... 43 
Figura 29 – Cadastro de uma pergunta ....................................................................... 44 
Figura 30 – Listagem de perguntas ............................................................................ 45 
Figura 31 – Listagem de professores .......................................................................... 45 
 
 
Figura 32 – Menu lateral de navegação ...................................................................... 46 
Figura 33 – Criação de uma sala ................................................................................ 47 
Figura 34 – Salas de um professor ............................................................................. 48 
Figura 35 – Iniciando uma nova aula .........................................................................48 
Figura 36 – A visão de um professor dentro de uma aula .......................................... 49 
Figura 37 – Pagina inicial do sistema ......................................................................... 50 
Figura 38 – Identificação do aluno ............................................................................. 50 
Figura 39 – Visão do aluno após se identificar .......................................................... 51 
Figura 40 - Exemplo de uma chamada de retorno ...................................................... 52 
Figura 41 - Controlador da área administrativa .......................................................... 53 
Figura 42 – Controlador responsável pelos administradores .................................... 53 
Figura 43 – Controladores da área admirativas .......................................................... 54 
Figura 44 – Parte do código do controlador de ocorrências de aulas ......................... 55 
Figura 45 – Modelo Classroom .................................................................................. 56 
Figura 46 – Parte da estrutura de view ....................................................................... 57 
Figura 47 – Edição de um curso ................................................................................. 57 
Figura 48 – Layout área administrativa ...................................................................... 58 
 
 
 
 
LISTA DE TABELAS 
 
Tabela 1– Comparação com outras ferramentas ........................................................ 58 
Tabela 2 – Custo médio para hospedar um aplicativo Rails ...................................... 59 
 
 
 
 
 
 
 
 
 
LISTA DE ABREVIATURAS E SIGLAS 
 
MVC Model-View-Controller 
SABEPI Sistema avaliativo baseado em peer instruction 
 
 
 
 
 
SUMÁRIO 
 
1 INTRODUÇÃO.................................................................................................... 15 
2 OBJETIVOS ........................................................................................................ 16 
2.1 Objetivo Geral ....................................................................................................... 16 
2.2 Objetivos Específicos ............................................................................................ 16 
3 REFERENCIAL TEÓRICO .............................................................................. 17 
3.1 PEER INSTRUCTION .......................................................................................... 17 
3.1.1 Definição e características ................................................................................... 17 
3.1.2 Onde é utilizado ................................................................................................... 18 
3.1.3 Necessidade de ferramentas auxiliares .............................................................. 18 
3.2 Ferramentas similares ............................................................................................ 19 
3.2.1 Kahoot ................................................................................................................... 19 
3.2.2 Socrative ............................................................................................................... 20 
3.2.3 Google Forms ....................................................................................................... 21 
4 Metodologia .......................................................................................................... 21 
4.1 delineamento do estudo ......................................................................................... 21 
4.2 Tecnologias utilizadas ........................................................................................... 23 
4.2.1 Ruby ...................................................................................................................... 24 
4.2.1.1 RubyGem................................................................................................................ 24 
4.2.1.1.1 Ruby on Rails ........................................................................................................ 24 
4.2.1.1.2 Devise .................................................................................................................... 26 
4.2.1.1.3 Pg ........................................................................................................................... 26 
4.2.1.1.4 Faker ...................................................................................................................... 27 
4.2.1.1.5 Cocoon ................................................................................................................... 27 
4.2.1.1.6 Jquery-datatables ................................................................................................... 28 
4.2.2 Npm ....................................................................................................................... 29 
4.2.2.1 Bootstrap................................................................................................................ 30 
 
 
4.2.2.2 jQuery .................................................................................................................... 30 
4.3 Prototipação ........................................................................................................... 30 
4.4 Descrição do modelo da base de dados ................................................................. 34 
4.4.1 Tabela User........................................................................................................... 36 
4.4.2 Tabela Classroom ................................................................................................ 37 
4.4.3 Tabela Class_occurrence..................................................................................... 37 
4.4.4 Tabela Subject e Course ...................................................................................... 38 
4.4.5 Tabela Topic ......................................................................................................... 39 
4.4.6 Tabela Answer_occurrence................................................................................. 39 
4.4.7 Tabela Answer ..................................................................................................... 40 
4.4.8 Tabela Question ................................................................................................... 40 
4.5 Ferramenta implementada ..................................................................................... 41 
4.5.1 Funcionalidades ................................................................................................... 41 
4.5.1.1 Admins_backoffice ................................................................................................. 42 
4.5.1.2 users_backoffice .................................................................................................... 46 
4.5.1.3 Site ......................................................................................................................... 49 
4.5.2 Código implementado .......................................................................................... 51 
4.5.2.1 Controllers ............................................................................................................. 52 
4.5.2.1.1 AdminsBackoffice Controller ................................................................................ 52 
4.5.2.1.2 UsersBackoffice Controller ................................................................................... 54 
4.5.2.2 Models.................................................................................................................... 55 
4.5.2.3 Views ...................................................................................................................... 56 
5 Considerações finais ............................................................................................58 
5.1 Limitações.............................................................................................................. 59 
5.2 Possibilidades futuras ............................................................................................ 60 
REFERÊNCIAS ................................................................................................... 61 
15 
 
1 INTRODUÇÃO 
 
O peer instruction é uma metodologia ativa que surgiu na década de 90, elaborada 
por Eric Mazur, Professor de física na universidade Harvard. Ao perceber que seus alunos não 
conseguiam resolver questões complexas de física, pelo fato de: Não terem noções 
consolidadas sobre o assunto, haja vista que estavam apenas decorando as formulas. Então, 
Mazur, decide testar métodos diferentes de ensinar (MAZUR; SOMERS, 1999). 
Conhecido no Brasil como instrução em pares, sua aplicação é bem simples e ajuda o 
professor a guiar sua aula, antes da mesma ocorrer, os alunos recebem os assuntos a serem 
discutidos em aula e devem ler e absorver. Em sala, o docente apresenta uma questão, que 
servirá para validar o entendimento de sua turma sobre o tópico que será abordado. Após 
verificar quantos alunos acertaram, é analisado quanto isso representa sobre o total da turma. 
Os dados são utilizados para guiar os próximos passos do professor e o rumo que a aula 
seguirá. 
 O problema surge nessa etapa, o professor precisa, constantemente, verificar a 
porcentagem de acerto de cada questão, isso dará a direção de como a aula deve prosseguir. 
Além de aplicar a questão, ainda é preciso recolher a resposta de cada aluno e validar o 
conhecimento. No início da metodologia, Mazur, utilizava cartões para realizar as validações 
e verificar o conhecimento de sua turma. Todo esse processo é extremante simples, porém, 
aplicá-lo sem as ferramentas corretas, torna o processo burocrático e extenso. 
 As mudanças na forma de ensinar estão acontecendo a bastante tempo, as 
metodologias ativas são muito promissoras e as tecnologias da informação e comunicação são 
um grande aliado nessa transformação. A falta de ferramentas, gratuitas, para auxiliar a 
aplicação do peer instruction e a ascensão do ensino a distância motivaram a elaboração desta 
pesquisa. O presente trabalho tem como objetivo minimizar os esforços durante a aplicação 
do peer instruction em sala aula, a proposta é elaborar um sistema web que facilite sua 
aplicação, tornando as aulas mais dinâmicas, ajudando o professor a identificar as lacunas 
presentes no conhecimento dos seus alunos. O maior proposito é oferecer uma ferramenta 
gratuita, de código livre, que todas as instituições possam utilizar. 
 
 
16 
 
2 OBJETIVOS 
 
2.1 OBJETIVO GERAL 
 
Desenvolver um sistema web baseado na metodologia peer instruction, que permita 
o gerenciamento eficiente de uma base de dados com questões separadas por curso, disciplina 
e assunto, e que possibilite ao professor criar salas para que os alunos possam responder a 
determinadas questões e visualizar o percentual de acerto da turma em relação ao tema 
apresentado. 
 
 
2.2 OBJETIVOS ESPECÍFICOS 
 
Modelar um banco de dados que supra as necessidades da aplicação; 
Elaborar um quadro Kanban que auxilie o desenvolvimento do sistema web; 
Criar um protótipo das telas, de baixa fidelidade para facilitar o desenvolvimento; 
Desenvolver um sistema que otimize a aplicação do peer instruction. 
 
 
17 
 
3 REFERENCIAL TEÓRICO 
 
3.1 PEER INSTRUCTION 
 
3.1.1 Definição e características 
 
O método peer instruction, consiste na otimização do tempo em aula, desta forma, os 
discentes recebem o material de conteúdo para leitura anteriormente, para que a aula seja 
utilizada para aprofundar a discussão do material lido. Esse método tira a responsabilidade do 
docente de replicar informações que já estão documentadas e consolidadas, deixando de ser 
uma aula passiva, e tornando-se ativa através da interação proporcionada pelo conhecimento 
da leitura prévia. (ARAUJO; MAZUR, 2013) 
A aula é segmentada em pequenas apresentações orais, cerca de 15 minutos, logo 
após, é apresentando um teste conceitual, geralmente de múltipla escolha, que deve ser 
respondido individualmente. O objetivo deste teste é avaliar a compreensão da turma, tendo 
duração de aproximadamente 2 minutos. Após o teste, sem indicar a resposta correta, é feito 
um levantamento em porcentagem, de acertos da turma, esta informação guiará a tomada de 
decisão seguinte. Então, se a porcentagem de acertos for menor que 30%, os conceitos são 
reapresentados e é feito um novo teste conceitual, reiniciando o processo. Se as respostas 
estiverem entre 30% e 70%, deve-se agrupar os alunos em pequenos grupos (até 5 pessoas), é 
recomendando que o agrupamento seja feito com alunos que discordem na resposta, para que 
eles possam debater e tentem convencer uns aos outros, dependendo do nível do debate, essa 
tarefa pode durar de 3 a 5 minutos. Após o debate, a mesma questão é reaplicada e explicada 
pelo professor. Nesse momento, o professor decide se aplica um novo teste conceitual, sobre o 
mesmo assunto, ou passa para o próximo tópico, que é caso atinja mais que 70%, a questão é 
explicada e um novo tópico é abordado, reiniciando a metodologia (ARAUJO; MAZUR, 
2013). Na figura 1 é possível verificar o fluxo de a aplicação da metodologia. 
 
18 
 
Figura 1 Diagrama do processo de implementação do peer instruction 
 
Fonte: Mansur, Araújo, 2013. 
 
3.1.2 Onde é utilizado 
 
O peer instruction pode ser utilizado em diferentes etapas do ensino, o único 
requisito é que o aluno esteja comprometido com o seu conhecimento, é necessário que o 
mesmo se torne ativo durante o processo de aprendizagem. 
Existe uma grande quantidade de estudos provando sua eficiência, em diferentes 
áreas do conhecimento. Segundo Rachelli e Bisognin (2020), em uma experiência no ensino 
de cálculo, utilizando como base o peer instruction, de 41 alunos matriculados na disciplina 
de cálculo A, aproximadamente, 68% obtiveram aprovação, levando em consideração a taxa 
de aprovação desta disciplina, chegaram à conclusão que a aplicação da metodologia foi bem 
satisfatória. Em outro estudo, Diemer, Bercht, Canto Filho e Schorr (2020), aplicaram a 
metodologia em turmas de algoritmos e programação, o grupo experimental apresentou um 
desempenho superior aos demais estudante, chegando à conclusão que era possível aplicar a 
metodologia no ensino de programação. 
 
3.1.3 Necessidade de ferramentas auxiliares 
 
19 
 
Considerando que cada aluno é requisitado a pensar sobre o assunto e indicar a 
alternativa correta, baseado no texto complementar passado pelo professor antes da aula, a 
necessidade de uma ferramenta para validar o conhecido do discente é de extrema 
importância. 
De acordo com Araujo e Mazur (2013), para validar o entendimento dos alunos sobre 
os assuntos abordados durante as aulas, se faz necessário a utilização de algum tipo de 
ferramenta, que podem ser cartões de resposta ou algum tipo de dispositivo individual, para 
que os alunos consigam indicar sua resposta. Em 2013, Araujo e Mazur já pensavam na 
utilização de algum tipo de dispositivo móvel para facilitar a aplicação. Atualmente, a grande 
maioria dos alunos possuem um smartphone, o que facilita a utilização de sistema para aplicar 
tal metodologia. 
 
3.2 FERRAMENTAS SIMILARES 
 
3.2.1 Kahoot 
 
O Kahoot (2022) é um ferreamente online que permite realizar perguntas e resposta 
direto do seu dispositivo, é uma ótima alternativa para aplicar o peer instruction, ele apresenta 
um sistema gamificado e permite que os alunos joguem enquanto respondem as perguntas, o 
sistema também possui tecnologia assistiva, o que facilita a utilização de pessoas com 
deficiência visual. 
 Segundo um vídeo tutorial do Kahoot (2022), para iniciar uma roda de perguntas, o 
professor deve selecionar a aba "Kahoots"na parte superior esquerda do web site. Ao entrar 
na página, o mesmo deve selecionar um tema e na página seguinte, configurar a sala, é 
possível escolher entre os modos Classic ou Team mode e fazer alguns ajustes finos. Após a 
configuração, o professor é direcionado para uma sala que contém um código de acesso 
chamado Game PIN, então, o professor deve passar este para a sala, que deve acessar o site e 
na parte superior direita, entrar na aba Play, nesta página o aluno deve inserir o código de 
acesso e logo após seu nome (Figura 2), nesta etapa, o mesmo está pronto para responder as 
questões, bastando apenas o professor iniciar a rodada. 
 
20 
 
Figura 2 - Aluno se identificando para acessar uma sala Kahoot 
 
Fonte: KAHOOT, 2022. 
 
No entanto é um programa pago, e a sua versão gratuita é limitada. Para adquirir uma 
licença para apenas um professor, é necessário pagar $ 25 dólares por mês ou então 300 
dólares anuais (KAHOOT, 2022). 
 
3.2.2 Socrative 
 
O Socrative é bem parecido com o primeiro exemplo. Segundo alguns relatos de 
usuários, na página de ensino superior, professores descrevem o quão prático é utilizar a 
ferramenta durante as aulas, obtendo sucesso em aplicar o peer instruction (SHOWBIE, 
2022). 
O mesmo problema ocorre com o produto da empresa Showbie (2022), sua versão 
gratuita é limitada. A emprese oferece alguns tipos de planos, o mais barato, que oferece 
apenas um acesso, custa $ 89,99 dólares por ano. Em seu site, na página de vendas, Showbie 
(2022) oferece um desconto por volume, a partir de três professores, porém não consta 
informações sobre o valor final, para tal conhecimento, se faz necessário entrar em contato 
com a central de vendas. 
 
21 
 
3.2.3 Google Forms 
 
O Google Forms é uma ferramenta online que permite a criação de formulários, com 
objetivo de auxiliar pesquisas envolvendo estatística, possui uma plataforma bem intuitiva. 
Segundo a Google Llc (2022), é possível criar formulários personalizados, escolhendo: cor, 
fonte e adicionar imagens. Além disso, a plataforma gera uma análise automática sobre as 
respostas, em tempo real, exibindo o resultado graficamente. A Google Llc (2022) informa 
que é possível criar e acessar os formulários de qualquer lugar, em qualquer dispositivo. 
O produto da Google Llc (2022) é o mais simples entre os exemplos expostos na 
presente pesquisa, porém, sua versão gratuita serve perfeitamente para aplicar o peer 
instruction. O maior problema em usar o Google Forms, é que ele não foi pensado para 
aplicar tal metodologia, isso torna sua utilização trabalhosa. 
 
4 METODOLOGIA 
 
4.1 DELINEAMENTO DO ESTUDO 
 
Para elaborar o sistema, foi utilizado a metodologia ágil Kanban, segundo a empresa 
Atlassian (2022) o Kanban tem se destacado entre as equipes de desenvolvimento de 
software, porém, ele surgiu no fim dos anos 1940, quando a Toyota começou a otimizar seus 
processos, baseando-se no mesmo processo que os supermercados usavam para abastecer suas 
prateleiras. Esse processo era dinâmico e se baseava na demanda de saída dos itens do 
estoque, fazendo com que ele não ficasse com um excesso de produtos, e mesmo assim, 
garantindo as necessidades dos consumidores. 
Quando a Toyota passou a aplicar esse sistema no chão de suas fábricas, para 
repassar os níveis de estoque, em tempo real, entre os seus funcionários e fornecedores, era 
utilizado um cartão (Kanban). Quando um contêiner, com os materiais utilizados na linha de 
produção se esvaziava, um cartão (Kanban) era passado para o estoque, descrevendo a 
quantidade exata de materiais para dar continuidade na linha produção, por sua vez, o estoque 
repassava um cartão (Kanban) para o fornecedor dando continuidade no fluxo dinâmico de 
produtos. Esse processo vem sendo evoluído desde a década de 1940 e ficou conhecido como 
just in time que em tradução livre significa "na hora certa". 
22 
 
Nos dias atuais, as equipes de desenvolvimento de software continuam aproveitando 
esse processo just in time, ajustando as atividades por demanda e capacidade das equipes. 
Esse processo torna o desenvolvimento flexível, rápido e claro durante todo ciclo de vida do 
software. As atividades das equipes giram em torno do "quadro do Kanban", esse quadro pode 
ser tanto digital, como físico. Sua funcionalidade é garantir que toda a equipe consiga 
visualizar o fluxo de desenvolvimento e, com facilidade, analisar as dependências que 
bloquem atividades subsequentes. Um quadro básico do Kanban gira em torno de três etapas: 
A fazer, em andamento e feito (ATLASSIAN, 2022). 
 
Figura 3 – Quadro Kanban 
 
Fonte: ATLASSIAN, 2022. 
 
Segundo Atlassian (2022), em japonês, a palavra Kanban é traduzida literalmente 
como "sinal visual", a Figura 3 exemplifica um quadro virtual, o mesmo, possui uma etapa a 
mais e isso é totalmente normal, a estrutura depende da complexidade do projeto e os 
processos intermediarias podem varias, dependendo do contexto. O code review é um 
processo em que o código gerado por um programador, passa por uma análise feita por outro 
funcionário e se for aprovado, passa a fazer parte do código fonte. 
Para montar um quadro Kanban, o projeto é quebrado em várias etapas, quanto 
menos complexo, melhor. Cada cartão carrega uma etapa do projeto com suas respectivas 
23 
 
atividades, nele fica marcado o responsável pela atividade, uma breve descrição da tarefa e 
uma estimativa de tempo para ser concluída. 
 
Figura 4 – Quadro Kanban SABEPI 
 
Fonte: Autor, 2022. 
 
A figura 4 mostra o quadro Kanban, que foi desenvolvido utilizando a ferramenta 
Trello, do presente projeto. As etapas de desenvolvimento foram quebradas em pequenas 
tarefas e adicionadas na lista de "A fazer", quando a tarefa é iniciada, ela é arrastada para lista 
"Em andamento" e quando é finalizada, arrastada para "Feito". 
 
4.2 TECNOLOGIAS UTILIZADAS 
 
24 
 
4.2.1 Ruby 
 
De acordo com a Comunidade Ruby (2022), a linguagem foi criada por Yukihiro 
Matsumoto, com a união de suas linguagens favoritas, ele se inspirou no Perl, Smalltalk, 
Eiffel, Ada e Lisp, sua intenção era criar uma linguagem que unisse programação funcional 
com programação imperativa. O maior objetivo era tornar o Ruby simples na aparência e 
complexo no seu interior, com o intuito de trazer a linguagem o mais próximo da realidade. 
A linguagem surgiu em 1995, e se tornou popular em 2006, com usuários espalhados 
por todo o mundo. Grande parte de seu sucesso veio por conta de sua licença totalmente 
gratuita e livre de custos, a linguagem é flexível, nela, é possível alterar, remover e adicionar 
novas funcionalidades, o Ruby é totalmente mantido por sua comunidade. No Ruby tudo é um 
objeto, Yukihiro queria uma linguagem interpretada que fosse melhor que Perl e mais 
orientada a objeto que Python, até mesmo os números e tipos primitivos são objetos em Ruby 
(COMUNIDADE RUBY, 2022). O presente trabalho utilizou a versão 2.5.1. 
 
4.2.1.1 RubyGem 
 
Assim como a maioria das linguagens, Ruby conta com várias bibliotecas, por 
padrão, a linguagem vem com o gerenciador de pacotes, desde a versão 1.9, chamado 
RubyGems, um sistema que facilita a instalação, criação e compartilhamento de bibliotecas. 
As bibliotecas são chamadas de "gem", que em português significa gema ou joia, e o principal 
local de armazenamento é o site rubygems.org (COMUNIDADE RUBY, 2022). 
Uma boa prática, antes de adicionar uma gem em seu projeto, é verificar o número de 
downloads e o ano da última atualização, isso garante com que não sejam adicionadas 
bibliotecas que estão desatualizadas ou obsoletas. 
 
4.2.1.1.1 Ruby on Rails 
 
Uma das gems mais famosas do Ruby, é Rails. Assim como o Ruby, o Rails é 
mantido pela comunidade e possui o código livre para distribuição e modificação. De acordo 
com o guia para iniciante, mantido pela Comunidade Rails (2022), o Ruby on Rails é um 
framework de desenvolvimentoweb, que foi projetado para facilitar a criação de aplicações 
web. O Rails assume que existe a melhor maneira de fazer as coisas e foi projetado para 
25 
 
seguir essa maneira, sua filosofia é forte e indica que caso não seja seguida, o programador 
não terá uma boa experiencia, as duas principais são: Não se repita – cada parte do código 
deve ser única; Convenção sobre configuração - como foi dito antes, o Rails assume várias 
coisas, e uma delas é um conjunto de convenções que faz com que o início de um projeto seja 
muito mais rápido, realizando as melhores configurações, tirando a responsabilidade do 
programador de fazer uma infinidade de configurações que sempre se repetem, indo de acordo 
com a primeira filosofia. 
Sua arquitetura segue o padrão MVC (Model-View-Controller), esse padrão de 
design divide as responsabilidades da aplicação. O model fica responsável por interagir com o 
banco de dados, por sua vez, a view é responsável por exibir as informações para o usuário e o 
controller fica responsável pelo controle da informação entre o model e a view. 
 
Figura 5 – Fluxo de uma requisição em uma aplicação Rails 
 
Fonte: Autor, 2022. 
 
A figura 5 exemplifica uma requisição feita por um usuário, supondo que essa 
solicitação seja para acessar a página inicial da aplicação, utilizando o protocolo HTTP, a 
requisição chega no ActionDispatch, que é responsável por gerenciar as rotas, ele verifica 
qual controller deve ser acionado e qual ação do controller deve ser executada. No nosso 
exemplo, o controller "Home" e a ação "index" foram requisitadas pelo usuário, então, o 
26 
 
método index e executado e caso haja algum dado que deve ser recuperado na base de dados, 
o controller solicita essa informação para o ActiveRecord, os dados são retornados para o 
controller, que por sua vez, passa para o ActionView, que irá renderizar essa informação 
dentro de um arquivo HTML e devolver para o controller, que retorna para o cliente a página 
solicitada. 
 
4.2.1.1.2 Devise 
 
O Devise é uma gem feita para o Rails, com o intuito de acelerar o processo de 
autenticação de uma aplicação, é uma biblioteca robusta e bastante utilizada, sua distribuição 
principal possui aproximadamente 130 milhões de downloads e é constantemente atualizada 
pela comunidade. 
De acordo a Comunidade Devise (2020), a biblioteca conta com 10 módulos: 
• Database Authenticatable: Gera um hash da senha e armazena no banco de 
dados para validar a autenticidade de um usuário durante o login; 
• Omniauthable: Adiciona suporte para OmniAuth, uma biblioteca que permite a 
autenticação utilizando um registro de outro provedor, por exemplo, acessar 
um sistema utilizando sua conta Google; 
• Confirmable: Envia e-mails com instrução de confirmação de uma conta e 
verifica se ela já foi confirmada durante o processo de login; 
• Recoverable: Redefine a senha do usuário, além de enviar por e-mail 
instruções para redefinição; 
• Registerable: Gerencia a inscrição dos usuários, através de um processo de 
registro, possibilitando edição e destruição de suas contas; 
• Rememberable: Gera e limpa tokens de usuário criados nos cookies; 
• Trackable: Rastreia a contagem de logins, com data, hora de login e endereço 
de IP; 
• Timeoutable: Expira as sessões que não estão ativas em um período pré-
definido; 
• Validatable: Fornece validação de e-mail e senhas. É opcional e pode ser 
personalizado com as próprias validações; 
• Lockable: Bloqueia uma conta após um número especificado de tentativas de 
login com falha. Possibilitando o desbloqueio por tempo ou por um envio de e-
mail de verificação. 
 
4.2.1.1.3 Pg 
 
O pg é uma interface Ruby para o sistema de gerenciamento de banco de dados 
relacional do PostgreSQL que facilita a comunicação entre ambas tecnologias (PG, 2019). 
27 
 
A ferramenta PostgresSQL possui mais de 30 anos de desenvolvimento ativo, o que 
lhe rendeu fama, confiabilidade, uma enorme quantidade de recursos e desempenho, ele 
também possui código fonte aberto (THE POSTGRESQL GLOBAL DEVELOPMENT 
GROUP, 2022). 
 
4.2.1.1.4 Faker 
 
De acordo com a Comunidade Faker (2022), esta gem foi portada da biblioteca de 
dados do Perl, que gera dados falsos. Uma gem é útil na hora de preencher a base de dados 
para efetuar teste de implementação, com ela é possível preencher a base com uma infinidade 
de dados, que vão desde endereços fictícios, até informações de programas de televisão. 
Figura 6 – Parte de uma tarefa que cria administradores falsos. 
 
Fonte: Autor, 2022. 
 
A figura 6 mostra um trecho de código que gera administradores falsos, ele é 
executado 20 vezes, apenas no ambiente de desenvolvimento, utilizando os métodos da gem 
Faker para criar o nome e e-mail do administrador. 
 
4.2.1.1.5 Cocoon 
 
Esta gem, segundo Auwera (2010), facilita a criação de formulários aninhados, ao 
invés de cadastrar uma informação por vez, é possível enviar quantas informações for 
necessário. 
28 
 
Figura 7 – Parte do modelo relacional do presente sistema 
 
Fonte: Autor, 2022 
Na figura 7 é possível verificar esta situação, uma questão possui uma ou várias 
respostas. Usando a gem Cocoon, é possível cadastrar, na mesma tela, quantas alternativas for 
necessário. Esta prática reduz significativamente o número de telas de cadastro, acelerando o 
processo de desenvolvimento, melhorando a usabilidade do usuário. 
 
4.2.1.1.6 Jquery-datatables 
 
Esta gem facilita a instalação da ferramenta DataTables em um projeto Rails 
(ADNAN, 2022). De acordo com a empresa Sprymedia Ltd (2022), o objetivo do DataTables 
é aprimorar a acessibilidade dos dados em tabelas HTML. Com este recurso, o usuário final 
pode obter informações úteis, de forma rápida, a ferreamente possui ordenação, pesquisa e 
paginação. Com três linhas de código, é possível transformar uma tabela HTML padrão em 
uma tabela igual à da figura 8. 
 
29 
 
Figura 8 – Exemplo de uma tabela HTML usando DataTable 
 
Fonte: (SPRYMEDIA LTD, 2022) 
 
4.2.2 Npm 
 
O Npm é um gerenciador de pacotes Node.js, em sua documentação, Npm Inc (2022) 
afirma ser o maior registrador de bibliotecas do mundo, utilizado por desenvolvedores de 
código aberto no mundo todo, para compartilhar e emprestar pacotes. Para utilizar o Npm em 
empresas privadas, é necessário pagar uma taxa, porém se o código for público, o serviço é 
gratuito. O serviço é composto por três componentes: 
 
• O site: É utilizado para descobrir pacotes, configurar perfis e gerenciar os 
pacotes, é possível criar organizações, privadas ou públicas, para gerenciar os 
pacotes. 
• Interface de linha de comando (CLI): Este componente é executado a partir de 
um terminal e como a maioria dos desenvolvedores interagem com o Npm. 
• Registro: Um grande banco de dados público, onde ficam os códigos 
JavaScript e as informações que o cercam. 
 
30 
 
Ao utilizar o serviço, um arquivo chamado “package.json” é criado na raiz do 
projeto, nele ficam armazenados os pacotes utilizados com nome e versão, garantindo que ao 
ser compartilhado em outra máquina, todas dependências sejam instaladas, evitando erros. 
 
4.2.2.1 Bootstrap 
 
O Boostrap é um framework front-end, de código livre, para desenvolvimento web 
que acelera o desenvolvimento de forma fácil e rápida, criado em 2011 por Mark Otto e Jacob 
Thornton no Twitter. Inclui modelos de design em HTML e CSS, com fontes, formulários, 
botões, tabelas, navegação, modais, carrosséis de imagens entre outras funcionalidades, 
incluindo algumas funções opcionais que utilizam Javascript. Com ele é possível criar, de 
maneira ágil, sites responsivos, ou seja, que se adequam automaticamente ao tamanho da tela 
do usuário (REFSNES DATA, 2022). 
De acordo com o tutorial da Refsnes Data (2022), qualquer pessoa com 
conhecimentos básicos em HTML e CSS pode usar o Bootstrap, ele é sempre a maneira mais 
fácil de criar um site elegante, sem dificuldades,a grande maioria dos sites utilizam as classes 
Bootstrap. 
 
4.2.2.2 jQuery 
 
0 jQuery é uma biblioteca JavaScript, de fácil utilização é rica em funcionalidades, 
com ela é possível manipular documentos HTML de forma dinâmica, direto do navegador do 
cliente (OPENJS FOUNDATION, 2022). 
Os scripts adicionados, são carregados no navegador do cliente e são executados 
quando a condição é contemplada, por exemplo quando o usuário clica em um botão, o código 
é disparado sem a necessidade de recarregar a página inteirar, existem muitas funções que 
podem ser usadas para manipular a página, sem que o servidor seja requisitado, 
economizando recursos e processamento. 
 
4.3 PROTOTIPAÇÃO 
 
A figura 9 exemplifica a visão do aluno ao entrar em uma sala de aula, após se 
identificar, deve ser feita uma verificação na base de dados para validar se esse aluno já 
31 
 
existe, se ele não existir na base de dados, um novo aluno é criado, logo após, uma sessão 
com suas informações é criada. Caso ele já exista na base de dados, uma sessão com suas 
informações é iniciada. 
Após se identificar, é verificado se ele já respondeu à pergunta corrente e caso: já 
tenha respondido, uma mensagem é exibida, pedindo que ele aguarde uma nova questão; se 
não, a questão corrente é exibida até que o aluno de sua resposta. 
 
Figura 9 – Processo de identificação de um aluno 
 
Fonte: Autor, 2022 
 
A figura 10 ilustra a tela de cadastro de uma nova pergunta, elas podem ser 
cadastradas tanto pelos professores, quanto por administradores, porém, as disciplinas e os 
assuntos/temas, só podem ser cadastrados por administradores. Cada disciplina possui vários 
32 
 
temas e cada tema, possui várias perguntas. Uma pergunta pode ter N respostas, mas apenas 
uma pode estar correta. As perguntas ficam visíveis para todos os professores, isso facilita o 
preenchimento da base dados e torna o sistema colaborativo. 
 
Figura 10 – Cadastrando uma pergunta 
 
Fonte: Autor, 2022 
 
Um usuário professor, pode ter N salas, a figura 11 exemplifica o cadastro de uma 
nova turma, após inserir o nome, curso e disciplina, basta o docente clicar em salvar e sua 
nova sala estará criada. 
 
Figura 11 – Cadastro de uma turma 
 
Fonte: Autor, 2022 
 
33 
 
Após cadastrar uma turma é possível acessar a mesma através da listagem de todas as 
turmas, associadas a conta do professor, as turmas só são visíveis por seus respectivos 
criadores e só é possível ter um professor por turma (Figura 12). 
 
Figura 12 – Lista de turmas 
 
Fonte: Autor, 2022 
 
Ao acessar uma turma, é possível ver uma lista de todas às aulas que já ocorreram, a 
figura 13 exemplifica a visão do professor, só será possível criar uma aula por turma, no dia. 
Após o dia finalizar, o professor poderá iniciar uma nova aula. 
 
Figura 13 – Lista das últimas aulas 
 
Fonte: Autor, 2022 
 
34 
 
 
A figura 14 mostra a visão do professor, ao entrar em uma aula, ele deve selecionar 
um tema e uma questão, estes são exibidos para o docente, baseado na disciplina inserida no 
cadastro da turma, a questão ficará visível para os alunos que acessaram a sala com o código 
de acesso, gerado automaticamente na criação da turma, até que o professor selecione uma 
nova pergunta. 
 
Figura 14 – Configurando uma aula 
 
Fonte: Autor, 2022 
 
 
4.4 DESCRIÇÃO DO MODELO DA BASE DE DADOS 
 
Uma das facilidades de utilizar o framework Ruby on Rails é o processo de modelar 
um banco de dados. Toda tabela criada, conta com as seguintes colunas: “id”, que é auto 
incremental e o Rails faz o trabalho de gerenciar; o mesmo ocorre com a coluna “created_at”, 
toda vez que um registro é criado, ele automaticamente recebe a data atual no padrão iso8601; 
outra coluna parecida com a anterior é a “updated_at”, quando um registro recebe uma 
atualização, esta tabela recebe a data atual. Essas colunas são úteis e seguem um dos 
princípios do Rails, que tira a responsabilidade do programador de realizar processos que se 
repetem, tornando o desenvolvimento ágil. As colunas padrão foram omitidas da modelagem, 
por questões estéticas, porém, assume-se que toda tabela contém as colunas: “id”, 
“created_at” e “updated_at”. 
35 
 
 Outra função interessante são os comandos “generate”, o Rails possui um punhado 
de “generates”, que agilizam o desenvolvimento. Utilizando o console, dentro da pasta do 
projeto, rodando o comando “rails generate model nome_da_tabela 
coluna_um:tipo_da_coluna coluna_dois:tipo_da_coluna coluna_enésima:tipo_da_coluna” o 
Rails invoca o Active Record, que gera os arquivos necessários para conseguir trabalhar com 
os registros no banco de dados, estes podem ser verificados na figura 15. Os mais 
importantes, são os arquivos localizados na pasta “migrate” e o da pasta “models”, aquele, é 
um arquivo que garante o versionamento das tabelas do banco de dados, como pode ser visto 
na figura 16. Já este, é uma classe que herda o Active Record e representa a tabela dentro do 
sistema, nele é possível atribuir algumas funções e utilizar alguns gatilhos, oferecidos pelo 
framework, para fazer com que o sistema funcione corretamente. (Figuras 15 e 16) 
 
Figura 15 – Exemplo genérico utilizando o comando generate model 
 
Fonte: Autor, 2022. 
 
Figura 16 – Migration gerada pelo comando generate 
 
Fonte: Autor, 2022. 
 
36 
 
A figura 17, exibe o esqueleto geral de todas as tabelas do sistema, com todos os 
relacionamentos. Nos subtópicos a seguir, será apresentado tabela por tabela, falando 
brevemente um pouco sobre cada uma. 
 
Figura 17 – Modelo lógico 
 
Fonte: Autor, 2022 
 
4.4.1 Tabela User 
 
A tabela User é a representação de um professor dentro do sistema, ao ser 
cadastrado, um professor passa a ter as seguintes informações: Name, Email e Password. 
Dentro do sistema, o professor poderá ter zero ou quantas salas de aula forem necessárias 
(classrooms) 
37 
 
Figura 18 – Tabela User 
 
Fonte: Autor, 2022. 
 
4.4.2 Tabela Classroom 
 
Esta tabela é a representação de uma sala de aula, nela ficará armazenada as 
seguintes informações: Access_code, um código de acesso, gerado automaticamente pelo 
sistema, único, que terá a função parecida de uma chave primária, será utilizado pelos alunos 
para adentrar em uma aula; User_id, esta coluna será uma chave estrangeira e armazenará a 
referência para a tabela User, que representa o professor no sistema; Name, que armazenará o 
nome da turma; Subject_id, outra chave estrangeira, está guardará a referência para a 
disciplina vinculada a esta Sala de aula. 
 
Figura 19 – Tabela Classroom 
 
Fonte: Autor, 2022. 
 
4.4.3 Tabela Class_occurrence 
 
Esta é uma tabela relacionamento ou entidade associativa, que surge do 
relacionamento muitos para muitos, é a representação de um dia de aula dentro do sistema, 
armazenando o id da questão que será aplicada e o id da sala que partiu essa solicitação. 
 
38 
 
Figura 20 – Tabela Class_occurrence 
 
Fonte: Autor, 2022. 
 
No Rails, é possível carregar o registro em uma variável e utilizar para encontrar 
tabelas que estão relacionadas, como podemos verificar na figura 18, na primeira linha, 
utilizando a função find, acontece um select na tabela classroom, onde o id é igual a 1. Após 
carregar esse registro na memória, é possível explorar os relacionamentos que essa tabela 
possui, no nosso exemplo, a tabela class_occurrence possui um relacionamento com 
classroom, então, é possível carregar todas as class_occurrences que possuem o classroom_id 
igual a 1 e o contrário também é valido. 
 
Figura 21– Utilizando um relacionamento para selecionar um registro 
 
Fonte: Autor, 2022. 
 
4.4.4 Tabela Subject e Course 
 
As tabelas Course e Subject representam, respectivamente, um curso e suas 
disciplinas, foram criadas para garantir a organização dos registros dentro do banco de dados. 
Um curso possui apenas um nome, jáa tabela disciplina, possui um nome e uma referência 
para a tabela curso, isso garante que ao alterar o nome de um curso, não seja necessário passar 
em todas as disciplinas que pertencem a esse curso fazendo tal mudança. 
 
39 
 
Figura 22– Tabelas Subject e Course 
 
Fonte: Autor, 2022. 
 
4.4.5 Tabela Topic 
 
Essa é outra tabela criada para garantir a organização dos registros, ela representa um 
assunto/conteúdo de uma disciplina, possuindo um nome e uma referência para a tabela que 
representa a disciplinas, isso facilita filtra os registros (tabela 23). 
 
Figura 23– Tabelas Topic 
 
Fonte: Autor, 2022. 
 
4.4.6 Tabela Answer_occurrence 
 
Esta tabela é a representação de uma resposta dada por um aluno, esta também é uma 
tabela relacionamento e possui as seguintes colunas: Class_occurrence_id, uma chave 
estrangeira, que indica em qual dia de aula ocorreu essa resposta; answer_id, armazena o id da 
resposta selecionada pelo aluno; student_id, armazena o id do aluno e representa o autor da 
resposta; question_id, guarda o id da questão que foi aplicada. A partir desta tabela é possível 
inferir quantos alunos acertaram uma determinada questão e extrair a média de acertos. 
 
40 
 
Figura 24– Tabelas Answer_occurrence 
 
Fonte: Autor, 2022 
 
4.4.7 Tabela Answer 
 
Essa tabela é a representação de uma das opções de resposta que uma questão possui, 
uma resposta possui: uma descrição, que seria a resposta propriamente dita; a coluna 
is_correct, que armazena um verdadeiro ou falso, que diz se essa reposta está correta ou não; e 
por fim uma chave estrangeira da tabela question, que representa de qual questão essa 
resposta faz parte (Figura 25). 
 
Figura 25– Tabelas Answer 
 
Fonte: Autor, 2022 
 
4.4.8 Tabela Question 
 
Esta tabela é a representação de um enunciado dentro do sistema, que será exibido 
para o aluno durante um teste para validar o conhecimento sobre determinado assunto e 
auxiliar o professor na tomada de decisão durante a aplicação do peer instruction. A tabela 
possui duas colunas: Description, que seria o enunciado da questão e uma referência para a 
tabela Topic indicando de qual assunto pertence esta questão (Figura 26). 
41 
 
 
Figura 26– Tabelas Answer 
 
Fonte: Autor, 2022. 
 
4.5 FERRAMENTA IMPLEMENTADA 
 
O SABEPI é uma ferramenta web que foi criada pensando em solucionar as 
dificuldades que surgem durante a aplicação do Peer Instruction. Foi projetada para cadastrar 
e reaproveitar perguntas, que serão aplicadas durante um dia aula para extrair as informações 
que guiarão o rumo das atividades em aula. O professor, baseado na porcentagem de acerto 
em uma determinada questão, consegue inferir as lacunas no conhecimento de seus aulos, 
determinado quais assuntos devem ser abordados. 
 
4.5.1 Funcionalidades 
 
O sistema conta com três áreas diferentes: O admins_backoffice, onde ficam as 
funcionalidades administrativa; users_backoffice, local onde se encontram as funcionalidades 
dos professores; site, local onde ficam as funcionalidades dos alunos. Dentro do sistema, 
apenas administradores podem cadastrar novos professores, cursos, disciplinas e assuntos. 
Professores e administradores, podem cadastrar, porém, só administradores podem remover 
perguntas. Os alunos só podem acessar as salas de aulas através de um código, único, de 
acesso. 
42 
 
Figura 27 – Página inicial do sistema 
 
Fonte: Autor, 2022. 
 
4.5.1.1 Admins_backoffice 
 
Na área administrativa existe um menu lateral de navegação, ao clicar em “base de 
dados” um submenu é exibo, nele é possível cadastrar/editar/deletar cursos, disciplinas, 
assuntos e perguntas. Na figura 28, é possível verificar a tabela que exibe os cursos 
cadastrados no sistema. Cada linha da tabela representa um curso, exibindo seu id, nome e 
quantas disciplinas ele possui. Na última coluna, ficam os botões de criação, edição e deleção. 
Todas as tabelas de listagem seguem o mesmo padrão, mudando apenas suas colunas e 
entidades. 
43 
 
Figura 28 – Lista de cursos cadastrados 
 
Fonte: Autor, 2022 
 
Ao clicar no ícone de mais, em todas as tabelas do sistema, o usuário é direcionado 
para tela de criação, a figura 29 exibe a tela de cadastro de uma pergunta. Toda questão fica 
associada um assunto, todo assunto fica atrelado a uma disciplina, por sua vez, toda disciplina 
fica associada a um curso. A primeira etapa do cadastro, de uma questão, é a seleção de um 
curso, logo após, o menu seletor de disciplinas é atualizado dinamicamente, baseando-se na 
seleção anterior, recebendo todas as disciplinas associadas a este curso. O mesmo ocorre com 
os assuntos, após a seleção da disciplina, os assuntos associados a ela são preenchidos no 
menu abaixo. 
44 
 
Figura 29 – Cadastro de uma pergunta 
 
Fonte: Autor, 2022. 
 
Após criar todas as associações necessárias, o usuário pode começar a cadastrar sua 
questão, efetivamente, inserido o enunciado da pergunta e suas alternativas. Uma questão 
comporta quantas respostas forem necessárias, fica a critério de quem está realizando a ação 
esta decisão, ao clicar no botão “Adicionar Resposta” uma nova caixa de texto é inserida no 
formulário. Por padrão toda resposta começa sendo falsa, caso seja verdadeira, o checkbox 
(caixa de seleção), abaixo da caixa de texto, deve ser marcado para indicar que a questão está 
correta. Para incentivar o compartilhamento de informação, todas as questões ficam visíveis 
entre todos professores. 
Após o cadastro de uma questão, ela fica visível na listagem de perguntas, podendo 
ser editada ou deletada, caso seja necessário, como pode ser verificado na figura 30. 
 
45 
 
Figura 30 – Listagem de perguntas 
 
Fonte: Autor, 2022. 
 
Os administradores fazem o gerenciamento de todos os usuários, para que um novo 
professor ou administrador seja inserido no sistema, ele deve ser cadastrado no menu de 
edição de usuários, isso garante que usuários de fora não consigam se cadastrar, mantendo o 
controle de acesso do sistema pela instituição que está utilizando a ferramenta. A figura 31 
mostra a listagem de professores, que é muito parecida com a listagem de administradores e 
segue o padrão das demais tabelas de listagem do sistema. 
 
Figura 31 – Listagem de professores 
 
46 
 
Fonte: Autor, 2022. 
 
 
4.5.1.2 users_backoffice 
 
Nesta área, o professor tem acesso a base de dados, igualmente ocorre na área 
administrativa, porém, ele só pode criar ou listar perguntas, como pode ser verificado na 
figura 32. Os professores não podem editar ou deletar perguntas. 
 
Figura 32 – Menu lateral de navegação 
 
Fonte: Autor, 2022. 
 
Ao clicar, no menu lateral, em salas de aula, um submenu é exibido e o professor tem 
duas opções, exibir suas salas ou criar uma nova sala, caso o professor não tenha nenhuma 
sala, ele é automaticamente redirecionado para a página de criação de uma nova sala. Na 
página de criação, ele deve indicar o curso, disciplina e o nome da sala, como pode ser 
verificado na figura 33. 
 
47 
 
Figura 33 – Criação de uma sala 
 
Fonte: Autor, 2022. 
 
Após criar uma sala, o professor pode entrar na página de exibição. As salas são 
representadas por um quadrado e no topo do mesmo, é exibido o nome da sala e um ícone de 
edição, ao clicar nele, o professor é direcionado para uma página onde é possível modificar o 
nome da turma. Abaixo do nome da turma, é mostrado a disciplina desta turma, logo abaixo, 
fica o código de acesso, que é utilizado pelos alunos para adentrar em uma aula. Este 
componente também possui uma “chave seletora” e um botão, aquele, ao ser clicado, ativa ou 
desativa a sala, impedindo que os alunos entrem nela. Já este, redireciona o professor para a 
sala de aula (Figura 34). 
 
48 
 
Figura 34 – Salas de um professor 
 
Fonte: Autor, 2022. 
 
Ao entrar na sala, uma lista com as últimas aulas é exibida, na prima vez,a lista 
estará vazia. Ao clicar em “Nova aula” um modal é aberto, como pode ser analisado na figura 
35. Para iniciar uma aula, o professor deve indicar com qual assunto e questão ele quer iniciar 
a aula, nesse momento, basta clicar em “Criar” e uma nova sala é criada e ficará disponível na 
lista de últimas aula na ordem da mais nova para a mais antiga, basta o professore clicar no 
botão de entrar e ele será direcionado para uma ocorrência de aula. O sistema permite que 
apenas uma aula possa ser criada no dia, caso tente criar duas, um erro é exibido, avisando 
que apenas uma aula pode ser criada no dia. 
Figura 35 – Iniciando uma nova aula 
 
Fonte: Autor, 2022. 
49 
 
 
A figura 36 mostra a visão de um professor ao entrar em uma ocorrência de aula. 
Nesta página existem duas caixas, a primeira serve para exibir algumas informações sobre 
aula. A mensagem exibida ao fim desta caixa é definida a partir da porcentagem de acertos, 
seguindo o diagrama apresentado na figura 1. Ao clicar no botão “Verificar Estatísticas”, caso 
tenha uma nova resposta, as informações são atualizadas. 
Na segunda caixa, é exibido a pergunta e suas respostas, a resposta correta fica 
marcada na cor verde, ao clicar no ícone de uma caneta sobre uma folha, localizado no topo 
esquerdo desta caixa, um modal é aberto, para que o professor escolha uma nova questão. 
Figura 36 – A visão de um professor dentro de uma aula 
 
Fonte: Autor, 2022. 
 
4.5.1.3 Site 
 
Parte do sistema onde os alunos interagem. Na página inicial do sistema, como pode 
ser visto na figura 37, com o código de acesso disponibilizado pelo professor, o aluno 
consegue entrar em uma sala de aula e participar da avaliação que auxiliará o professor na 
tomada de decisão. 
 
50 
 
Figura 37 – Pagina inicial do sistema 
 
Fonte: Autor, 2022. 
 
O aluno, após inserir o código de acesso, é redirecionado para a sala e um modal é 
aberto, sobrepondo as informações, o aluno precisa inserir nome e matrícula para entrar na 
sala, como pode ser analisado na figura 38. Após se identificar, uma sessão é iniciada com 
suas informações, se o aluno já tiver entrado alguma vez no sistema o registro dele é 
carregado, caso contrário, um novo registro é criado no banco de dados. 
 
Figura 38 – Identificação do aluno 
 
51 
 
Fonte: Autor, 2022. 
 
A figura 39, exibe a visão de um aluno após se identificar, para esta tela, foi pensado 
um layout minimalista, sem muitas informações, para não tirar o foco do aluno, um quadro 
que contem em seu topo o nome da disciplina e um botão para finalizar a sessão, caso o aluno 
não reconheça a mesma. No centro superior do quatro, é exibo uma mensagem de boas-
vindas. No centro do quadro, caso o aluno não tem dado sua resposta para a pergunta corrente, 
a questão é exiba até que o mesmo indique sua resposta. Caso ela já tenha respondido, uma 
mensagem informativa, dizendo que aluno deve aguarda uma nova questão, é exibida. 
 
Figura 39 – Visão do aluno após se identificar 
 
Fonte: Autor, 2022. 
 
4.5.2 Código implementado 
 
A aplicação está dividida em três grandes áreas: AdminsBackoffice, responsável pela 
área administrativa; UsersBackoffice, que fica responsável pela área dos professores; Site, 
local onde os alunos interagem com o sistema. Cada área possui um controlador, que herda o 
controlador da aplicação, nele é indicado qual layout (view) será exibido. 
 
52 
 
4.5.2.1 Controllers 
 
O controller representa o C de MVC (modelo, visão e controlador), ao gerar um 
projeto Rails com o comando “rails new nome_do_projeto”, uma estrutura de pastas e 
arquivos são gerados, uma das pastas geradas é a “controllers”, dentro dessa pasta tem um 
arquivo ruby chamado “application_controller”, a classe pai de todos os controllers que 
surgirão durante o ciclo de vido de um projeto Rails. Essa classe principal possui todas as 
configurações e métodos que podem ser usados dentro de um controller, como por exemplo o 
callback (chamada de retorno) “before_action”, como pode ser visto na figura 40, todas as 
vezes que uma função for invocada, dentro do controlador da aplicação ou em todos os outros 
controladores que herdarem este, antes da ação acontecer, uma mensagem dizendo “olá” será 
exibida no console. 
 
Figura 40 - Exemplo de uma chamada de retorno 
 
Fonte: Autor, 2022. 
 
4.5.2.1.1 AdminsBackoffice Controller 
 
A figura 41 exibe o controlador principal da área administrativa, este herda o 
controlador principal do sistema e será herdado por todos os controladores desta área. Neste 
controlador é indicado que antes de qualquer função ser executada, que passe por ele, será 
feita a validação das credências do usuário e caso não possa ver o conteúdo desta página, será 
redirecionado para a página de login. Neste controlador também é indicado que o layout html 
da área administrativa será renderizado. 
 
53 
 
Figura 41 - Controlador da área administrativa 
 
Fonte: Autor, 2022. 
 
Todas as entidades possuem um controlador e quase todos controladores possui os 
métodos: index, geralmente exibe uma listagem da entidade em questão; create, método que 
criar um novo registro de uma entidade; update, ação que atualização um registro de uma 
entidade; destroy, função que remove um registro de uma entidade. A figura 42 exibe uma 
parte do código do controlador que gerencia os administradores. 
 
Figura 42 – Controlador responsável pelos administradores 
 
Fonte: Autor, 2022. 
 
Na Figura 43, é possível ver todos os controladores da área admirativa, por padrão, 
no Rails, cada entidade deve possuir um controlador com seus métodos de CRUD (Inserção, 
seleção, atualização e deleção) e todos os demais que fogem do padrão CRUD. 
 
54 
 
Figura 43 – Controladores da área admirativas 
 
Fonte: Autor, 2022. 
 
4.5.2.1.2 UsersBackoffice Controller 
 
O controlador principal desta área é parecido com o anterior, mudando o método de 
verificação de usuário, que agora verifica se usuário logado é um professor e indicando que 
layout renderizado será o da área dos professores. 
A figura 44 mostra parte do código do controlador responsável pelas ocorrências de 
aula, ao criar uma aula, o método “create” cria uma instância com os parâmetros passados via 
requisição HTTP (Hypertext Transfer Protocol). Logo após, o método “occurence_on_day?”, 
é invocado para verificar se existe uma aula criada neste dia, caso a preposição seja 
verdadeira, o professor é redirecionado para a tela de aulas e um alerta é exibido, informando 
que só é possível criar uma aula por dia. Caso contrário, a aula é criada, se nenhum erro 
acontecer. 
 
55 
 
Figura 44 – Parte do código do controlador de ocorrências de aulas 
 
Fonte: Autor, 2022. 
 
4.5.2.2 Models 
 
A model representa o M de MVC (modelo, visão e controlador), todas as tabelas do 
sistema possuem um arquivo, do tipo ruby, dentro da pasta “models”. Todas herdam a super 
classe “Application Record”, camada da aplicação responsável pelos registros dentro do 
banco de dados. Assim como a super classe “Application Controller”, esta classe possui 
vários métodos que podem ser utilizados para facilitar o desenvolvimento, por exemplo o 
callback (chamada de retorno) “before_create”, após um registro ser criado, o método 
declarado é invocado podendo alterar, manipular, validar os atributos do registro em questão. 
Os relacionamentos entre tabelas, são feitos a nível de aplicação, ou seja, ao acessar 
um banco de dados, criado pelo Rails, utilizando, por exemplo a ferramenta “MySQL 
Workbench” para gerar um modelo, a partir de um banco já existem, utilizando a opção 
engenharia reversa, as tabelas do banco ficarão “soltas”, sem nenhuma relação entre elas, 
porém, isso não significa que não exista essas relações, já que elas são realizadas dentro da 
camada da aplicação, pelo “Active Record”. 
Na figura 45 é possível analisar os relacionamentos da tabela“classroom”, o 
comando “belongs_to” indica ao Rails que essa tabela possui um relacionamento um para um 
com a tabela usuários (representando os professores) e com a tabela disciplina. Já o comando 
“has_many” é um mecanismo oferecido pelo Rails que facilita a pesquisa inversa, partindo de 
56 
 
uma sala de aula, é possível selecionar todas as ocorrências de aula que possuem o id da sala 
de aula em questão. 
Figura 45 – Modelo Classroom 
 
Fonte: Autor, 2022. 
 
A chamada de retorno “set_access_code” presente na figura 45, gera um código de 
acesso único com 4 casas na base 64, após uma sala ser criada. 
 
4.5.2.3 Views 
 
A view representa o V de MVC (modelo, visão e controlador), cada entidade possui 
uma pasta, com o seu nome, dentro da pasta “views” (figura 46). Os arquivos das view, são do 
tipo “html.erb”, esse tipo de arquivo suporta html mesclado com código ruby. Cada página 
está associada a uma ação (método) contida dentro de seu respectivo controlador. 
 
57 
 
Figura 46 – Parte da estrutura de view 
 
Fonte: Autor, 2022. 
 
Cada entidade possui uma pasta, dentro desta pasta possui outra pasta chamada 
“shared”, nesta, possui um formulário que é invocado tanto na página de criação, quando na 
página de edição, ou seja, as duas utilizam o mesmo bloco de código html. Na figura 47, o 
trecho de código invoca o formulário, passando algumas várias locais, que são utilizadas para 
alterar parte do código no momento da renderização, esse tipo de bloco, em rails, é chamado 
de “partial” (parcial). 
Figura 47 – Edição de um curso 
 
Fonte: Autor, 2022. 
Cada área do projeto conta com layout diferente, ao comentar a parte do código que 
renderiza os componentes dentro desse layout, é possível ver apenas o layout da página 
(figura 48). 
 
58 
 
Figura 48 – Layout área administrativa 
 
Fonte: Autor, 2022. 
 
 
5 CONSIDERAÇÕES FINAIS 
 
A tabela 1 apresenta o as funcionalidades que foram implementadas durante a 
elaboração deste projeto comparando com as ferramentas Kahoot e Socrative. Apesar de o 
Socrative e o Kakoot possuírem mais funcionalidades, SABEPI possui código fonte aberto e 
livre para distribuição e foi projetado para aplicar o peer instruction. 
 
Tabela 1– Comparação com outras ferramentas 
Funcionalidade Kahoot Socrative SABEPI 
Criação de jogos e quizzes Sim Sim Apenas quizzes 
Jogos em tempo real Sim Sim Não 
Jogos de aprendizado em ritmo 
próprio 
Sim Sim Não 
Personalização de jogos Sim Sim Não 
Relatórios de desempenho Sim Sim Sim 
Compartilhamento com outros Sim Sim Sim 
59 
 
Integração com outros 
aplicativos 
Sim Sim Não 
Ferramentas de ensino remoto Não Sim Não 
Análise em tempo real Não Sim Sim 
Elaborado para aplicar o peer 
instruction 
Não Não Sim 
Código livre Não Não Sim 
Fonte: kahoot, 2022; Socrative, 2022 
 
O custo de hospedagem de um aplicativo Rails de tamanho médio pode variar 
bastante dependendo da plataforma de nuvem escolhida e dos recursos necessários para o 
aplicativo. Algumas das principais opções de nuvem para hospedagem de aplicativos Rails 
incluem o Amazon Web Services (AWS), o Google Cloud Platform (GCP) e o Microsoft 
Azure. A tabela 2 exibe uma estimativa dos custos médios para hospedar um aplicativo Rails 
de tamanho médio em cada um desses provedores de nuvem. Observe que esses preços podem 
variar de acordo com as configurações e os recursos específicos do aplicativo. Além disso, 
esses provedores de nuvem podem oferecer descontos por uso prolongado ou por 
compromisso de uso. 
 
Tabela 2 – Custo médio para hospedar um aplicativo Rails 
Provedor de nuvem Preço mensal (médio) 
Amazon Web Services (AWS) $200 - $400 
Google Cloud Platform (GCP) $150 - $300 
Microsoft Azure $200 - $400 
Fonte: Microsoft; Amazon; e Google cloud, 2022. 
 
5.1 LIMITAÇÕES 
 
A construção de uma aplicação full stack, profissional que tem a capacidade de atuar 
em várias áreas diferentes dentro de um projeto web (infraestrutura, front end, back end e 
etc...), é um trabalho árduo e exige muitas horas de estudo; a tarefa fica mais complicada 
quando o projeto é executado por apenas um desenvolver. Se fosse necessário refazer todo 
projeto, com toda certeza, optaria em desenvolver apenas uma API. 
60 
 
O tempo disponibilizado para a disciplina de TCC II foi a maior dificuldade em todo 
o ciclo de vida deste projeto, levando em consideração a quantidade de funcionalidades 
desenvolvidas. 
 
5.2 POSSIBILIDADES FUTURAS 
 
O peer instruction é uma metodologia promissora e existem funcionalidades que não 
puderem ser implementadas, a refatoração deste projeto, transformando-o em uma API, seria 
uma oportunidade para que outros acadêmicos pudessem utilizar para criar uma aplicação 
front end, utilizando tecnologias reativas, como React.js, Vue.js e React Native. 
Algumas funcionalidades que facilitariam ainda mais a aplicação do peer instruction 
podem ser: 1) Caso o percentual de acertos em determinado assunto fique entre 30 a 70 por 
cento, criar um agrupamento entre alunos que deram respostas divergentes. 2) Se for uma aula 
remota, seguindo o raciocínio da funcionalidade anterior, criar um canal privado com 
pequenos grupos de alunos que divergiram, para que eles possam debater suas respostas. 3) 
Criar um quadro de métricas, para indicar para os professores quais assuntos os alunos 
possuem mais dificuldade. 
 
 
61 
 
REFERÊNCIAS 
 
ADNAN, Khairi. Jquery-datatables: jquery datatables ruby gems for assets pipeline. Jquery 
datatables ruby gems for assets pipeline. Disponível em: https://github.com/mkhairi/jquery-
datatables. Acesso em: 06 jul. 2022. 
 
ARAUJO, Ives Solano; MAZUR, Eric. Instrução pelos colegas e ensino sob medida: uma 
proposta para o engajamento dos alunos no processo de ensino-aprendizagem de física. 
Caderno Brasileiro de Ensino de Física, [S.L.], v. 30, n. 2, p. 1-23, 17 abr. 2013. 
Universidade Federal de Santa Catarina (UFSC). http://dx.doi.org/10.5007/2175-
7941.2013v30n2p362. 
 
ATLASSIAN. O que é o Kanban? 2022 ©. Disponível em: 
https://www.atlassian.com/br/agile/kanban. Acesso em: 29 set. 2022. 
 
AUWERA, Nathan van Der. Cocoon. 2010 ©. Disponível em: 
https://github.com/nathanvda/cocoon. Acesso em: 05 jul. 2022. 
 
COMUNIDADE DEVISE. Devise is a flexible authentication solution for Rails based on 
Warden. 2020 ©. Disponível em: https://rubydoc.info/github/heartcombo/devise/. Acesso 
em: 1 jul. 2022. 
 
COMUNIDADE FAKER. Gem Faker. Disponível em: https://github.com/faker-ruby/faker. 
Acesso em: 05 jul. 2022. 
 
COMUNIDADE RAILS. Getting Started with Rails. 2022. Disponível em: 
https://guides.rubyonrails.org/v5.2/getting_started.html. Acesso em: 30 jun. 2022. 
 
COMUNIDADE RUBY. Ruby. Disponível em: https://www.ruby-lang.org. Acesso em: 30 
jun. 2022. 
 
DIEMER, Mouriac Halen; BERCHT, Magda; CANTO FILHO, Alberto Bastos do; SCHORR, 
Maria Claudete. METODOLOGIAS ATIVAS NO ENSINO DE ALGORITMOS E 
PROGRAMAÇÃO: um relato de aplicação da metodologia peer instruction. Revista 
Destaques Acadêmicos, [S.L.], v. 11, n. 4, p. 240-255, 30 dez. 2020. Editora Univates. 
http://dx.doi.org/10.22410/issn.2176-3070.v11i4a2019.2400. 
 
GOOGLE LLC. Gere insights facilmente com o Google Forms. Disponível em: 
https://www.google.com/intl/pt-BR/forms/about/. Acesso em: 26 jun. 2022. 
 
MAZUR, Eric; SOMERS, Mark D.. Peer Instruction: a user as manual. American Journal 
Of Physics, [S.L.], v. 67, n. 4, p. 359-360, abr. 1999. American Association of Physics 
Teachers (AAPT). http://dx.doi.org/10.1119/1.19265. 
NPM INC. Npm Docs. Disponível em: https://docs.npmjs.com/. Acesso em: 06 jul. 2022. 
 
OPENJS FOUNDATION. JQuery API. Disponível em: https://api.jquery.com/. Acesso em: 
07 jul. 2022. 
 
62 
 
PG: The Ruby PostgreSQL Driver. 2019 ©. Disponível em: 
https://deveiate.org/code/pg/README_rdoc.html. Acesso em: 4 jul. 2022. 
 
RACHELLI, Janice; BISOGNIN, Vanilde. Peer Instruction:uma experiência no ensino de 
cálculo com base em metodologias ativas de aprendizagem. Revista Eletrônica de Educação 
Matemática, [S.L.], v. 15, n. 1, p. 1-21, 14 maio 2020. Universidade Federal de Santa 
Catarina (UFSC). http://dx.doi.org/10.5007/1981-1322.2020.e66341. 
 
REFSNES DATA. Bootstrap Get Started. Disponível em: 
https://www.w3schools.com/bootstrap/bootstrap_get_started.asp. Acesso em: 07 jul. 2022. 
 
SHOWBIE. Socrative. Disponível em: https://www.socrative.com/. Acesso em: 24 jun. 2022. 
SPRYMEDIA LTD. Using DataTables. 2022 ©. Disponível em: 
https://www.datatables.net/manual/index. Acesso em: 06 jul. 2022. 
 
THE POSTGRESQL GLOBAL DEVELOPMENT GROUP. PostgreSQL: the world's most 
advanced open source relational database. The World's Most Advanced Open Source 
Relational Database. 2022 ©. Disponível em: https://www.postgresql.org/. Acesso em: 4 jul. 
2022. 
 
KAHOOT. Kahoot. Disponível em: https://kahoot.com/. Acesso em: 24 jun. 2022. 
	RESUMO
	ABSTRACT
	LISTA DE FIGURAS
	LISTA DE TABELAS
	LISTA DE ABREVIATURAS E SIGLAS
	SUMÁRIO
	1 INTRODUÇÃO
	2 OBJETIVOS
	2.1 Objetivo Geral
	2.2 Objetivos Específicos
	3 REFERENCIAL TEÓRICO
	3.1 PEER INSTRUCTION
	3.1.1 Definição e características
	3.1.2 Onde é utilizado
	3.1.3 Necessidade de ferramentas auxiliares
	3.2 Ferramentas similares
	3.2.1 Kahoot
	3.2.2 Socrative
	3.2.3 Google Forms
	4 Metodologia
	4.1 delineamento do estudo
	4.2 Tecnologias utilizadas
	4.2.1 Ruby
	4.2.1.1 RubyGem
	4.2.1.1.1 Ruby on Rails
	4.2.1.1.2 Devise
	4.2.1.1.3 Pg
	4.2.1.1.4 Faker
	4.2.1.1.5 Cocoon
	4.2.1.1.6 Jquery-datatables
	4.2.2 Npm
	4.2.2.1 Bootstrap
	4.2.2.2 jQuery
	4.3 Prototipação
	4.4 Descrição do modelo da base de dados
	4.4.1 Tabela User
	4.4.2 Tabela Classroom
	4.4.3 Tabela Class_occurrence
	4.4.4 Tabela Subject e Course
	4.4.5 Tabela Topic
	4.4.6 Tabela Answer_occurrence
	4.4.7 Tabela Answer
	4.4.8 Tabela Question
	4.5 Ferramenta implementada
	4.5.1 Funcionalidades
	4.5.1.1 Admins_backoffice
	4.5.1.2 users_backoffice
	4.5.1.3 Site
	4.5.2 Código implementado
	4.5.2.1 Controllers
	4.5.2.1.1 AdminsBackoffice Controller
	4.5.2.1.2 UsersBackoffice Controller
	4.5.2.2 Models
	4.5.2.3 Views
	5 Considerações finais
	5.1 Limitações
	5.2 Possibilidades futuras
	REFERÊNCIAS
		2022-12-23T09:46:12-0300
		2022-12-23T10:55:53-0300
		2022-12-23T17:21:50-0300
		2022-12-23T17:24:19-0300

Continue navegando