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:
(30%) Domínio, persistência e testes de unidade - entrega a 3 de março de 2023 às 17:00
(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
(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:
Número total de alunos
Número de alunos que acertou em mais de 75% das perguntas
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:
Número total de quizzes disponíveis
Número total de quizzes únicos resolvidos por alunos
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:
Número total de perguntas disponíveis
Número total de perguntas únicas respondidas por alunos
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.