CSC/ECE 517 Spring 2018- Project E1818: Role-based reviewing

From Expertiza_Wiki
Jump to navigation Jump to search

Introduction

Problem Statement

The project is to enable role-based team-mate reviews. These roles can be better named as duties, corresponding to the duty of a team member in a particular project. The instructor should be able to use a different rubric for evaluating the contribution of team mates with different roles. Borrowing from different Agile methodologies like SCRUM, each team member has a particular role. For example,architect,facilitator and implementer. Although one member can contribute to other duties, a much more meaningful review can be done if the review rubric was role-specific. Currently, there is a single teammate review rubric for each assignment. This means that some review questions are not applicable for all team members. For instance, if there is a question which says “What percentage of the code was written by this member?” This may not be applicable for the team member who wrote tests or documentation.

UML Diagram


In a UML Class diagram, The relationships depicted above are as follows:

  • Between the User and Duty class, there is a bidirectional association. The user table is used for both the instructor and the student.
    • Each instructor can have multiple roles that he can choose from for a particular assignment/questionnaire.
    • Each student can have 0 or 1 role for a particular project.
  • For each Questionnaire instance, there are one or more Questions that can be stored, hence there is an aggregation relationship from Question to Questionnaire. This is for the grading rubric based on the role.
  • The Question table and the Questionnaire table each will be using the the duty ID to sort out questions for a particular assignment.

Proposed Implementation

The project introduces changes from the instructor view and the student view. The steps for implementation are as follow:

Migration changes

  • . Create Duties table: This table stores all the duties created by any instructor.
              * id - The duty ID will be used by other tables like the questionnaire table and hence will be the primary key.
              * assignment_id - An assignment has particular duties. Thus, the assignment number will be the foreign key for the Duties table. 
              * instructor_id - The Duties created by one Instructor should be visible and reusable by that instructor only. Thus, the instructor id will also be a foreign key in the Duties table.
  • Create assignments_duty_mappings table: If an instructor wants to add multiple duties for an assignment, storing it in the duty table will cause the duty to be overwritten. Thus we have created a table which maps an assignment and all its duties.
              * id 
              * assignment_id 
              * duty_id
  • Create assignment_duty_questionnaire_mappings table : This table is created to store the questionnaire for team-mate review rubrics and the corresponding duty id.
              * id 
              * assignment_id 
              * duty_id
              * questionnaire_id
  • Add a column entry named "role_based_assignment" in the assignments table which would be of type boolean. This field would save the status of the role based review check box.
  • Add a column entry named "allow_multiple_duties" in the assignments table which would be of type boolean. This field would save the status of the check box for allowing multiple students with the same role.
  • Add a column entry named "Duties" to the Users table which would be of type string. This field would save the duty that a student would select if role based reviews are permitted.

Instructor view changes

  • For a particular assignment, in the 'Review Strategy' tab edit assignment,create a check box called "Is role based review allowed?" that allows an instructor to add a role based review for a particular assignment or not. This can be done by adding a check box tag in the review strategy sub page of the edit assignments page.

  • When the check box is ticked, the duties that have been already added and a button to "Add duty" pops up.
  • We call the java script function dutiesAssign() using the ischecked listener. The function queries the value of the checkbox for role_based_review and depending on if the value is true or false, the hidden attributes i.e. allow_multiple_duties and duties_dropdown are displayed or kept hidden.
  • The instructor can select from the dropdown of duties. We have allowed multiple duties to be selected at once.The duties created by an instructor are unique for that instructor and are not displayed for any other instructor.
  • An instructor can decide the number of duties for a particular assignment, the number of team members who can undertake a particular duty and if any of the duties are optional.
  • When the assignment is saved, the duty_id is saved to the assignment_duty_mappings table.
  • The instructor can create Team-mate review Questionnaires for the different duties he created or can use any from the existing list of questionnaires.
  • In order to do this, the instructor has to go to the Rubrics tab of edit assignment. There, if the assignment is role-based, a drop down menu displays the list of all the duties selected for an assignment.
  • When the assignment is saved, the questionnaire_id is stored in the assignment_duty_questionnaire_mappings table

