CSC/ECE 517 Fall 2017/E1798 Role-based Reviewing

From Expertiza_Wiki
Jump to navigation Jump to search

Problem Statement

In various agile methodologies, such as Scrum, different team members take on different duties, such as architect, designer, tester and implementer. Currently, there is no functionality that enables this. The purpose of this project is to assign different duties to team members of an assignment. While reviewing too, there will be different rubrics for evaluating the contribution of members with different roles.

Solution

Task Description

1. A table 'duties' is created. It contains all the duties created through the 'Create Duties' link on the homepage.
2. While creating or editing an assignment, there is a checkbox in the 'Review Strategies' tab, which specifies whether the assignment is a role-based assignment.
3. If the checkbox is checked, different duties can be added to the assignment through the UI.
4. When an assignment is a role-based assignment, the student should be able to assign duties to himself through the 'Your Team' page. In case the duty does not allow multiple team members to take on the same duty, the student cannot pick a duty that has been picked by another member.
5. While reviewing, there are different rubrics associated with different duties, which can be created through the 'Questionnaires' tab on the homepage.
6. When a particular teammate is being reviewed, the system presents the correct rubric based on the duty of the teammate.

Database Changes

A new table called 'duties' is created with the following structure -
duty_name (varchar) - Name of the duty
multiple_duty (boolean) - If multiple team members can have the same duty in one assignment, this field will be true. Otherwise, it should be false.
questionnaires_id (int) - The id of the rubric associated with that duty.


A new table called 'assignments_duties' is created with the following structure -
duty_id (int) - Duty id from table duties
assignment_id (int) - assignment id of assignment associated from table assignment

This table will have all the assignments and the duties associated with it. If it is not role based assignment then we won't have any rows for that assignment in this table.


The existing table 'assignments' is modified to include the following fields -
duty_flag (boolean) -the duty_flag is true if the assignment is a role based assignment, else it is false.


The existing table 'teams_users' will be modified to include the following fields -
duty_id (int) - If the duty_flag is checked, this field will give the duty assigned to a team member for the assignment. It will be null otherwise.

File Changes

Controllers -

duties_controller.rb - New controller that handles the actions performed by view in new.html.erb and _form.html.erb.

New functions 'set_duty', 'create' - These will allow creating new duties and saving them.

assignment_duties_controller.rb - New controller to handle actions performed while adding duties to a new assignment.

New functions 'create', 'set_assignments_duty' etc. - These will allow saving duties associated with an assignment.

student_teams_controller.rb - This controller has been modified to allow selecting a duty for a team member so that review rubrics can be done based on that role.

New functions 'add_duty' and 'duty_assigned', 'available_duties', 'duties_allowed' are defined so that a team member can select a duty and save it.

questionnaires_controller.rb - Controller has been modified to add support for assigning duty while creating a rubric.

New function 'fetch_duties' added which retrieves duties to be associated with new rubrics.


Views -

files in views/duties/ - View files to add, edit or remove duties through the user interface.

assignments/edit/_review_stategy.html.erb - This is view file that has the 'Review Strategy' form for a new or modified assignment. This view will have a checkbox that will specify whether the assignment is role-based.

assignments/edit/_rubrics.html.erb - This view file for the 'Rubrics' tab will specify the reviewing rubric that is applicable.

student_teams/view.html.erb - This view shows the team members and their email id's. We can review them from here. If the assignment is a duty based one, then duties will be visible along side the existing fields. If the duties are not selected yet, then a set duties drop down will be visible to choose them.

questionnaires/_questionnaire.html.erb - This view is used to create a new rubric. It will have a drop down menu consisting of various duties if the rubric is of Teammate Review type. The instructor can thus pick a duty to be associated with the new rubric.

UI Description

The new changes will be as follows in the UI -


  • The team would add the duties as -

Original page


Updated page


  • The Instructor would mark the assignment where team members will have duties or not -

Original page


Updated page


  • The Rubrics will added based on the role -


  • New duties can be created as follows -


Use Case Diagram


Actors - Instructor and Student


1. Instructor

Preconditions -

  • Reviewing rubrics for different duties have been created through the 'Questionnaires' tab on the homepage.
  • Duties have been created through the 'Create Duties' link on the homepage


Sequence of steps -

  • Log into Expertiza
  • While creating or editing an assignment, select the checkbox to make the assignment role based
  • Add duties that team members can take on through the 'Review Strategies' tab
  • Finish creating the assignment


2. Student

Preconditions -

  • Student is already a part of a team
  • The assignment that the student is working on is a role-based assignment


Sequence of steps -

  • Log into Expertiza
  • On 'Your Team' page, choose a duty to take on from a list of available duties (If multiple_duty is not enabled for a particular duty, the duty will be assigned to first member who chooses it, and will be disabled for the others)
  • On 'Your Team' page, click 'Review' link for a particular team member
  • Review the team mate based on the rubric loaded for his duty

Class Diagram

  • The table 'duties' will contain the name of the duty, rubric associated with the duty and a field to specify whether multiple team members can choose the same duty.
  • Assignments will either be role-based or not, depending on the value of the duty flag.
  • The DutyController will be used to perform operations like create, edit for duties.
  • The AssignmentsController functions will allow saving the duties assigned to an assignment and saving whether the assignment is role-based.
  • The functions in StudentTeamsController are defined so that a team member can select a duty from available duties and save it.
  • The functions in QuestionnaireController are defined so that a rubric can be associated with a duty.


Test Plan

  • For the instructor

1. While creating a new assignment, new checkbox will be available to make it a role-based assignment

2. If the checkbox is checked then the instructor will be able to add roles which will be applicable for the assignment

3. A role can be repeated among team members based on the role stored in the database.

4. New rubrics for a particular role can be added under Questionnaires tab for specific review questions based on role of a team member


  • For the student in team

1. Once a student is in a team for the assignment with roles, they can pick up roles.

2. If a role does not allow multiple members, it will not be visible to other members to choose if chosen already.

2.1. A new view will open for selecting roles which are available.

2.2. The student can select an available role.

2.3. Once a role is selected by a member, it will not be visible for selection.

3. If a role allows multiple selection, multiple team members will be able to select a role.

4. When a peer review begins, the rubrics will be related to that particular role.

5. The members will review each member based on the role the member played for the assignment.


For assignments without roles, the peer reviews will be as per the current functionality with generalized review rubrics for all and not role based.


Sample Test Cases using RSpec -

  • student_teams_controller

  • questionnaires_controller