Projecto

Na disciplina de Engenharia de Software, iremos estender a aplicação Quizzes Tutor, uma aplicação de gestão e criação de perguntas de escolha múltipla.


Cada professor possui um dashboard associado a cada uma das execuções das suas disciplinas (course executions). Atualmente, esse dashboard é muito limitado, pois apenas fornece informação ao professor sobre o número de alunos inscritos. O objectivo do projeto é melhorar esse dashboard, adicionando mais estatísticas sobre alunos, quizzes e questões.


Para facilitar o desenvolvimento estão disponíveis vídeos sobre a aplicação, sobre algumas das suas funcionalidades, modelos e código. Adicionalmente, todas as funcionalidades podem ser experimentadas usando as interfaces DEMO (Student, Teacher e Admin) disponibilizadas.


Grupos e Ramos

O projeto é realizado por grupos de 6 alunos, subdivididos em grupos de 2 alunos. Cada subgrupo de 2 alunos fica responsável por uma das funcionalidades.

Filosofia de desenvolvimento obrigatória (os grupos que não a seguirem serão penalizados):

  • No repositório git existirá um ramo (branch) principal denominado master. Este ramo é partilhado por todos os subgrupos. O buildbot do master deve estar sempre verde.

  • O código é desenvolvido seguindo uma política de merge requests (MRs), em que o código tem que ser revisto obrigatoriamente por um elemento de cada um dos outros dois subgrupos.

  • Cada história é implementada num novo ramo. Cada commit implementa uma tarefa e deve ser feito pelo aluno que implementou o código. NB: pair programming é aceite, desde que seja alternado entre os dois alunos quem escreve o código (e faz commit) e quem observa. Uma tarefa pode ter vários commits se a tarefa incluir, p.ex., código e testes.

  • Os MRs devem ser merged no master via rebase e nunca squash (caso contrário perde-se o histórico dos commits). Merge commits não são aceites para manter o histórico linear.

  • Quando o subgrupo decide dividir as tarefas de uma história, cada aluno deve implementar vários tipos de tarefas. Por exemplo, não pode implementar apenas tarefas de teste.

  • As mensagens de commit devem seguir o padrão de https://www.conventionalcommits.org/en/v1.0.0 

  • Todos os commits devem ser feitos utilizando o nome real e o endereço de email do IST.



Entregas

O projeto tem 3 entregas:

  1. (30%) Domínio, persistência e testes de unidade - entrega a 3 de março de 2023 às 17:00

  2. (30%) Camada de serviços, serviços REST, DTOs e testes de serviço - entrega a 17 de março de 2023 às 17:00

  3. (40%) Camada de apresentação, testes end-to-end e testes de carga - entrega a 14 de abril de 2023 às 17:00


As entregas são efetuadas no GitLab RNL, usando tags com o formato sprint-x, onde x é 1 na primeira entrega e assim sucessivamente.

A tag não pode ser alterada após a data e hora estipulada (isto será verificado pelos docentes).


Exemplo de como colocar a tag da 1ª entrega:

git tag -a sprint-1 -m "first sprint"
git push origin sprint-1


Funcionalidades

As três funcionalidades são apresentadas de seguida. Nas secções abaixo dedicadas a cada uma das partes são descritas as tarefas necessárias para resolver o projeto.

Teacher Dashboard

Cada professor possui vários dashboards, cada um associado a uma das execuções das suas disciplinas (course executions). Actualmente, esse dashboard é muito limitado, pois apenas fornece informação ao professor sobre o número de alunos inscritos.

O objetivo do projeto é melhorar esse dashboard, adicionando mais estatísticas sobre alunos, quizzes e questões. As estatísticas contemplam as três últimas execuções da disciplina (incluindo a actual).

Como o site tem um tráfego muito elevado, a informação mostrada no dashboard deve ser calculada off-line e persistida. A informação é actualizada todas as noites no período de menor tráfego do site, através de um cron job.


As três funcionalidades a implementar são:

Estatísticas sobre Alunos (ESA)

O professor deve poder visualizar no seu dashboard as seguintes estatísticas sobre alunos relativas às três últimas execuções da disciplina activa:

  1. Número total de alunos

  2. Número de alunos que acertou em mais de 75% das perguntas

  3. Número de alunos que resolveu pelo menos 3 quizzes


As estatísticas referentes à execução atual também devem ser mostradas na secção "Statistics for this course execution" (usando o mesmo estilo que foi utilizado para mostrar o número de alunos).


A imagem abaixo mostra uma sugestão de como esta informação pode ser mostrada.

Estatísticas sobre Quizzes (ESQ)

O professor deve poder visualizar no seu dashboard as seguintes estatísticas sobre quizzes relativas às três últimas execuções da disciplina activa:

  1. Número total de quizzes disponíveis

  2. Número total de quizzes únicos resolvidos por alunos

  3. Número médio de quizzes únicos resolvidos por aluno


As estatísticas referentes à execução actual também devem ser mostradas na secção "Statistics for this course execution" (usando o mesmo estilo que foi utilizado para mostrar o número de alunos).

A imagem abaixo mostra uma sugestão de como esta informação pode ser mostrada.

Estatísticas sobre Perguntas (ESP)

O professor deve poder visualizar no seu dashboard as seguintes estatísticas sobre perguntas relativas às três últimas execuções da disciplina activa:

  1. Número total de perguntas disponíveis

  2. Número total de perguntas únicas respondidas por alunos

  3. Número médio de perguntas únicas respondidas por aluno


As estatísticas referentes à execução atual também devem ser mostradas na secção "Statistics for this course execution" (usando o mesmo estilo que foi utilizado para mostrar o número de alunos).


A imagem abaixo mostra uma sugestão de como esta informação pode ser mostrada.






Modelo de domínio