Student view changes

  • When a student goes to “Your team”, he can select a duty from a drop down menu which displays all the duties added by an instructor for that particular assignment. This should only occur if role based reviewing is permitted for that particular assignment. If not, the standard existing view will be displayed which does not give any such option.
  • This is implemented by adding a drop down box in the student_teams view file. This would be enclosed in a conditional which would only appear if role based reviewing is permitted.
  • A student can only select one duty.
  • If the instructor has permitted multiple students to have the same role, each student will get all the duties as an option in the dropdown box. However, if the instructor has not provided permission for multiple students to have the same role, when a particular duty is selected by a student , any other student will not see that duty in the drop down box.
  • This has been implemented by making a separate copy of the list of all the duties available. If multiple roles are not permitted, once a duty is selected , it is eliminated from the separate list maintained and that list is displayed to the student. There is a conditional in the student teams view file that displays the separate list in the drop down if multiple students can have the same role or else display the original list of duties.
  • A team member cannot change their role after the assignment submission deadline.
  • This is implemented by taking the time and date information from the server and showing the select duties option only if the current time and date is prior to the deadline time and date. A conditional statement is included in the student teams view file for this purpose.
  • When a student selects a particular duty , it is stored in the database table of that user. Thus when a team-mate reviews that student , he will see a questionnaire corresponding to the duty of that student.This would enable reviews of the teammates to be accurate and specific to their role in a project.

Files to be modified

New files

Some of the new migration files we have created are

  • db/migrate/add_duties_table.rb
In this file, a duties table is created with a name field
  • db/migrate/add_reference_of_instructor_and_assignment_to_duties.rb
 In this file, we have adding foreign key reference of assignment id into duties table.
  • db/migrate/add_duties_to_users.rb
 In this file, a column named duties is added to the Users table
  • db/migrate/add_multiple_duties_to_assignments.rb
 In this file, we have added a column allow_multiple_duties to assignments table
  • db/migrate/create_assignment_duty_questionnaire_mapping.rb
 In this file, we have created assignment_duty_questionnaire_mappings table and added columns for questionnaire_id, assignment_id and duty_id

Files that have to be modified

  • app/views/assignments/edit/review_strategy.html.erb
In this file, a checkbox is added to permit role based review. A hidden checkbox is added to allow multiple students to have the same role and hidden fields for adding duties along with a dropdown box for selecting from existing duties.
A javascript function is added which removes the hidden attributes from for the above stated entries once the checkbox is selected.

  • app/views/assignments/edit/rubrics.html.erb
In this file , a conditional statement is added, which displays the dropdown for selecting duties and a dropdown for selecting a teammate review for the selected duties if role based reviewing is permitted or else display the standard view.
       
  • app/views/student_teams/view.html.erb
In this file, a conditional statement is added which displays the select duties dropdown box is role based reviewing is allowed or else displays the standard view. 
  • app/controllers/response_controller.rb
In this file, the new_feedback function will be edited to map the team-mate review questionnaires according to the duties created.
  • app/questionnaire/new.html.erb
A new questionnaire will be created for each new duty created or the same questionnaire can be used.
  • app/questionnaire/edit.html.erb
A newly created questionnaire for a particular duty can be edited.

Test Plan

  • Instructor tests
    • Check the box for role based reviewing.
      • Display and select from already existing roles(duties) with option to create new roles(duties).
      • Should not be able to see roles(duties) from other instructors.
      • Select corresponding rubrics for a particular role(duty).
    • If not, proceed with the default questions for the rubric for the assignment.
  • Student(team member) tests
    • Before submitting the project, all team members should select a role(duty) for themselves from the roles(duties) set by the instructor.
    • Multiple students may have the role(duty) but 1 student cannot have multiple roles(duties).
  • Reviewer tests
    • For the teammate review, only the questions related to the role(duty) selected by the student should appear in the rubric.