CSC/ECE 517 Fall 2014/final E1472 gjfz
Design Document
E1472: Connect changes to score model with changes to score views
System Architecture
Introduction
Expertiza is a web application where students can submit and peer-review learning objects (articles, code, web sites, etc). It is used in select courses at NC State and by professors at several other colleges and universities. One of the Expertiza features is to report scores to both students and the instructor. The student can see the feedback from other students, such as the max score, the min score and the average score.
Requirements
A way to query db models to return scores, without UI changes
These methods report grades to students and instructors. The view method reports everyone’s grades to an instructor, and the view_my_scores method reports peer-review scores to a student. This code is very slow, due to many factors. Two of the most prominent are the fact that separate db queries are used for each rubric that has been filled out by anyone associated with the assignment; these queries are made sequentially while the HTML page is being written; and the fact that HTML for the whole page is generated, largely by controller methods, before anything is displayed.
UI changes for reporting scores
The GradesController class is responsible for displaying grades to students (via view_my_scores) and instructors or Teaching Assistant (via the view method). We will modify the Score class, and reduce the number of variables in order to remove code duplication and improve the loading speed.
What we need to do
- Remove the get_ and set_ accessor names; just use Ruby accessors.
- Change camel-case vs. underscores to match the Ruby convention.
- In grades/_participant.html.erb, don’t create local variables in the view; rather, create an object that has max, min, and avg fields for each kind of reviews. Try to avoid the need to check review type; instead, just pass the kind of review when referring to a max, min, or avg field and use polymorphism.
- Also, you shouldn’t have to check for the existence topic in the view; if it is null, a null string should just be returned.
- There are lots of calculations in the views, which should be moved to the model.
Use Case
The figure above mainly illustrates the process of viewing scores for different actors. The instructor and teaching assistant are able to view scores of all the team and could see the reviews of a selected team. Student actor can see his own scores and reviews.
Actor | Description |
---|---|
Instructor | This actor is responsible for viewing scores and reviews of all the students(teams). |
Teaching Assistant | This actor is responsible for viewing scores and reviews of all the students(teams). |
Student | This actor is responsible for viewing scores and reviews of his own or of his team. |
Name: Student views his team score
Actor: Student
Other Participants: None
Precondition: At least team's score exists.
Primary Sequence:
- Log in to Expertiza
- Choose Assignment from multiple Assignments
- Select Your Scores button from an Assignment menu
Name: Student views his team's review by other students
Actor: Student
Other Participants: None
Precondition: At least team's score exists.
Primary Sequence:
- Log in to Expertiza
- Choose Assignment from multiple Assignments
- Select Your Scores button from an Assignment menu
- Select show_review in score page
Name: TA views teams' review
Actor: TA
Other Participants: None
Precondition: At least team's review exists.
Primary Sequence:
- Log in to Expertiza
- Choose Assignment from multiple Assignments
- Select Your Scores button from an Assignment menu
- Select show_review in score page
Name: Instructor or Teaching Assistant views the list of teams scores
Actor: Instructor or Teaching Assistant
Other Participants: None
Precondition: At least one team's score exists.
Primary Sequence:
- Log in to Expertiza
- Choose Assignment from multiple Assignments
- Select View Scores button from an Assignment menu
Objected Oriented Design
The following class diagram shows a combination of new and existing classes along with the attributes and operations that are relevant to the implementation of this solution.
The RScore class stores the variables maximum,minimum, average review scores. Different type of reviews score is declared as subclass of RScore using ploymorphism. The type field is specified in their initialize method.