<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.expertiza.ncsu.edu/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Vrajadh</id>
	<title>Expertiza_Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.expertiza.ncsu.edu/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Vrajadh"/>
	<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=Special:Contributions/Vrajadh"/>
	<updated>2026-07-12T13:01:55Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.41.0</generator>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2016_E1631_Team-based_reviewing&amp;diff=102388</id>
		<title>CSC/ECE 517 Spring 2016 E1631 Team-based reviewing</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2016_E1631_Team-based_reviewing&amp;diff=102388"/>
		<updated>2016-04-28T01:27:55Z</updated>

		<summary type="html">&lt;p&gt;Vrajadh: /* Models */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Purpose ==&lt;br /&gt;
&lt;br /&gt;
When a participant of a team reviewed an assignment, his/her review is independent of his teammate’s reviews. To allow teammates to discuss and review together, allowing teams to submit reviews for the team as a whole should be allowed ideally. We intend to do this in our project. &lt;br /&gt;
&lt;br /&gt;
*Currently all reviews in Expertiza are done by individuals. This is true regardless of whether the assignment is done by individuals or teams . &lt;br /&gt;
*There are occasions when it's advantageous to review projects as a team . &lt;br /&gt;
*It helps foster discussion and thereby improves the process of learning.&lt;br /&gt;
&lt;br /&gt;
== Task Description ==&lt;br /&gt;
This project comprises of the following steps :&lt;br /&gt;
&lt;br /&gt;
# Objects of ResponseMap record the information of who reviews whom. The field reviewee_id refers to the team who is being reviewed. The field reviewer_id refers to the individual/team performing the review. # We added a boolean field &amp;quot;reviewer_is_team&amp;quot; to identify if the review is being performed by a team or an individual.&lt;br /&gt;
# The review strategy is assignment specific and hence we have added a field reviewer_is_team to the assignments table as well&lt;br /&gt;
# For an Instructor to specify whether the review is a Team/Individual based review, we have provided a dropdown on the Review Strategy tab of assignment creation. &lt;br /&gt;
# If reviewer_is_team field is true the reviewer_id in the response_map is set to the corresponding team_id of the user&lt;br /&gt;
# Ensure that features such as &amp;quot;view my scores&amp;quot;, or the &amp;quot;alternate view/heat map&amp;quot; continued working.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
==== Design Pattern ====&lt;br /&gt;
'''Model View Controller'''&lt;br /&gt;
&lt;br /&gt;
In an MVC model, a software application is divided into three major components: Model, View and Controller. &lt;br /&gt;
&lt;br /&gt;
'''Model''' - Keeps data, logic and relations between objects and the database. It also handles validations, associations and transactions.&lt;br /&gt;
&lt;br /&gt;
'''View''' - Displays the data received from the controller in the user interface.&lt;br /&gt;
&lt;br /&gt;
'''Controller''' - Accepts the client's input and converts it into action points for the model or view. Other responsibilities include querying models and organizing data in a structure that is displayed by the view.&lt;br /&gt;
&lt;br /&gt;
==== Use Case Diagram ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name:''' Specify review type on Review Strategy tab.&lt;br /&gt;
&lt;br /&gt;
'''Actor:''' Instructor. &lt;br /&gt;
&lt;br /&gt;
'''Description:''' The instructor specifies whether this review is an individual review or a team based review on the Review Strategy tab.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name:''' Perform Review.&lt;br /&gt;
&lt;br /&gt;
'''Actor:''' Individual Student/Team.&lt;br /&gt;
&lt;br /&gt;
'''Description:''' The individual/team will perform a review for the Assignment.&lt;br /&gt;
&lt;br /&gt;
[[File:OODDUseCase.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Database Design ===&lt;br /&gt;
&lt;br /&gt;
1. The below fields have been modified in the response_maps table: &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Field&lt;br /&gt;
! Data type&lt;br /&gt;
|-&lt;br /&gt;
| reviewer_id&lt;br /&gt;
| int(11)&lt;br /&gt;
|-&lt;br /&gt;
| reviewer_is_team &lt;br /&gt;
| boolean&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The description of the fields of the database for ResponseMap:&lt;br /&gt;
&lt;br /&gt;
i. '''reviewer_id:''' Based on the reviewer_is_team flag in the assignments table , the assignment team or the participant id is added in this column. &lt;br /&gt;
&lt;br /&gt;
ii. '''reviewer_is_team:''' If this field is ‘true’, the reviewer_id refers to the id of the “AssignmentTeam” to which the participant belongs. Else, it refers to the id of the “Participant” itself.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. The below fields have been modified in the assignments table: &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Field&lt;br /&gt;
! Data type&lt;br /&gt;
|-&lt;br /&gt;
| reviewer_is_team&lt;br /&gt;
| boolean&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
1. '''reviewer_is_team:''' - This field is set based on the discretion of the instructor who decides if the assignment is a to be reviewed individually or as a team.&lt;br /&gt;
&lt;br /&gt;
==Implementation==&lt;br /&gt;
&lt;br /&gt;
Below are the key files modified:&lt;br /&gt;
====Controllers====&lt;br /&gt;
&lt;br /&gt;
* '''review_mapping_controller.rb:''' &lt;br /&gt;
&lt;br /&gt;
1. We have added a check in the assign_reviewer_dynamically method that checks if the assignment is a team_reviewed assignment to fetch the respective row from the participants or the teams_users table&lt;br /&gt;
&lt;br /&gt;
[[File: review_mapping_controller1.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. Also while redirecting to the student_review controller the participant_id or the team_id is passed based on the type of review&lt;br /&gt;
&lt;br /&gt;
[[File: review_mapping_controller2.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''response_controller:''' &lt;br /&gt;
&lt;br /&gt;
1. Below is the get_reviewer_from_response_map method that returns the team or participant id based on the type of review . Also this value is passed forward to the respective controller we redirect to. The get_participant method returns the row from the participants table corresponding to the current user. &lt;br /&gt;
&lt;br /&gt;
[[File: response_controller1.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File: response_controller2.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''student_review_controller:''' &lt;br /&gt;
&lt;br /&gt;
1. Same logic as applied in the review mapping controller to obtain the reviewer.&lt;br /&gt;
&lt;br /&gt;
[[File: student_review_controller1.jpg]]&lt;br /&gt;
&lt;br /&gt;
====Models====&lt;br /&gt;
* '''assignment_team.rb:''' &lt;br /&gt;
&lt;br /&gt;
1. A row is being created in the response_maps table depending on if it's a team or individual review. The same logic is being applied to check and retrieve the appropriate row form the response map.&lt;br /&gt;
&lt;br /&gt;
[[File: assignment_team_model.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''assignment.rb:'''&lt;br /&gt;
&lt;br /&gt;
1. The logic to not allow reviewers to review their own work has been modified to include scenarios when it's a team based review.&lt;br /&gt;
&lt;br /&gt;
[[File: assignment_model.jpg]]&lt;br /&gt;
&lt;br /&gt;
====Views====&lt;br /&gt;
* '''assignments/edit/_review_report.html.erb:&lt;br /&gt;
&lt;br /&gt;
1. Added the below drop down so that the instructor can select the review strategy for the assignment.&lt;br /&gt;
&lt;br /&gt;
[[File: drop_down.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Testing Details ==&lt;br /&gt;
&lt;br /&gt;
=== RSpec ===&lt;br /&gt;
RSpec is a testing framework for Rails, and is a Behavioral-Driven Development tool. It is a domain specific language(DSL). All the tests can be executed by rspec spec command, or can also be executed individually using the command &amp;quot;rspec spec/models/assignment_team_spec.rb&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
We intend to write unit tests using RSpec for all the methods which we modified/created.&lt;br /&gt;
&lt;br /&gt;
===Factory Girl===&lt;br /&gt;
Factory Girl is used for creating Assignment and Team objects to be used for testing. Factory Girl is a replacement for fixtures. Fixtures have to be updated whenever we change a data model whereas adding and removing fields is much easier in Factory Girl. Fixture definitions are global whereas Factories can be local, so isolated cases can be tested. Factories are defined to create objects for testing.&lt;br /&gt;
&lt;br /&gt;
===Running RSpec===&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  $ rspec spec/models/assignment_team_spec.rb&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
===Test Cases===&lt;br /&gt;
1. If the instructor selects &amp;quot;Review by team&amp;quot;, check if the review is done by a team member, not by participant.&lt;br /&gt;
&lt;br /&gt;
2. If one teammate is working on a review, another teammate should not be able to edit it at the same time.&lt;/div&gt;</summary>
		<author><name>Vrajadh</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2016_E1631_Team-based_reviewing&amp;diff=102383</id>
		<title>CSC/ECE 517 Spring 2016 E1631 Team-based reviewing</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2016_E1631_Team-based_reviewing&amp;diff=102383"/>
		<updated>2016-04-28T00:50:34Z</updated>

		<summary type="html">&lt;p&gt;Vrajadh: /* Database Design */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Purpose ==&lt;br /&gt;
&lt;br /&gt;
When a participant of a team reviewed an assignment, his/her review is independent of his teammate’s reviews. To allow teammates to discuss and review together, allowing teams to submit reviews for the team as a whole should be allowed ideally. We intend to do this in our project. &lt;br /&gt;
&lt;br /&gt;
*Currently all reviews in Expertiza are done by individuals. This is true regardless of whether the assignment is done by individuals or teams . &lt;br /&gt;
*There are occasions when it's advantageous to review projects as a team . &lt;br /&gt;
*It helps foster discussion and thereby improves the process of learning.&lt;br /&gt;
&lt;br /&gt;
== Task Description ==&lt;br /&gt;
This project comprises of the following steps :&lt;br /&gt;
&lt;br /&gt;
# Objects of ResponseMap record the information of who reviews whom. The field reviewee_id refers to the team who is being reviewed. The field reviewer_id refers to the individual/team performing the review. # We added a boolean field &amp;quot;reviewer_is_team&amp;quot; to identify if the review is being performed by a team or an individual.&lt;br /&gt;
# The review strategy is assignment specific and hence we have added a field reviewer_is_team to the assignments table as well&lt;br /&gt;
# For an Instructor to specify whether the review is a Team/Individual based review, we have provided a dropdown on the Review Strategy tab of assignment creation. &lt;br /&gt;
# If reviewer_is_team field is true the reviewer_id in the response_map is set to the corresponding team_id of the user&lt;br /&gt;
# Ensure that features such as &amp;quot;view my scores&amp;quot;, or the &amp;quot;alternate view/heat map&amp;quot; continued working.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
==== Design Pattern ====&lt;br /&gt;
'''Model View Controller'''&lt;br /&gt;
&lt;br /&gt;
In an MVC model, a software application is divided into three major components: Model, View and Controller. &lt;br /&gt;
&lt;br /&gt;
'''Model''' - Keeps data, logic and relations between objects and the database. It also handles validations, associations and transactions.&lt;br /&gt;
&lt;br /&gt;
'''View''' - Displays the data received from the controller in the user interface.&lt;br /&gt;
&lt;br /&gt;
'''Controller''' - Accepts the client's input and converts it into action points for the model or view. Other responsibilities include querying models and organizing data in a structure that is displayed by the view.&lt;br /&gt;
&lt;br /&gt;
==== Use Case Diagram ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name:''' Specify review type on Review Strategy tab.&lt;br /&gt;
&lt;br /&gt;
'''Actor:''' Instructor. &lt;br /&gt;
&lt;br /&gt;
'''Description:''' The instructor specifies whether this review is an individual review or a team based review on the Review Strategy tab.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name:''' Perform Review.&lt;br /&gt;
&lt;br /&gt;
'''Actor:''' Individual Student/Team.&lt;br /&gt;
&lt;br /&gt;
'''Description:''' The individual/team will perform a review for the Assignment.&lt;br /&gt;
&lt;br /&gt;
[[File:OODDUseCase.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Database Design ===&lt;br /&gt;
&lt;br /&gt;
1. The below fields have been modified in the response_maps table: &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Field&lt;br /&gt;
! Data type&lt;br /&gt;
|-&lt;br /&gt;
| reviewer_id&lt;br /&gt;
| int(11)&lt;br /&gt;
|-&lt;br /&gt;
| reviewer_is_team &lt;br /&gt;
| boolean&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The description of the fields of the database for ResponseMap:&lt;br /&gt;
&lt;br /&gt;
i. '''reviewer_id:''' Based on the reviewer_is_team flag in the assignments table , the assignment team or the participant id is added in this column. &lt;br /&gt;
&lt;br /&gt;
ii. '''reviewer_is_team:''' If this field is ‘true’, the reviewer_id refers to the id of the “AssignmentTeam” to which the participant belongs. Else, it refers to the id of the “Participant” itself.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. The below fields have been modified in the assignments table: &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Field&lt;br /&gt;
! Data type&lt;br /&gt;
|-&lt;br /&gt;
| reviewer_is_team&lt;br /&gt;
| boolean&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
1. '''reviewer_is_team:''' - This field is set based on the discretion of the instructor who decides if the assignment is a to be reviewed individually or as a team.&lt;br /&gt;
&lt;br /&gt;
==Implementation==&lt;br /&gt;
&lt;br /&gt;
Below are the key files modified:&lt;br /&gt;
====Controllers====&lt;br /&gt;
&lt;br /&gt;
* '''review_mapping_controller.rb:''' &lt;br /&gt;
&lt;br /&gt;
1. We have added a check in the assign_reviewer_dynamically method that checks if the assignment is a team_reviewed assignment to fetch the respective row from the participants or the teams_users table&lt;br /&gt;
&lt;br /&gt;
[[File: review_mapping_controller1.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. Also while redirecting to the student_review controller the participant_id or the team_id is passed based on the type of review&lt;br /&gt;
&lt;br /&gt;
[[File: review_mapping_controller2.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''response_controller:''' &lt;br /&gt;
&lt;br /&gt;
1. Below is the get_reviewer_from_response_map method that returns the team or participant id based on the type of review . Also this value is passed forward to the respective controller we redirect to. The get_participant method returns the row from the participants table corresponding to the current user. &lt;br /&gt;
&lt;br /&gt;
[[File: response_controller1.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File: response_controller2.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''student_review_controller:''' &lt;br /&gt;
&lt;br /&gt;
1. Same logic as applied in the review mapping controller to obtain the reviewer.&lt;br /&gt;
&lt;br /&gt;
[[File: student_review_controller1.jpg]]&lt;br /&gt;
&lt;br /&gt;
====Models====&lt;br /&gt;
* '''assignment_team.rb:''' &lt;br /&gt;
&lt;br /&gt;
1. A row is being created in the response_maps table depending on if it's a team or individual review. The same logic is being applied to check and retrieve the appropriate row form the response map.&lt;br /&gt;
&lt;br /&gt;
[[File: assignment_team_model.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''assignment_team.rb:'''&lt;br /&gt;
&lt;br /&gt;
1. The logic to not allow reviewers to review their own work has been modified to include scenarios when it's a team based review.&lt;br /&gt;
&lt;br /&gt;
[[File: assignment_model.jpg]]&lt;br /&gt;
&lt;br /&gt;
====Views====&lt;br /&gt;
* '''assignments/edit/_review_report.html.erb:&lt;br /&gt;
&lt;br /&gt;
1. Added the below drop down so that the instructor can select the review strategy for the assignment.&lt;br /&gt;
&lt;br /&gt;
[[File: drop_down.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Testing Details ==&lt;br /&gt;
&lt;br /&gt;
=== RSpec ===&lt;br /&gt;
RSpec is a testing framework for Rails, and is a Behavioral-Driven Development tool. It is a domain specific language(DSL). All the tests can be executed by rspec spec command, or can also be executed individually using the command &amp;quot;rspec spec/models/assignment_team_spec.rb&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
We intend to write unit tests using RSpec for all the methods which we modified/created.&lt;br /&gt;
&lt;br /&gt;
===Factory Girl===&lt;br /&gt;
Factory Girl is used for creating Assignment and Team objects to be used for testing. Factory Girl is a replacement for fixtures. Fixtures have to be updated whenever we change a data model whereas adding and removing fields is much easier in Factory Girl. Fixture definitions are global whereas Factories can be local, so isolated cases can be tested. Factories are defined to create objects for testing.&lt;br /&gt;
&lt;br /&gt;
===Running RSpec===&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  $ rspec spec/models/assignment_team_spec.rb&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
===Test Cases===&lt;br /&gt;
1. If the instructor selects &amp;quot;Review by team&amp;quot;, check if the review is done by a team member, not by participant.&lt;br /&gt;
&lt;br /&gt;
2. If one teammate is working on a review, another teammate should not be able to edit it at the same time.&lt;/div&gt;</summary>
		<author><name>Vrajadh</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2016_E1631_Team-based_reviewing&amp;diff=102382</id>
		<title>CSC/ECE 517 Spring 2016 E1631 Team-based reviewing</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2016_E1631_Team-based_reviewing&amp;diff=102382"/>
		<updated>2016-04-28T00:50:15Z</updated>

		<summary type="html">&lt;p&gt;Vrajadh: /* Database Design */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Purpose ==&lt;br /&gt;
&lt;br /&gt;
When a participant of a team reviewed an assignment, his/her review is independent of his teammate’s reviews. To allow teammates to discuss and review together, allowing teams to submit reviews for the team as a whole should be allowed ideally. We intend to do this in our project. &lt;br /&gt;
&lt;br /&gt;
*Currently all reviews in Expertiza are done by individuals. This is true regardless of whether the assignment is done by individuals or teams . &lt;br /&gt;
*There are occasions when it's advantageous to review projects as a team . &lt;br /&gt;
*It helps foster discussion and thereby improves the process of learning.&lt;br /&gt;
&lt;br /&gt;
== Task Description ==&lt;br /&gt;
This project comprises of the following steps :&lt;br /&gt;
&lt;br /&gt;
# Objects of ResponseMap record the information of who reviews whom. The field reviewee_id refers to the team who is being reviewed. The field reviewer_id refers to the individual/team performing the review. # We added a boolean field &amp;quot;reviewer_is_team&amp;quot; to identify if the review is being performed by a team or an individual.&lt;br /&gt;
# The review strategy is assignment specific and hence we have added a field reviewer_is_team to the assignments table as well&lt;br /&gt;
# For an Instructor to specify whether the review is a Team/Individual based review, we have provided a dropdown on the Review Strategy tab of assignment creation. &lt;br /&gt;
# If reviewer_is_team field is true the reviewer_id in the response_map is set to the corresponding team_id of the user&lt;br /&gt;
# Ensure that features such as &amp;quot;view my scores&amp;quot;, or the &amp;quot;alternate view/heat map&amp;quot; continued working.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
==== Design Pattern ====&lt;br /&gt;
'''Model View Controller'''&lt;br /&gt;
&lt;br /&gt;
In an MVC model, a software application is divided into three major components: Model, View and Controller. &lt;br /&gt;
&lt;br /&gt;
'''Model''' - Keeps data, logic and relations between objects and the database. It also handles validations, associations and transactions.&lt;br /&gt;
&lt;br /&gt;
'''View''' - Displays the data received from the controller in the user interface.&lt;br /&gt;
&lt;br /&gt;
'''Controller''' - Accepts the client's input and converts it into action points for the model or view. Other responsibilities include querying models and organizing data in a structure that is displayed by the view.&lt;br /&gt;
&lt;br /&gt;
==== Use Case Diagram ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name:''' Specify review type on Review Strategy tab.&lt;br /&gt;
&lt;br /&gt;
'''Actor:''' Instructor. &lt;br /&gt;
&lt;br /&gt;
'''Description:''' The instructor specifies whether this review is an individual review or a team based review on the Review Strategy tab.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name:''' Perform Review.&lt;br /&gt;
&lt;br /&gt;
'''Actor:''' Individual Student/Team.&lt;br /&gt;
&lt;br /&gt;
'''Description:''' The individual/team will perform a review for the Assignment.&lt;br /&gt;
&lt;br /&gt;
[[File:OODDUseCase.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Database Design ===&lt;br /&gt;
&lt;br /&gt;
1. The below fields have been modified in the response_maps table: &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Field&lt;br /&gt;
! Data type&lt;br /&gt;
|-&lt;br /&gt;
| reviewer_id&lt;br /&gt;
| int(11)&lt;br /&gt;
|-&lt;br /&gt;
| reviewer_is_team &lt;br /&gt;
| boolean&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The description of the fields of the database for ResponseMap:&lt;br /&gt;
&lt;br /&gt;
i. '''reviewer_id:''' Based on the reviewer_is_team flag in the assignments table , the assignment team or the participant id is added in this column. &lt;br /&gt;
&lt;br /&gt;
ii. '''reviewer_is_team:''' If this field is ‘true’, the reviewer_id refers to the id of the “AssignmentTeam” to which the participant belongs. Else, it refers to the id of the “Participant” itself.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. The below fields have been modified in the assignments table: &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Field&lt;br /&gt;
! Data type&lt;br /&gt;
|-&lt;br /&gt;
| reviewer_is_team&lt;br /&gt;
| boolean&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
1. reviewer_is_team - This field is set based on the discretion of the instructor who decides if the assignment is a to be reviewed individually or as a team.&lt;br /&gt;
&lt;br /&gt;
==Implementation==&lt;br /&gt;
&lt;br /&gt;
Below are the key files modified:&lt;br /&gt;
====Controllers====&lt;br /&gt;
&lt;br /&gt;
* '''review_mapping_controller.rb:''' &lt;br /&gt;
&lt;br /&gt;
1. We have added a check in the assign_reviewer_dynamically method that checks if the assignment is a team_reviewed assignment to fetch the respective row from the participants or the teams_users table&lt;br /&gt;
&lt;br /&gt;
[[File: review_mapping_controller1.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. Also while redirecting to the student_review controller the participant_id or the team_id is passed based on the type of review&lt;br /&gt;
&lt;br /&gt;
[[File: review_mapping_controller2.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''response_controller:''' &lt;br /&gt;
&lt;br /&gt;
1. Below is the get_reviewer_from_response_map method that returns the team or participant id based on the type of review . Also this value is passed forward to the respective controller we redirect to. The get_participant method returns the row from the participants table corresponding to the current user. &lt;br /&gt;
&lt;br /&gt;
[[File: response_controller1.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File: response_controller2.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''student_review_controller:''' &lt;br /&gt;
&lt;br /&gt;
1. Same logic as applied in the review mapping controller to obtain the reviewer.&lt;br /&gt;
&lt;br /&gt;
[[File: student_review_controller1.jpg]]&lt;br /&gt;
&lt;br /&gt;
====Models====&lt;br /&gt;
* '''assignment_team.rb:''' &lt;br /&gt;
&lt;br /&gt;
1. A row is being created in the response_maps table depending on if it's a team or individual review. The same logic is being applied to check and retrieve the appropriate row form the response map.&lt;br /&gt;
&lt;br /&gt;
[[File: assignment_team_model.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''assignment_team.rb:'''&lt;br /&gt;
&lt;br /&gt;
1. The logic to not allow reviewers to review their own work has been modified to include scenarios when it's a team based review.&lt;br /&gt;
&lt;br /&gt;
[[File: assignment_model.jpg]]&lt;br /&gt;
&lt;br /&gt;
====Views====&lt;br /&gt;
* '''assignments/edit/_review_report.html.erb:&lt;br /&gt;
&lt;br /&gt;
1. Added the below drop down so that the instructor can select the review strategy for the assignment.&lt;br /&gt;
&lt;br /&gt;
[[File: drop_down.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Testing Details ==&lt;br /&gt;
&lt;br /&gt;
=== RSpec ===&lt;br /&gt;
RSpec is a testing framework for Rails, and is a Behavioral-Driven Development tool. It is a domain specific language(DSL). All the tests can be executed by rspec spec command, or can also be executed individually using the command &amp;quot;rspec spec/models/assignment_team_spec.rb&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
We intend to write unit tests using RSpec for all the methods which we modified/created.&lt;br /&gt;
&lt;br /&gt;
===Factory Girl===&lt;br /&gt;
Factory Girl is used for creating Assignment and Team objects to be used for testing. Factory Girl is a replacement for fixtures. Fixtures have to be updated whenever we change a data model whereas adding and removing fields is much easier in Factory Girl. Fixture definitions are global whereas Factories can be local, so isolated cases can be tested. Factories are defined to create objects for testing.&lt;br /&gt;
&lt;br /&gt;
===Running RSpec===&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  $ rspec spec/models/assignment_team_spec.rb&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
===Test Cases===&lt;br /&gt;
1. If the instructor selects &amp;quot;Review by team&amp;quot;, check if the review is done by a team member, not by participant.&lt;br /&gt;
&lt;br /&gt;
2. If one teammate is working on a review, another teammate should not be able to edit it at the same time.&lt;/div&gt;</summary>
		<author><name>Vrajadh</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2016_E1631_Team-based_reviewing&amp;diff=102381</id>
		<title>CSC/ECE 517 Spring 2016 E1631 Team-based reviewing</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2016_E1631_Team-based_reviewing&amp;diff=102381"/>
		<updated>2016-04-28T00:49:50Z</updated>

		<summary type="html">&lt;p&gt;Vrajadh: /* Database Design */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Purpose ==&lt;br /&gt;
&lt;br /&gt;
When a participant of a team reviewed an assignment, his/her review is independent of his teammate’s reviews. To allow teammates to discuss and review together, allowing teams to submit reviews for the team as a whole should be allowed ideally. We intend to do this in our project. &lt;br /&gt;
&lt;br /&gt;
*Currently all reviews in Expertiza are done by individuals. This is true regardless of whether the assignment is done by individuals or teams . &lt;br /&gt;
*There are occasions when it's advantageous to review projects as a team . &lt;br /&gt;
*It helps foster discussion and thereby improves the process of learning.&lt;br /&gt;
&lt;br /&gt;
== Task Description ==&lt;br /&gt;
This project comprises of the following steps :&lt;br /&gt;
&lt;br /&gt;
# Objects of ResponseMap record the information of who reviews whom. The field reviewee_id refers to the team who is being reviewed. The field reviewer_id refers to the individual/team performing the review. # We added a boolean field &amp;quot;reviewer_is_team&amp;quot; to identify if the review is being performed by a team or an individual.&lt;br /&gt;
# The review strategy is assignment specific and hence we have added a field reviewer_is_team to the assignments table as well&lt;br /&gt;
# For an Instructor to specify whether the review is a Team/Individual based review, we have provided a dropdown on the Review Strategy tab of assignment creation. &lt;br /&gt;
# If reviewer_is_team field is true the reviewer_id in the response_map is set to the corresponding team_id of the user&lt;br /&gt;
# Ensure that features such as &amp;quot;view my scores&amp;quot;, or the &amp;quot;alternate view/heat map&amp;quot; continued working.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
==== Design Pattern ====&lt;br /&gt;
'''Model View Controller'''&lt;br /&gt;
&lt;br /&gt;
In an MVC model, a software application is divided into three major components: Model, View and Controller. &lt;br /&gt;
&lt;br /&gt;
'''Model''' - Keeps data, logic and relations between objects and the database. It also handles validations, associations and transactions.&lt;br /&gt;
&lt;br /&gt;
'''View''' - Displays the data received from the controller in the user interface.&lt;br /&gt;
&lt;br /&gt;
'''Controller''' - Accepts the client's input and converts it into action points for the model or view. Other responsibilities include querying models and organizing data in a structure that is displayed by the view.&lt;br /&gt;
&lt;br /&gt;
==== Use Case Diagram ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name:''' Specify review type on Review Strategy tab.&lt;br /&gt;
&lt;br /&gt;
'''Actor:''' Instructor. &lt;br /&gt;
&lt;br /&gt;
'''Description:''' The instructor specifies whether this review is an individual review or a team based review on the Review Strategy tab.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name:''' Perform Review.&lt;br /&gt;
&lt;br /&gt;
'''Actor:''' Individual Student/Team.&lt;br /&gt;
&lt;br /&gt;
'''Description:''' The individual/team will perform a review for the Assignment.&lt;br /&gt;
&lt;br /&gt;
[[File:OODDUseCase.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Database Design ===&lt;br /&gt;
&lt;br /&gt;
1. The below fields have been modified in the response_maps table: &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Field&lt;br /&gt;
! Data type&lt;br /&gt;
| reviewed_object_id&lt;br /&gt;
| int(11)&lt;br /&gt;
|-&lt;br /&gt;
| reviewer_id&lt;br /&gt;
| int(11)&lt;br /&gt;
|-&lt;br /&gt;
| reviewer_is_team &lt;br /&gt;
| boolean&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The description of the fields of the database for ResponseMap:&lt;br /&gt;
&lt;br /&gt;
i. '''reviewer_id:''' Based on the reviewer_is_team flag in the assignments table , the assignment team or the participant id is added in this column. &lt;br /&gt;
&lt;br /&gt;
ii. '''reviewer_is_team:''' If this field is ‘true’, the reviewer_id refers to the id of the “AssignmentTeam” to which the participant belongs. Else, it refers to the id of the “Participant” itself.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. The below fields have been modified in the assignments table: &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Field&lt;br /&gt;
! Data type&lt;br /&gt;
| reviewer_is_team&lt;br /&gt;
| boolean&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
1. reviewer_is_team - This field is set based on the discretion of the instructor who decides if the assignment is a to be reviewed individually or as a team.&lt;br /&gt;
&lt;br /&gt;
==Implementation==&lt;br /&gt;
&lt;br /&gt;
Below are the key files modified:&lt;br /&gt;
====Controllers====&lt;br /&gt;
&lt;br /&gt;
* '''review_mapping_controller.rb:''' &lt;br /&gt;
&lt;br /&gt;
1. We have added a check in the assign_reviewer_dynamically method that checks if the assignment is a team_reviewed assignment to fetch the respective row from the participants or the teams_users table&lt;br /&gt;
&lt;br /&gt;
[[File: review_mapping_controller1.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. Also while redirecting to the student_review controller the participant_id or the team_id is passed based on the type of review&lt;br /&gt;
&lt;br /&gt;
[[File: review_mapping_controller2.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''response_controller:''' &lt;br /&gt;
&lt;br /&gt;
1. Below is the get_reviewer_from_response_map method that returns the team or participant id based on the type of review . Also this value is passed forward to the respective controller we redirect to. The get_participant method returns the row from the participants table corresponding to the current user. &lt;br /&gt;
&lt;br /&gt;
[[File: response_controller1.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File: response_controller2.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''student_review_controller:''' &lt;br /&gt;
&lt;br /&gt;
1. Same logic as applied in the review mapping controller to obtain the reviewer.&lt;br /&gt;
&lt;br /&gt;
[[File: student_review_controller1.jpg]]&lt;br /&gt;
&lt;br /&gt;
====Models====&lt;br /&gt;
* '''assignment_team.rb:''' &lt;br /&gt;
&lt;br /&gt;
1. A row is being created in the response_maps table depending on if it's a team or individual review. The same logic is being applied to check and retrieve the appropriate row form the response map.&lt;br /&gt;
&lt;br /&gt;
[[File: assignment_team_model.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''assignment_team.rb:'''&lt;br /&gt;
&lt;br /&gt;
1. The logic to not allow reviewers to review their own work has been modified to include scenarios when it's a team based review.&lt;br /&gt;
&lt;br /&gt;
[[File: assignment_model.jpg]]&lt;br /&gt;
&lt;br /&gt;
====Views====&lt;br /&gt;
* '''assignments/edit/_review_report.html.erb:&lt;br /&gt;
&lt;br /&gt;
1. Added the below drop down so that the instructor can select the review strategy for the assignment.&lt;br /&gt;
&lt;br /&gt;
[[File: drop_down.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Testing Details ==&lt;br /&gt;
&lt;br /&gt;
=== RSpec ===&lt;br /&gt;
RSpec is a testing framework for Rails, and is a Behavioral-Driven Development tool. It is a domain specific language(DSL). All the tests can be executed by rspec spec command, or can also be executed individually using the command &amp;quot;rspec spec/models/assignment_team_spec.rb&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
We intend to write unit tests using RSpec for all the methods which we modified/created.&lt;br /&gt;
&lt;br /&gt;
===Factory Girl===&lt;br /&gt;
Factory Girl is used for creating Assignment and Team objects to be used for testing. Factory Girl is a replacement for fixtures. Fixtures have to be updated whenever we change a data model whereas adding and removing fields is much easier in Factory Girl. Fixture definitions are global whereas Factories can be local, so isolated cases can be tested. Factories are defined to create objects for testing.&lt;br /&gt;
&lt;br /&gt;
===Running RSpec===&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  $ rspec spec/models/assignment_team_spec.rb&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
===Test Cases===&lt;br /&gt;
1. If the instructor selects &amp;quot;Review by team&amp;quot;, check if the review is done by a team member, not by participant.&lt;br /&gt;
&lt;br /&gt;
2. If one teammate is working on a review, another teammate should not be able to edit it at the same time.&lt;/div&gt;</summary>
		<author><name>Vrajadh</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2016_E1631_Team-based_reviewing&amp;diff=102380</id>
		<title>CSC/ECE 517 Spring 2016 E1631 Team-based reviewing</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2016_E1631_Team-based_reviewing&amp;diff=102380"/>
		<updated>2016-04-28T00:49:22Z</updated>

		<summary type="html">&lt;p&gt;Vrajadh: /* Database Design */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Purpose ==&lt;br /&gt;
&lt;br /&gt;
When a participant of a team reviewed an assignment, his/her review is independent of his teammate’s reviews. To allow teammates to discuss and review together, allowing teams to submit reviews for the team as a whole should be allowed ideally. We intend to do this in our project. &lt;br /&gt;
&lt;br /&gt;
*Currently all reviews in Expertiza are done by individuals. This is true regardless of whether the assignment is done by individuals or teams . &lt;br /&gt;
*There are occasions when it's advantageous to review projects as a team . &lt;br /&gt;
*It helps foster discussion and thereby improves the process of learning.&lt;br /&gt;
&lt;br /&gt;
== Task Description ==&lt;br /&gt;
This project comprises of the following steps :&lt;br /&gt;
&lt;br /&gt;
# Objects of ResponseMap record the information of who reviews whom. The field reviewee_id refers to the team who is being reviewed. The field reviewer_id refers to the individual/team performing the review. # We added a boolean field &amp;quot;reviewer_is_team&amp;quot; to identify if the review is being performed by a team or an individual.&lt;br /&gt;
# The review strategy is assignment specific and hence we have added a field reviewer_is_team to the assignments table as well&lt;br /&gt;
# For an Instructor to specify whether the review is a Team/Individual based review, we have provided a dropdown on the Review Strategy tab of assignment creation. &lt;br /&gt;
# If reviewer_is_team field is true the reviewer_id in the response_map is set to the corresponding team_id of the user&lt;br /&gt;
# Ensure that features such as &amp;quot;view my scores&amp;quot;, or the &amp;quot;alternate view/heat map&amp;quot; continued working.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
==== Design Pattern ====&lt;br /&gt;
'''Model View Controller'''&lt;br /&gt;
&lt;br /&gt;
In an MVC model, a software application is divided into three major components: Model, View and Controller. &lt;br /&gt;
&lt;br /&gt;
'''Model''' - Keeps data, logic and relations between objects and the database. It also handles validations, associations and transactions.&lt;br /&gt;
&lt;br /&gt;
'''View''' - Displays the data received from the controller in the user interface.&lt;br /&gt;
&lt;br /&gt;
'''Controller''' - Accepts the client's input and converts it into action points for the model or view. Other responsibilities include querying models and organizing data in a structure that is displayed by the view.&lt;br /&gt;
&lt;br /&gt;
==== Use Case Diagram ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name:''' Specify review type on Review Strategy tab.&lt;br /&gt;
&lt;br /&gt;
'''Actor:''' Instructor. &lt;br /&gt;
&lt;br /&gt;
'''Description:''' The instructor specifies whether this review is an individual review or a team based review on the Review Strategy tab.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name:''' Perform Review.&lt;br /&gt;
&lt;br /&gt;
'''Actor:''' Individual Student/Team.&lt;br /&gt;
&lt;br /&gt;
'''Description:''' The individual/team will perform a review for the Assignment.&lt;br /&gt;
&lt;br /&gt;
[[File:OODDUseCase.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Database Design ===&lt;br /&gt;
&lt;br /&gt;
1. The below fields have been modified in the response_maps table: &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Field&lt;br /&gt;
! Data type&lt;br /&gt;
&lt;br /&gt;
| reviewed_object_id&lt;br /&gt;
| int(11)&lt;br /&gt;
|-&lt;br /&gt;
| reviewer_id&lt;br /&gt;
| int(11)&lt;br /&gt;
|-&lt;br /&gt;
| reviewer_is_team &lt;br /&gt;
| boolean&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The description of the fields of the database for ResponseMap:&lt;br /&gt;
&lt;br /&gt;
i. '''reviewer_id:''' Based on the reviewer_is_team flag in the assignments table , the assignment team or the participant id is added in this column. &lt;br /&gt;
&lt;br /&gt;
ii. '''reviewer_is_team:''' If this field is ‘true’, the reviewer_id refers to the id of the “AssignmentTeam” to which the participant belongs. Else, it refers to the id of the “Participant” itself.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. The below fields have been modified in the assignments table: &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Field&lt;br /&gt;
! Data type&lt;br /&gt;
&lt;br /&gt;
| reviewer_is_team&lt;br /&gt;
| boolean&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
1. reviewer_is_team - This field is set based on the discretion of the instructor who decides if the assignment is a to be reviewed individually or as a team.&lt;br /&gt;
&lt;br /&gt;
==Implementation==&lt;br /&gt;
&lt;br /&gt;
Below are the key files modified:&lt;br /&gt;
====Controllers====&lt;br /&gt;
&lt;br /&gt;
* '''review_mapping_controller.rb:''' &lt;br /&gt;
&lt;br /&gt;
1. We have added a check in the assign_reviewer_dynamically method that checks if the assignment is a team_reviewed assignment to fetch the respective row from the participants or the teams_users table&lt;br /&gt;
&lt;br /&gt;
[[File: review_mapping_controller1.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. Also while redirecting to the student_review controller the participant_id or the team_id is passed based on the type of review&lt;br /&gt;
&lt;br /&gt;
[[File: review_mapping_controller2.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''response_controller:''' &lt;br /&gt;
&lt;br /&gt;
1. Below is the get_reviewer_from_response_map method that returns the team or participant id based on the type of review . Also this value is passed forward to the respective controller we redirect to. The get_participant method returns the row from the participants table corresponding to the current user. &lt;br /&gt;
&lt;br /&gt;
[[File: response_controller1.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File: response_controller2.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''student_review_controller:''' &lt;br /&gt;
&lt;br /&gt;
1. Same logic as applied in the review mapping controller to obtain the reviewer.&lt;br /&gt;
&lt;br /&gt;
[[File: student_review_controller1.jpg]]&lt;br /&gt;
&lt;br /&gt;
====Models====&lt;br /&gt;
* '''assignment_team.rb:''' &lt;br /&gt;
&lt;br /&gt;
1. A row is being created in the response_maps table depending on if it's a team or individual review. The same logic is being applied to check and retrieve the appropriate row form the response map.&lt;br /&gt;
&lt;br /&gt;
[[File: assignment_team_model.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''assignment_team.rb:'''&lt;br /&gt;
&lt;br /&gt;
1. The logic to not allow reviewers to review their own work has been modified to include scenarios when it's a team based review.&lt;br /&gt;
&lt;br /&gt;
[[File: assignment_model.jpg]]&lt;br /&gt;
&lt;br /&gt;
====Views====&lt;br /&gt;
* '''assignments/edit/_review_report.html.erb:&lt;br /&gt;
&lt;br /&gt;
1. Added the below drop down so that the instructor can select the review strategy for the assignment.&lt;br /&gt;
&lt;br /&gt;
[[File: drop_down.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Testing Details ==&lt;br /&gt;
&lt;br /&gt;
=== RSpec ===&lt;br /&gt;
RSpec is a testing framework for Rails, and is a Behavioral-Driven Development tool. It is a domain specific language(DSL). All the tests can be executed by rspec spec command, or can also be executed individually using the command &amp;quot;rspec spec/models/assignment_team_spec.rb&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
We intend to write unit tests using RSpec for all the methods which we modified/created.&lt;br /&gt;
&lt;br /&gt;
===Factory Girl===&lt;br /&gt;
Factory Girl is used for creating Assignment and Team objects to be used for testing. Factory Girl is a replacement for fixtures. Fixtures have to be updated whenever we change a data model whereas adding and removing fields is much easier in Factory Girl. Fixture definitions are global whereas Factories can be local, so isolated cases can be tested. Factories are defined to create objects for testing.&lt;br /&gt;
&lt;br /&gt;
===Running RSpec===&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  $ rspec spec/models/assignment_team_spec.rb&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
===Test Cases===&lt;br /&gt;
1. If the instructor selects &amp;quot;Review by team&amp;quot;, check if the review is done by a team member, not by participant.&lt;br /&gt;
&lt;br /&gt;
2. If one teammate is working on a review, another teammate should not be able to edit it at the same time.&lt;/div&gt;</summary>
		<author><name>Vrajadh</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Drop_down.jpg&amp;diff=102379</id>
		<title>File:Drop down.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Drop_down.jpg&amp;diff=102379"/>
		<updated>2016-04-28T00:39:47Z</updated>

		<summary type="html">&lt;p&gt;Vrajadh: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Vrajadh</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2016_E1631_Team-based_reviewing&amp;diff=102378</id>
		<title>CSC/ECE 517 Spring 2016 E1631 Team-based reviewing</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2016_E1631_Team-based_reviewing&amp;diff=102378"/>
		<updated>2016-04-28T00:35:28Z</updated>

		<summary type="html">&lt;p&gt;Vrajadh: /* Handling Concurrency */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Purpose ==&lt;br /&gt;
&lt;br /&gt;
When a participant of a team reviewed an assignment, his/her review is independent of his teammate’s reviews. To allow teammates to discuss and review together, allowing teams to submit reviews for the team as a whole should be allowed ideally. We intend to do this in our project. &lt;br /&gt;
&lt;br /&gt;
*Currently all reviews in Expertiza are done by individuals. This is true regardless of whether the assignment is done by individuals or teams . &lt;br /&gt;
*There are occasions when it's advantageous to review projects as a team . &lt;br /&gt;
*It helps foster discussion and thereby improves the process of learning.&lt;br /&gt;
&lt;br /&gt;
== Task Description ==&lt;br /&gt;
This project comprises of the following steps :&lt;br /&gt;
&lt;br /&gt;
# Objects of ResponseMap record the information of who reviews whom. The field reviewee_id refers to the team who is being reviewed. The field reviewer_id refers to the individual/team performing the review. # We added a boolean field &amp;quot;reviewer_is_team&amp;quot; to identify if the review is being performed by a team or an individual.&lt;br /&gt;
# The review strategy is assignment specific and hence we have added a field reviewer_is_team to the assignments table as well&lt;br /&gt;
# For an Instructor to specify whether the review is a Team/Individual based review, we have provided a dropdown on the Review Strategy tab of assignment creation. &lt;br /&gt;
# If reviewer_is_team field is true the reviewer_id in the response_map is set to the corresponding team_id of the user&lt;br /&gt;
# Ensure that features such as &amp;quot;view my scores&amp;quot;, or the &amp;quot;alternate view/heat map&amp;quot; continued working.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
==== Design Pattern ====&lt;br /&gt;
'''Model View Controller'''&lt;br /&gt;
&lt;br /&gt;
In an MVC model, a software application is divided into three major components: Model, View and Controller. &lt;br /&gt;
&lt;br /&gt;
'''Model''' - Keeps data, logic and relations between objects and the database. It also handles validations, associations and transactions.&lt;br /&gt;
&lt;br /&gt;
'''View''' - Displays the data received from the controller in the user interface.&lt;br /&gt;
&lt;br /&gt;
'''Controller''' - Accepts the client's input and converts it into action points for the model or view. Other responsibilities include querying models and organizing data in a structure that is displayed by the view.&lt;br /&gt;
&lt;br /&gt;
==== Use Case Diagram ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name:''' Specify review type on Review Strategy tab.&lt;br /&gt;
&lt;br /&gt;
'''Actor:''' Instructor. &lt;br /&gt;
&lt;br /&gt;
'''Description:''' The instructor specifies whether this review is an individual review or a team based review on the Review Strategy tab.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name:''' Perform Review.&lt;br /&gt;
&lt;br /&gt;
'''Actor:''' Individual Student/Team.&lt;br /&gt;
&lt;br /&gt;
'''Description:''' The individual/team will perform a review for the Assignment.&lt;br /&gt;
&lt;br /&gt;
[[File:OODDUseCase.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Database Design ===&lt;br /&gt;
&lt;br /&gt;
ResponseMap in essence, records who reviews whom. Schema of ResponseMap:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Field&lt;br /&gt;
! Data type&lt;br /&gt;
|-&lt;br /&gt;
| id&lt;br /&gt;
| int(11)&lt;br /&gt;
|-&lt;br /&gt;
| reviewed_object_id&lt;br /&gt;
| int(11)&lt;br /&gt;
|-&lt;br /&gt;
| reviewer_id&lt;br /&gt;
| int(11)&lt;br /&gt;
|-&lt;br /&gt;
| reviewee_id&lt;br /&gt;
| int(11)&lt;br /&gt;
|-&lt;br /&gt;
| type&lt;br /&gt;
| varchar(255)&lt;br /&gt;
|-&lt;br /&gt;
| created_at&lt;br /&gt;
| datetime&lt;br /&gt;
|-&lt;br /&gt;
| updated_at&lt;br /&gt;
| datetime&lt;br /&gt;
|-&lt;br /&gt;
| caliberate_to&lt;br /&gt;
| boolean&lt;br /&gt;
|-&lt;br /&gt;
| reviewer_is_team &lt;br /&gt;
| boolean&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The description of the fields of the database for ResponseMap:&lt;br /&gt;
&lt;br /&gt;
1. '''id:''' The unique record identifier.&lt;br /&gt;
&lt;br /&gt;
2. '''reviewed_object_id:''' The id of the object that is reviewed. Assignments or ReviewMaps could be reviewed.&lt;br /&gt;
&lt;br /&gt;
3. '''reviewer_id:''' The reviewer can either be an “AssignmentTeam” or “AssignmentParticipant”, which is indicated by the field reviwer_is_team.&lt;br /&gt;
&lt;br /&gt;
4. '''reviewee_id:''' The id “AssignmentTeam” who is getting the “Response” i.e., the one whose work is being reviewed. &lt;br /&gt;
&lt;br /&gt;
5. '''type :'''  Indicates the type of the ResponseMap.&lt;br /&gt;
&lt;br /&gt;
6. '''created_at:''' The timestamp when the Response was created.&lt;br /&gt;
&lt;br /&gt;
7. '''updated_at:''' The timestamp when the Response was updated.&lt;br /&gt;
&lt;br /&gt;
8. '''calibrate_to:''' A field of boolean data type.&lt;br /&gt;
&lt;br /&gt;
9. '''reviewer_is_team:''' If this field is ‘true’, the reviewer_id refers to the id of the “AssignmentTeam” to which the participant belongs. Else, it refers to the id of the “Participant” itself.&lt;br /&gt;
&lt;br /&gt;
==Implementation==&lt;br /&gt;
&lt;br /&gt;
Below are the key files modified:&lt;br /&gt;
====Controllers====&lt;br /&gt;
&lt;br /&gt;
* '''review_mapping_controller.rb:''' &lt;br /&gt;
&lt;br /&gt;
1. We have added a check in the assign_reviewer_dynamically method that checks if the assignment is a team_reviewed assignment to fetch the respective row from the participants or the teams_users table&lt;br /&gt;
&lt;br /&gt;
[[File: review_mapping_controller1.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. Also while redirecting to the student_review controller the participant_id or the team_id is passed based on the type of review&lt;br /&gt;
&lt;br /&gt;
[[File: review_mapping_controller2.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''response_controller:''' &lt;br /&gt;
&lt;br /&gt;
1. Below is the get_reviewer_from_response_map method that returns the team or participant id based on the type of review . Also this value is passed forward to the respective controller we redirect to. The get_participant method returns the row from the participants table corresponding to the current user. &lt;br /&gt;
&lt;br /&gt;
[[File: response_controller1.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File: response_controller2.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''student_review_controller:''' &lt;br /&gt;
&lt;br /&gt;
1. Same logic as applied in the review mapping controller to obtain the reviewer.&lt;br /&gt;
&lt;br /&gt;
[[File: student_review_controller1.jpg]]&lt;br /&gt;
&lt;br /&gt;
====Models====&lt;br /&gt;
* '''assignment_team.rb:''' &lt;br /&gt;
&lt;br /&gt;
1. A row is being created in the response_maps table depending on if it's a team or individual review. The same logic is being applied to check and retrieve the appropriate row form the response map.&lt;br /&gt;
&lt;br /&gt;
[[File: assignment_team_model.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''assignment_team.rb:'''&lt;br /&gt;
&lt;br /&gt;
1. The logic to not allow reviewers to review their own work has been modified to include scenarios when it's a team based review.&lt;br /&gt;
&lt;br /&gt;
[[File: assignment_model.jpg]]&lt;br /&gt;
&lt;br /&gt;
====Views====&lt;br /&gt;
* '''assignments/edit/_review_report.html.erb:&lt;br /&gt;
&lt;br /&gt;
1. Added the below drop down so that the instructor can select the review strategy for the assignment.&lt;br /&gt;
&lt;br /&gt;
[[File: drop_down.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Testing Details ==&lt;br /&gt;
&lt;br /&gt;
=== RSpec ===&lt;br /&gt;
RSpec is a testing framework for Rails, and is a Behavioral-Driven Development tool. It is a domain specific language(DSL). All the tests can be executed by rspec spec command, or can also be executed individually using the command &amp;quot;rspec spec/models/assignment_team_spec.rb&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
We intend to write unit tests using RSpec for all the methods which we modified/created.&lt;br /&gt;
&lt;br /&gt;
===Factory Girl===&lt;br /&gt;
Factory Girl is used for creating Assignment and Team objects to be used for testing. Factory Girl is a replacement for fixtures. Fixtures have to be updated whenever we change a data model whereas adding and removing fields is much easier in Factory Girl. Fixture definitions are global whereas Factories can be local, so isolated cases can be tested. Factories are defined to create objects for testing.&lt;br /&gt;
&lt;br /&gt;
===Running RSpec===&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  $ rspec spec/models/assignment_team_spec.rb&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
===Test Cases===&lt;br /&gt;
1. If the instructor selects &amp;quot;Review by team&amp;quot;, check if the review is done by a team member, not by participant.&lt;br /&gt;
&lt;br /&gt;
2. If one teammate is working on a review, another teammate should not be able to edit it at the same time.&lt;/div&gt;</summary>
		<author><name>Vrajadh</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2016_E1631_Team-based_reviewing&amp;diff=102377</id>
		<title>CSC/ECE 517 Spring 2016 E1631 Team-based reviewing</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2016_E1631_Team-based_reviewing&amp;diff=102377"/>
		<updated>2016-04-28T00:35:18Z</updated>

		<summary type="html">&lt;p&gt;Vrajadh: /* Views */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Purpose ==&lt;br /&gt;
&lt;br /&gt;
When a participant of a team reviewed an assignment, his/her review is independent of his teammate’s reviews. To allow teammates to discuss and review together, allowing teams to submit reviews for the team as a whole should be allowed ideally. We intend to do this in our project. &lt;br /&gt;
&lt;br /&gt;
*Currently all reviews in Expertiza are done by individuals. This is true regardless of whether the assignment is done by individuals or teams . &lt;br /&gt;
*There are occasions when it's advantageous to review projects as a team . &lt;br /&gt;
*It helps foster discussion and thereby improves the process of learning.&lt;br /&gt;
&lt;br /&gt;
== Task Description ==&lt;br /&gt;
This project comprises of the following steps :&lt;br /&gt;
&lt;br /&gt;
# Objects of ResponseMap record the information of who reviews whom. The field reviewee_id refers to the team who is being reviewed. The field reviewer_id refers to the individual/team performing the review. # We added a boolean field &amp;quot;reviewer_is_team&amp;quot; to identify if the review is being performed by a team or an individual.&lt;br /&gt;
# The review strategy is assignment specific and hence we have added a field reviewer_is_team to the assignments table as well&lt;br /&gt;
# For an Instructor to specify whether the review is a Team/Individual based review, we have provided a dropdown on the Review Strategy tab of assignment creation. &lt;br /&gt;
# If reviewer_is_team field is true the reviewer_id in the response_map is set to the corresponding team_id of the user&lt;br /&gt;
# Ensure that features such as &amp;quot;view my scores&amp;quot;, or the &amp;quot;alternate view/heat map&amp;quot; continued working.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
==== Design Pattern ====&lt;br /&gt;
'''Model View Controller'''&lt;br /&gt;
&lt;br /&gt;
In an MVC model, a software application is divided into three major components: Model, View and Controller. &lt;br /&gt;
&lt;br /&gt;
'''Model''' - Keeps data, logic and relations between objects and the database. It also handles validations, associations and transactions.&lt;br /&gt;
&lt;br /&gt;
'''View''' - Displays the data received from the controller in the user interface.&lt;br /&gt;
&lt;br /&gt;
'''Controller''' - Accepts the client's input and converts it into action points for the model or view. Other responsibilities include querying models and organizing data in a structure that is displayed by the view.&lt;br /&gt;
&lt;br /&gt;
==== Use Case Diagram ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name:''' Specify review type on Review Strategy tab.&lt;br /&gt;
&lt;br /&gt;
'''Actor:''' Instructor. &lt;br /&gt;
&lt;br /&gt;
'''Description:''' The instructor specifies whether this review is an individual review or a team based review on the Review Strategy tab.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name:''' Perform Review.&lt;br /&gt;
&lt;br /&gt;
'''Actor:''' Individual Student/Team.&lt;br /&gt;
&lt;br /&gt;
'''Description:''' The individual/team will perform a review for the Assignment.&lt;br /&gt;
&lt;br /&gt;
[[File:OODDUseCase.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Database Design ===&lt;br /&gt;
&lt;br /&gt;
ResponseMap in essence, records who reviews whom. Schema of ResponseMap:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Field&lt;br /&gt;
! Data type&lt;br /&gt;
|-&lt;br /&gt;
| id&lt;br /&gt;
| int(11)&lt;br /&gt;
|-&lt;br /&gt;
| reviewed_object_id&lt;br /&gt;
| int(11)&lt;br /&gt;
|-&lt;br /&gt;
| reviewer_id&lt;br /&gt;
| int(11)&lt;br /&gt;
|-&lt;br /&gt;
| reviewee_id&lt;br /&gt;
| int(11)&lt;br /&gt;
|-&lt;br /&gt;
| type&lt;br /&gt;
| varchar(255)&lt;br /&gt;
|-&lt;br /&gt;
| created_at&lt;br /&gt;
| datetime&lt;br /&gt;
|-&lt;br /&gt;
| updated_at&lt;br /&gt;
| datetime&lt;br /&gt;
|-&lt;br /&gt;
| caliberate_to&lt;br /&gt;
| boolean&lt;br /&gt;
|-&lt;br /&gt;
| reviewer_is_team &lt;br /&gt;
| boolean&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The description of the fields of the database for ResponseMap:&lt;br /&gt;
&lt;br /&gt;
1. '''id:''' The unique record identifier.&lt;br /&gt;
&lt;br /&gt;
2. '''reviewed_object_id:''' The id of the object that is reviewed. Assignments or ReviewMaps could be reviewed.&lt;br /&gt;
&lt;br /&gt;
3. '''reviewer_id:''' The reviewer can either be an “AssignmentTeam” or “AssignmentParticipant”, which is indicated by the field reviwer_is_team.&lt;br /&gt;
&lt;br /&gt;
4. '''reviewee_id:''' The id “AssignmentTeam” who is getting the “Response” i.e., the one whose work is being reviewed. &lt;br /&gt;
&lt;br /&gt;
5. '''type :'''  Indicates the type of the ResponseMap.&lt;br /&gt;
&lt;br /&gt;
6. '''created_at:''' The timestamp when the Response was created.&lt;br /&gt;
&lt;br /&gt;
7. '''updated_at:''' The timestamp when the Response was updated.&lt;br /&gt;
&lt;br /&gt;
8. '''calibrate_to:''' A field of boolean data type.&lt;br /&gt;
&lt;br /&gt;
9. '''reviewer_is_team:''' If this field is ‘true’, the reviewer_id refers to the id of the “AssignmentTeam” to which the participant belongs. Else, it refers to the id of the “Participant” itself.&lt;br /&gt;
&lt;br /&gt;
==Implementation==&lt;br /&gt;
&lt;br /&gt;
Below are the key files modified:&lt;br /&gt;
====Controllers====&lt;br /&gt;
&lt;br /&gt;
* '''review_mapping_controller.rb:''' &lt;br /&gt;
&lt;br /&gt;
1. We have added a check in the assign_reviewer_dynamically method that checks if the assignment is a team_reviewed assignment to fetch the respective row from the participants or the teams_users table&lt;br /&gt;
&lt;br /&gt;
[[File: review_mapping_controller1.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. Also while redirecting to the student_review controller the participant_id or the team_id is passed based on the type of review&lt;br /&gt;
&lt;br /&gt;
[[File: review_mapping_controller2.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''response_controller:''' &lt;br /&gt;
&lt;br /&gt;
1. Below is the get_reviewer_from_response_map method that returns the team or participant id based on the type of review . Also this value is passed forward to the respective controller we redirect to. The get_participant method returns the row from the participants table corresponding to the current user. &lt;br /&gt;
&lt;br /&gt;
[[File: response_controller1.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File: response_controller2.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''student_review_controller:''' &lt;br /&gt;
&lt;br /&gt;
1. Same logic as applied in the review mapping controller to obtain the reviewer.&lt;br /&gt;
&lt;br /&gt;
[[File: student_review_controller1.jpg]]&lt;br /&gt;
&lt;br /&gt;
====Models====&lt;br /&gt;
* '''assignment_team.rb:''' &lt;br /&gt;
&lt;br /&gt;
1. A row is being created in the response_maps table depending on if it's a team or individual review. The same logic is being applied to check and retrieve the appropriate row form the response map.&lt;br /&gt;
&lt;br /&gt;
[[File: assignment_team_model.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''assignment_team.rb:'''&lt;br /&gt;
&lt;br /&gt;
1. The logic to not allow reviewers to review their own work has been modified to include scenarios when it's a team based review.&lt;br /&gt;
&lt;br /&gt;
[[File: assignment_model.jpg]]&lt;br /&gt;
&lt;br /&gt;
====Views====&lt;br /&gt;
* '''assignments/edit/_review_report.html.erb:&lt;br /&gt;
&lt;br /&gt;
1. Added the below drop down so that the instructor can select the review strategy for the assignment.&lt;br /&gt;
&lt;br /&gt;
[[File: drop_down.jpg]]&lt;br /&gt;
&lt;br /&gt;
====Handling Concurrency====&lt;br /&gt;
&lt;br /&gt;
There can exist a concurrency problem with the team review system. If two members from the team start with the review at the same time, the member who started the review first will lose his/her changes as the second members changes will be overwritten.&lt;br /&gt;
&lt;br /&gt;
To solve this problem, we plan to use a boolean field 'lock' for locking mechanism. &lt;br /&gt;
If any member from the team starts with the review, we will set the lock field to true. Once the response is locked, no other member is allowed to edit the response. This lock will be released after the response has been saved.&lt;br /&gt;
&lt;br /&gt;
== Testing Details ==&lt;br /&gt;
&lt;br /&gt;
=== RSpec ===&lt;br /&gt;
RSpec is a testing framework for Rails, and is a Behavioral-Driven Development tool. It is a domain specific language(DSL). All the tests can be executed by rspec spec command, or can also be executed individually using the command &amp;quot;rspec spec/models/assignment_team_spec.rb&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
We intend to write unit tests using RSpec for all the methods which we modified/created.&lt;br /&gt;
&lt;br /&gt;
===Factory Girl===&lt;br /&gt;
Factory Girl is used for creating Assignment and Team objects to be used for testing. Factory Girl is a replacement for fixtures. Fixtures have to be updated whenever we change a data model whereas adding and removing fields is much easier in Factory Girl. Fixture definitions are global whereas Factories can be local, so isolated cases can be tested. Factories are defined to create objects for testing.&lt;br /&gt;
&lt;br /&gt;
===Running RSpec===&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  $ rspec spec/models/assignment_team_spec.rb&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
===Test Cases===&lt;br /&gt;
1. If the instructor selects &amp;quot;Review by team&amp;quot;, check if the review is done by a team member, not by participant.&lt;br /&gt;
&lt;br /&gt;
2. If one teammate is working on a review, another teammate should not be able to edit it at the same time.&lt;/div&gt;</summary>
		<author><name>Vrajadh</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Assignment_model.jpg&amp;diff=102376</id>
		<title>File:Assignment model.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Assignment_model.jpg&amp;diff=102376"/>
		<updated>2016-04-28T00:32:44Z</updated>

		<summary type="html">&lt;p&gt;Vrajadh: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Vrajadh</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2016_E1631_Team-based_reviewing&amp;diff=102375</id>
		<title>CSC/ECE 517 Spring 2016 E1631 Team-based reviewing</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2016_E1631_Team-based_reviewing&amp;diff=102375"/>
		<updated>2016-04-28T00:32:22Z</updated>

		<summary type="html">&lt;p&gt;Vrajadh: /* Models */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Purpose ==&lt;br /&gt;
&lt;br /&gt;
When a participant of a team reviewed an assignment, his/her review is independent of his teammate’s reviews. To allow teammates to discuss and review together, allowing teams to submit reviews for the team as a whole should be allowed ideally. We intend to do this in our project. &lt;br /&gt;
&lt;br /&gt;
*Currently all reviews in Expertiza are done by individuals. This is true regardless of whether the assignment is done by individuals or teams . &lt;br /&gt;
*There are occasions when it's advantageous to review projects as a team . &lt;br /&gt;
*It helps foster discussion and thereby improves the process of learning.&lt;br /&gt;
&lt;br /&gt;
== Task Description ==&lt;br /&gt;
This project comprises of the following steps :&lt;br /&gt;
&lt;br /&gt;
# Objects of ResponseMap record the information of who reviews whom. The field reviewee_id refers to the team who is being reviewed. The field reviewer_id refers to the individual/team performing the review. # We added a boolean field &amp;quot;reviewer_is_team&amp;quot; to identify if the review is being performed by a team or an individual.&lt;br /&gt;
# The review strategy is assignment specific and hence we have added a field reviewer_is_team to the assignments table as well&lt;br /&gt;
# For an Instructor to specify whether the review is a Team/Individual based review, we have provided a dropdown on the Review Strategy tab of assignment creation. &lt;br /&gt;
# If reviewer_is_team field is true the reviewer_id in the response_map is set to the corresponding team_id of the user&lt;br /&gt;
# Ensure that features such as &amp;quot;view my scores&amp;quot;, or the &amp;quot;alternate view/heat map&amp;quot; continued working.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
==== Design Pattern ====&lt;br /&gt;
'''Model View Controller'''&lt;br /&gt;
&lt;br /&gt;
In an MVC model, a software application is divided into three major components: Model, View and Controller. &lt;br /&gt;
&lt;br /&gt;
'''Model''' - Keeps data, logic and relations between objects and the database. It also handles validations, associations and transactions.&lt;br /&gt;
&lt;br /&gt;
'''View''' - Displays the data received from the controller in the user interface.&lt;br /&gt;
&lt;br /&gt;
'''Controller''' - Accepts the client's input and converts it into action points for the model or view. Other responsibilities include querying models and organizing data in a structure that is displayed by the view.&lt;br /&gt;
&lt;br /&gt;
==== Use Case Diagram ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name:''' Specify review type on Review Strategy tab.&lt;br /&gt;
&lt;br /&gt;
'''Actor:''' Instructor. &lt;br /&gt;
&lt;br /&gt;
'''Description:''' The instructor specifies whether this review is an individual review or a team based review on the Review Strategy tab.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name:''' Perform Review.&lt;br /&gt;
&lt;br /&gt;
'''Actor:''' Individual Student/Team.&lt;br /&gt;
&lt;br /&gt;
'''Description:''' The individual/team will perform a review for the Assignment.&lt;br /&gt;
&lt;br /&gt;
[[File:OODDUseCase.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Database Design ===&lt;br /&gt;
&lt;br /&gt;
ResponseMap in essence, records who reviews whom. Schema of ResponseMap:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Field&lt;br /&gt;
! Data type&lt;br /&gt;
|-&lt;br /&gt;
| id&lt;br /&gt;
| int(11)&lt;br /&gt;
|-&lt;br /&gt;
| reviewed_object_id&lt;br /&gt;
| int(11)&lt;br /&gt;
|-&lt;br /&gt;
| reviewer_id&lt;br /&gt;
| int(11)&lt;br /&gt;
|-&lt;br /&gt;
| reviewee_id&lt;br /&gt;
| int(11)&lt;br /&gt;
|-&lt;br /&gt;
| type&lt;br /&gt;
| varchar(255)&lt;br /&gt;
|-&lt;br /&gt;
| created_at&lt;br /&gt;
| datetime&lt;br /&gt;
|-&lt;br /&gt;
| updated_at&lt;br /&gt;
| datetime&lt;br /&gt;
|-&lt;br /&gt;
| caliberate_to&lt;br /&gt;
| boolean&lt;br /&gt;
|-&lt;br /&gt;
| reviewer_is_team &lt;br /&gt;
| boolean&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The description of the fields of the database for ResponseMap:&lt;br /&gt;
&lt;br /&gt;
1. '''id:''' The unique record identifier.&lt;br /&gt;
&lt;br /&gt;
2. '''reviewed_object_id:''' The id of the object that is reviewed. Assignments or ReviewMaps could be reviewed.&lt;br /&gt;
&lt;br /&gt;
3. '''reviewer_id:''' The reviewer can either be an “AssignmentTeam” or “AssignmentParticipant”, which is indicated by the field reviwer_is_team.&lt;br /&gt;
&lt;br /&gt;
4. '''reviewee_id:''' The id “AssignmentTeam” who is getting the “Response” i.e., the one whose work is being reviewed. &lt;br /&gt;
&lt;br /&gt;
5. '''type :'''  Indicates the type of the ResponseMap.&lt;br /&gt;
&lt;br /&gt;
6. '''created_at:''' The timestamp when the Response was created.&lt;br /&gt;
&lt;br /&gt;
7. '''updated_at:''' The timestamp when the Response was updated.&lt;br /&gt;
&lt;br /&gt;
8. '''calibrate_to:''' A field of boolean data type.&lt;br /&gt;
&lt;br /&gt;
9. '''reviewer_is_team:''' If this field is ‘true’, the reviewer_id refers to the id of the “AssignmentTeam” to which the participant belongs. Else, it refers to the id of the “Participant” itself.&lt;br /&gt;
&lt;br /&gt;
==Implementation==&lt;br /&gt;
&lt;br /&gt;
Below are the key files modified:&lt;br /&gt;
====Controllers====&lt;br /&gt;
&lt;br /&gt;
* '''review_mapping_controller.rb:''' &lt;br /&gt;
&lt;br /&gt;
1. We have added a check in the assign_reviewer_dynamically method that checks if the assignment is a team_reviewed assignment to fetch the respective row from the participants or the teams_users table&lt;br /&gt;
&lt;br /&gt;
[[File: review_mapping_controller1.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. Also while redirecting to the student_review controller the participant_id or the team_id is passed based on the type of review&lt;br /&gt;
&lt;br /&gt;
[[File: review_mapping_controller2.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''response_controller:''' &lt;br /&gt;
&lt;br /&gt;
1. Below is the get_reviewer_from_response_map method that returns the team or participant id based on the type of review . Also this value is passed forward to the respective controller we redirect to. The get_participant method returns the row from the participants table corresponding to the current user. &lt;br /&gt;
&lt;br /&gt;
[[File: response_controller1.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File: response_controller2.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''student_review_controller:''' &lt;br /&gt;
&lt;br /&gt;
1. Same logic as applied in the review mapping controller to obtain the reviewer.&lt;br /&gt;
&lt;br /&gt;
[[File: student_review_controller1.jpg]]&lt;br /&gt;
&lt;br /&gt;
====Models====&lt;br /&gt;
* '''assignment_team.rb:''' &lt;br /&gt;
&lt;br /&gt;
1. A row is being created in the response_maps table depending on if it's a team or individual review. The same logic is being applied to check and retrieve the appropriate row form the response map.&lt;br /&gt;
&lt;br /&gt;
[[File: assignment_team_model.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''assignment_team.rb:'''&lt;br /&gt;
&lt;br /&gt;
1. The logic to not allow reviewers to review their own work has been modified to include scenarios when it's a team based review.&lt;br /&gt;
&lt;br /&gt;
[[File: assignment_model.jpg]]&lt;br /&gt;
&lt;br /&gt;
====Views====&lt;br /&gt;
* '''assignments/edit/_review_report.html.erb:''' Add a dropdown for the instructors to select if the reviews are individual or team-based.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Handling Concurrency====&lt;br /&gt;
&lt;br /&gt;
There can exist a concurrency problem with the team review system. If two members from the team start with the review at the same time, the member who started the review first will lose his/her changes as the second members changes will be overwritten.&lt;br /&gt;
&lt;br /&gt;
To solve this problem, we plan to use a boolean field 'lock' for locking mechanism. &lt;br /&gt;
If any member from the team starts with the review, we will set the lock field to true. Once the response is locked, no other member is allowed to edit the response. This lock will be released after the response has been saved.&lt;br /&gt;
&lt;br /&gt;
== Testing Details ==&lt;br /&gt;
&lt;br /&gt;
=== RSpec ===&lt;br /&gt;
RSpec is a testing framework for Rails, and is a Behavioral-Driven Development tool. It is a domain specific language(DSL). All the tests can be executed by rspec spec command, or can also be executed individually using the command &amp;quot;rspec spec/models/assignment_team_spec.rb&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
We intend to write unit tests using RSpec for all the methods which we modified/created.&lt;br /&gt;
&lt;br /&gt;
===Factory Girl===&lt;br /&gt;
Factory Girl is used for creating Assignment and Team objects to be used for testing. Factory Girl is a replacement for fixtures. Fixtures have to be updated whenever we change a data model whereas adding and removing fields is much easier in Factory Girl. Fixture definitions are global whereas Factories can be local, so isolated cases can be tested. Factories are defined to create objects for testing.&lt;br /&gt;
&lt;br /&gt;
===Running RSpec===&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  $ rspec spec/models/assignment_team_spec.rb&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
===Test Cases===&lt;br /&gt;
1. If the instructor selects &amp;quot;Review by team&amp;quot;, check if the review is done by a team member, not by participant.&lt;br /&gt;
&lt;br /&gt;
2. If one teammate is working on a review, another teammate should not be able to edit it at the same time.&lt;/div&gt;</summary>
		<author><name>Vrajadh</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Assignment_team_model.jpg&amp;diff=102374</id>
		<title>File:Assignment team model.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Assignment_team_model.jpg&amp;diff=102374"/>
		<updated>2016-04-28T00:28:16Z</updated>

		<summary type="html">&lt;p&gt;Vrajadh: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Vrajadh</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2016_E1631_Team-based_reviewing&amp;diff=102373</id>
		<title>CSC/ECE 517 Spring 2016 E1631 Team-based reviewing</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2016_E1631_Team-based_reviewing&amp;diff=102373"/>
		<updated>2016-04-28T00:28:03Z</updated>

		<summary type="html">&lt;p&gt;Vrajadh: /* Models */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Purpose ==&lt;br /&gt;
&lt;br /&gt;
When a participant of a team reviewed an assignment, his/her review is independent of his teammate’s reviews. To allow teammates to discuss and review together, allowing teams to submit reviews for the team as a whole should be allowed ideally. We intend to do this in our project. &lt;br /&gt;
&lt;br /&gt;
*Currently all reviews in Expertiza are done by individuals. This is true regardless of whether the assignment is done by individuals or teams . &lt;br /&gt;
*There are occasions when it's advantageous to review projects as a team . &lt;br /&gt;
*It helps foster discussion and thereby improves the process of learning.&lt;br /&gt;
&lt;br /&gt;
== Task Description ==&lt;br /&gt;
This project comprises of the following steps :&lt;br /&gt;
&lt;br /&gt;
# Objects of ResponseMap record the information of who reviews whom. The field reviewee_id refers to the team who is being reviewed. The field reviewer_id refers to the individual/team performing the review. # We added a boolean field &amp;quot;reviewer_is_team&amp;quot; to identify if the review is being performed by a team or an individual.&lt;br /&gt;
# The review strategy is assignment specific and hence we have added a field reviewer_is_team to the assignments table as well&lt;br /&gt;
# For an Instructor to specify whether the review is a Team/Individual based review, we have provided a dropdown on the Review Strategy tab of assignment creation. &lt;br /&gt;
# If reviewer_is_team field is true the reviewer_id in the response_map is set to the corresponding team_id of the user&lt;br /&gt;
# Ensure that features such as &amp;quot;view my scores&amp;quot;, or the &amp;quot;alternate view/heat map&amp;quot; continued working.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
==== Design Pattern ====&lt;br /&gt;
'''Model View Controller'''&lt;br /&gt;
&lt;br /&gt;
In an MVC model, a software application is divided into three major components: Model, View and Controller. &lt;br /&gt;
&lt;br /&gt;
'''Model''' - Keeps data, logic and relations between objects and the database. It also handles validations, associations and transactions.&lt;br /&gt;
&lt;br /&gt;
'''View''' - Displays the data received from the controller in the user interface.&lt;br /&gt;
&lt;br /&gt;
'''Controller''' - Accepts the client's input and converts it into action points for the model or view. Other responsibilities include querying models and organizing data in a structure that is displayed by the view.&lt;br /&gt;
&lt;br /&gt;
==== Use Case Diagram ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name:''' Specify review type on Review Strategy tab.&lt;br /&gt;
&lt;br /&gt;
'''Actor:''' Instructor. &lt;br /&gt;
&lt;br /&gt;
'''Description:''' The instructor specifies whether this review is an individual review or a team based review on the Review Strategy tab.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name:''' Perform Review.&lt;br /&gt;
&lt;br /&gt;
'''Actor:''' Individual Student/Team.&lt;br /&gt;
&lt;br /&gt;
'''Description:''' The individual/team will perform a review for the Assignment.&lt;br /&gt;
&lt;br /&gt;
[[File:OODDUseCase.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Database Design ===&lt;br /&gt;
&lt;br /&gt;
ResponseMap in essence, records who reviews whom. Schema of ResponseMap:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Field&lt;br /&gt;
! Data type&lt;br /&gt;
|-&lt;br /&gt;
| id&lt;br /&gt;
| int(11)&lt;br /&gt;
|-&lt;br /&gt;
| reviewed_object_id&lt;br /&gt;
| int(11)&lt;br /&gt;
|-&lt;br /&gt;
| reviewer_id&lt;br /&gt;
| int(11)&lt;br /&gt;
|-&lt;br /&gt;
| reviewee_id&lt;br /&gt;
| int(11)&lt;br /&gt;
|-&lt;br /&gt;
| type&lt;br /&gt;
| varchar(255)&lt;br /&gt;
|-&lt;br /&gt;
| created_at&lt;br /&gt;
| datetime&lt;br /&gt;
|-&lt;br /&gt;
| updated_at&lt;br /&gt;
| datetime&lt;br /&gt;
|-&lt;br /&gt;
| caliberate_to&lt;br /&gt;
| boolean&lt;br /&gt;
|-&lt;br /&gt;
| reviewer_is_team &lt;br /&gt;
| boolean&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The description of the fields of the database for ResponseMap:&lt;br /&gt;
&lt;br /&gt;
1. '''id:''' The unique record identifier.&lt;br /&gt;
&lt;br /&gt;
2. '''reviewed_object_id:''' The id of the object that is reviewed. Assignments or ReviewMaps could be reviewed.&lt;br /&gt;
&lt;br /&gt;
3. '''reviewer_id:''' The reviewer can either be an “AssignmentTeam” or “AssignmentParticipant”, which is indicated by the field reviwer_is_team.&lt;br /&gt;
&lt;br /&gt;
4. '''reviewee_id:''' The id “AssignmentTeam” who is getting the “Response” i.e., the one whose work is being reviewed. &lt;br /&gt;
&lt;br /&gt;
5. '''type :'''  Indicates the type of the ResponseMap.&lt;br /&gt;
&lt;br /&gt;
6. '''created_at:''' The timestamp when the Response was created.&lt;br /&gt;
&lt;br /&gt;
7. '''updated_at:''' The timestamp when the Response was updated.&lt;br /&gt;
&lt;br /&gt;
8. '''calibrate_to:''' A field of boolean data type.&lt;br /&gt;
&lt;br /&gt;
9. '''reviewer_is_team:''' If this field is ‘true’, the reviewer_id refers to the id of the “AssignmentTeam” to which the participant belongs. Else, it refers to the id of the “Participant” itself.&lt;br /&gt;
&lt;br /&gt;
==Implementation==&lt;br /&gt;
&lt;br /&gt;
Below are the key files modified:&lt;br /&gt;
====Controllers====&lt;br /&gt;
&lt;br /&gt;
* '''review_mapping_controller.rb:''' &lt;br /&gt;
&lt;br /&gt;
1. We have added a check in the assign_reviewer_dynamically method that checks if the assignment is a team_reviewed assignment to fetch the respective row from the participants or the teams_users table&lt;br /&gt;
&lt;br /&gt;
[[File: review_mapping_controller1.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. Also while redirecting to the student_review controller the participant_id or the team_id is passed based on the type of review&lt;br /&gt;
&lt;br /&gt;
[[File: review_mapping_controller2.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''response_controller:''' &lt;br /&gt;
&lt;br /&gt;
1. Below is the get_reviewer_from_response_map method that returns the team or participant id based on the type of review . Also this value is passed forward to the respective controller we redirect to. The get_participant method returns the row from the participants table corresponding to the current user. &lt;br /&gt;
&lt;br /&gt;
[[File: response_controller1.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File: response_controller2.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''student_review_controller:''' &lt;br /&gt;
&lt;br /&gt;
1. Same logic as applied in the review mapping controller to obtain the reviewer.&lt;br /&gt;
&lt;br /&gt;
[[File: student_review_controller1.jpg]]&lt;br /&gt;
&lt;br /&gt;
====Models====&lt;br /&gt;
* '''assignment_team.rb:''' &lt;br /&gt;
&lt;br /&gt;
A row is being created in the response_maps table depending on if it's a team or individual review. The same logic is being applied to check and retrieve the appropriate row form the response map.&lt;br /&gt;
&lt;br /&gt;
[[File: assignment_team_model.jpg]]&lt;br /&gt;
&lt;br /&gt;
====Views====&lt;br /&gt;
* '''assignments/edit/_review_report.html.erb:''' Add a dropdown for the instructors to select if the reviews are individual or team-based.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Handling Concurrency====&lt;br /&gt;
&lt;br /&gt;
There can exist a concurrency problem with the team review system. If two members from the team start with the review at the same time, the member who started the review first will lose his/her changes as the second members changes will be overwritten.&lt;br /&gt;
&lt;br /&gt;
To solve this problem, we plan to use a boolean field 'lock' for locking mechanism. &lt;br /&gt;
If any member from the team starts with the review, we will set the lock field to true. Once the response is locked, no other member is allowed to edit the response. This lock will be released after the response has been saved.&lt;br /&gt;
&lt;br /&gt;
== Testing Details ==&lt;br /&gt;
&lt;br /&gt;
=== RSpec ===&lt;br /&gt;
RSpec is a testing framework for Rails, and is a Behavioral-Driven Development tool. It is a domain specific language(DSL). All the tests can be executed by rspec spec command, or can also be executed individually using the command &amp;quot;rspec spec/models/assignment_team_spec.rb&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
We intend to write unit tests using RSpec for all the methods which we modified/created.&lt;br /&gt;
&lt;br /&gt;
===Factory Girl===&lt;br /&gt;
Factory Girl is used for creating Assignment and Team objects to be used for testing. Factory Girl is a replacement for fixtures. Fixtures have to be updated whenever we change a data model whereas adding and removing fields is much easier in Factory Girl. Fixture definitions are global whereas Factories can be local, so isolated cases can be tested. Factories are defined to create objects for testing.&lt;br /&gt;
&lt;br /&gt;
===Running RSpec===&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  $ rspec spec/models/assignment_team_spec.rb&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
===Test Cases===&lt;br /&gt;
1. If the instructor selects &amp;quot;Review by team&amp;quot;, check if the review is done by a team member, not by participant.&lt;br /&gt;
&lt;br /&gt;
2. If one teammate is working on a review, another teammate should not be able to edit it at the same time.&lt;/div&gt;</summary>
		<author><name>Vrajadh</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Student_review_controller1.jpg&amp;diff=102372</id>
		<title>File:Student review controller1.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Student_review_controller1.jpg&amp;diff=102372"/>
		<updated>2016-04-28T00:21:11Z</updated>

		<summary type="html">&lt;p&gt;Vrajadh: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Vrajadh</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2016_E1631_Team-based_reviewing&amp;diff=102371</id>
		<title>CSC/ECE 517 Spring 2016 E1631 Team-based reviewing</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2016_E1631_Team-based_reviewing&amp;diff=102371"/>
		<updated>2016-04-28T00:20:53Z</updated>

		<summary type="html">&lt;p&gt;Vrajadh: /* Controllers */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Purpose ==&lt;br /&gt;
&lt;br /&gt;
When a participant of a team reviewed an assignment, his/her review is independent of his teammate’s reviews. To allow teammates to discuss and review together, allowing teams to submit reviews for the team as a whole should be allowed ideally. We intend to do this in our project. &lt;br /&gt;
&lt;br /&gt;
*Currently all reviews in Expertiza are done by individuals. This is true regardless of whether the assignment is done by individuals or teams . &lt;br /&gt;
*There are occasions when it's advantageous to review projects as a team . &lt;br /&gt;
*It helps foster discussion and thereby improves the process of learning.&lt;br /&gt;
&lt;br /&gt;
== Task Description ==&lt;br /&gt;
This project comprises of the following steps :&lt;br /&gt;
&lt;br /&gt;
# Objects of ResponseMap record the information of who reviews whom. The field reviewee_id refers to the team who is being reviewed. The field reviewer_id refers to the individual/team performing the review. # We added a boolean field &amp;quot;reviewer_is_team&amp;quot; to identify if the review is being performed by a team or an individual.&lt;br /&gt;
# The review strategy is assignment specific and hence we have added a field reviewer_is_team to the assignments table as well&lt;br /&gt;
# For an Instructor to specify whether the review is a Team/Individual based review, we have provided a dropdown on the Review Strategy tab of assignment creation. &lt;br /&gt;
# If reviewer_is_team field is true the reviewer_id in the response_map is set to the corresponding team_id of the user&lt;br /&gt;
# Ensure that features such as &amp;quot;view my scores&amp;quot;, or the &amp;quot;alternate view/heat map&amp;quot; continued working.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
==== Design Pattern ====&lt;br /&gt;
'''Model View Controller'''&lt;br /&gt;
&lt;br /&gt;
In an MVC model, a software application is divided into three major components: Model, View and Controller. &lt;br /&gt;
&lt;br /&gt;
'''Model''' - Keeps data, logic and relations between objects and the database. It also handles validations, associations and transactions.&lt;br /&gt;
&lt;br /&gt;
'''View''' - Displays the data received from the controller in the user interface.&lt;br /&gt;
&lt;br /&gt;
'''Controller''' - Accepts the client's input and converts it into action points for the model or view. Other responsibilities include querying models and organizing data in a structure that is displayed by the view.&lt;br /&gt;
&lt;br /&gt;
==== Use Case Diagram ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name:''' Specify review type on Review Strategy tab.&lt;br /&gt;
&lt;br /&gt;
'''Actor:''' Instructor. &lt;br /&gt;
&lt;br /&gt;
'''Description:''' The instructor specifies whether this review is an individual review or a team based review on the Review Strategy tab.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name:''' Perform Review.&lt;br /&gt;
&lt;br /&gt;
'''Actor:''' Individual Student/Team.&lt;br /&gt;
&lt;br /&gt;
'''Description:''' The individual/team will perform a review for the Assignment.&lt;br /&gt;
&lt;br /&gt;
[[File:OODDUseCase.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Database Design ===&lt;br /&gt;
&lt;br /&gt;
ResponseMap in essence, records who reviews whom. Schema of ResponseMap:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Field&lt;br /&gt;
! Data type&lt;br /&gt;
|-&lt;br /&gt;
| id&lt;br /&gt;
| int(11)&lt;br /&gt;
|-&lt;br /&gt;
| reviewed_object_id&lt;br /&gt;
| int(11)&lt;br /&gt;
|-&lt;br /&gt;
| reviewer_id&lt;br /&gt;
| int(11)&lt;br /&gt;
|-&lt;br /&gt;
| reviewee_id&lt;br /&gt;
| int(11)&lt;br /&gt;
|-&lt;br /&gt;
| type&lt;br /&gt;
| varchar(255)&lt;br /&gt;
|-&lt;br /&gt;
| created_at&lt;br /&gt;
| datetime&lt;br /&gt;
|-&lt;br /&gt;
| updated_at&lt;br /&gt;
| datetime&lt;br /&gt;
|-&lt;br /&gt;
| caliberate_to&lt;br /&gt;
| boolean&lt;br /&gt;
|-&lt;br /&gt;
| reviewer_is_team &lt;br /&gt;
| boolean&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The description of the fields of the database for ResponseMap:&lt;br /&gt;
&lt;br /&gt;
1. '''id:''' The unique record identifier.&lt;br /&gt;
&lt;br /&gt;
2. '''reviewed_object_id:''' The id of the object that is reviewed. Assignments or ReviewMaps could be reviewed.&lt;br /&gt;
&lt;br /&gt;
3. '''reviewer_id:''' The reviewer can either be an “AssignmentTeam” or “AssignmentParticipant”, which is indicated by the field reviwer_is_team.&lt;br /&gt;
&lt;br /&gt;
4. '''reviewee_id:''' The id “AssignmentTeam” who is getting the “Response” i.e., the one whose work is being reviewed. &lt;br /&gt;
&lt;br /&gt;
5. '''type :'''  Indicates the type of the ResponseMap.&lt;br /&gt;
&lt;br /&gt;
6. '''created_at:''' The timestamp when the Response was created.&lt;br /&gt;
&lt;br /&gt;
7. '''updated_at:''' The timestamp when the Response was updated.&lt;br /&gt;
&lt;br /&gt;
8. '''calibrate_to:''' A field of boolean data type.&lt;br /&gt;
&lt;br /&gt;
9. '''reviewer_is_team:''' If this field is ‘true’, the reviewer_id refers to the id of the “AssignmentTeam” to which the participant belongs. Else, it refers to the id of the “Participant” itself.&lt;br /&gt;
&lt;br /&gt;
==Implementation==&lt;br /&gt;
&lt;br /&gt;
Below are the key files modified:&lt;br /&gt;
====Controllers====&lt;br /&gt;
&lt;br /&gt;
* '''review_mapping_controller.rb:''' &lt;br /&gt;
&lt;br /&gt;
1. We have added a check in the assign_reviewer_dynamically method that checks if the assignment is a team_reviewed assignment to fetch the respective row from the participants or the teams_users table&lt;br /&gt;
&lt;br /&gt;
[[File: review_mapping_controller1.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. Also while redirecting to the student_review controller the participant_id or the team_id is passed based on the type of review&lt;br /&gt;
&lt;br /&gt;
[[File: review_mapping_controller2.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''response_controller:''' &lt;br /&gt;
&lt;br /&gt;
1. Below is the get_reviewer_from_response_map method that returns the team or participant id based on the type of review . Also this value is passed forward to the respective controller we redirect to. The get_participant method returns the row from the participants table corresponding to the current user. &lt;br /&gt;
&lt;br /&gt;
[[File: response_controller1.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File: response_controller2.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''student_review_controller:''' &lt;br /&gt;
&lt;br /&gt;
1. Same logic as applied in the review mapping controller to obtain the reviewer.&lt;br /&gt;
&lt;br /&gt;
[[File: student_review_controller1.jpg]]&lt;br /&gt;
&lt;br /&gt;
====Models====&lt;br /&gt;
* '''assignment.rb:''' Add a field review_type , that indicates if the assignment is a team based or an individual assignment decided by the instructor.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Views====&lt;br /&gt;
* '''assignments/edit/_review_report.html.erb:''' Add a dropdown for the instructors to select if the reviews are individual or team-based.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Handling Concurrency====&lt;br /&gt;
&lt;br /&gt;
There can exist a concurrency problem with the team review system. If two members from the team start with the review at the same time, the member who started the review first will lose his/her changes as the second members changes will be overwritten.&lt;br /&gt;
&lt;br /&gt;
To solve this problem, we plan to use a boolean field 'lock' for locking mechanism. &lt;br /&gt;
If any member from the team starts with the review, we will set the lock field to true. Once the response is locked, no other member is allowed to edit the response. This lock will be released after the response has been saved.&lt;br /&gt;
&lt;br /&gt;
== Testing Details ==&lt;br /&gt;
&lt;br /&gt;
=== RSpec ===&lt;br /&gt;
RSpec is a testing framework for Rails, and is a Behavioral-Driven Development tool. It is a domain specific language(DSL). All the tests can be executed by rspec spec command, or can also be executed individually using the command &amp;quot;rspec spec/models/assignment_team_spec.rb&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
We intend to write unit tests using RSpec for all the methods which we modified/created.&lt;br /&gt;
&lt;br /&gt;
===Factory Girl===&lt;br /&gt;
Factory Girl is used for creating Assignment and Team objects to be used for testing. Factory Girl is a replacement for fixtures. Fixtures have to be updated whenever we change a data model whereas adding and removing fields is much easier in Factory Girl. Fixture definitions are global whereas Factories can be local, so isolated cases can be tested. Factories are defined to create objects for testing.&lt;br /&gt;
&lt;br /&gt;
===Running RSpec===&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  $ rspec spec/models/assignment_team_spec.rb&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
===Test Cases===&lt;br /&gt;
1. If the instructor selects &amp;quot;Review by team&amp;quot;, check if the review is done by a team member, not by participant.&lt;br /&gt;
&lt;br /&gt;
2. If one teammate is working on a review, another teammate should not be able to edit it at the same time.&lt;/div&gt;</summary>
		<author><name>Vrajadh</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2016_E1631_Team-based_reviewing&amp;diff=102370</id>
		<title>CSC/ECE 517 Spring 2016 E1631 Team-based reviewing</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2016_E1631_Team-based_reviewing&amp;diff=102370"/>
		<updated>2016-04-28T00:18:40Z</updated>

		<summary type="html">&lt;p&gt;Vrajadh: /* Controllers */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Purpose ==&lt;br /&gt;
&lt;br /&gt;
When a participant of a team reviewed an assignment, his/her review is independent of his teammate’s reviews. To allow teammates to discuss and review together, allowing teams to submit reviews for the team as a whole should be allowed ideally. We intend to do this in our project. &lt;br /&gt;
&lt;br /&gt;
*Currently all reviews in Expertiza are done by individuals. This is true regardless of whether the assignment is done by individuals or teams . &lt;br /&gt;
*There are occasions when it's advantageous to review projects as a team . &lt;br /&gt;
*It helps foster discussion and thereby improves the process of learning.&lt;br /&gt;
&lt;br /&gt;
== Task Description ==&lt;br /&gt;
This project comprises of the following steps :&lt;br /&gt;
&lt;br /&gt;
# Objects of ResponseMap record the information of who reviews whom. The field reviewee_id refers to the team who is being reviewed. The field reviewer_id refers to the individual/team performing the review. # We added a boolean field &amp;quot;reviewer_is_team&amp;quot; to identify if the review is being performed by a team or an individual.&lt;br /&gt;
# The review strategy is assignment specific and hence we have added a field reviewer_is_team to the assignments table as well&lt;br /&gt;
# For an Instructor to specify whether the review is a Team/Individual based review, we have provided a dropdown on the Review Strategy tab of assignment creation. &lt;br /&gt;
# If reviewer_is_team field is true the reviewer_id in the response_map is set to the corresponding team_id of the user&lt;br /&gt;
# Ensure that features such as &amp;quot;view my scores&amp;quot;, or the &amp;quot;alternate view/heat map&amp;quot; continued working.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
==== Design Pattern ====&lt;br /&gt;
'''Model View Controller'''&lt;br /&gt;
&lt;br /&gt;
In an MVC model, a software application is divided into three major components: Model, View and Controller. &lt;br /&gt;
&lt;br /&gt;
'''Model''' - Keeps data, logic and relations between objects and the database. It also handles validations, associations and transactions.&lt;br /&gt;
&lt;br /&gt;
'''View''' - Displays the data received from the controller in the user interface.&lt;br /&gt;
&lt;br /&gt;
'''Controller''' - Accepts the client's input and converts it into action points for the model or view. Other responsibilities include querying models and organizing data in a structure that is displayed by the view.&lt;br /&gt;
&lt;br /&gt;
==== Use Case Diagram ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name:''' Specify review type on Review Strategy tab.&lt;br /&gt;
&lt;br /&gt;
'''Actor:''' Instructor. &lt;br /&gt;
&lt;br /&gt;
'''Description:''' The instructor specifies whether this review is an individual review or a team based review on the Review Strategy tab.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name:''' Perform Review.&lt;br /&gt;
&lt;br /&gt;
'''Actor:''' Individual Student/Team.&lt;br /&gt;
&lt;br /&gt;
'''Description:''' The individual/team will perform a review for the Assignment.&lt;br /&gt;
&lt;br /&gt;
[[File:OODDUseCase.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Database Design ===&lt;br /&gt;
&lt;br /&gt;
ResponseMap in essence, records who reviews whom. Schema of ResponseMap:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Field&lt;br /&gt;
! Data type&lt;br /&gt;
|-&lt;br /&gt;
| id&lt;br /&gt;
| int(11)&lt;br /&gt;
|-&lt;br /&gt;
| reviewed_object_id&lt;br /&gt;
| int(11)&lt;br /&gt;
|-&lt;br /&gt;
| reviewer_id&lt;br /&gt;
| int(11)&lt;br /&gt;
|-&lt;br /&gt;
| reviewee_id&lt;br /&gt;
| int(11)&lt;br /&gt;
|-&lt;br /&gt;
| type&lt;br /&gt;
| varchar(255)&lt;br /&gt;
|-&lt;br /&gt;
| created_at&lt;br /&gt;
| datetime&lt;br /&gt;
|-&lt;br /&gt;
| updated_at&lt;br /&gt;
| datetime&lt;br /&gt;
|-&lt;br /&gt;
| caliberate_to&lt;br /&gt;
| boolean&lt;br /&gt;
|-&lt;br /&gt;
| reviewer_is_team &lt;br /&gt;
| boolean&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The description of the fields of the database for ResponseMap:&lt;br /&gt;
&lt;br /&gt;
1. '''id:''' The unique record identifier.&lt;br /&gt;
&lt;br /&gt;
2. '''reviewed_object_id:''' The id of the object that is reviewed. Assignments or ReviewMaps could be reviewed.&lt;br /&gt;
&lt;br /&gt;
3. '''reviewer_id:''' The reviewer can either be an “AssignmentTeam” or “AssignmentParticipant”, which is indicated by the field reviwer_is_team.&lt;br /&gt;
&lt;br /&gt;
4. '''reviewee_id:''' The id “AssignmentTeam” who is getting the “Response” i.e., the one whose work is being reviewed. &lt;br /&gt;
&lt;br /&gt;
5. '''type :'''  Indicates the type of the ResponseMap.&lt;br /&gt;
&lt;br /&gt;
6. '''created_at:''' The timestamp when the Response was created.&lt;br /&gt;
&lt;br /&gt;
7. '''updated_at:''' The timestamp when the Response was updated.&lt;br /&gt;
&lt;br /&gt;
8. '''calibrate_to:''' A field of boolean data type.&lt;br /&gt;
&lt;br /&gt;
9. '''reviewer_is_team:''' If this field is ‘true’, the reviewer_id refers to the id of the “AssignmentTeam” to which the participant belongs. Else, it refers to the id of the “Participant” itself.&lt;br /&gt;
&lt;br /&gt;
==Implementation==&lt;br /&gt;
&lt;br /&gt;
Below are the key files modified:&lt;br /&gt;
====Controllers====&lt;br /&gt;
&lt;br /&gt;
* '''review_mapping_controller.rb:''' &lt;br /&gt;
&lt;br /&gt;
1. We have added a check in the assign_reviewer_dynamically method that checks if the assignment is a team_reviewed assignment to fetch the respective row from the participants or the teams_users table&lt;br /&gt;
&lt;br /&gt;
[[File: review_mapping_controller1.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. Also while redirecting to the student_review controller the participant_id or the team_id is passed based on the type of review&lt;br /&gt;
&lt;br /&gt;
[[File: review_mapping_controller2.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''response_controller:''' &lt;br /&gt;
&lt;br /&gt;
1. Below is the get_reviewer_from_response_map method that returns the team or participant id based on the type of review . Also this value is passed forward to the respective controller we redirect to. The get_participant method returns the row from the participants table corresponding to the current user. &lt;br /&gt;
&lt;br /&gt;
[[File: response_controller1.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File: response_controller2.jpg]]&lt;br /&gt;
&lt;br /&gt;
====Models====&lt;br /&gt;
* '''assignment.rb:''' Add a field review_type , that indicates if the assignment is a team based or an individual assignment decided by the instructor.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Views====&lt;br /&gt;
* '''assignments/edit/_review_report.html.erb:''' Add a dropdown for the instructors to select if the reviews are individual or team-based.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Handling Concurrency====&lt;br /&gt;
&lt;br /&gt;
There can exist a concurrency problem with the team review system. If two members from the team start with the review at the same time, the member who started the review first will lose his/her changes as the second members changes will be overwritten.&lt;br /&gt;
&lt;br /&gt;
To solve this problem, we plan to use a boolean field 'lock' for locking mechanism. &lt;br /&gt;
If any member from the team starts with the review, we will set the lock field to true. Once the response is locked, no other member is allowed to edit the response. This lock will be released after the response has been saved.&lt;br /&gt;
&lt;br /&gt;
== Testing Details ==&lt;br /&gt;
&lt;br /&gt;
=== RSpec ===&lt;br /&gt;
RSpec is a testing framework for Rails, and is a Behavioral-Driven Development tool. It is a domain specific language(DSL). All the tests can be executed by rspec spec command, or can also be executed individually using the command &amp;quot;rspec spec/models/assignment_team_spec.rb&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
We intend to write unit tests using RSpec for all the methods which we modified/created.&lt;br /&gt;
&lt;br /&gt;
===Factory Girl===&lt;br /&gt;
Factory Girl is used for creating Assignment and Team objects to be used for testing. Factory Girl is a replacement for fixtures. Fixtures have to be updated whenever we change a data model whereas adding and removing fields is much easier in Factory Girl. Fixture definitions are global whereas Factories can be local, so isolated cases can be tested. Factories are defined to create objects for testing.&lt;br /&gt;
&lt;br /&gt;
===Running RSpec===&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  $ rspec spec/models/assignment_team_spec.rb&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
===Test Cases===&lt;br /&gt;
1. If the instructor selects &amp;quot;Review by team&amp;quot;, check if the review is done by a team member, not by participant.&lt;br /&gt;
&lt;br /&gt;
2. If one teammate is working on a review, another teammate should not be able to edit it at the same time.&lt;/div&gt;</summary>
		<author><name>Vrajadh</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2016_E1631_Team-based_reviewing&amp;diff=102369</id>
		<title>CSC/ECE 517 Spring 2016 E1631 Team-based reviewing</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2016_E1631_Team-based_reviewing&amp;diff=102369"/>
		<updated>2016-04-28T00:18:26Z</updated>

		<summary type="html">&lt;p&gt;Vrajadh: /* Controllers */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Purpose ==&lt;br /&gt;
&lt;br /&gt;
When a participant of a team reviewed an assignment, his/her review is independent of his teammate’s reviews. To allow teammates to discuss and review together, allowing teams to submit reviews for the team as a whole should be allowed ideally. We intend to do this in our project. &lt;br /&gt;
&lt;br /&gt;
*Currently all reviews in Expertiza are done by individuals. This is true regardless of whether the assignment is done by individuals or teams . &lt;br /&gt;
*There are occasions when it's advantageous to review projects as a team . &lt;br /&gt;
*It helps foster discussion and thereby improves the process of learning.&lt;br /&gt;
&lt;br /&gt;
== Task Description ==&lt;br /&gt;
This project comprises of the following steps :&lt;br /&gt;
&lt;br /&gt;
# Objects of ResponseMap record the information of who reviews whom. The field reviewee_id refers to the team who is being reviewed. The field reviewer_id refers to the individual/team performing the review. # We added a boolean field &amp;quot;reviewer_is_team&amp;quot; to identify if the review is being performed by a team or an individual.&lt;br /&gt;
# The review strategy is assignment specific and hence we have added a field reviewer_is_team to the assignments table as well&lt;br /&gt;
# For an Instructor to specify whether the review is a Team/Individual based review, we have provided a dropdown on the Review Strategy tab of assignment creation. &lt;br /&gt;
# If reviewer_is_team field is true the reviewer_id in the response_map is set to the corresponding team_id of the user&lt;br /&gt;
# Ensure that features such as &amp;quot;view my scores&amp;quot;, or the &amp;quot;alternate view/heat map&amp;quot; continued working.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
==== Design Pattern ====&lt;br /&gt;
'''Model View Controller'''&lt;br /&gt;
&lt;br /&gt;
In an MVC model, a software application is divided into three major components: Model, View and Controller. &lt;br /&gt;
&lt;br /&gt;
'''Model''' - Keeps data, logic and relations between objects and the database. It also handles validations, associations and transactions.&lt;br /&gt;
&lt;br /&gt;
'''View''' - Displays the data received from the controller in the user interface.&lt;br /&gt;
&lt;br /&gt;
'''Controller''' - Accepts the client's input and converts it into action points for the model or view. Other responsibilities include querying models and organizing data in a structure that is displayed by the view.&lt;br /&gt;
&lt;br /&gt;
==== Use Case Diagram ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name:''' Specify review type on Review Strategy tab.&lt;br /&gt;
&lt;br /&gt;
'''Actor:''' Instructor. &lt;br /&gt;
&lt;br /&gt;
'''Description:''' The instructor specifies whether this review is an individual review or a team based review on the Review Strategy tab.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name:''' Perform Review.&lt;br /&gt;
&lt;br /&gt;
'''Actor:''' Individual Student/Team.&lt;br /&gt;
&lt;br /&gt;
'''Description:''' The individual/team will perform a review for the Assignment.&lt;br /&gt;
&lt;br /&gt;
[[File:OODDUseCase.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Database Design ===&lt;br /&gt;
&lt;br /&gt;
ResponseMap in essence, records who reviews whom. Schema of ResponseMap:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Field&lt;br /&gt;
! Data type&lt;br /&gt;
|-&lt;br /&gt;
| id&lt;br /&gt;
| int(11)&lt;br /&gt;
|-&lt;br /&gt;
| reviewed_object_id&lt;br /&gt;
| int(11)&lt;br /&gt;
|-&lt;br /&gt;
| reviewer_id&lt;br /&gt;
| int(11)&lt;br /&gt;
|-&lt;br /&gt;
| reviewee_id&lt;br /&gt;
| int(11)&lt;br /&gt;
|-&lt;br /&gt;
| type&lt;br /&gt;
| varchar(255)&lt;br /&gt;
|-&lt;br /&gt;
| created_at&lt;br /&gt;
| datetime&lt;br /&gt;
|-&lt;br /&gt;
| updated_at&lt;br /&gt;
| datetime&lt;br /&gt;
|-&lt;br /&gt;
| caliberate_to&lt;br /&gt;
| boolean&lt;br /&gt;
|-&lt;br /&gt;
| reviewer_is_team &lt;br /&gt;
| boolean&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The description of the fields of the database for ResponseMap:&lt;br /&gt;
&lt;br /&gt;
1. '''id:''' The unique record identifier.&lt;br /&gt;
&lt;br /&gt;
2. '''reviewed_object_id:''' The id of the object that is reviewed. Assignments or ReviewMaps could be reviewed.&lt;br /&gt;
&lt;br /&gt;
3. '''reviewer_id:''' The reviewer can either be an “AssignmentTeam” or “AssignmentParticipant”, which is indicated by the field reviwer_is_team.&lt;br /&gt;
&lt;br /&gt;
4. '''reviewee_id:''' The id “AssignmentTeam” who is getting the “Response” i.e., the one whose work is being reviewed. &lt;br /&gt;
&lt;br /&gt;
5. '''type :'''  Indicates the type of the ResponseMap.&lt;br /&gt;
&lt;br /&gt;
6. '''created_at:''' The timestamp when the Response was created.&lt;br /&gt;
&lt;br /&gt;
7. '''updated_at:''' The timestamp when the Response was updated.&lt;br /&gt;
&lt;br /&gt;
8. '''calibrate_to:''' A field of boolean data type.&lt;br /&gt;
&lt;br /&gt;
9. '''reviewer_is_team:''' If this field is ‘true’, the reviewer_id refers to the id of the “AssignmentTeam” to which the participant belongs. Else, it refers to the id of the “Participant” itself.&lt;br /&gt;
&lt;br /&gt;
==Implementation==&lt;br /&gt;
&lt;br /&gt;
Below are the key files modified:&lt;br /&gt;
====Controllers====&lt;br /&gt;
&lt;br /&gt;
* '''review_mapping_controller.rb:''' &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1. We have added a check in the assign_reviewer_dynamically method that checks if the assignment is a team_reviewed assignment to fetch the respective row from the participants or the teams_users table&lt;br /&gt;
&lt;br /&gt;
[[File: review_mapping_controller1.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. Also while redirecting to the student_review controller the participant_id or the team_id is passed based on the type of review&lt;br /&gt;
&lt;br /&gt;
[[File: review_mapping_controller2.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''response_controller:''' &lt;br /&gt;
&lt;br /&gt;
1. Below is the get_reviewer_from_response_map method that returns the team or participant id based on the type of review . Also this value is passed forward to the respective controller we redirect to. The get_participant method returns the row from the participants table corresponding to the current user. &lt;br /&gt;
&lt;br /&gt;
[[File: response_controller1.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File: response_controller2.jpg]]&lt;br /&gt;
&lt;br /&gt;
====Models====&lt;br /&gt;
* '''assignment.rb:''' Add a field review_type , that indicates if the assignment is a team based or an individual assignment decided by the instructor.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Views====&lt;br /&gt;
* '''assignments/edit/_review_report.html.erb:''' Add a dropdown for the instructors to select if the reviews are individual or team-based.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Handling Concurrency====&lt;br /&gt;
&lt;br /&gt;
There can exist a concurrency problem with the team review system. If two members from the team start with the review at the same time, the member who started the review first will lose his/her changes as the second members changes will be overwritten.&lt;br /&gt;
&lt;br /&gt;
To solve this problem, we plan to use a boolean field 'lock' for locking mechanism. &lt;br /&gt;
If any member from the team starts with the review, we will set the lock field to true. Once the response is locked, no other member is allowed to edit the response. This lock will be released after the response has been saved.&lt;br /&gt;
&lt;br /&gt;
== Testing Details ==&lt;br /&gt;
&lt;br /&gt;
=== RSpec ===&lt;br /&gt;
RSpec is a testing framework for Rails, and is a Behavioral-Driven Development tool. It is a domain specific language(DSL). All the tests can be executed by rspec spec command, or can also be executed individually using the command &amp;quot;rspec spec/models/assignment_team_spec.rb&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
We intend to write unit tests using RSpec for all the methods which we modified/created.&lt;br /&gt;
&lt;br /&gt;
===Factory Girl===&lt;br /&gt;
Factory Girl is used for creating Assignment and Team objects to be used for testing. Factory Girl is a replacement for fixtures. Fixtures have to be updated whenever we change a data model whereas adding and removing fields is much easier in Factory Girl. Fixture definitions are global whereas Factories can be local, so isolated cases can be tested. Factories are defined to create objects for testing.&lt;br /&gt;
&lt;br /&gt;
===Running RSpec===&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  $ rspec spec/models/assignment_team_spec.rb&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
===Test Cases===&lt;br /&gt;
1. If the instructor selects &amp;quot;Review by team&amp;quot;, check if the review is done by a team member, not by participant.&lt;br /&gt;
&lt;br /&gt;
2. If one teammate is working on a review, another teammate should not be able to edit it at the same time.&lt;/div&gt;</summary>
		<author><name>Vrajadh</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Response_controller2.jpg&amp;diff=102368</id>
		<title>File:Response controller2.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Response_controller2.jpg&amp;diff=102368"/>
		<updated>2016-04-28T00:17:57Z</updated>

		<summary type="html">&lt;p&gt;Vrajadh: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Vrajadh</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Response_controller1.jpg&amp;diff=102367</id>
		<title>File:Response controller1.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Response_controller1.jpg&amp;diff=102367"/>
		<updated>2016-04-28T00:16:43Z</updated>

		<summary type="html">&lt;p&gt;Vrajadh: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Vrajadh</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2016_E1631_Team-based_reviewing&amp;diff=102366</id>
		<title>CSC/ECE 517 Spring 2016 E1631 Team-based reviewing</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2016_E1631_Team-based_reviewing&amp;diff=102366"/>
		<updated>2016-04-28T00:16:22Z</updated>

		<summary type="html">&lt;p&gt;Vrajadh: /* Controllers */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Purpose ==&lt;br /&gt;
&lt;br /&gt;
When a participant of a team reviewed an assignment, his/her review is independent of his teammate’s reviews. To allow teammates to discuss and review together, allowing teams to submit reviews for the team as a whole should be allowed ideally. We intend to do this in our project. &lt;br /&gt;
&lt;br /&gt;
*Currently all reviews in Expertiza are done by individuals. This is true regardless of whether the assignment is done by individuals or teams . &lt;br /&gt;
*There are occasions when it's advantageous to review projects as a team . &lt;br /&gt;
*It helps foster discussion and thereby improves the process of learning.&lt;br /&gt;
&lt;br /&gt;
== Task Description ==&lt;br /&gt;
This project comprises of the following steps :&lt;br /&gt;
&lt;br /&gt;
# Objects of ResponseMap record the information of who reviews whom. The field reviewee_id refers to the team who is being reviewed. The field reviewer_id refers to the individual/team performing the review. # We added a boolean field &amp;quot;reviewer_is_team&amp;quot; to identify if the review is being performed by a team or an individual.&lt;br /&gt;
# The review strategy is assignment specific and hence we have added a field reviewer_is_team to the assignments table as well&lt;br /&gt;
# For an Instructor to specify whether the review is a Team/Individual based review, we have provided a dropdown on the Review Strategy tab of assignment creation. &lt;br /&gt;
# If reviewer_is_team field is true the reviewer_id in the response_map is set to the corresponding team_id of the user&lt;br /&gt;
# Ensure that features such as &amp;quot;view my scores&amp;quot;, or the &amp;quot;alternate view/heat map&amp;quot; continued working.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
==== Design Pattern ====&lt;br /&gt;
'''Model View Controller'''&lt;br /&gt;
&lt;br /&gt;
In an MVC model, a software application is divided into three major components: Model, View and Controller. &lt;br /&gt;
&lt;br /&gt;
'''Model''' - Keeps data, logic and relations between objects and the database. It also handles validations, associations and transactions.&lt;br /&gt;
&lt;br /&gt;
'''View''' - Displays the data received from the controller in the user interface.&lt;br /&gt;
&lt;br /&gt;
'''Controller''' - Accepts the client's input and converts it into action points for the model or view. Other responsibilities include querying models and organizing data in a structure that is displayed by the view.&lt;br /&gt;
&lt;br /&gt;
==== Use Case Diagram ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name:''' Specify review type on Review Strategy tab.&lt;br /&gt;
&lt;br /&gt;
'''Actor:''' Instructor. &lt;br /&gt;
&lt;br /&gt;
'''Description:''' The instructor specifies whether this review is an individual review or a team based review on the Review Strategy tab.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name:''' Perform Review.&lt;br /&gt;
&lt;br /&gt;
'''Actor:''' Individual Student/Team.&lt;br /&gt;
&lt;br /&gt;
'''Description:''' The individual/team will perform a review for the Assignment.&lt;br /&gt;
&lt;br /&gt;
[[File:OODDUseCase.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Database Design ===&lt;br /&gt;
&lt;br /&gt;
ResponseMap in essence, records who reviews whom. Schema of ResponseMap:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Field&lt;br /&gt;
! Data type&lt;br /&gt;
|-&lt;br /&gt;
| id&lt;br /&gt;
| int(11)&lt;br /&gt;
|-&lt;br /&gt;
| reviewed_object_id&lt;br /&gt;
| int(11)&lt;br /&gt;
|-&lt;br /&gt;
| reviewer_id&lt;br /&gt;
| int(11)&lt;br /&gt;
|-&lt;br /&gt;
| reviewee_id&lt;br /&gt;
| int(11)&lt;br /&gt;
|-&lt;br /&gt;
| type&lt;br /&gt;
| varchar(255)&lt;br /&gt;
|-&lt;br /&gt;
| created_at&lt;br /&gt;
| datetime&lt;br /&gt;
|-&lt;br /&gt;
| updated_at&lt;br /&gt;
| datetime&lt;br /&gt;
|-&lt;br /&gt;
| caliberate_to&lt;br /&gt;
| boolean&lt;br /&gt;
|-&lt;br /&gt;
| reviewer_is_team &lt;br /&gt;
| boolean&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The description of the fields of the database for ResponseMap:&lt;br /&gt;
&lt;br /&gt;
1. '''id:''' The unique record identifier.&lt;br /&gt;
&lt;br /&gt;
2. '''reviewed_object_id:''' The id of the object that is reviewed. Assignments or ReviewMaps could be reviewed.&lt;br /&gt;
&lt;br /&gt;
3. '''reviewer_id:''' The reviewer can either be an “AssignmentTeam” or “AssignmentParticipant”, which is indicated by the field reviwer_is_team.&lt;br /&gt;
&lt;br /&gt;
4. '''reviewee_id:''' The id “AssignmentTeam” who is getting the “Response” i.e., the one whose work is being reviewed. &lt;br /&gt;
&lt;br /&gt;
5. '''type :'''  Indicates the type of the ResponseMap.&lt;br /&gt;
&lt;br /&gt;
6. '''created_at:''' The timestamp when the Response was created.&lt;br /&gt;
&lt;br /&gt;
7. '''updated_at:''' The timestamp when the Response was updated.&lt;br /&gt;
&lt;br /&gt;
8. '''calibrate_to:''' A field of boolean data type.&lt;br /&gt;
&lt;br /&gt;
9. '''reviewer_is_team:''' If this field is ‘true’, the reviewer_id refers to the id of the “AssignmentTeam” to which the participant belongs. Else, it refers to the id of the “Participant” itself.&lt;br /&gt;
&lt;br /&gt;
==Implementation==&lt;br /&gt;
&lt;br /&gt;
Below are the key files modified:&lt;br /&gt;
====Controllers====&lt;br /&gt;
&lt;br /&gt;
* '''review_mapping_controller.rb:''' &lt;br /&gt;
&lt;br /&gt;
1. We have added a check in the assign_reviewer_dynamically method that checks if the assignment is a team_reviewed assignment to fetch the respective row from the participants or the teams_users table&lt;br /&gt;
&lt;br /&gt;
[[File: review_mapping_controller1.jpg]]&lt;br /&gt;
&lt;br /&gt;
2. Also while redirecting to the student_review controller the participant_id or the team_id is passed based on the type of review&lt;br /&gt;
&lt;br /&gt;
[[File: review_mapping_controller2.jpg]]&lt;br /&gt;
&lt;br /&gt;
* '''response_controller:''' &lt;br /&gt;
&lt;br /&gt;
1. Below is the get_reviewer_from_response_map method that returns the team or participant id based on the type of review . Also this value is passed forward to the respective controller we redirect to. The get_participant method returns the row from the participants table corresponding to the current user. &lt;br /&gt;
&lt;br /&gt;
[[File: response_controller1.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[File: response_controller2.jpg]]&lt;br /&gt;
&lt;br /&gt;
====Models====&lt;br /&gt;
* '''assignment.rb:''' Add a field review_type , that indicates if the assignment is a team based or an individual assignment decided by the instructor.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Views====&lt;br /&gt;
* '''assignments/edit/_review_report.html.erb:''' Add a dropdown for the instructors to select if the reviews are individual or team-based.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Handling Concurrency====&lt;br /&gt;
&lt;br /&gt;
There can exist a concurrency problem with the team review system. If two members from the team start with the review at the same time, the member who started the review first will lose his/her changes as the second members changes will be overwritten.&lt;br /&gt;
&lt;br /&gt;
To solve this problem, we plan to use a boolean field 'lock' for locking mechanism. &lt;br /&gt;
If any member from the team starts with the review, we will set the lock field to true. Once the response is locked, no other member is allowed to edit the response. This lock will be released after the response has been saved.&lt;br /&gt;
&lt;br /&gt;
== Testing Details ==&lt;br /&gt;
&lt;br /&gt;
=== RSpec ===&lt;br /&gt;
RSpec is a testing framework for Rails, and is a Behavioral-Driven Development tool. It is a domain specific language(DSL). All the tests can be executed by rspec spec command, or can also be executed individually using the command &amp;quot;rspec spec/models/assignment_team_spec.rb&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
We intend to write unit tests using RSpec for all the methods which we modified/created.&lt;br /&gt;
&lt;br /&gt;
===Factory Girl===&lt;br /&gt;
Factory Girl is used for creating Assignment and Team objects to be used for testing. Factory Girl is a replacement for fixtures. Fixtures have to be updated whenever we change a data model whereas adding and removing fields is much easier in Factory Girl. Fixture definitions are global whereas Factories can be local, so isolated cases can be tested. Factories are defined to create objects for testing.&lt;br /&gt;
&lt;br /&gt;
===Running RSpec===&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  $ rspec spec/models/assignment_team_spec.rb&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
===Test Cases===&lt;br /&gt;
1. If the instructor selects &amp;quot;Review by team&amp;quot;, check if the review is done by a team member, not by participant.&lt;br /&gt;
&lt;br /&gt;
2. If one teammate is working on a review, another teammate should not be able to edit it at the same time.&lt;/div&gt;</summary>
		<author><name>Vrajadh</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Review_mapping_controller2.jpg&amp;diff=102365</id>
		<title>File:Review mapping controller2.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Review_mapping_controller2.jpg&amp;diff=102365"/>
		<updated>2016-04-28T00:05:31Z</updated>

		<summary type="html">&lt;p&gt;Vrajadh: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Vrajadh</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Review_mapping_controller1.jpg&amp;diff=102364</id>
		<title>File:Review mapping controller1.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Review_mapping_controller1.jpg&amp;diff=102364"/>
		<updated>2016-04-28T00:03:12Z</updated>

		<summary type="html">&lt;p&gt;Vrajadh: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Vrajadh</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2016_E1631_Team-based_reviewing&amp;diff=102363</id>
		<title>CSC/ECE 517 Spring 2016 E1631 Team-based reviewing</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2016_E1631_Team-based_reviewing&amp;diff=102363"/>
		<updated>2016-04-28T00:01:19Z</updated>

		<summary type="html">&lt;p&gt;Vrajadh: /* Controllers */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Purpose ==&lt;br /&gt;
&lt;br /&gt;
When a participant of a team reviewed an assignment, his/her review is independent of his teammate’s reviews. To allow teammates to discuss and review together, allowing teams to submit reviews for the team as a whole should be allowed ideally. We intend to do this in our project. &lt;br /&gt;
&lt;br /&gt;
*Currently all reviews in Expertiza are done by individuals. This is true regardless of whether the assignment is done by individuals or teams . &lt;br /&gt;
*There are occasions when it's advantageous to review projects as a team . &lt;br /&gt;
*It helps foster discussion and thereby improves the process of learning.&lt;br /&gt;
&lt;br /&gt;
== Task Description ==&lt;br /&gt;
This project comprises of the following steps :&lt;br /&gt;
&lt;br /&gt;
# Objects of ResponseMap record the information of who reviews whom. The field reviewee_id refers to the team who is being reviewed. The field reviewer_id refers to the individual/team performing the review. # We added a boolean field &amp;quot;reviewer_is_team&amp;quot; to identify if the review is being performed by a team or an individual.&lt;br /&gt;
# The review strategy is assignment specific and hence we have added a field reviewer_is_team to the assignments table as well&lt;br /&gt;
# For an Instructor to specify whether the review is a Team/Individual based review, we have provided a dropdown on the Review Strategy tab of assignment creation. &lt;br /&gt;
# If reviewer_is_team field is true the reviewer_id in the response_map is set to the corresponding team_id of the user&lt;br /&gt;
# Ensure that features such as &amp;quot;view my scores&amp;quot;, or the &amp;quot;alternate view/heat map&amp;quot; continued working.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
==== Design Pattern ====&lt;br /&gt;
'''Model View Controller'''&lt;br /&gt;
&lt;br /&gt;
In an MVC model, a software application is divided into three major components: Model, View and Controller. &lt;br /&gt;
&lt;br /&gt;
'''Model''' - Keeps data, logic and relations between objects and the database. It also handles validations, associations and transactions.&lt;br /&gt;
&lt;br /&gt;
'''View''' - Displays the data received from the controller in the user interface.&lt;br /&gt;
&lt;br /&gt;
'''Controller''' - Accepts the client's input and converts it into action points for the model or view. Other responsibilities include querying models and organizing data in a structure that is displayed by the view.&lt;br /&gt;
&lt;br /&gt;
==== Use Case Diagram ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name:''' Specify review type on Review Strategy tab.&lt;br /&gt;
&lt;br /&gt;
'''Actor:''' Instructor. &lt;br /&gt;
&lt;br /&gt;
'''Description:''' The instructor specifies whether this review is an individual review or a team based review on the Review Strategy tab.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name:''' Perform Review.&lt;br /&gt;
&lt;br /&gt;
'''Actor:''' Individual Student/Team.&lt;br /&gt;
&lt;br /&gt;
'''Description:''' The individual/team will perform a review for the Assignment.&lt;br /&gt;
&lt;br /&gt;
[[File:OODDUseCase.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Database Design ===&lt;br /&gt;
&lt;br /&gt;
ResponseMap in essence, records who reviews whom. Schema of ResponseMap:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Field&lt;br /&gt;
! Data type&lt;br /&gt;
|-&lt;br /&gt;
| id&lt;br /&gt;
| int(11)&lt;br /&gt;
|-&lt;br /&gt;
| reviewed_object_id&lt;br /&gt;
| int(11)&lt;br /&gt;
|-&lt;br /&gt;
| reviewer_id&lt;br /&gt;
| int(11)&lt;br /&gt;
|-&lt;br /&gt;
| reviewee_id&lt;br /&gt;
| int(11)&lt;br /&gt;
|-&lt;br /&gt;
| type&lt;br /&gt;
| varchar(255)&lt;br /&gt;
|-&lt;br /&gt;
| created_at&lt;br /&gt;
| datetime&lt;br /&gt;
|-&lt;br /&gt;
| updated_at&lt;br /&gt;
| datetime&lt;br /&gt;
|-&lt;br /&gt;
| caliberate_to&lt;br /&gt;
| boolean&lt;br /&gt;
|-&lt;br /&gt;
| reviewer_is_team &lt;br /&gt;
| boolean&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The description of the fields of the database for ResponseMap:&lt;br /&gt;
&lt;br /&gt;
1. '''id:''' The unique record identifier.&lt;br /&gt;
&lt;br /&gt;
2. '''reviewed_object_id:''' The id of the object that is reviewed. Assignments or ReviewMaps could be reviewed.&lt;br /&gt;
&lt;br /&gt;
3. '''reviewer_id:''' The reviewer can either be an “AssignmentTeam” or “AssignmentParticipant”, which is indicated by the field reviwer_is_team.&lt;br /&gt;
&lt;br /&gt;
4. '''reviewee_id:''' The id “AssignmentTeam” who is getting the “Response” i.e., the one whose work is being reviewed. &lt;br /&gt;
&lt;br /&gt;
5. '''type :'''  Indicates the type of the ResponseMap.&lt;br /&gt;
&lt;br /&gt;
6. '''created_at:''' The timestamp when the Response was created.&lt;br /&gt;
&lt;br /&gt;
7. '''updated_at:''' The timestamp when the Response was updated.&lt;br /&gt;
&lt;br /&gt;
8. '''calibrate_to:''' A field of boolean data type.&lt;br /&gt;
&lt;br /&gt;
9. '''reviewer_is_team:''' If this field is ‘true’, the reviewer_id refers to the id of the “AssignmentTeam” to which the participant belongs. Else, it refers to the id of the “Participant” itself.&lt;br /&gt;
&lt;br /&gt;
==Implementation==&lt;br /&gt;
&lt;br /&gt;
Below are the key files modified:&lt;br /&gt;
====Controllers====&lt;br /&gt;
&lt;br /&gt;
* '''review_mapping_controller.rb:''' &lt;br /&gt;
&lt;br /&gt;
1. We have added a check in the assign_reviewer_dynamically method that checks if the assignment is a team_reviewed assignment to fetch the respective row from the participants or the teams_users table&lt;br /&gt;
&lt;br /&gt;
[[File: review_mapping_controller1.jpg]]&lt;br /&gt;
&lt;br /&gt;
2. Also while redirecting to the student_review controller the participant_id or the team_id is passed based on the type of review&lt;br /&gt;
&lt;br /&gt;
[[File: review_mapping_controller2.jpg]]&lt;br /&gt;
&lt;br /&gt;
* '''response_controller:''' Initial check if it's a team based or an individual review to assign the corresponding id.&lt;br /&gt;
&lt;br /&gt;
====Models====&lt;br /&gt;
* '''assignment.rb:''' Add a field review_type , that indicates if the assignment is a team based or an individual assignment decided by the instructor.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Views====&lt;br /&gt;
* '''assignments/edit/_review_report.html.erb:''' Add a dropdown for the instructors to select if the reviews are individual or team-based.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Handling Concurrency====&lt;br /&gt;
&lt;br /&gt;
There can exist a concurrency problem with the team review system. If two members from the team start with the review at the same time, the member who started the review first will lose his/her changes as the second members changes will be overwritten.&lt;br /&gt;
&lt;br /&gt;
To solve this problem, we plan to use a boolean field 'lock' for locking mechanism. &lt;br /&gt;
If any member from the team starts with the review, we will set the lock field to true. Once the response is locked, no other member is allowed to edit the response. This lock will be released after the response has been saved.&lt;br /&gt;
&lt;br /&gt;
== Testing Details ==&lt;br /&gt;
&lt;br /&gt;
=== RSpec ===&lt;br /&gt;
RSpec is a testing framework for Rails, and is a Behavioral-Driven Development tool. It is a domain specific language(DSL). All the tests can be executed by rspec spec command, or can also be executed individually using the command &amp;quot;rspec spec/models/assignment_team_spec.rb&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
We intend to write unit tests using RSpec for all the methods which we modified/created.&lt;br /&gt;
&lt;br /&gt;
===Factory Girl===&lt;br /&gt;
Factory Girl is used for creating Assignment and Team objects to be used for testing. Factory Girl is a replacement for fixtures. Fixtures have to be updated whenever we change a data model whereas adding and removing fields is much easier in Factory Girl. Fixture definitions are global whereas Factories can be local, so isolated cases can be tested. Factories are defined to create objects for testing.&lt;br /&gt;
&lt;br /&gt;
===Running RSpec===&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  $ rspec spec/models/assignment_team_spec.rb&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
===Test Cases===&lt;br /&gt;
1. If the instructor selects &amp;quot;Review by team&amp;quot;, check if the review is done by a team member, not by participant.&lt;br /&gt;
&lt;br /&gt;
2. If one teammate is working on a review, another teammate should not be able to edit it at the same time.&lt;/div&gt;</summary>
		<author><name>Vrajadh</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2016_E1631_Team-based_reviewing&amp;diff=102362</id>
		<title>CSC/ECE 517 Spring 2016 E1631 Team-based reviewing</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2016_E1631_Team-based_reviewing&amp;diff=102362"/>
		<updated>2016-04-27T23:46:48Z</updated>

		<summary type="html">&lt;p&gt;Vrajadh: /* Controllers */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Purpose ==&lt;br /&gt;
&lt;br /&gt;
When a participant of a team reviewed an assignment, his/her review is independent of his teammate’s reviews. To allow teammates to discuss and review together, allowing teams to submit reviews for the team as a whole should be allowed ideally. We intend to do this in our project. &lt;br /&gt;
&lt;br /&gt;
*Currently all reviews in Expertiza are done by individuals. This is true regardless of whether the assignment is done by individuals or teams . &lt;br /&gt;
*There are occasions when it's advantageous to review projects as a team . &lt;br /&gt;
*It helps foster discussion and thereby improves the process of learning.&lt;br /&gt;
&lt;br /&gt;
== Task Description ==&lt;br /&gt;
This project comprises of the following steps :&lt;br /&gt;
&lt;br /&gt;
# Objects of ResponseMap record the information of who reviews whom. The field reviewee_id refers to the team who is being reviewed. The field reviewer_id refers to the individual/team performing the review. # We added a boolean field &amp;quot;reviewer_is_team&amp;quot; to identify if the review is being performed by a team or an individual.&lt;br /&gt;
# The review strategy is assignment specific and hence we have added a field reviewer_is_team to the assignments table as well&lt;br /&gt;
# For an Instructor to specify whether the review is a Team/Individual based review, we have provided a dropdown on the Review Strategy tab of assignment creation. &lt;br /&gt;
# If reviewer_is_team field is true the reviewer_id in the response_map is set to the corresponding team_id of the user&lt;br /&gt;
# Ensure that features such as &amp;quot;view my scores&amp;quot;, or the &amp;quot;alternate view/heat map&amp;quot; continued working.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
==== Design Pattern ====&lt;br /&gt;
'''Model View Controller'''&lt;br /&gt;
&lt;br /&gt;
In an MVC model, a software application is divided into three major components: Model, View and Controller. &lt;br /&gt;
&lt;br /&gt;
'''Model''' - Keeps data, logic and relations between objects and the database. It also handles validations, associations and transactions.&lt;br /&gt;
&lt;br /&gt;
'''View''' - Displays the data received from the controller in the user interface.&lt;br /&gt;
&lt;br /&gt;
'''Controller''' - Accepts the client's input and converts it into action points for the model or view. Other responsibilities include querying models and organizing data in a structure that is displayed by the view.&lt;br /&gt;
&lt;br /&gt;
==== Use Case Diagram ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name:''' Specify review type on Review Strategy tab.&lt;br /&gt;
&lt;br /&gt;
'''Actor:''' Instructor. &lt;br /&gt;
&lt;br /&gt;
'''Description:''' The instructor specifies whether this review is an individual review or a team based review on the Review Strategy tab.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name:''' Perform Review.&lt;br /&gt;
&lt;br /&gt;
'''Actor:''' Individual Student/Team.&lt;br /&gt;
&lt;br /&gt;
'''Description:''' The individual/team will perform a review for the Assignment.&lt;br /&gt;
&lt;br /&gt;
[[File:OODDUseCase.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Database Design ===&lt;br /&gt;
&lt;br /&gt;
ResponseMap in essence, records who reviews whom. Schema of ResponseMap:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Field&lt;br /&gt;
! Data type&lt;br /&gt;
|-&lt;br /&gt;
| id&lt;br /&gt;
| int(11)&lt;br /&gt;
|-&lt;br /&gt;
| reviewed_object_id&lt;br /&gt;
| int(11)&lt;br /&gt;
|-&lt;br /&gt;
| reviewer_id&lt;br /&gt;
| int(11)&lt;br /&gt;
|-&lt;br /&gt;
| reviewee_id&lt;br /&gt;
| int(11)&lt;br /&gt;
|-&lt;br /&gt;
| type&lt;br /&gt;
| varchar(255)&lt;br /&gt;
|-&lt;br /&gt;
| created_at&lt;br /&gt;
| datetime&lt;br /&gt;
|-&lt;br /&gt;
| updated_at&lt;br /&gt;
| datetime&lt;br /&gt;
|-&lt;br /&gt;
| caliberate_to&lt;br /&gt;
| boolean&lt;br /&gt;
|-&lt;br /&gt;
| reviewer_is_team &lt;br /&gt;
| boolean&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The description of the fields of the database for ResponseMap:&lt;br /&gt;
&lt;br /&gt;
1. '''id:''' The unique record identifier.&lt;br /&gt;
&lt;br /&gt;
2. '''reviewed_object_id:''' The id of the object that is reviewed. Assignments or ReviewMaps could be reviewed.&lt;br /&gt;
&lt;br /&gt;
3. '''reviewer_id:''' The reviewer can either be an “AssignmentTeam” or “AssignmentParticipant”, which is indicated by the field reviwer_is_team.&lt;br /&gt;
&lt;br /&gt;
4. '''reviewee_id:''' The id “AssignmentTeam” who is getting the “Response” i.e., the one whose work is being reviewed. &lt;br /&gt;
&lt;br /&gt;
5. '''type :'''  Indicates the type of the ResponseMap.&lt;br /&gt;
&lt;br /&gt;
6. '''created_at:''' The timestamp when the Response was created.&lt;br /&gt;
&lt;br /&gt;
7. '''updated_at:''' The timestamp when the Response was updated.&lt;br /&gt;
&lt;br /&gt;
8. '''calibrate_to:''' A field of boolean data type.&lt;br /&gt;
&lt;br /&gt;
9. '''reviewer_is_team:''' If this field is ‘true’, the reviewer_id refers to the id of the “AssignmentTeam” to which the participant belongs. Else, it refers to the id of the “Participant” itself.&lt;br /&gt;
&lt;br /&gt;
==Implementation==&lt;br /&gt;
&lt;br /&gt;
Below are the key files modified:&lt;br /&gt;
====Controllers====&lt;br /&gt;
&lt;br /&gt;
* '''review_mapping_controller.rb:''' &lt;br /&gt;
&lt;br /&gt;
1. We have added a check in the assign_reviewer_dynamically method that checks if the assignment is a team_reviewed assignment to fetch the respective row from the participants or the teams_users table&lt;br /&gt;
&lt;br /&gt;
[[File:review_mapping_controller1.jpg]]&lt;br /&gt;
&lt;br /&gt;
2. Also while redirecting to the student_review controller the participant_id or the team_id is passed based on the type of review&lt;br /&gt;
&lt;br /&gt;
[[File: review_mapping_controller2.jpg]]&lt;br /&gt;
&lt;br /&gt;
* '''response_controller:''' Initial check if it's a team based or an individual review to assign the corresponding id.&lt;br /&gt;
&lt;br /&gt;
====Models====&lt;br /&gt;
* '''assignment.rb:''' Add a field review_type , that indicates if the assignment is a team based or an individual assignment decided by the instructor.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Views====&lt;br /&gt;
* '''assignments/edit/_review_report.html.erb:''' Add a dropdown for the instructors to select if the reviews are individual or team-based.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Handling Concurrency====&lt;br /&gt;
&lt;br /&gt;
There can exist a concurrency problem with the team review system. If two members from the team start with the review at the same time, the member who started the review first will lose his/her changes as the second members changes will be overwritten.&lt;br /&gt;
&lt;br /&gt;
To solve this problem, we plan to use a boolean field 'lock' for locking mechanism. &lt;br /&gt;
If any member from the team starts with the review, we will set the lock field to true. Once the response is locked, no other member is allowed to edit the response. This lock will be released after the response has been saved.&lt;br /&gt;
&lt;br /&gt;
== Testing Details ==&lt;br /&gt;
&lt;br /&gt;
=== RSpec ===&lt;br /&gt;
RSpec is a testing framework for Rails, and is a Behavioral-Driven Development tool. It is a domain specific language(DSL). All the tests can be executed by rspec spec command, or can also be executed individually using the command &amp;quot;rspec spec/models/assignment_team_spec.rb&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
We intend to write unit tests using RSpec for all the methods which we modified/created.&lt;br /&gt;
&lt;br /&gt;
===Factory Girl===&lt;br /&gt;
Factory Girl is used for creating Assignment and Team objects to be used for testing. Factory Girl is a replacement for fixtures. Fixtures have to be updated whenever we change a data model whereas adding and removing fields is much easier in Factory Girl. Fixture definitions are global whereas Factories can be local, so isolated cases can be tested. Factories are defined to create objects for testing.&lt;br /&gt;
&lt;br /&gt;
===Running RSpec===&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  $ rspec spec/models/assignment_team_spec.rb&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
===Test Cases===&lt;br /&gt;
1. If the instructor selects &amp;quot;Review by team&amp;quot;, check if the review is done by a team member, not by participant.&lt;br /&gt;
&lt;br /&gt;
2. If one teammate is working on a review, another teammate should not be able to edit it at the same time.&lt;/div&gt;</summary>
		<author><name>Vrajadh</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:ReviewMappingcontroller2.png&amp;diff=102361</id>
		<title>File:ReviewMappingcontroller2.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:ReviewMappingcontroller2.png&amp;diff=102361"/>
		<updated>2016-04-27T23:42:03Z</updated>

		<summary type="html">&lt;p&gt;Vrajadh: uploaded a new version of &amp;amp;quot;File:ReviewMappingcontroller2.png&amp;amp;quot;: Reverted to version as of 23:40, 27 April 2016&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Vrajadh</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:ReviewMappingcontroller2.png&amp;diff=102360</id>
		<title>File:ReviewMappingcontroller2.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:ReviewMappingcontroller2.png&amp;diff=102360"/>
		<updated>2016-04-27T23:41:48Z</updated>

		<summary type="html">&lt;p&gt;Vrajadh: uploaded a new version of &amp;amp;quot;File:ReviewMappingcontroller2.png&amp;amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Vrajadh</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:ReviewMappingcontroller2.png&amp;diff=102359</id>
		<title>File:ReviewMappingcontroller2.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:ReviewMappingcontroller2.png&amp;diff=102359"/>
		<updated>2016-04-27T23:40:58Z</updated>

		<summary type="html">&lt;p&gt;Vrajadh: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Vrajadh</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2016_E1631_Team-based_reviewing&amp;diff=102358</id>
		<title>CSC/ECE 517 Spring 2016 E1631 Team-based reviewing</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2016_E1631_Team-based_reviewing&amp;diff=102358"/>
		<updated>2016-04-27T23:40:31Z</updated>

		<summary type="html">&lt;p&gt;Vrajadh: /* Controllers */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Purpose ==&lt;br /&gt;
&lt;br /&gt;
When a participant of a team reviewed an assignment, his/her review is independent of his teammate’s reviews. To allow teammates to discuss and review together, allowing teams to submit reviews for the team as a whole should be allowed ideally. We intend to do this in our project. &lt;br /&gt;
&lt;br /&gt;
*Currently all reviews in Expertiza are done by individuals. This is true regardless of whether the assignment is done by individuals or teams . &lt;br /&gt;
*There are occasions when it's advantageous to review projects as a team . &lt;br /&gt;
*It helps foster discussion and thereby improves the process of learning.&lt;br /&gt;
&lt;br /&gt;
== Task Description ==&lt;br /&gt;
This project comprises of the following steps :&lt;br /&gt;
&lt;br /&gt;
# Objects of ResponseMap record the information of who reviews whom. The field reviewee_id refers to the team who is being reviewed. The field reviewer_id refers to the individual/team performing the review. # We added a boolean field &amp;quot;reviewer_is_team&amp;quot; to identify if the review is being performed by a team or an individual.&lt;br /&gt;
# The review strategy is assignment specific and hence we have added a field reviewer_is_team to the assignments table as well&lt;br /&gt;
# For an Instructor to specify whether the review is a Team/Individual based review, we have provided a dropdown on the Review Strategy tab of assignment creation. &lt;br /&gt;
# If reviewer_is_team field is true the reviewer_id in the response_map is set to the corresponding team_id of the user&lt;br /&gt;
# Ensure that features such as &amp;quot;view my scores&amp;quot;, or the &amp;quot;alternate view/heat map&amp;quot; continued working.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
==== Design Pattern ====&lt;br /&gt;
'''Model View Controller'''&lt;br /&gt;
&lt;br /&gt;
In an MVC model, a software application is divided into three major components: Model, View and Controller. &lt;br /&gt;
&lt;br /&gt;
'''Model''' - Keeps data, logic and relations between objects and the database. It also handles validations, associations and transactions.&lt;br /&gt;
&lt;br /&gt;
'''View''' - Displays the data received from the controller in the user interface.&lt;br /&gt;
&lt;br /&gt;
'''Controller''' - Accepts the client's input and converts it into action points for the model or view. Other responsibilities include querying models and organizing data in a structure that is displayed by the view.&lt;br /&gt;
&lt;br /&gt;
==== Use Case Diagram ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name:''' Specify review type on Review Strategy tab.&lt;br /&gt;
&lt;br /&gt;
'''Actor:''' Instructor. &lt;br /&gt;
&lt;br /&gt;
'''Description:''' The instructor specifies whether this review is an individual review or a team based review on the Review Strategy tab.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name:''' Perform Review.&lt;br /&gt;
&lt;br /&gt;
'''Actor:''' Individual Student/Team.&lt;br /&gt;
&lt;br /&gt;
'''Description:''' The individual/team will perform a review for the Assignment.&lt;br /&gt;
&lt;br /&gt;
[[File:OODDUseCase.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Database Design ===&lt;br /&gt;
&lt;br /&gt;
ResponseMap in essence, records who reviews whom. Schema of ResponseMap:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Field&lt;br /&gt;
! Data type&lt;br /&gt;
|-&lt;br /&gt;
| id&lt;br /&gt;
| int(11)&lt;br /&gt;
|-&lt;br /&gt;
| reviewed_object_id&lt;br /&gt;
| int(11)&lt;br /&gt;
|-&lt;br /&gt;
| reviewer_id&lt;br /&gt;
| int(11)&lt;br /&gt;
|-&lt;br /&gt;
| reviewee_id&lt;br /&gt;
| int(11)&lt;br /&gt;
|-&lt;br /&gt;
| type&lt;br /&gt;
| varchar(255)&lt;br /&gt;
|-&lt;br /&gt;
| created_at&lt;br /&gt;
| datetime&lt;br /&gt;
|-&lt;br /&gt;
| updated_at&lt;br /&gt;
| datetime&lt;br /&gt;
|-&lt;br /&gt;
| caliberate_to&lt;br /&gt;
| boolean&lt;br /&gt;
|-&lt;br /&gt;
| reviewer_is_team &lt;br /&gt;
| boolean&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The description of the fields of the database for ResponseMap:&lt;br /&gt;
&lt;br /&gt;
1. '''id:''' The unique record identifier.&lt;br /&gt;
&lt;br /&gt;
2. '''reviewed_object_id:''' The id of the object that is reviewed. Assignments or ReviewMaps could be reviewed.&lt;br /&gt;
&lt;br /&gt;
3. '''reviewer_id:''' The reviewer can either be an “AssignmentTeam” or “AssignmentParticipant”, which is indicated by the field reviwer_is_team.&lt;br /&gt;
&lt;br /&gt;
4. '''reviewee_id:''' The id “AssignmentTeam” who is getting the “Response” i.e., the one whose work is being reviewed. &lt;br /&gt;
&lt;br /&gt;
5. '''type :'''  Indicates the type of the ResponseMap.&lt;br /&gt;
&lt;br /&gt;
6. '''created_at:''' The timestamp when the Response was created.&lt;br /&gt;
&lt;br /&gt;
7. '''updated_at:''' The timestamp when the Response was updated.&lt;br /&gt;
&lt;br /&gt;
8. '''calibrate_to:''' A field of boolean data type.&lt;br /&gt;
&lt;br /&gt;
9. '''reviewer_is_team:''' If this field is ‘true’, the reviewer_id refers to the id of the “AssignmentTeam” to which the participant belongs. Else, it refers to the id of the “Participant” itself.&lt;br /&gt;
&lt;br /&gt;
==Implementation==&lt;br /&gt;
&lt;br /&gt;
Below are the key files modified:&lt;br /&gt;
====Controllers====&lt;br /&gt;
&lt;br /&gt;
* '''review_mapping_controller.rb:''' &lt;br /&gt;
&lt;br /&gt;
1. We have added a check in the assign_reviewer_dynamically method that checks if the assignment is a team_reviewed assignment to fetch the respective row from the participants or the teams_users table&lt;br /&gt;
&lt;br /&gt;
[[File:reviewmappingcontroller1.png]]&lt;br /&gt;
&lt;br /&gt;
2. Also while redirecting to the student_review controller the participant_id or the team_id is passed based on the type of review&lt;br /&gt;
&lt;br /&gt;
[[File: reviewmappingcontroller2.png]]&lt;br /&gt;
&lt;br /&gt;
* '''response_controller:''' Initial check if it's a team based or an individual review to assign the corresponding id.&lt;br /&gt;
&lt;br /&gt;
====Models====&lt;br /&gt;
* '''assignment.rb:''' Add a field review_type , that indicates if the assignment is a team based or an individual assignment decided by the instructor.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Views====&lt;br /&gt;
* '''assignments/edit/_review_report.html.erb:''' Add a dropdown for the instructors to select if the reviews are individual or team-based.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Handling Concurrency====&lt;br /&gt;
&lt;br /&gt;
There can exist a concurrency problem with the team review system. If two members from the team start with the review at the same time, the member who started the review first will lose his/her changes as the second members changes will be overwritten.&lt;br /&gt;
&lt;br /&gt;
To solve this problem, we plan to use a boolean field 'lock' for locking mechanism. &lt;br /&gt;
If any member from the team starts with the review, we will set the lock field to true. Once the response is locked, no other member is allowed to edit the response. This lock will be released after the response has been saved.&lt;br /&gt;
&lt;br /&gt;
== Testing Details ==&lt;br /&gt;
&lt;br /&gt;
=== RSpec ===&lt;br /&gt;
RSpec is a testing framework for Rails, and is a Behavioral-Driven Development tool. It is a domain specific language(DSL). All the tests can be executed by rspec spec command, or can also be executed individually using the command &amp;quot;rspec spec/models/assignment_team_spec.rb&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
We intend to write unit tests using RSpec for all the methods which we modified/created.&lt;br /&gt;
&lt;br /&gt;
===Factory Girl===&lt;br /&gt;
Factory Girl is used for creating Assignment and Team objects to be used for testing. Factory Girl is a replacement for fixtures. Fixtures have to be updated whenever we change a data model whereas adding and removing fields is much easier in Factory Girl. Fixture definitions are global whereas Factories can be local, so isolated cases can be tested. Factories are defined to create objects for testing.&lt;br /&gt;
&lt;br /&gt;
===Running RSpec===&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  $ rspec spec/models/assignment_team_spec.rb&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
===Test Cases===&lt;br /&gt;
1. If the instructor selects &amp;quot;Review by team&amp;quot;, check if the review is done by a team member, not by participant.&lt;br /&gt;
&lt;br /&gt;
2. If one teammate is working on a review, another teammate should not be able to edit it at the same time.&lt;/div&gt;</summary>
		<author><name>Vrajadh</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Review_mapping_controller1.png&amp;diff=102357</id>
		<title>File:Review mapping controller1.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Review_mapping_controller1.png&amp;diff=102357"/>
		<updated>2016-04-27T23:36:57Z</updated>

		<summary type="html">&lt;p&gt;Vrajadh: uploaded a new version of &amp;amp;quot;File:Review mapping controller1.png&amp;amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Vrajadh</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2016_E1631_Team-based_reviewing&amp;diff=102356</id>
		<title>CSC/ECE 517 Spring 2016 E1631 Team-based reviewing</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2016_E1631_Team-based_reviewing&amp;diff=102356"/>
		<updated>2016-04-27T23:36:06Z</updated>

		<summary type="html">&lt;p&gt;Vrajadh: /* Controllers */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Purpose ==&lt;br /&gt;
&lt;br /&gt;
When a participant of a team reviewed an assignment, his/her review is independent of his teammate’s reviews. To allow teammates to discuss and review together, allowing teams to submit reviews for the team as a whole should be allowed ideally. We intend to do this in our project. &lt;br /&gt;
&lt;br /&gt;
*Currently all reviews in Expertiza are done by individuals. This is true regardless of whether the assignment is done by individuals or teams . &lt;br /&gt;
*There are occasions when it's advantageous to review projects as a team . &lt;br /&gt;
*It helps foster discussion and thereby improves the process of learning.&lt;br /&gt;
&lt;br /&gt;
== Task Description ==&lt;br /&gt;
This project comprises of the following steps :&lt;br /&gt;
&lt;br /&gt;
# Objects of ResponseMap record the information of who reviews whom. The field reviewee_id refers to the team who is being reviewed. The field reviewer_id refers to the individual/team performing the review. # We added a boolean field &amp;quot;reviewer_is_team&amp;quot; to identify if the review is being performed by a team or an individual.&lt;br /&gt;
# The review strategy is assignment specific and hence we have added a field reviewer_is_team to the assignments table as well&lt;br /&gt;
# For an Instructor to specify whether the review is a Team/Individual based review, we have provided a dropdown on the Review Strategy tab of assignment creation. &lt;br /&gt;
# If reviewer_is_team field is true the reviewer_id in the response_map is set to the corresponding team_id of the user&lt;br /&gt;
# Ensure that features such as &amp;quot;view my scores&amp;quot;, or the &amp;quot;alternate view/heat map&amp;quot; continued working.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
==== Design Pattern ====&lt;br /&gt;
'''Model View Controller'''&lt;br /&gt;
&lt;br /&gt;
In an MVC model, a software application is divided into three major components: Model, View and Controller. &lt;br /&gt;
&lt;br /&gt;
'''Model''' - Keeps data, logic and relations between objects and the database. It also handles validations, associations and transactions.&lt;br /&gt;
&lt;br /&gt;
'''View''' - Displays the data received from the controller in the user interface.&lt;br /&gt;
&lt;br /&gt;
'''Controller''' - Accepts the client's input and converts it into action points for the model or view. Other responsibilities include querying models and organizing data in a structure that is displayed by the view.&lt;br /&gt;
&lt;br /&gt;
==== Use Case Diagram ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name:''' Specify review type on Review Strategy tab.&lt;br /&gt;
&lt;br /&gt;
'''Actor:''' Instructor. &lt;br /&gt;
&lt;br /&gt;
'''Description:''' The instructor specifies whether this review is an individual review or a team based review on the Review Strategy tab.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name:''' Perform Review.&lt;br /&gt;
&lt;br /&gt;
'''Actor:''' Individual Student/Team.&lt;br /&gt;
&lt;br /&gt;
'''Description:''' The individual/team will perform a review for the Assignment.&lt;br /&gt;
&lt;br /&gt;
[[File:OODDUseCase.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Database Design ===&lt;br /&gt;
&lt;br /&gt;
ResponseMap in essence, records who reviews whom. Schema of ResponseMap:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Field&lt;br /&gt;
! Data type&lt;br /&gt;
|-&lt;br /&gt;
| id&lt;br /&gt;
| int(11)&lt;br /&gt;
|-&lt;br /&gt;
| reviewed_object_id&lt;br /&gt;
| int(11)&lt;br /&gt;
|-&lt;br /&gt;
| reviewer_id&lt;br /&gt;
| int(11)&lt;br /&gt;
|-&lt;br /&gt;
| reviewee_id&lt;br /&gt;
| int(11)&lt;br /&gt;
|-&lt;br /&gt;
| type&lt;br /&gt;
| varchar(255)&lt;br /&gt;
|-&lt;br /&gt;
| created_at&lt;br /&gt;
| datetime&lt;br /&gt;
|-&lt;br /&gt;
| updated_at&lt;br /&gt;
| datetime&lt;br /&gt;
|-&lt;br /&gt;
| caliberate_to&lt;br /&gt;
| boolean&lt;br /&gt;
|-&lt;br /&gt;
| reviewer_is_team &lt;br /&gt;
| boolean&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The description of the fields of the database for ResponseMap:&lt;br /&gt;
&lt;br /&gt;
1. '''id:''' The unique record identifier.&lt;br /&gt;
&lt;br /&gt;
2. '''reviewed_object_id:''' The id of the object that is reviewed. Assignments or ReviewMaps could be reviewed.&lt;br /&gt;
&lt;br /&gt;
3. '''reviewer_id:''' The reviewer can either be an “AssignmentTeam” or “AssignmentParticipant”, which is indicated by the field reviwer_is_team.&lt;br /&gt;
&lt;br /&gt;
4. '''reviewee_id:''' The id “AssignmentTeam” who is getting the “Response” i.e., the one whose work is being reviewed. &lt;br /&gt;
&lt;br /&gt;
5. '''type :'''  Indicates the type of the ResponseMap.&lt;br /&gt;
&lt;br /&gt;
6. '''created_at:''' The timestamp when the Response was created.&lt;br /&gt;
&lt;br /&gt;
7. '''updated_at:''' The timestamp when the Response was updated.&lt;br /&gt;
&lt;br /&gt;
8. '''calibrate_to:''' A field of boolean data type.&lt;br /&gt;
&lt;br /&gt;
9. '''reviewer_is_team:''' If this field is ‘true’, the reviewer_id refers to the id of the “AssignmentTeam” to which the participant belongs. Else, it refers to the id of the “Participant” itself.&lt;br /&gt;
&lt;br /&gt;
==Implementation==&lt;br /&gt;
&lt;br /&gt;
Below are the key files modified:&lt;br /&gt;
====Controllers====&lt;br /&gt;
&lt;br /&gt;
* '''review_mapping_controller.rb:''' &lt;br /&gt;
&lt;br /&gt;
1. We have added a check in the assign_reviewer_dynamically method that checks if the assignment is a team_reviewed assignment to fetch the respective row from the participants or the teams_users table&lt;br /&gt;
&lt;br /&gt;
[[File:reviewmappingcontroller1.png]]&lt;br /&gt;
&lt;br /&gt;
2. Also while redirecting to the student_review controller the participant_id or the team_id is passed based on the type of review&lt;br /&gt;
&lt;br /&gt;
[[File:reviewmappingcontroller2.png]]&lt;br /&gt;
&lt;br /&gt;
* '''response_controller:''' Initial check if it's a team based or an individual review to assign the corresponding id.&lt;br /&gt;
&lt;br /&gt;
====Models====&lt;br /&gt;
* '''assignment.rb:''' Add a field review_type , that indicates if the assignment is a team based or an individual assignment decided by the instructor.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Views====&lt;br /&gt;
* '''assignments/edit/_review_report.html.erb:''' Add a dropdown for the instructors to select if the reviews are individual or team-based.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Handling Concurrency====&lt;br /&gt;
&lt;br /&gt;
There can exist a concurrency problem with the team review system. If two members from the team start with the review at the same time, the member who started the review first will lose his/her changes as the second members changes will be overwritten.&lt;br /&gt;
&lt;br /&gt;
To solve this problem, we plan to use a boolean field 'lock' for locking mechanism. &lt;br /&gt;
If any member from the team starts with the review, we will set the lock field to true. Once the response is locked, no other member is allowed to edit the response. This lock will be released after the response has been saved.&lt;br /&gt;
&lt;br /&gt;
== Testing Details ==&lt;br /&gt;
&lt;br /&gt;
=== RSpec ===&lt;br /&gt;
RSpec is a testing framework for Rails, and is a Behavioral-Driven Development tool. It is a domain specific language(DSL). All the tests can be executed by rspec spec command, or can also be executed individually using the command &amp;quot;rspec spec/models/assignment_team_spec.rb&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
We intend to write unit tests using RSpec for all the methods which we modified/created.&lt;br /&gt;
&lt;br /&gt;
===Factory Girl===&lt;br /&gt;
Factory Girl is used for creating Assignment and Team objects to be used for testing. Factory Girl is a replacement for fixtures. Fixtures have to be updated whenever we change a data model whereas adding and removing fields is much easier in Factory Girl. Fixture definitions are global whereas Factories can be local, so isolated cases can be tested. Factories are defined to create objects for testing.&lt;br /&gt;
&lt;br /&gt;
===Running RSpec===&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  $ rspec spec/models/assignment_team_spec.rb&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
===Test Cases===&lt;br /&gt;
1. If the instructor selects &amp;quot;Review by team&amp;quot;, check if the review is done by a team member, not by participant.&lt;br /&gt;
&lt;br /&gt;
2. If one teammate is working on a review, another teammate should not be able to edit it at the same time.&lt;/div&gt;</summary>
		<author><name>Vrajadh</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Review_mapping_controller1.png&amp;diff=102355</id>
		<title>File:Review mapping controller1.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Review_mapping_controller1.png&amp;diff=102355"/>
		<updated>2016-04-27T23:32:55Z</updated>

		<summary type="html">&lt;p&gt;Vrajadh: uploaded a new version of &amp;amp;quot;File:Review mapping controller1.png&amp;amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Vrajadh</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Review_mapping_controller1.png&amp;diff=102354</id>
		<title>File:Review mapping controller1.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Review_mapping_controller1.png&amp;diff=102354"/>
		<updated>2016-04-27T23:31:43Z</updated>

		<summary type="html">&lt;p&gt;Vrajadh: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Vrajadh</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2016_E1631_Team-based_reviewing&amp;diff=102353</id>
		<title>CSC/ECE 517 Spring 2016 E1631 Team-based reviewing</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2016_E1631_Team-based_reviewing&amp;diff=102353"/>
		<updated>2016-04-27T23:30:29Z</updated>

		<summary type="html">&lt;p&gt;Vrajadh: /* Controllers */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Purpose ==&lt;br /&gt;
&lt;br /&gt;
When a participant of a team reviewed an assignment, his/her review is independent of his teammate’s reviews. To allow teammates to discuss and review together, allowing teams to submit reviews for the team as a whole should be allowed ideally. We intend to do this in our project. &lt;br /&gt;
&lt;br /&gt;
*Currently all reviews in Expertiza are done by individuals. This is true regardless of whether the assignment is done by individuals or teams . &lt;br /&gt;
*There are occasions when it's advantageous to review projects as a team . &lt;br /&gt;
*It helps foster discussion and thereby improves the process of learning.&lt;br /&gt;
&lt;br /&gt;
== Task Description ==&lt;br /&gt;
This project comprises of the following steps :&lt;br /&gt;
&lt;br /&gt;
# Objects of ResponseMap record the information of who reviews whom. The field reviewee_id refers to the team who is being reviewed. The field reviewer_id refers to the individual/team performing the review. # We added a boolean field &amp;quot;reviewer_is_team&amp;quot; to identify if the review is being performed by a team or an individual.&lt;br /&gt;
# The review strategy is assignment specific and hence we have added a field reviewer_is_team to the assignments table as well&lt;br /&gt;
# For an Instructor to specify whether the review is a Team/Individual based review, we have provided a dropdown on the Review Strategy tab of assignment creation. &lt;br /&gt;
# If reviewer_is_team field is true the reviewer_id in the response_map is set to the corresponding team_id of the user&lt;br /&gt;
# Ensure that features such as &amp;quot;view my scores&amp;quot;, or the &amp;quot;alternate view/heat map&amp;quot; continued working.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
==== Design Pattern ====&lt;br /&gt;
'''Model View Controller'''&lt;br /&gt;
&lt;br /&gt;
In an MVC model, a software application is divided into three major components: Model, View and Controller. &lt;br /&gt;
&lt;br /&gt;
'''Model''' - Keeps data, logic and relations between objects and the database. It also handles validations, associations and transactions.&lt;br /&gt;
&lt;br /&gt;
'''View''' - Displays the data received from the controller in the user interface.&lt;br /&gt;
&lt;br /&gt;
'''Controller''' - Accepts the client's input and converts it into action points for the model or view. Other responsibilities include querying models and organizing data in a structure that is displayed by the view.&lt;br /&gt;
&lt;br /&gt;
==== Use Case Diagram ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name:''' Specify review type on Review Strategy tab.&lt;br /&gt;
&lt;br /&gt;
'''Actor:''' Instructor. &lt;br /&gt;
&lt;br /&gt;
'''Description:''' The instructor specifies whether this review is an individual review or a team based review on the Review Strategy tab.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name:''' Perform Review.&lt;br /&gt;
&lt;br /&gt;
'''Actor:''' Individual Student/Team.&lt;br /&gt;
&lt;br /&gt;
'''Description:''' The individual/team will perform a review for the Assignment.&lt;br /&gt;
&lt;br /&gt;
[[File:OODDUseCase.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Database Design ===&lt;br /&gt;
&lt;br /&gt;
ResponseMap in essence, records who reviews whom. Schema of ResponseMap:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Field&lt;br /&gt;
! Data type&lt;br /&gt;
|-&lt;br /&gt;
| id&lt;br /&gt;
| int(11)&lt;br /&gt;
|-&lt;br /&gt;
| reviewed_object_id&lt;br /&gt;
| int(11)&lt;br /&gt;
|-&lt;br /&gt;
| reviewer_id&lt;br /&gt;
| int(11)&lt;br /&gt;
|-&lt;br /&gt;
| reviewee_id&lt;br /&gt;
| int(11)&lt;br /&gt;
|-&lt;br /&gt;
| type&lt;br /&gt;
| varchar(255)&lt;br /&gt;
|-&lt;br /&gt;
| created_at&lt;br /&gt;
| datetime&lt;br /&gt;
|-&lt;br /&gt;
| updated_at&lt;br /&gt;
| datetime&lt;br /&gt;
|-&lt;br /&gt;
| caliberate_to&lt;br /&gt;
| boolean&lt;br /&gt;
|-&lt;br /&gt;
| reviewer_is_team &lt;br /&gt;
| boolean&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The description of the fields of the database for ResponseMap:&lt;br /&gt;
&lt;br /&gt;
1. '''id:''' The unique record identifier.&lt;br /&gt;
&lt;br /&gt;
2. '''reviewed_object_id:''' The id of the object that is reviewed. Assignments or ReviewMaps could be reviewed.&lt;br /&gt;
&lt;br /&gt;
3. '''reviewer_id:''' The reviewer can either be an “AssignmentTeam” or “AssignmentParticipant”, which is indicated by the field reviwer_is_team.&lt;br /&gt;
&lt;br /&gt;
4. '''reviewee_id:''' The id “AssignmentTeam” who is getting the “Response” i.e., the one whose work is being reviewed. &lt;br /&gt;
&lt;br /&gt;
5. '''type :'''  Indicates the type of the ResponseMap.&lt;br /&gt;
&lt;br /&gt;
6. '''created_at:''' The timestamp when the Response was created.&lt;br /&gt;
&lt;br /&gt;
7. '''updated_at:''' The timestamp when the Response was updated.&lt;br /&gt;
&lt;br /&gt;
8. '''calibrate_to:''' A field of boolean data type.&lt;br /&gt;
&lt;br /&gt;
9. '''reviewer_is_team:''' If this field is ‘true’, the reviewer_id refers to the id of the “AssignmentTeam” to which the participant belongs. Else, it refers to the id of the “Participant” itself.&lt;br /&gt;
&lt;br /&gt;
==Implementation==&lt;br /&gt;
&lt;br /&gt;
Below are the key files modified:&lt;br /&gt;
====Controllers====&lt;br /&gt;
&lt;br /&gt;
* '''review_mapping_controller.rb:''' &lt;br /&gt;
&lt;br /&gt;
1. We have added a check in the assign_reviewer_dynamically method that checks if the assignment is a team_reviewed assignment to fetch the respective row from the participants or the teams_users table&lt;br /&gt;
&lt;br /&gt;
[[File:reviewmappingcontroller1.jpg]]&lt;br /&gt;
&lt;br /&gt;
2. Also while redirecting to the student_review controller the participant_id or the team_id is passed based on the type of review&lt;br /&gt;
&lt;br /&gt;
[[File:reviewmappingcontroller2.jpg]]&lt;br /&gt;
&lt;br /&gt;
* '''response_controller:''' Initial check if it's a team based or an individual review to assign the corresponding id.&lt;br /&gt;
&lt;br /&gt;
====Models====&lt;br /&gt;
* '''assignment.rb:''' Add a field review_type , that indicates if the assignment is a team based or an individual assignment decided by the instructor.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Views====&lt;br /&gt;
* '''assignments/edit/_review_report.html.erb:''' Add a dropdown for the instructors to select if the reviews are individual or team-based.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Handling Concurrency====&lt;br /&gt;
&lt;br /&gt;
There can exist a concurrency problem with the team review system. If two members from the team start with the review at the same time, the member who started the review first will lose his/her changes as the second members changes will be overwritten.&lt;br /&gt;
&lt;br /&gt;
To solve this problem, we plan to use a boolean field 'lock' for locking mechanism. &lt;br /&gt;
If any member from the team starts with the review, we will set the lock field to true. Once the response is locked, no other member is allowed to edit the response. This lock will be released after the response has been saved.&lt;br /&gt;
&lt;br /&gt;
== Testing Details ==&lt;br /&gt;
&lt;br /&gt;
=== RSpec ===&lt;br /&gt;
RSpec is a testing framework for Rails, and is a Behavioral-Driven Development tool. It is a domain specific language(DSL). All the tests can be executed by rspec spec command, or can also be executed individually using the command &amp;quot;rspec spec/models/assignment_team_spec.rb&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
We intend to write unit tests using RSpec for all the methods which we modified/created.&lt;br /&gt;
&lt;br /&gt;
===Factory Girl===&lt;br /&gt;
Factory Girl is used for creating Assignment and Team objects to be used for testing. Factory Girl is a replacement for fixtures. Fixtures have to be updated whenever we change a data model whereas adding and removing fields is much easier in Factory Girl. Fixture definitions are global whereas Factories can be local, so isolated cases can be tested. Factories are defined to create objects for testing.&lt;br /&gt;
&lt;br /&gt;
===Running RSpec===&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  $ rspec spec/models/assignment_team_spec.rb&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
===Test Cases===&lt;br /&gt;
1. If the instructor selects &amp;quot;Review by team&amp;quot;, check if the review is done by a team member, not by participant.&lt;br /&gt;
&lt;br /&gt;
2. If one teammate is working on a review, another teammate should not be able to edit it at the same time.&lt;/div&gt;</summary>
		<author><name>Vrajadh</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2016_E1631_Team-based_reviewing&amp;diff=102352</id>
		<title>CSC/ECE 517 Spring 2016 E1631 Team-based reviewing</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2016_E1631_Team-based_reviewing&amp;diff=102352"/>
		<updated>2016-04-27T23:30:13Z</updated>

		<summary type="html">&lt;p&gt;Vrajadh: /* Implementation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Purpose ==&lt;br /&gt;
&lt;br /&gt;
When a participant of a team reviewed an assignment, his/her review is independent of his teammate’s reviews. To allow teammates to discuss and review together, allowing teams to submit reviews for the team as a whole should be allowed ideally. We intend to do this in our project. &lt;br /&gt;
&lt;br /&gt;
*Currently all reviews in Expertiza are done by individuals. This is true regardless of whether the assignment is done by individuals or teams . &lt;br /&gt;
*There are occasions when it's advantageous to review projects as a team . &lt;br /&gt;
*It helps foster discussion and thereby improves the process of learning.&lt;br /&gt;
&lt;br /&gt;
== Task Description ==&lt;br /&gt;
This project comprises of the following steps :&lt;br /&gt;
&lt;br /&gt;
# Objects of ResponseMap record the information of who reviews whom. The field reviewee_id refers to the team who is being reviewed. The field reviewer_id refers to the individual/team performing the review. # We added a boolean field &amp;quot;reviewer_is_team&amp;quot; to identify if the review is being performed by a team or an individual.&lt;br /&gt;
# The review strategy is assignment specific and hence we have added a field reviewer_is_team to the assignments table as well&lt;br /&gt;
# For an Instructor to specify whether the review is a Team/Individual based review, we have provided a dropdown on the Review Strategy tab of assignment creation. &lt;br /&gt;
# If reviewer_is_team field is true the reviewer_id in the response_map is set to the corresponding team_id of the user&lt;br /&gt;
# Ensure that features such as &amp;quot;view my scores&amp;quot;, or the &amp;quot;alternate view/heat map&amp;quot; continued working.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
==== Design Pattern ====&lt;br /&gt;
'''Model View Controller'''&lt;br /&gt;
&lt;br /&gt;
In an MVC model, a software application is divided into three major components: Model, View and Controller. &lt;br /&gt;
&lt;br /&gt;
'''Model''' - Keeps data, logic and relations between objects and the database. It also handles validations, associations and transactions.&lt;br /&gt;
&lt;br /&gt;
'''View''' - Displays the data received from the controller in the user interface.&lt;br /&gt;
&lt;br /&gt;
'''Controller''' - Accepts the client's input and converts it into action points for the model or view. Other responsibilities include querying models and organizing data in a structure that is displayed by the view.&lt;br /&gt;
&lt;br /&gt;
==== Use Case Diagram ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name:''' Specify review type on Review Strategy tab.&lt;br /&gt;
&lt;br /&gt;
'''Actor:''' Instructor. &lt;br /&gt;
&lt;br /&gt;
'''Description:''' The instructor specifies whether this review is an individual review or a team based review on the Review Strategy tab.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name:''' Perform Review.&lt;br /&gt;
&lt;br /&gt;
'''Actor:''' Individual Student/Team.&lt;br /&gt;
&lt;br /&gt;
'''Description:''' The individual/team will perform a review for the Assignment.&lt;br /&gt;
&lt;br /&gt;
[[File:OODDUseCase.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Database Design ===&lt;br /&gt;
&lt;br /&gt;
ResponseMap in essence, records who reviews whom. Schema of ResponseMap:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Field&lt;br /&gt;
! Data type&lt;br /&gt;
|-&lt;br /&gt;
| id&lt;br /&gt;
| int(11)&lt;br /&gt;
|-&lt;br /&gt;
| reviewed_object_id&lt;br /&gt;
| int(11)&lt;br /&gt;
|-&lt;br /&gt;
| reviewer_id&lt;br /&gt;
| int(11)&lt;br /&gt;
|-&lt;br /&gt;
| reviewee_id&lt;br /&gt;
| int(11)&lt;br /&gt;
|-&lt;br /&gt;
| type&lt;br /&gt;
| varchar(255)&lt;br /&gt;
|-&lt;br /&gt;
| created_at&lt;br /&gt;
| datetime&lt;br /&gt;
|-&lt;br /&gt;
| updated_at&lt;br /&gt;
| datetime&lt;br /&gt;
|-&lt;br /&gt;
| caliberate_to&lt;br /&gt;
| boolean&lt;br /&gt;
|-&lt;br /&gt;
| reviewer_is_team &lt;br /&gt;
| boolean&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The description of the fields of the database for ResponseMap:&lt;br /&gt;
&lt;br /&gt;
1. '''id:''' The unique record identifier.&lt;br /&gt;
&lt;br /&gt;
2. '''reviewed_object_id:''' The id of the object that is reviewed. Assignments or ReviewMaps could be reviewed.&lt;br /&gt;
&lt;br /&gt;
3. '''reviewer_id:''' The reviewer can either be an “AssignmentTeam” or “AssignmentParticipant”, which is indicated by the field reviwer_is_team.&lt;br /&gt;
&lt;br /&gt;
4. '''reviewee_id:''' The id “AssignmentTeam” who is getting the “Response” i.e., the one whose work is being reviewed. &lt;br /&gt;
&lt;br /&gt;
5. '''type :'''  Indicates the type of the ResponseMap.&lt;br /&gt;
&lt;br /&gt;
6. '''created_at:''' The timestamp when the Response was created.&lt;br /&gt;
&lt;br /&gt;
7. '''updated_at:''' The timestamp when the Response was updated.&lt;br /&gt;
&lt;br /&gt;
8. '''calibrate_to:''' A field of boolean data type.&lt;br /&gt;
&lt;br /&gt;
9. '''reviewer_is_team:''' If this field is ‘true’, the reviewer_id refers to the id of the “AssignmentTeam” to which the participant belongs. Else, it refers to the id of the “Participant” itself.&lt;br /&gt;
&lt;br /&gt;
==Implementation==&lt;br /&gt;
&lt;br /&gt;
Below are the key files modified:&lt;br /&gt;
====Controllers====&lt;br /&gt;
&lt;br /&gt;
* '''review_mapping_controller.rb:''' &lt;br /&gt;
&lt;br /&gt;
1. We have added a check in the assign_reviewer_dynamically method that checks if the assignment is a team_reviewed assignment to fetch the respective row from the participants or the teams_users table&lt;br /&gt;
&lt;br /&gt;
[File:reviewmappingcontroller1.jpg]]&lt;br /&gt;
&lt;br /&gt;
2. Also while redirecting to the student_review controller the participant_id or the team_id is passed based on the type of review&lt;br /&gt;
&lt;br /&gt;
[File:reviewmappingcontroller2.jpg]]&lt;br /&gt;
&lt;br /&gt;
* '''response_controller:''' Initial check if it's a team based or an individual review to assign the corresponding id.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Models====&lt;br /&gt;
* '''assignment.rb:''' Add a field review_type , that indicates if the assignment is a team based or an individual assignment decided by the instructor.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Views====&lt;br /&gt;
* '''assignments/edit/_review_report.html.erb:''' Add a dropdown for the instructors to select if the reviews are individual or team-based.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Handling Concurrency====&lt;br /&gt;
&lt;br /&gt;
There can exist a concurrency problem with the team review system. If two members from the team start with the review at the same time, the member who started the review first will lose his/her changes as the second members changes will be overwritten.&lt;br /&gt;
&lt;br /&gt;
To solve this problem, we plan to use a boolean field 'lock' for locking mechanism. &lt;br /&gt;
If any member from the team starts with the review, we will set the lock field to true. Once the response is locked, no other member is allowed to edit the response. This lock will be released after the response has been saved.&lt;br /&gt;
&lt;br /&gt;
== Testing Details ==&lt;br /&gt;
&lt;br /&gt;
=== RSpec ===&lt;br /&gt;
RSpec is a testing framework for Rails, and is a Behavioral-Driven Development tool. It is a domain specific language(DSL). All the tests can be executed by rspec spec command, or can also be executed individually using the command &amp;quot;rspec spec/models/assignment_team_spec.rb&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
We intend to write unit tests using RSpec for all the methods which we modified/created.&lt;br /&gt;
&lt;br /&gt;
===Factory Girl===&lt;br /&gt;
Factory Girl is used for creating Assignment and Team objects to be used for testing. Factory Girl is a replacement for fixtures. Fixtures have to be updated whenever we change a data model whereas adding and removing fields is much easier in Factory Girl. Fixture definitions are global whereas Factories can be local, so isolated cases can be tested. Factories are defined to create objects for testing.&lt;br /&gt;
&lt;br /&gt;
===Running RSpec===&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  $ rspec spec/models/assignment_team_spec.rb&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
===Test Cases===&lt;br /&gt;
1. If the instructor selects &amp;quot;Review by team&amp;quot;, check if the review is done by a team member, not by participant.&lt;br /&gt;
&lt;br /&gt;
2. If one teammate is working on a review, another teammate should not be able to edit it at the same time.&lt;/div&gt;</summary>
		<author><name>Vrajadh</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2016_E1631_Team-based_reviewing&amp;diff=102351</id>
		<title>CSC/ECE 517 Spring 2016 E1631 Team-based reviewing</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2016_E1631_Team-based_reviewing&amp;diff=102351"/>
		<updated>2016-04-27T23:29:00Z</updated>

		<summary type="html">&lt;p&gt;Vrajadh: /* Implementation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Purpose ==&lt;br /&gt;
&lt;br /&gt;
When a participant of a team reviewed an assignment, his/her review is independent of his teammate’s reviews. To allow teammates to discuss and review together, allowing teams to submit reviews for the team as a whole should be allowed ideally. We intend to do this in our project. &lt;br /&gt;
&lt;br /&gt;
*Currently all reviews in Expertiza are done by individuals. This is true regardless of whether the assignment is done by individuals or teams . &lt;br /&gt;
*There are occasions when it's advantageous to review projects as a team . &lt;br /&gt;
*It helps foster discussion and thereby improves the process of learning.&lt;br /&gt;
&lt;br /&gt;
== Task Description ==&lt;br /&gt;
This project comprises of the following steps :&lt;br /&gt;
&lt;br /&gt;
# Objects of ResponseMap record the information of who reviews whom. The field reviewee_id refers to the team who is being reviewed. The field reviewer_id refers to the individual/team performing the review. # We added a boolean field &amp;quot;reviewer_is_team&amp;quot; to identify if the review is being performed by a team or an individual.&lt;br /&gt;
# The review strategy is assignment specific and hence we have added a field reviewer_is_team to the assignments table as well&lt;br /&gt;
# For an Instructor to specify whether the review is a Team/Individual based review, we have provided a dropdown on the Review Strategy tab of assignment creation. &lt;br /&gt;
# If reviewer_is_team field is true the reviewer_id in the response_map is set to the corresponding team_id of the user&lt;br /&gt;
# Ensure that features such as &amp;quot;view my scores&amp;quot;, or the &amp;quot;alternate view/heat map&amp;quot; continued working.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
==== Design Pattern ====&lt;br /&gt;
'''Model View Controller'''&lt;br /&gt;
&lt;br /&gt;
In an MVC model, a software application is divided into three major components: Model, View and Controller. &lt;br /&gt;
&lt;br /&gt;
'''Model''' - Keeps data, logic and relations between objects and the database. It also handles validations, associations and transactions.&lt;br /&gt;
&lt;br /&gt;
'''View''' - Displays the data received from the controller in the user interface.&lt;br /&gt;
&lt;br /&gt;
'''Controller''' - Accepts the client's input and converts it into action points for the model or view. Other responsibilities include querying models and organizing data in a structure that is displayed by the view.&lt;br /&gt;
&lt;br /&gt;
==== Use Case Diagram ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name:''' Specify review type on Review Strategy tab.&lt;br /&gt;
&lt;br /&gt;
'''Actor:''' Instructor. &lt;br /&gt;
&lt;br /&gt;
'''Description:''' The instructor specifies whether this review is an individual review or a team based review on the Review Strategy tab.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name:''' Perform Review.&lt;br /&gt;
&lt;br /&gt;
'''Actor:''' Individual Student/Team.&lt;br /&gt;
&lt;br /&gt;
'''Description:''' The individual/team will perform a review for the Assignment.&lt;br /&gt;
&lt;br /&gt;
[[File:OODDUseCase.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Database Design ===&lt;br /&gt;
&lt;br /&gt;
ResponseMap in essence, records who reviews whom. Schema of ResponseMap:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Field&lt;br /&gt;
! Data type&lt;br /&gt;
|-&lt;br /&gt;
| id&lt;br /&gt;
| int(11)&lt;br /&gt;
|-&lt;br /&gt;
| reviewed_object_id&lt;br /&gt;
| int(11)&lt;br /&gt;
|-&lt;br /&gt;
| reviewer_id&lt;br /&gt;
| int(11)&lt;br /&gt;
|-&lt;br /&gt;
| reviewee_id&lt;br /&gt;
| int(11)&lt;br /&gt;
|-&lt;br /&gt;
| type&lt;br /&gt;
| varchar(255)&lt;br /&gt;
|-&lt;br /&gt;
| created_at&lt;br /&gt;
| datetime&lt;br /&gt;
|-&lt;br /&gt;
| updated_at&lt;br /&gt;
| datetime&lt;br /&gt;
|-&lt;br /&gt;
| caliberate_to&lt;br /&gt;
| boolean&lt;br /&gt;
|-&lt;br /&gt;
| reviewer_is_team &lt;br /&gt;
| boolean&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The description of the fields of the database for ResponseMap:&lt;br /&gt;
&lt;br /&gt;
1. '''id:''' The unique record identifier.&lt;br /&gt;
&lt;br /&gt;
2. '''reviewed_object_id:''' The id of the object that is reviewed. Assignments or ReviewMaps could be reviewed.&lt;br /&gt;
&lt;br /&gt;
3. '''reviewer_id:''' The reviewer can either be an “AssignmentTeam” or “AssignmentParticipant”, which is indicated by the field reviwer_is_team.&lt;br /&gt;
&lt;br /&gt;
4. '''reviewee_id:''' The id “AssignmentTeam” who is getting the “Response” i.e., the one whose work is being reviewed. &lt;br /&gt;
&lt;br /&gt;
5. '''type :'''  Indicates the type of the ResponseMap.&lt;br /&gt;
&lt;br /&gt;
6. '''created_at:''' The timestamp when the Response was created.&lt;br /&gt;
&lt;br /&gt;
7. '''updated_at:''' The timestamp when the Response was updated.&lt;br /&gt;
&lt;br /&gt;
8. '''calibrate_to:''' A field of boolean data type.&lt;br /&gt;
&lt;br /&gt;
9. '''reviewer_is_team:''' If this field is ‘true’, the reviewer_id refers to the id of the “AssignmentTeam” to which the participant belongs. Else, it refers to the id of the “Participant” itself.&lt;br /&gt;
&lt;br /&gt;
==Implementation==&lt;br /&gt;
&lt;br /&gt;
Below are the key files modified:&lt;br /&gt;
====Controllers====&lt;br /&gt;
* '''review_mapping_controller.rb:''' &lt;br /&gt;
We have added a check in the assign_reviewer_dynamically method that checks if the assignment is a team_reviewed assignment to fetch the respective row from the participants or the teams_users table&lt;br /&gt;
&lt;br /&gt;
Also while redirecting to the student_review controller the participant_id or the team_id is passed based on the type of review&lt;br /&gt;
&lt;br /&gt;
* '''response_controller:''' Initial check if it's a team based or an individual review to assign the corresponding id.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Models====&lt;br /&gt;
* '''assignment.rb:''' Add a field review_type , that indicates if the assignment is a team based or an individual assignment decided by the instructor.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Views====&lt;br /&gt;
* '''assignments/edit/_review_report.html.erb:''' Add a dropdown for the instructors to select if the reviews are individual or team-based.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Handling Concurrency====&lt;br /&gt;
&lt;br /&gt;
There can exist a concurrency problem with the team review system. If two members from the team start with the review at the same time, the member who started the review first will lose his/her changes as the second members changes will be overwritten.&lt;br /&gt;
&lt;br /&gt;
To solve this problem, we plan to use a boolean field 'lock' for locking mechanism. &lt;br /&gt;
If any member from the team starts with the review, we will set the lock field to true. Once the response is locked, no other member is allowed to edit the response. This lock will be released after the response has been saved.&lt;br /&gt;
&lt;br /&gt;
== Testing Details ==&lt;br /&gt;
&lt;br /&gt;
=== RSpec ===&lt;br /&gt;
RSpec is a testing framework for Rails, and is a Behavioral-Driven Development tool. It is a domain specific language(DSL). All the tests can be executed by rspec spec command, or can also be executed individually using the command &amp;quot;rspec spec/models/assignment_team_spec.rb&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
We intend to write unit tests using RSpec for all the methods which we modified/created.&lt;br /&gt;
&lt;br /&gt;
===Factory Girl===&lt;br /&gt;
Factory Girl is used for creating Assignment and Team objects to be used for testing. Factory Girl is a replacement for fixtures. Fixtures have to be updated whenever we change a data model whereas adding and removing fields is much easier in Factory Girl. Fixture definitions are global whereas Factories can be local, so isolated cases can be tested. Factories are defined to create objects for testing.&lt;br /&gt;
&lt;br /&gt;
===Running RSpec===&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  $ rspec spec/models/assignment_team_spec.rb&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
===Test Cases===&lt;br /&gt;
1. If the instructor selects &amp;quot;Review by team&amp;quot;, check if the review is done by a team member, not by participant.&lt;br /&gt;
&lt;br /&gt;
2. If one teammate is working on a review, another teammate should not be able to edit it at the same time.&lt;/div&gt;</summary>
		<author><name>Vrajadh</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2016_E1631_Team-based_reviewing&amp;diff=102350</id>
		<title>CSC/ECE 517 Spring 2016 E1631 Team-based reviewing</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2016_E1631_Team-based_reviewing&amp;diff=102350"/>
		<updated>2016-04-27T23:11:17Z</updated>

		<summary type="html">&lt;p&gt;Vrajadh: /* Task Description */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Purpose ==&lt;br /&gt;
&lt;br /&gt;
When a participant of a team reviewed an assignment, his/her review is independent of his teammate’s reviews. To allow teammates to discuss and review together, allowing teams to submit reviews for the team as a whole should be allowed ideally. We intend to do this in our project. &lt;br /&gt;
&lt;br /&gt;
*Currently all reviews in Expertiza are done by individuals. This is true regardless of whether the assignment is done by individuals or teams . &lt;br /&gt;
*There are occasions when it's advantageous to review projects as a team . &lt;br /&gt;
*It helps foster discussion and thereby improves the process of learning.&lt;br /&gt;
&lt;br /&gt;
== Task Description ==&lt;br /&gt;
This project comprises of the following steps :&lt;br /&gt;
&lt;br /&gt;
# Objects of ResponseMap record the information of who reviews whom. The field reviewee_id refers to the team who is being reviewed. The field reviewer_id refers to the individual/team performing the review. # We added a boolean field &amp;quot;reviewer_is_team&amp;quot; to identify if the review is being performed by a team or an individual.&lt;br /&gt;
# The review strategy is assignment specific and hence we have added a field reviewer_is_team to the assignments table as well&lt;br /&gt;
# For an Instructor to specify whether the review is a Team/Individual based review, we have provided a dropdown on the Review Strategy tab of assignment creation. &lt;br /&gt;
# If reviewer_is_team field is true the reviewer_id in the response_map is set to the corresponding team_id of the user&lt;br /&gt;
# Ensure that features such as &amp;quot;view my scores&amp;quot;, or the &amp;quot;alternate view/heat map&amp;quot; continued working.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
==== Design Pattern ====&lt;br /&gt;
'''Model View Controller'''&lt;br /&gt;
&lt;br /&gt;
In an MVC model, a software application is divided into three major components: Model, View and Controller. &lt;br /&gt;
&lt;br /&gt;
'''Model''' - Keeps data, logic and relations between objects and the database. It also handles validations, associations and transactions.&lt;br /&gt;
&lt;br /&gt;
'''View''' - Displays the data received from the controller in the user interface.&lt;br /&gt;
&lt;br /&gt;
'''Controller''' - Accepts the client's input and converts it into action points for the model or view. Other responsibilities include querying models and organizing data in a structure that is displayed by the view.&lt;br /&gt;
&lt;br /&gt;
==== Use Case Diagram ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name:''' Specify review type on Review Strategy tab.&lt;br /&gt;
&lt;br /&gt;
'''Actor:''' Instructor. &lt;br /&gt;
&lt;br /&gt;
'''Description:''' The instructor specifies whether this review is an individual review or a team based review on the Review Strategy tab.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name:''' Perform Review.&lt;br /&gt;
&lt;br /&gt;
'''Actor:''' Individual Student/Team.&lt;br /&gt;
&lt;br /&gt;
'''Description:''' The individual/team will perform a review for the Assignment.&lt;br /&gt;
&lt;br /&gt;
[[File:OODDUseCase.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Database Design ===&lt;br /&gt;
&lt;br /&gt;
ResponseMap in essence, records who reviews whom. Schema of ResponseMap:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Field&lt;br /&gt;
! Data type&lt;br /&gt;
|-&lt;br /&gt;
| id&lt;br /&gt;
| int(11)&lt;br /&gt;
|-&lt;br /&gt;
| reviewed_object_id&lt;br /&gt;
| int(11)&lt;br /&gt;
|-&lt;br /&gt;
| reviewer_id&lt;br /&gt;
| int(11)&lt;br /&gt;
|-&lt;br /&gt;
| reviewee_id&lt;br /&gt;
| int(11)&lt;br /&gt;
|-&lt;br /&gt;
| type&lt;br /&gt;
| varchar(255)&lt;br /&gt;
|-&lt;br /&gt;
| created_at&lt;br /&gt;
| datetime&lt;br /&gt;
|-&lt;br /&gt;
| updated_at&lt;br /&gt;
| datetime&lt;br /&gt;
|-&lt;br /&gt;
| caliberate_to&lt;br /&gt;
| boolean&lt;br /&gt;
|-&lt;br /&gt;
| reviewer_is_team &lt;br /&gt;
| boolean&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The description of the fields of the database for ResponseMap:&lt;br /&gt;
&lt;br /&gt;
1. '''id:''' The unique record identifier.&lt;br /&gt;
&lt;br /&gt;
2. '''reviewed_object_id:''' The id of the object that is reviewed. Assignments or ReviewMaps could be reviewed.&lt;br /&gt;
&lt;br /&gt;
3. '''reviewer_id:''' The reviewer can either be an “AssignmentTeam” or “AssignmentParticipant”, which is indicated by the field reviwer_is_team.&lt;br /&gt;
&lt;br /&gt;
4. '''reviewee_id:''' The id “AssignmentTeam” who is getting the “Response” i.e., the one whose work is being reviewed. &lt;br /&gt;
&lt;br /&gt;
5. '''type :'''  Indicates the type of the ResponseMap.&lt;br /&gt;
&lt;br /&gt;
6. '''created_at:''' The timestamp when the Response was created.&lt;br /&gt;
&lt;br /&gt;
7. '''updated_at:''' The timestamp when the Response was updated.&lt;br /&gt;
&lt;br /&gt;
8. '''calibrate_to:''' A field of boolean data type.&lt;br /&gt;
&lt;br /&gt;
9. '''reviewer_is_team:''' If this field is ‘true’, the reviewer_id refers to the id of the “AssignmentTeam” to which the participant belongs. Else, it refers to the id of the “Participant” itself.&lt;br /&gt;
&lt;br /&gt;
===Implementation===&lt;br /&gt;
&lt;br /&gt;
Below are the key files to be modified:&lt;br /&gt;
====Models====&lt;br /&gt;
* '''review_response_map.rb:''' Add a field reviewer_is_team , which determines if the reviewer is doing an individual review or on behalf of the team. &lt;br /&gt;
* '''assignment.rb:''' Add a field review_type , that indicates if the assignment is a team based or an individual assignment decided by the instructor.&lt;br /&gt;
&lt;br /&gt;
====Views====&lt;br /&gt;
* '''assignments/edit/_review_report.html.erb:''' Add a dropdown for the instructors to select if the reviews are individual or team-based.&lt;br /&gt;
&lt;br /&gt;
====Controllers====&lt;br /&gt;
* '''review_mapping_controller.rb:''' Method's like get_reviewer that consist of user_id will consist of calls to generic method which assigns a team_id or user_id based on the assignment being reviewed.&lt;br /&gt;
* '''response_controller:''' Initial check if it's a team based or an individual review to assign the corresponding id.&lt;br /&gt;
&lt;br /&gt;
====Handling Concurrency====&lt;br /&gt;
&lt;br /&gt;
There can exist a concurrency problem with the team review system. If two members from the team start with the review at the same time, the member who started the review first will lose his/her changes as the second members changes will be overwritten.&lt;br /&gt;
&lt;br /&gt;
To solve this problem, we plan to use a boolean field 'lock' for locking mechanism. &lt;br /&gt;
If any member from the team starts with the review, we will set the lock field to true. Once the response is locked, no other member is allowed to edit the response. This lock will be released after the response has been saved.&lt;br /&gt;
&lt;br /&gt;
== Testing Details ==&lt;br /&gt;
&lt;br /&gt;
=== RSpec ===&lt;br /&gt;
RSpec is a testing framework for Rails, and is a Behavioral-Driven Development tool. It is a domain specific language(DSL). All the tests can be executed by rspec spec command, or can also be executed individually using the command &amp;quot;rspec spec/models/assignment_team_spec.rb&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
We intend to write unit tests using RSpec for all the methods which we modified/created.&lt;br /&gt;
&lt;br /&gt;
===Factory Girl===&lt;br /&gt;
Factory Girl is used for creating Assignment and Team objects to be used for testing. Factory Girl is a replacement for fixtures. Fixtures have to be updated whenever we change a data model whereas adding and removing fields is much easier in Factory Girl. Fixture definitions are global whereas Factories can be local, so isolated cases can be tested. Factories are defined to create objects for testing.&lt;br /&gt;
&lt;br /&gt;
===Running RSpec===&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  $ rspec spec/models/assignment_team_spec.rb&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
===Test Cases===&lt;br /&gt;
1. If the instructor selects &amp;quot;Review by team&amp;quot;, check if the review is done by a team member, not by participant.&lt;br /&gt;
&lt;br /&gt;
2. If one teammate is working on a review, another teammate should not be able to edit it at the same time.&lt;/div&gt;</summary>
		<author><name>Vrajadh</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2016_E1631_Team-based_reviewing&amp;diff=102262</id>
		<title>CSC/ECE 517 Spring 2016 E1631 Team-based reviewing</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2016_E1631_Team-based_reviewing&amp;diff=102262"/>
		<updated>2016-04-12T03:17:58Z</updated>

		<summary type="html">&lt;p&gt;Vrajadh: /* Controllers */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Purpose ==&lt;br /&gt;
&lt;br /&gt;
When a participant of a team reviewed an assignment, his/her review is independent of his teammate’s reviews. To allow teammates to discuss and review together, allowing teams to submit reviews for the team as a whole should be allowed ideally. We intend to do this in our project. &lt;br /&gt;
&lt;br /&gt;
*Currently all reviews in Expertiza are done by individuals. This is true regardless of whether the assignment is done by individuals or teams . &lt;br /&gt;
*There are occasions when it's advantageous to review projects as a team . &lt;br /&gt;
*It helps foster discussion and thereby improves the process of learning.&lt;br /&gt;
&lt;br /&gt;
== Task Description ==&lt;br /&gt;
This project comprises of the following steps :&lt;br /&gt;
&lt;br /&gt;
# Objects of ResponseMap record the information of who reviews whom. The field reviewee_id refers to the team who is being reviewed. The field reviewer_id refers to the individual/team performing the review. We added a boolean field &amp;quot;reviewer_is_team&amp;quot; to identify if the review is performed by a team or an individual.&lt;br /&gt;
# If reviewer_is_team is true, the reviewer_id will be a reference to the Teams table.&lt;br /&gt;
# For an Instructor to specify whether the review is a Team/Individual based review, we will be providing a dropdown on the Review Strategy tab of assignment creation.&lt;br /&gt;
# Ensure that features such as &amp;quot;view my scores&amp;quot;, or the &amp;quot;alternate view/heat map&amp;quot; should continue working.&lt;br /&gt;
# Concurrency control: Shouldn't allow multiple teammates to edit the team's review at the same time. The scope of the project doesn't include concurrent editing to allow multiple teammates to edit a review simultaneously.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
==== Design Pattern ====&lt;br /&gt;
'''Model View Controller'''&lt;br /&gt;
&lt;br /&gt;
In an MVC model, a software application is divided into three major components: Model, View and Controller. &lt;br /&gt;
&lt;br /&gt;
'''Model''' - Keeps data, logic and relations between objects and the database. It also handles validations, associations and transactions.&lt;br /&gt;
&lt;br /&gt;
'''View''' - Displays the data received from the controller in the user interface.&lt;br /&gt;
&lt;br /&gt;
'''Controller''' - Accepts the client's input and converts it into action points for the model or view. Other responsibilities include querying models and organizing data in a structure that is displayed by the view.&lt;br /&gt;
&lt;br /&gt;
==== Use Case Diagram ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name:''' Specify review type on Review Strategy tab.&lt;br /&gt;
&lt;br /&gt;
'''Actor:''' Instructor. &lt;br /&gt;
&lt;br /&gt;
'''Description:''' The instructor specifies whether this review is an individual review or a team based review on the Review Strategy tab.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name:''' Perform Review.&lt;br /&gt;
&lt;br /&gt;
'''Actor:''' Individual Student/Team.&lt;br /&gt;
&lt;br /&gt;
'''Description:''' The individual/team will perform a review for the Assignment.&lt;br /&gt;
&lt;br /&gt;
[[File:OODDUseCase.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Database Design ===&lt;br /&gt;
&lt;br /&gt;
ResponseMap in essence, records who reviews whom. Schema of ResponseMap:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Field&lt;br /&gt;
! Data type&lt;br /&gt;
|-&lt;br /&gt;
| id&lt;br /&gt;
| int(11)&lt;br /&gt;
|-&lt;br /&gt;
| reviewed_object_id&lt;br /&gt;
| int(11)&lt;br /&gt;
|-&lt;br /&gt;
| reviewer_id&lt;br /&gt;
| int(11)&lt;br /&gt;
|-&lt;br /&gt;
| reviewee_id&lt;br /&gt;
| int(11)&lt;br /&gt;
|-&lt;br /&gt;
| type&lt;br /&gt;
| varchar(255)&lt;br /&gt;
|-&lt;br /&gt;
| created_at&lt;br /&gt;
| datetime&lt;br /&gt;
|-&lt;br /&gt;
| updated_at&lt;br /&gt;
| datetime&lt;br /&gt;
|-&lt;br /&gt;
| caliberate_to&lt;br /&gt;
| boolean&lt;br /&gt;
|-&lt;br /&gt;
| reviewer_is_team &lt;br /&gt;
| boolean&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The description of the fields of the database for ResponseMap:&lt;br /&gt;
&lt;br /&gt;
1. '''id:''' The unique record identifier.&lt;br /&gt;
&lt;br /&gt;
2. '''reviewed_object_id:''' The id of the object that is reviewed. Assignments or ReviewMaps could be reviewed.&lt;br /&gt;
&lt;br /&gt;
3. '''reviewer_id:''' The reviewer can either be an “AssignmentTeam” or “AssignmentParticipant”, which is indicated by the field reviwer_is_team.&lt;br /&gt;
&lt;br /&gt;
4. '''reviewee_id:''' The id “AssignmentTeam” who is getting the “Response” i.e., the one whose work is being reviewed. &lt;br /&gt;
&lt;br /&gt;
5. '''type :'''  Indicates the type of the ResponseMap.&lt;br /&gt;
&lt;br /&gt;
6. '''created_at:''' The timestamp when the Response was created.&lt;br /&gt;
&lt;br /&gt;
7. '''updated_at:''' The timestamp when the Response was updated.&lt;br /&gt;
&lt;br /&gt;
8. '''calibrate_to:''' A field of boolean data type.&lt;br /&gt;
&lt;br /&gt;
9. '''reviewer_is_team:''' If this field is ‘true’, the reviewer_id refers to the id of the “AssignmentTeam” to which the participant belongs. Else, it refers to the id of the “Participant” itself.&lt;br /&gt;
&lt;br /&gt;
===Implementation===&lt;br /&gt;
&lt;br /&gt;
Below are the key files to be modified:&lt;br /&gt;
====Models====&lt;br /&gt;
* '''review_response_map.rb:''' Add a field reviewer_is_team , which determines if the reviewer is doing an individual review or on behalf of the team. &lt;br /&gt;
* '''assignment.rb:''' Add a field review_type , that indicates if the assignment is a team based or an individual assignment decided by the instructor.&lt;br /&gt;
&lt;br /&gt;
====Views====&lt;br /&gt;
* '''assignments/edit/_review_report.html.erb:''' Add a dropdown for the instructors to select if the reviews are individual or team-based.&lt;br /&gt;
&lt;br /&gt;
====Controllers====&lt;br /&gt;
* '''review_mapping_controller.rb:''' Method's like get_reviewer that consist of user_id will consist of calls to generic method which assigns a team_id or user_id based on the assignment being reviewed.&lt;br /&gt;
* '''response_controller:''' Initial check if it's a team based or an individual review to assign the corresponding id.&lt;br /&gt;
&lt;br /&gt;
====Handling Concurrency====&lt;br /&gt;
&lt;br /&gt;
There can exist a concurrency problem with the team review system. If two members from the team start with the review at the same time, the member who started the review first will lose his/her changes as the second members changes will be overwritten.&lt;br /&gt;
&lt;br /&gt;
To solve this problem, we plan to use a boolean field 'lock' for locking mechanism. &lt;br /&gt;
If any member from the team starts with the review, we will set the lock field to true. Once the response is locked, no other member is allowed to edit the response. This lock will be released after the response has been saved.&lt;br /&gt;
&lt;br /&gt;
== Testing Details ==&lt;br /&gt;
&lt;br /&gt;
=== RSpec ===&lt;br /&gt;
RSpec is a testing framework for Rails, and is a Behavioral-Driven Development tool. It is a domain specific language(DSL). All the tests can be executed by rspec spec command, or can also be executed individually using the command &amp;quot;rspec spec/models/assignment_team_spec.rb&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
We intend to write unit tests using RSpec for all the methods which we modified/created.&lt;br /&gt;
&lt;br /&gt;
===Factory Girl===&lt;br /&gt;
Factory Girl is used for creating Assignment and Team objects to be used for testing. Factory Girl is a replacement for fixtures. Fixtures have to be updated whenever we change a data model whereas adding and removing fields is much easier in Factory Girl. Fixture definitions are global whereas Factories can be local, so isolated cases can be tested. Factories are defined to create objects for testing.&lt;br /&gt;
&lt;br /&gt;
===Running RSpec===&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  $ rspec spec/models/assignment_team_spec.rb&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Vrajadh</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2016_E1631_Team-based_reviewing&amp;diff=102195</id>
		<title>CSC/ECE 517 Spring 2016 E1631 Team-based reviewing</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2016_E1631_Team-based_reviewing&amp;diff=102195"/>
		<updated>2016-04-12T02:07:04Z</updated>

		<summary type="html">&lt;p&gt;Vrajadh: /* Views */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Purpose ==&lt;br /&gt;
&lt;br /&gt;
When a participant of a team reviewed an assignment, his/her review is independent of his teammate’s reviews. To allow teammates to discuss and review together, allowing teams to submit reviews for the team as a whole should be allowed ideally. We intend to do this in our project. &lt;br /&gt;
&lt;br /&gt;
*Currently all reviews in Expertiza are done by individuals. This is true regardless of whether the assignment is done by individuals or teams . &lt;br /&gt;
*There are occasions when it's advantageous to review projects as a team . &lt;br /&gt;
*It helps foster discussion and thereby improves the process of learning.&lt;br /&gt;
&lt;br /&gt;
== Task Description ==&lt;br /&gt;
This project comprises of the following steps :&lt;br /&gt;
&lt;br /&gt;
# Objects of ResponseMap record the information of who reviews whom. The field reviewee_id refers to the team who is being reviewed. The field reviewer_id refers to the individual/team performing the review. We added a boolean field &amp;quot;reviewer_is_team&amp;quot; to identify if the review is performed by a team or an individual.&lt;br /&gt;
# If reviewer_is_team is true, the reviewer_id will be a reference to the Teams table.&lt;br /&gt;
# For an Instructor to specify whether the review is a Team/Individual based review, we will be providing a dropdown on the Review Strategy tab of assignment creation.&lt;br /&gt;
# Ensure that features such as &amp;quot;view my scores&amp;quot;, or the &amp;quot;alternate view/heat map&amp;quot; should continue working.&lt;br /&gt;
# Concurrency control: Shouldn't allow multiple teammates to edit the team's review at the same time. The scope of the project doesn't include concurrent editing to allow multiple teammates to edit a review simultaneously.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
==== Design Pattern ====&lt;br /&gt;
'''Model View Controller'''&lt;br /&gt;
&lt;br /&gt;
In an MVC model, a software application is divided into three major components: Model, View and Controller. &lt;br /&gt;
&lt;br /&gt;
'''Model''' - Keeps data, logic and relations between objects and the database. It also handles validations, associations and transactions.&lt;br /&gt;
&lt;br /&gt;
'''View''' - Displays the data received from the controller in the user interface.&lt;br /&gt;
&lt;br /&gt;
'''Controller''' - Accepts the client's input and converts it into action points for the model or view. Other responsibilities include querying models and organizing data in a structure that is displayed by the view.&lt;br /&gt;
&lt;br /&gt;
==== Use Case Diagram ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name:''' Specify review type on Review Strategy tab.&lt;br /&gt;
&lt;br /&gt;
'''Actor:''' Instructor. &lt;br /&gt;
&lt;br /&gt;
'''Description:''' The instructor specifies whether this review is an individual review or a team based review on the Review Strategy tab.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name:''' Perform Review.&lt;br /&gt;
&lt;br /&gt;
'''Actor:''' Individual Student/Team.&lt;br /&gt;
&lt;br /&gt;
'''Description:''' The individual/team will perform a review for the Assignment.&lt;br /&gt;
&lt;br /&gt;
[[File:OODDUseCase.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Database Design ===&lt;br /&gt;
&lt;br /&gt;
ResponseMap in essence, records who reviews whom. Schema of ResponseMap:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Field&lt;br /&gt;
! Data type&lt;br /&gt;
|-&lt;br /&gt;
| id&lt;br /&gt;
| int(11)&lt;br /&gt;
|-&lt;br /&gt;
| reviewed_object_id&lt;br /&gt;
| int(11)&lt;br /&gt;
|-&lt;br /&gt;
| reviewer_id&lt;br /&gt;
| int(11)&lt;br /&gt;
|-&lt;br /&gt;
| reviewee_id&lt;br /&gt;
| int(11)&lt;br /&gt;
|-&lt;br /&gt;
| type&lt;br /&gt;
| varchar(255)&lt;br /&gt;
|-&lt;br /&gt;
| created_at&lt;br /&gt;
| datetime&lt;br /&gt;
|-&lt;br /&gt;
| updated_at&lt;br /&gt;
| datetime&lt;br /&gt;
|-&lt;br /&gt;
| caliberate_to&lt;br /&gt;
| boolean&lt;br /&gt;
|-&lt;br /&gt;
| reviewer_is_team &lt;br /&gt;
| boolean&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The description of the fields of the database for ResponseMap:&lt;br /&gt;
&lt;br /&gt;
1. '''id:''' The unique record identifier.&lt;br /&gt;
&lt;br /&gt;
2. '''reviewed_object_id:''' The id of the object that is reviewed. Assignments or ReviewMaps could be reviewed.&lt;br /&gt;
&lt;br /&gt;
3. '''reviewer_id:''' The reviewer can either be an “AssignmentTeam” or “AssignmentParticipant”, which is indicated by the field reviwer_is_team.&lt;br /&gt;
&lt;br /&gt;
4. '''reviewee_id:''' The id “AssignmentTeam” who is getting the “Response” i.e., the one whose work is being reviewed. &lt;br /&gt;
&lt;br /&gt;
5. '''type :'''  Indicates the type of the ResponseMap.&lt;br /&gt;
&lt;br /&gt;
6. '''created_at:''' The timestamp when the Response was created.&lt;br /&gt;
&lt;br /&gt;
7. '''updated_at:''' The timestamp when the Response was updated.&lt;br /&gt;
&lt;br /&gt;
8. '''calibrate_to:''' A field of boolean data type.&lt;br /&gt;
&lt;br /&gt;
9. '''reviewer_is_team:''' If this field is ‘true’, the reviewer_id refers to the id of the “AssignmentTeam” to which the participant belongs. Else, it refers to the id of the “Participant” itself.&lt;br /&gt;
&lt;br /&gt;
===Key files to be modified===&lt;br /&gt;
&lt;br /&gt;
====Models====&lt;br /&gt;
* '''review_response_map.rb:''' Add a field reviewer_is_team , which determines if the reviewer is doing an individual review or on behalf of the team. &lt;br /&gt;
* '''assignment.rb:''' Add a field review_type , that indicates if the assignment is a team based or an individual assignment decided by the instructor.&lt;br /&gt;
&lt;br /&gt;
====Views====&lt;br /&gt;
* '''assignments/edit/_review_report.html.erb:''' Add a dropdown for the instructors to select if the reviews are individual or team-based.&lt;br /&gt;
&lt;br /&gt;
====Controllers====&lt;br /&gt;
* review_mapping_controller.rb&lt;br /&gt;
* participants_controller.rb&lt;br /&gt;
&lt;br /&gt;
== Testing Details ==&lt;br /&gt;
&lt;br /&gt;
=== RSpec ===&lt;br /&gt;
RSpec is a testing framework for Rails, and is a Behavioral-Driven Development tool. It is a domain specific language(DSL).  &lt;br /&gt;
&lt;br /&gt;
There were no existing tests for the hyperlinks related methods. We used RSpec to write test cases using TTD approach. The assignment_team_spec.rb in the spec folder will have these tests. All the tests can be executed by rspec spec command, or can also be executed individually using the command &amp;quot;rspec spec/models/assignment_team_spec.rb&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Factory Girl===&lt;br /&gt;
We have used Factory Girl for creating Assignment and Team objects to be used for testing. Factory Girl is a replacement for fixtures. Fixtures have to be updated whenever we change a data model whereas adding and removing fields is much easier in Factory Girl. Fixture definitions are global whereas Factories can be local, so isolated cases can be tested. Factories are defined to create objects for testing.&lt;br /&gt;
===Running RSpec===&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  $ rspec spec/models/assignment_team_spec.rb&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Vrajadh</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2016_E1631_Team-based_reviewing&amp;diff=102184</id>
		<title>CSC/ECE 517 Spring 2016 E1631 Team-based reviewing</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2016_E1631_Team-based_reviewing&amp;diff=102184"/>
		<updated>2016-04-12T01:39:58Z</updated>

		<summary type="html">&lt;p&gt;Vrajadh: /* Views */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Purpose ==&lt;br /&gt;
&lt;br /&gt;
When a participant of a team reviewed an assignment, his/her review is independent of his teammate’s reviews. To allow teammates to discuss and review together, allowing teams to submit reviews for the team as a whole should be allowed ideally. We intend to do this in our project. &lt;br /&gt;
&lt;br /&gt;
*Currently all reviews in Expertiza are done by individuals. This is true regardless of whether the assignment is done by individuals or teams . &lt;br /&gt;
*There are occasions when it's advantageous to review projects as a team . &lt;br /&gt;
*It helps foster discussion and thereby improves the process of learning.&lt;br /&gt;
&lt;br /&gt;
== Task Description ==&lt;br /&gt;
This project comprises of the following steps :&lt;br /&gt;
&lt;br /&gt;
# Objects of ResponseMap record the information of who reviews whom. The field reviewee_id refers to the team who is being reviewed. The field reviewer_id refers to the individual/team performing the review. We added a boolean field &amp;quot;reviewer_is_team&amp;quot; to identify if the review is performed by a team or an individual.&lt;br /&gt;
# If reviewer_is_team is true, the reviewer_id will be a reference to the Teams table.&lt;br /&gt;
# For an Instructor to specify whether the review is a Team/Individual based review, we will be providing a dropdown on the Review Strategy tab of assignment creation.&lt;br /&gt;
# Ensure that features such as &amp;quot;view my scores&amp;quot;, or the &amp;quot;alternate view/heat map&amp;quot; should continue working.&lt;br /&gt;
# Concurrency control: Shouldn't allow multiple teammates to edit the team's review at the same time. The scope of the project doesn't include concurrent editing to allow multiple teammates to edit a review simultaneously.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
==== Use Case Diagram ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name:''' Specify review type on Review Strategy tab.&lt;br /&gt;
&lt;br /&gt;
'''Actor:''' Instructor. &lt;br /&gt;
&lt;br /&gt;
'''Description:''' The instructor specifies whether this review is an individual review or a team based review on the Review Strategy tab.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name:''' Perform Review.&lt;br /&gt;
&lt;br /&gt;
'''Actor:''' Individual Student/Team.&lt;br /&gt;
&lt;br /&gt;
'''Description:''' The individual/team will perform a review for the Assignment.&lt;br /&gt;
&lt;br /&gt;
[[File:OODDUseCase.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Database Design ===&lt;br /&gt;
&lt;br /&gt;
ResponseMap in essence, records who reviews whom. Schema of ResponseMap:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Field&lt;br /&gt;
! Data type&lt;br /&gt;
|-&lt;br /&gt;
| id&lt;br /&gt;
| int(11)&lt;br /&gt;
|-&lt;br /&gt;
| reviewed_object_id&lt;br /&gt;
| int(11)&lt;br /&gt;
|-&lt;br /&gt;
| reviewer_id&lt;br /&gt;
| int(11)&lt;br /&gt;
|-&lt;br /&gt;
| reviewee_id&lt;br /&gt;
| int(11)&lt;br /&gt;
|-&lt;br /&gt;
| type&lt;br /&gt;
| varchar(255)&lt;br /&gt;
|-&lt;br /&gt;
| created_at&lt;br /&gt;
| datetime&lt;br /&gt;
|-&lt;br /&gt;
| updated_at&lt;br /&gt;
| datetime&lt;br /&gt;
|-&lt;br /&gt;
| caliberate_to&lt;br /&gt;
| boolean&lt;br /&gt;
|-&lt;br /&gt;
| reviewer_is_team &lt;br /&gt;
| boolean&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The description of the fields of the database for ResponseMap:&lt;br /&gt;
&lt;br /&gt;
1. '''id:''' The unique record identifier.&lt;br /&gt;
&lt;br /&gt;
2. '''reviewed_object_id:''' The id of the object that is reviewed. Assignments or ReviewMaps could be reviewed.&lt;br /&gt;
&lt;br /&gt;
3. '''reviewer_id:''' The reviewer can either be an “AssignmentTeam” or “AssignmentParticipant”, which is indicated by the field reviwer_is_team.&lt;br /&gt;
&lt;br /&gt;
4. '''reviewee_id:''' The id “AssignmentTeam” who is getting the “Response” i.e., the one whose work is being reviewed. &lt;br /&gt;
&lt;br /&gt;
5. '''type :'''  Indicates the type of the ResponseMap.&lt;br /&gt;
&lt;br /&gt;
6. '''created_at:''' The timestamp when the Response was created.&lt;br /&gt;
&lt;br /&gt;
7. '''updated_at:''' The timestamp when the Response was updated.&lt;br /&gt;
&lt;br /&gt;
8. '''calibrate_to:''' A field of boolean data type.&lt;br /&gt;
&lt;br /&gt;
9. '''reviewer_is_team:''' If this field is ‘true’, the reviewer_id refers to the id of the “AssignmentTeam” to which the participant belongs. Else, it refers to the id of the “Participant” itself.&lt;br /&gt;
&lt;br /&gt;
===Key files to be modified===&lt;br /&gt;
&lt;br /&gt;
====Models====&lt;br /&gt;
* '''review_response_map.rb:''' Add a field reviewer_is_team , which determines if the reviewer is doing an individual review or on behalf of the team. &lt;br /&gt;
* '''assignment.rb:''' Add a field review_type , that indicates if the assignment is a team based or an individual assignment decided by the instructor.&lt;br /&gt;
&lt;br /&gt;
====Views====&lt;br /&gt;
* '''review_mapping/_review_report.html.erb:'''&lt;br /&gt;
&lt;br /&gt;
====Controllers====&lt;br /&gt;
* review_mapping_controller.rb&lt;br /&gt;
* participants_controller.rb&lt;/div&gt;</summary>
		<author><name>Vrajadh</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2016_E1631_Team-based_reviewing&amp;diff=102183</id>
		<title>CSC/ECE 517 Spring 2016 E1631 Team-based reviewing</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2016_E1631_Team-based_reviewing&amp;diff=102183"/>
		<updated>2016-04-12T01:39:36Z</updated>

		<summary type="html">&lt;p&gt;Vrajadh: /* Models */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Purpose ==&lt;br /&gt;
&lt;br /&gt;
When a participant of a team reviewed an assignment, his/her review is independent of his teammate’s reviews. To allow teammates to discuss and review together, allowing teams to submit reviews for the team as a whole should be allowed ideally. We intend to do this in our project. &lt;br /&gt;
&lt;br /&gt;
*Currently all reviews in Expertiza are done by individuals. This is true regardless of whether the assignment is done by individuals or teams . &lt;br /&gt;
*There are occasions when it's advantageous to review projects as a team . &lt;br /&gt;
*It helps foster discussion and thereby improves the process of learning.&lt;br /&gt;
&lt;br /&gt;
== Task Description ==&lt;br /&gt;
This project comprises of the following steps :&lt;br /&gt;
&lt;br /&gt;
# Objects of ResponseMap record the information of who reviews whom. The field reviewee_id refers to the team who is being reviewed. The field reviewer_id refers to the individual/team performing the review. We added a boolean field &amp;quot;reviewer_is_team&amp;quot; to identify if the review is performed by a team or an individual.&lt;br /&gt;
# If reviewer_is_team is true, the reviewer_id will be a reference to the Teams table.&lt;br /&gt;
# For an Instructor to specify whether the review is a Team/Individual based review, we will be providing a dropdown on the Review Strategy tab of assignment creation.&lt;br /&gt;
# Ensure that features such as &amp;quot;view my scores&amp;quot;, or the &amp;quot;alternate view/heat map&amp;quot; should continue working.&lt;br /&gt;
# Concurrency control: Shouldn't allow multiple teammates to edit the team's review at the same time. The scope of the project doesn't include concurrent editing to allow multiple teammates to edit a review simultaneously.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
==== Use Case Diagram ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name:''' Specify review type on Review Strategy tab.&lt;br /&gt;
&lt;br /&gt;
'''Actor:''' Instructor. &lt;br /&gt;
&lt;br /&gt;
'''Description:''' The instructor specifies whether this review is an individual review or a team based review on the Review Strategy tab.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name:''' Perform Review.&lt;br /&gt;
&lt;br /&gt;
'''Actor:''' Individual Student/Team.&lt;br /&gt;
&lt;br /&gt;
'''Description:''' The individual/team will perform a review for the Assignment.&lt;br /&gt;
&lt;br /&gt;
[[File:OODDUseCase.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Database Design ===&lt;br /&gt;
&lt;br /&gt;
ResponseMap in essence, records who reviews whom. Schema of ResponseMap:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Field&lt;br /&gt;
! Data type&lt;br /&gt;
|-&lt;br /&gt;
| id&lt;br /&gt;
| int(11)&lt;br /&gt;
|-&lt;br /&gt;
| reviewed_object_id&lt;br /&gt;
| int(11)&lt;br /&gt;
|-&lt;br /&gt;
| reviewer_id&lt;br /&gt;
| int(11)&lt;br /&gt;
|-&lt;br /&gt;
| reviewee_id&lt;br /&gt;
| int(11)&lt;br /&gt;
|-&lt;br /&gt;
| type&lt;br /&gt;
| varchar(255)&lt;br /&gt;
|-&lt;br /&gt;
| created_at&lt;br /&gt;
| datetime&lt;br /&gt;
|-&lt;br /&gt;
| updated_at&lt;br /&gt;
| datetime&lt;br /&gt;
|-&lt;br /&gt;
| caliberate_to&lt;br /&gt;
| boolean&lt;br /&gt;
|-&lt;br /&gt;
| reviewer_is_team &lt;br /&gt;
| boolean&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The description of the fields of the database for ResponseMap:&lt;br /&gt;
&lt;br /&gt;
1. '''id:''' The unique record identifier.&lt;br /&gt;
&lt;br /&gt;
2. '''reviewed_object_id:''' The id of the object that is reviewed. Assignments or ReviewMaps could be reviewed.&lt;br /&gt;
&lt;br /&gt;
3. '''reviewer_id:''' The reviewer can either be an “AssignmentTeam” or “AssignmentParticipant”, which is indicated by the field reviwer_is_team.&lt;br /&gt;
&lt;br /&gt;
4. '''reviewee_id:''' The id “AssignmentTeam” who is getting the “Response” i.e., the one whose work is being reviewed. &lt;br /&gt;
&lt;br /&gt;
5. '''type :'''  Indicates the type of the ResponseMap.&lt;br /&gt;
&lt;br /&gt;
6. '''created_at:''' The timestamp when the Response was created.&lt;br /&gt;
&lt;br /&gt;
7. '''updated_at:''' The timestamp when the Response was updated.&lt;br /&gt;
&lt;br /&gt;
8. '''calibrate_to:''' A field of boolean data type.&lt;br /&gt;
&lt;br /&gt;
9. '''reviewer_is_team:''' If this field is ‘true’, the reviewer_id refers to the id of the “AssignmentTeam” to which the participant belongs. Else, it refers to the id of the “Participant” itself.&lt;br /&gt;
&lt;br /&gt;
===Key files to be modified===&lt;br /&gt;
&lt;br /&gt;
====Models====&lt;br /&gt;
* '''review_response_map.rb:''' Add a field reviewer_is_team , which determines if the reviewer is doing an individual review or on behalf of the team. &lt;br /&gt;
* '''assignment.rb:''' Add a field review_type , that indicates if the assignment is a team based or an individual assignment decided by the instructor.&lt;br /&gt;
&lt;br /&gt;
====Views====&lt;br /&gt;
* review_mapping/_review_report.html.erb &lt;br /&gt;
====Controllers====&lt;br /&gt;
* review_mapping_controller.rb&lt;br /&gt;
* participants_controller.rb&lt;/div&gt;</summary>
		<author><name>Vrajadh</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2016_E1631_Team-based_reviewing&amp;diff=102182</id>
		<title>CSC/ECE 517 Spring 2016 E1631 Team-based reviewing</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2016_E1631_Team-based_reviewing&amp;diff=102182"/>
		<updated>2016-04-12T01:38:22Z</updated>

		<summary type="html">&lt;p&gt;Vrajadh: /* Models */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Purpose ==&lt;br /&gt;
&lt;br /&gt;
When a participant of a team reviewed an assignment, his/her review is independent of his teammate’s reviews. To allow teammates to discuss and review together, allowing teams to submit reviews for the team as a whole should be allowed ideally. We intend to do this in our project. &lt;br /&gt;
&lt;br /&gt;
*Currently all reviews in Expertiza are done by individuals. This is true regardless of whether the assignment is done by individuals or teams . &lt;br /&gt;
*There are occasions when it's advantageous to review projects as a team . &lt;br /&gt;
*It helps foster discussion and thereby improves the process of learning.&lt;br /&gt;
&lt;br /&gt;
== Task Description ==&lt;br /&gt;
This project comprises of the following steps :&lt;br /&gt;
&lt;br /&gt;
# Objects of ResponseMap record the information of who reviews whom. The field reviewee_id refers to the team who is being reviewed. The field reviewer_id refers to the individual/team performing the review. We added a boolean field &amp;quot;reviewer_is_team&amp;quot; to identify if the review is performed by a team or an individual.&lt;br /&gt;
# If reviewer_is_team is true, the reviewer_id will be a reference to the Teams table.&lt;br /&gt;
# For an Instructor to specify whether the review is a Team/Individual based review, we will be providing a dropdown on the Review Strategy tab of assignment creation.&lt;br /&gt;
# Ensure that features such as &amp;quot;view my scores&amp;quot;, or the &amp;quot;alternate view/heat map&amp;quot; should continue working.&lt;br /&gt;
# Concurrency control: Shouldn't allow multiple teammates to edit the team's review at the same time. The scope of the project doesn't include concurrent editing to allow multiple teammates to edit a review simultaneously.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
==== Use Case Diagram ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name:''' Specify review type on Review Strategy tab.&lt;br /&gt;
&lt;br /&gt;
'''Actor:''' Instructor. &lt;br /&gt;
&lt;br /&gt;
'''Description:''' The instructor specifies whether this review is an individual review or a team based review on the Review Strategy tab.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name:''' Perform Review.&lt;br /&gt;
&lt;br /&gt;
'''Actor:''' Individual Student/Team.&lt;br /&gt;
&lt;br /&gt;
'''Description:''' The individual/team will perform a review for the Assignment.&lt;br /&gt;
&lt;br /&gt;
[[File:OODDUseCase.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Database Design ===&lt;br /&gt;
&lt;br /&gt;
ResponseMap in essence, records who reviews whom. Schema of ResponseMap:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Field&lt;br /&gt;
! Data type&lt;br /&gt;
|-&lt;br /&gt;
| id&lt;br /&gt;
| int(11)&lt;br /&gt;
|-&lt;br /&gt;
| reviewed_object_id&lt;br /&gt;
| int(11)&lt;br /&gt;
|-&lt;br /&gt;
| reviewer_id&lt;br /&gt;
| int(11)&lt;br /&gt;
|-&lt;br /&gt;
| reviewee_id&lt;br /&gt;
| int(11)&lt;br /&gt;
|-&lt;br /&gt;
| type&lt;br /&gt;
| varchar(255)&lt;br /&gt;
|-&lt;br /&gt;
| created_at&lt;br /&gt;
| datetime&lt;br /&gt;
|-&lt;br /&gt;
| updated_at&lt;br /&gt;
| datetime&lt;br /&gt;
|-&lt;br /&gt;
| caliberate_to&lt;br /&gt;
| boolean&lt;br /&gt;
|-&lt;br /&gt;
| reviewer_is_team &lt;br /&gt;
| boolean&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The description of the fields of the database for ResponseMap:&lt;br /&gt;
&lt;br /&gt;
1. '''id:''' The unique record identifier.&lt;br /&gt;
&lt;br /&gt;
2. '''reviewed_object_id:''' The id of the object that is reviewed. Assignments or ReviewMaps could be reviewed.&lt;br /&gt;
&lt;br /&gt;
3. '''reviewer_id:''' The reviewer can either be an “AssignmentTeam” or “AssignmentParticipant”, which is indicated by the field reviwer_is_team.&lt;br /&gt;
&lt;br /&gt;
4. '''reviewee_id:''' The id “AssignmentTeam” who is getting the “Response” i.e., the one whose work is being reviewed. &lt;br /&gt;
&lt;br /&gt;
5. '''type :'''  Indicates the type of the ResponseMap.&lt;br /&gt;
&lt;br /&gt;
6. '''created_at:''' The timestamp when the Response was created.&lt;br /&gt;
&lt;br /&gt;
7. '''updated_at:''' The timestamp when the Response was updated.&lt;br /&gt;
&lt;br /&gt;
8. '''calibrate_to:''' A field of boolean data type.&lt;br /&gt;
&lt;br /&gt;
9. '''reviewer_is_team:''' If this field is ‘true’, the reviewer_id refers to the id of the “AssignmentTeam” to which the participant belongs. Else, it refers to the id of the “Participant” itself.&lt;br /&gt;
&lt;br /&gt;
===Key files to be modified===&lt;br /&gt;
&lt;br /&gt;
====Models====&lt;br /&gt;
* review_response_map.rb - Add a field reviewer_is_team , which determines if the reviewer is doing an individual review or on behalf of the team. &lt;br /&gt;
* participant.rb &lt;br /&gt;
* response_map.rb &lt;br /&gt;
* response.rb &lt;br /&gt;
* assignment_team.rb &lt;br /&gt;
* assignment_participant.rb &lt;br /&gt;
* assignment.rb - Add a field review_type , that indicates if the assignment is a team based or an individual assignment decided by the instructor.&lt;br /&gt;
&lt;br /&gt;
====Views====&lt;br /&gt;
* review_mapping/_review_report.html.erb &lt;br /&gt;
====Controllers====&lt;br /&gt;
* review_mapping_controller.rb&lt;br /&gt;
* participants_controller.rb&lt;/div&gt;</summary>
		<author><name>Vrajadh</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2016_E1631_Team-based_reviewing&amp;diff=102181</id>
		<title>CSC/ECE 517 Spring 2016 E1631 Team-based reviewing</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2016_E1631_Team-based_reviewing&amp;diff=102181"/>
		<updated>2016-04-12T01:18:46Z</updated>

		<summary type="html">&lt;p&gt;Vrajadh: /* Task Description */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Purpose ==&lt;br /&gt;
&lt;br /&gt;
When a participant of a team reviewed an assignment, his/her review is independent of his teammate’s reviews. To allow teammates to discuss and review together, allowing teams to submit reviews for the team as a whole should be allowed ideally. We intend to do this in our project. &lt;br /&gt;
&lt;br /&gt;
*Currently all reviews in Expertiza are done by individuals. This is true regardless of whether the assignment is done by individuals or teams . &lt;br /&gt;
*There are occasions when it's advantageous to review projects as a team . &lt;br /&gt;
*It helps foster discussion and thereby improves the process of learning.&lt;br /&gt;
&lt;br /&gt;
== Task Description ==&lt;br /&gt;
This project comprises of the following steps :&lt;br /&gt;
&lt;br /&gt;
# Objects of ResponseMap record the information of who reviews whom. The field reviewee_id refers to the team who is being reviewed. The field reviewer_id refers to the individual/team performing the review. We added a boolean field &amp;quot;reviewer_is_team&amp;quot; to identify if the review is performed by a team or an individual.&lt;br /&gt;
# If reviewer_is_team is true, the reviewer_id will be a reference to the Teams table.&lt;br /&gt;
# For an Instructor to specify whether the review is a Team/Individual based review, we will be providing a dropdown on the Review Strategy tab of assignment creation.&lt;br /&gt;
# Ensure that features such as &amp;quot;view my scores&amp;quot;, or the &amp;quot;alternate view/heat map&amp;quot; should continue working.&lt;br /&gt;
# Concurrency control: Shouldn't allow multiple teammates to edit the team's review at the same time. The scope of the project doesn't include concurrent editing to allow multiple teammates to edit a review simultaneously.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
==== Use Case Diagram ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name:''' Specify review type on Review Strategy tab.&lt;br /&gt;
&lt;br /&gt;
'''Actor:''' Instructor. &lt;br /&gt;
&lt;br /&gt;
'''Description:''' The instructor specifies whether this review is an individual review or a team based review on the Review Strategy tab.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name:''' Perform Review.&lt;br /&gt;
&lt;br /&gt;
'''Actor:''' Individual Student/Team.&lt;br /&gt;
&lt;br /&gt;
'''Description:''' The individual/team will perform a review for the Assignment.&lt;br /&gt;
&lt;br /&gt;
[[File:OODDUseCase.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Database Design ===&lt;br /&gt;
&lt;br /&gt;
ResponseMap in essence, records who reviews whom. Schema of ResponseMap:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Field&lt;br /&gt;
! Data type&lt;br /&gt;
|-&lt;br /&gt;
| id&lt;br /&gt;
| int(11)&lt;br /&gt;
|-&lt;br /&gt;
| reviewed_object_id&lt;br /&gt;
| int(11)&lt;br /&gt;
|-&lt;br /&gt;
| reviewer_id&lt;br /&gt;
| int(11)&lt;br /&gt;
|-&lt;br /&gt;
| reviewee_id&lt;br /&gt;
| int(11)&lt;br /&gt;
|-&lt;br /&gt;
| type&lt;br /&gt;
| varchar(255)&lt;br /&gt;
|-&lt;br /&gt;
| created_at&lt;br /&gt;
| datetime&lt;br /&gt;
|-&lt;br /&gt;
| updated_at&lt;br /&gt;
| datetime&lt;br /&gt;
|-&lt;br /&gt;
| caliberate_to&lt;br /&gt;
| boolean&lt;br /&gt;
|-&lt;br /&gt;
| reviewer_is_team &lt;br /&gt;
| boolean&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The description of the fields of the database for ResponseMap:&lt;br /&gt;
&lt;br /&gt;
1. '''id:''' The unique record identifier.&lt;br /&gt;
&lt;br /&gt;
2. '''reviewed_object_id:''' The id of the object that is reviewed. Assignments or ReviewMaps could be reviewed.&lt;br /&gt;
&lt;br /&gt;
3. '''reviewer_id:''' The reviewer can either be an “AssignmentTeam” or “AssignmentParticipant”, which is indicated by the field reviwer_is_team.&lt;br /&gt;
&lt;br /&gt;
4. '''reviewee_id:''' The id “AssignmentTeam” who is getting the “Response” i.e., the one whose work is being reviewed. &lt;br /&gt;
&lt;br /&gt;
5. '''type :'''  Indicates the type of the ResponseMap.&lt;br /&gt;
&lt;br /&gt;
6. '''created_at:''' The timestamp when the Response was created.&lt;br /&gt;
&lt;br /&gt;
7. '''updated_at:''' The timestamp when the Response was updated.&lt;br /&gt;
&lt;br /&gt;
8. '''calibrate_to:''' A field of boolean data type.&lt;br /&gt;
&lt;br /&gt;
9. '''reviewer_is_team:''' If this field is ‘true’, the reviewer_id refers to the id of the “AssignmentTeam” to which the participant belongs. Else, it refers to the id of the “Participant” itself.&lt;br /&gt;
&lt;br /&gt;
===Key files to be modified===&lt;br /&gt;
&lt;br /&gt;
====Models====&lt;br /&gt;
* review_response_map.rb&lt;br /&gt;
* participant.rb &lt;br /&gt;
* response_map.rb &lt;br /&gt;
* response.rb &lt;br /&gt;
* assignment_team.rb&lt;br /&gt;
* assignment_participant.rb &lt;br /&gt;
* assignment.rb&lt;br /&gt;
====Views====&lt;br /&gt;
* review_mapping/_review_report.html.erb &lt;br /&gt;
====Controllers====&lt;br /&gt;
* review_mapping_controller.rb&lt;br /&gt;
* participants_controller.rb&lt;/div&gt;</summary>
		<author><name>Vrajadh</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2016_E1631_Team-based_reviewing&amp;diff=101680</id>
		<title>CSC/ECE 517 Spring 2016 E1631 Team-based reviewing</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2016_E1631_Team-based_reviewing&amp;diff=101680"/>
		<updated>2016-04-02T22:46:49Z</updated>

		<summary type="html">&lt;p&gt;Vrajadh: /* Problem Statement */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Purpose ==&lt;br /&gt;
&lt;br /&gt;
*Currently all reviews in Expertiza are done by individuals. This is true regardless of whether the assignment is done by individuals or teams . &lt;br /&gt;
*There are occasions when it's advantageous to review projects as a team . &lt;br /&gt;
*It helps foster discussion and thereby improves the process of learning.&lt;/div&gt;</summary>
		<author><name>Vrajadh</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2016_E1631_Team-based_reviewing&amp;diff=101679</id>
		<title>CSC/ECE 517 Spring 2016 E1631 Team-based reviewing</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2016_E1631_Team-based_reviewing&amp;diff=101679"/>
		<updated>2016-04-02T22:38:50Z</updated>

		<summary type="html">&lt;p&gt;Vrajadh: /* Problem Statement */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Problem Statement ==&lt;br /&gt;
&lt;br /&gt;
Currently all reviews in Expertiza are done by individuals. This is true regardless of whether the assignment is done by individuals or teams . There are occasions when it's advantageous to review projects as a team . It helps foster discussion and thereby improves the process of learning.&lt;/div&gt;</summary>
		<author><name>Vrajadh</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2016_E1631_Team-based_reviewing&amp;diff=101678</id>
		<title>CSC/ECE 517 Spring 2016 E1631 Team-based reviewing</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2016_E1631_Team-based_reviewing&amp;diff=101678"/>
		<updated>2016-04-02T22:37:02Z</updated>

		<summary type="html">&lt;p&gt;Vrajadh: Created page with &amp;quot;== Problem Statement == Currently all reviews in Expertiza are done by individuals. This is true regardless of whether the assignment is done by individuals or teams . There are ...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Problem Statement ==&lt;br /&gt;
Currently all reviews in Expertiza are done by individuals. This is true regardless of whether the assignment is done by individuals or teams . There are occasions when it's advantageous to review projects as a team since it results in dis&lt;/div&gt;</summary>
		<author><name>Vrajadh</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2016&amp;diff=101677</id>
		<title>CSC/ECE 517 Spring 2016</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2016&amp;diff=101677"/>
		<updated>2016-04-02T22:23:28Z</updated>

		<summary type="html">&lt;p&gt;Vrajadh: /* Final Project Design Document */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Writing Assignment 1==&lt;br /&gt;
*[[CSC/ECE 517 Spring 2016/Active Job]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Calibration Assignment Submissions==&lt;br /&gt;
*[[Calibration Assignment Submission (OmniAuth)]]&lt;br /&gt;
*[[Calibration Assignment Submission (Patch_verb)]]&lt;br /&gt;
&lt;br /&gt;
==Writing Assignment 2==&lt;br /&gt;
*[[CSC/ECE 517 Spring 2016/Mozilla Implement HTML5 form validation]]&lt;br /&gt;
&lt;br /&gt;
*[[CSC/ECE 517 Spring 2016/Functional Tests for Questionnaire Controller]]&lt;br /&gt;
&lt;br /&gt;
*[[CSC/ECE 517 Spring 2016 / Expertiza Self-Review Feature]]&lt;br /&gt;
&lt;br /&gt;
*[[CSC/ECE 517 Spring 2016/Refactor different question types from quiz feature]]&lt;br /&gt;
&lt;br /&gt;
*[[CSC/ECE 517 Spring 2016/Implement private browsing]]&lt;br /&gt;
&lt;br /&gt;
*[[CSC/ECE 517 Spring 2016/Write automated tests for WebDriver]]&lt;br /&gt;
&lt;br /&gt;
*[[CSC/ECE 517 Spring 2016/Refactor sign_up_sheet_controller.rb and sign_up_topic.rb]]&lt;br /&gt;
&lt;br /&gt;
*[[CSC/ECE 517 Spring 2016/Implement Common Parts of the CSSOM API]]&lt;br /&gt;
&lt;br /&gt;
*[[CSC/ECE 517 Spring 2016/Functional tests for assignment creation function]]&lt;br /&gt;
&lt;br /&gt;
*[[CSC/ECE 517 Spring 2016/E1604. Functional tests for Calibration function]]&lt;br /&gt;
&lt;br /&gt;
*[[CSC/ECE 517 Spring 2016/Refactor and write unit tests for question type.rb]]&lt;br /&gt;
&lt;br /&gt;
*[[CSC/ECE 517 Spring 2016/Refactor response controller]]&lt;br /&gt;
&lt;br /&gt;
*[[CSC/ECE_517_Spring_2016_OSS_M1606]]&lt;br /&gt;
&lt;br /&gt;
*[[CSC/ECE_517_Spring_2016/OSS_E1601]]&lt;br /&gt;
&lt;br /&gt;
==Final Project Design Document==&lt;br /&gt;
*[[CSC/ECE 517 Spring 2016 M1601 Implement HTML5 form validation]]&lt;br /&gt;
*[[CSC/ECE 517 Spring 2016 E1624 Compose functional tests for Suggest topics of student functionality ]]&lt;br /&gt;
*[[CSC/ECE 517 Spring 2016 E1631 Team-based reviewing]]&lt;/div&gt;</summary>
		<author><name>Vrajadh</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2016/Implement_private_browsing&amp;diff=101642</id>
		<title>CSC/ECE 517 Spring 2016/Implement private browsing</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2016/Implement_private_browsing&amp;diff=101642"/>
		<updated>2016-04-02T02:46:18Z</updated>

		<summary type="html">&lt;p&gt;Vrajadh: /* Step 2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Implement Private Browsing'''&lt;br /&gt;
&lt;br /&gt;
Servo&amp;lt;ref&amp;gt;https://github.com/servo/servo&amp;lt;/ref&amp;gt; is a prototype web browser engine written in the RUST language. Servo currently does not support the mode where the cookies, login, history and downloads are forgotten after the session ends. The goal of this project is to implement incognito/private browsing feature in Servo.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
Servo is an experimental web browser layout engine being developed by Mozilla Research. Servo is written in the Rust&amp;lt;ref&amp;gt; https://doc.rust-lang.org/ &amp;lt;/ref&amp;gt; language, which is also being developed by Mozilla Research. The language is being refined through feedback from Servo development, and writing the Rust compiler itself. Rust is a systems programming language similar to C and C++ in syntax (but semantically very different). The emphasis is on speed, safety, concurrency and control of memory layout.&lt;br /&gt;
&lt;br /&gt;
==Motivation==&lt;br /&gt;
&lt;br /&gt;
When a user browses the web, Firefox remembers lots of information for the user - like the sites visited. There may be times, however, when the users don't want people with access to their computer to see this information, such as when shopping for a present. Private Browsing allows the users to browse the Internet without saving any information about which sites and pages they have visited. Private Browsing also includes Tracking Protection in Private Browsing, which prevents companies from tracking the browsing history across multiple sites.[https://support.mozilla.org/en-US/kb/private-browsing-use-firefox-without-history]&lt;br /&gt;
&lt;br /&gt;
==Installing Servo==&lt;br /&gt;
&lt;br /&gt;
===Prerequisites on Debian based linuxes===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    sudo apt-get install curl freeglut3-dev autoconf \&lt;br /&gt;
    libfreetype6-dev libgl1-mesa-dri libglib2.0-dev xorg-dev \&lt;br /&gt;
    gperf g++ build-essential cmake virtualenv python-pip \&lt;br /&gt;
    libssl-dev libbz2-dev libosmesa6-dev libxmu6 libxmu-dev \&lt;br /&gt;
    libglu1-mesa-dev libgles2-mesa-dev libegl1-mesa-dev&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Building Servo=== &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git clone https://github.com/servo/servo&lt;br /&gt;
cd servo&lt;br /&gt;
./mach build --dev&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Running Servo===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
./mach run [url] --devtools &amp;lt;port number&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Implementation==&lt;br /&gt;
&lt;br /&gt;
The below mentioned steps were followed to implement private browsing. The detailed requirements are described in the document available here:[https://github.com/servo/servo/wiki/Private-browsing-student-project].&lt;br /&gt;
&lt;br /&gt;
===Step 1===&lt;br /&gt;
&lt;br /&gt;
As per the requirement, we have added the is_private member to the struct IFrameLoadInfo to check if it's a private iframe or not&lt;br /&gt;
&lt;br /&gt;
[[File: Selection_001.png ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We have implemented the function to set this member based on the mozprivatebrowsing attribute.&lt;br /&gt;
&lt;br /&gt;
[[File: MozprivateBrowsing.png]]&lt;br /&gt;
&lt;br /&gt;
===Step 2===&lt;br /&gt;
&lt;br /&gt;
We have created an enum 'ConstellationMsg' that holds an isPrivate message containing pipelineId and sender as attributes.&lt;br /&gt;
&lt;br /&gt;
[[File: Enum_Struct.png]]&lt;br /&gt;
&lt;br /&gt;
The below member has been added to the pipeline struct to check if it's private&lt;br /&gt;
&lt;br /&gt;
[[File: Selection_004.png ]]&lt;br /&gt;
&lt;br /&gt;
===Step 3===&lt;br /&gt;
&lt;br /&gt;
The below function has been implemented to check whether the pipeline is private or not.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Pipeline_Function.png]]&lt;br /&gt;
&lt;br /&gt;
===Design Pattern===&lt;br /&gt;
As per the design document, we have added few fields/members, defined an enum and added a method. The requirements did not require any design pattern to be implemented as such and thus, we have not used any design pattern for the code we have written.&lt;br /&gt;
&lt;br /&gt;
===Testing===&lt;br /&gt;
For this particular project, an automated test is to be created to test the functionality which is part of the subsequent steps and is not included in the initial steps, and hence at this point of time the users/reviewers are not supposed perform any manual testing or testing from GUI. More details about writing the automated test for this project can be found [https://github.com/servo/servo/blob/master/tests/wpt/README.md#writing-new-tests here].&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Vrajadh</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Pipeline_Function.png&amp;diff=101641</id>
		<title>File:Pipeline Function.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Pipeline_Function.png&amp;diff=101641"/>
		<updated>2016-04-02T02:43:39Z</updated>

		<summary type="html">&lt;p&gt;Vrajadh: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Vrajadh</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2016/Implement_private_browsing&amp;diff=101639</id>
		<title>CSC/ECE 517 Spring 2016/Implement private browsing</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2016/Implement_private_browsing&amp;diff=101639"/>
		<updated>2016-04-02T02:41:32Z</updated>

		<summary type="html">&lt;p&gt;Vrajadh: /* Step 2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Implement Private Browsing'''&lt;br /&gt;
&lt;br /&gt;
Servo&amp;lt;ref&amp;gt;https://github.com/servo/servo&amp;lt;/ref&amp;gt; is a prototype web browser engine written in the RUST language. Servo currently does not support the mode where the cookies, login, history and downloads are forgotten after the session ends. The goal of this project is to implement incognito/private browsing feature in Servo.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
Servo is an experimental web browser layout engine being developed by Mozilla Research. Servo is written in the Rust&amp;lt;ref&amp;gt; https://doc.rust-lang.org/ &amp;lt;/ref&amp;gt; language, which is also being developed by Mozilla Research. The language is being refined through feedback from Servo development, and writing the Rust compiler itself. Rust is a systems programming language similar to C and C++ in syntax (but semantically very different). The emphasis is on speed, safety, concurrency and control of memory layout.&lt;br /&gt;
&lt;br /&gt;
==Motivation==&lt;br /&gt;
&lt;br /&gt;
When a user browses the web, Firefox remembers lots of information for the user - like the sites visited. There may be times, however, when the users don't want people with access to their computer to see this information, such as when shopping for a present. Private Browsing allows the users to browse the Internet without saving any information about which sites and pages they have visited. Private Browsing also includes Tracking Protection in Private Browsing, which prevents companies from tracking the browsing history across multiple sites.[https://support.mozilla.org/en-US/kb/private-browsing-use-firefox-without-history]&lt;br /&gt;
&lt;br /&gt;
==Installing Servo==&lt;br /&gt;
&lt;br /&gt;
===Prerequisites on Debian based linuxes===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    sudo apt-get install curl freeglut3-dev autoconf \&lt;br /&gt;
    libfreetype6-dev libgl1-mesa-dri libglib2.0-dev xorg-dev \&lt;br /&gt;
    gperf g++ build-essential cmake virtualenv python-pip \&lt;br /&gt;
    libssl-dev libbz2-dev libosmesa6-dev libxmu6 libxmu-dev \&lt;br /&gt;
    libglu1-mesa-dev libgles2-mesa-dev libegl1-mesa-dev&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Building Servo=== &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git clone https://github.com/servo/servo&lt;br /&gt;
cd servo&lt;br /&gt;
./mach build --dev&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Running Servo===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
./mach run [url] --devtools &amp;lt;port number&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Implementation==&lt;br /&gt;
&lt;br /&gt;
The below mentioned steps were followed to implement private browsing. The detailed requirements are described in the document available here:[https://github.com/servo/servo/wiki/Private-browsing-student-project].&lt;br /&gt;
&lt;br /&gt;
===Step 1===&lt;br /&gt;
&lt;br /&gt;
As per the requirement, we have added the is_private member to the struct IFrameLoadInfo to check if it's a private iframe or not&lt;br /&gt;
&lt;br /&gt;
[[File: Selection_001.png ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We have implemented the function to set this member based on the mozprivatebrowsing attribute.&lt;br /&gt;
&lt;br /&gt;
[[File: MozprivateBrowsing.png]]&lt;br /&gt;
&lt;br /&gt;
===Step 2===&lt;br /&gt;
&lt;br /&gt;
We have created an enum 'ConstellationMsg' that holds an isPrivate message containing pipelineId and sender as attributes.&lt;br /&gt;
&lt;br /&gt;
[[File: Enum_Struct.png]]&lt;br /&gt;
&lt;br /&gt;
The below member has been added to the pipeline struct to check if it's private&lt;br /&gt;
&lt;br /&gt;
[[File: Selection_004.png ]]&lt;br /&gt;
&lt;br /&gt;
===Step 2===&lt;br /&gt;
&lt;br /&gt;
The below function is to check whether the pipeline is private or not.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Pipeline_Function.png]]&lt;br /&gt;
&lt;br /&gt;
===Design Pattern===&lt;br /&gt;
As per the design document, we have added few fields/members, defined an enum and added a method. The requirements did not require any design pattern to be implemented as such and thus, we have not used any design pattern for the code we have written.&lt;br /&gt;
&lt;br /&gt;
===Testing===&lt;br /&gt;
For this particular project, an automated test is to be created to test the functionality which is part of the subsequent steps and is not included in the initial steps, and hence at this point of time the users/reviewers are not supposed perform any manual testing or testing from GUI. More details about writing the automated test for this project can be found [https://github.com/servo/servo/blob/master/tests/wpt/README.md#writing-new-tests here].&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Vrajadh</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2016/Implement_private_browsing&amp;diff=101638</id>
		<title>CSC/ECE 517 Spring 2016/Implement private browsing</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2016/Implement_private_browsing&amp;diff=101638"/>
		<updated>2016-04-02T02:41:08Z</updated>

		<summary type="html">&lt;p&gt;Vrajadh: /* Step 2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Implement Private Browsing'''&lt;br /&gt;
&lt;br /&gt;
Servo&amp;lt;ref&amp;gt;https://github.com/servo/servo&amp;lt;/ref&amp;gt; is a prototype web browser engine written in the RUST language. Servo currently does not support the mode where the cookies, login, history and downloads are forgotten after the session ends. The goal of this project is to implement incognito/private browsing feature in Servo.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
Servo is an experimental web browser layout engine being developed by Mozilla Research. Servo is written in the Rust&amp;lt;ref&amp;gt; https://doc.rust-lang.org/ &amp;lt;/ref&amp;gt; language, which is also being developed by Mozilla Research. The language is being refined through feedback from Servo development, and writing the Rust compiler itself. Rust is a systems programming language similar to C and C++ in syntax (but semantically very different). The emphasis is on speed, safety, concurrency and control of memory layout.&lt;br /&gt;
&lt;br /&gt;
==Motivation==&lt;br /&gt;
&lt;br /&gt;
When a user browses the web, Firefox remembers lots of information for the user - like the sites visited. There may be times, however, when the users don't want people with access to their computer to see this information, such as when shopping for a present. Private Browsing allows the users to browse the Internet without saving any information about which sites and pages they have visited. Private Browsing also includes Tracking Protection in Private Browsing, which prevents companies from tracking the browsing history across multiple sites.[https://support.mozilla.org/en-US/kb/private-browsing-use-firefox-without-history]&lt;br /&gt;
&lt;br /&gt;
==Installing Servo==&lt;br /&gt;
&lt;br /&gt;
===Prerequisites on Debian based linuxes===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    sudo apt-get install curl freeglut3-dev autoconf \&lt;br /&gt;
    libfreetype6-dev libgl1-mesa-dri libglib2.0-dev xorg-dev \&lt;br /&gt;
    gperf g++ build-essential cmake virtualenv python-pip \&lt;br /&gt;
    libssl-dev libbz2-dev libosmesa6-dev libxmu6 libxmu-dev \&lt;br /&gt;
    libglu1-mesa-dev libgles2-mesa-dev libegl1-mesa-dev&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Building Servo=== &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git clone https://github.com/servo/servo&lt;br /&gt;
cd servo&lt;br /&gt;
./mach build --dev&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Running Servo===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
./mach run [url] --devtools &amp;lt;port number&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Implementation==&lt;br /&gt;
&lt;br /&gt;
The below mentioned steps were followed to implement private browsing. The detailed requirements are described in the document available here:[https://github.com/servo/servo/wiki/Private-browsing-student-project].&lt;br /&gt;
&lt;br /&gt;
===Step 1===&lt;br /&gt;
&lt;br /&gt;
As per the requirement, we have added the is_private member to the struct IFrameLoadInfo to check if it's a private iframe or not&lt;br /&gt;
&lt;br /&gt;
[[File: Selection_001.png ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We have implemented the function to set this member based on the mozprivatebrowsing attribute.&lt;br /&gt;
&lt;br /&gt;
[[File: MozprivateBrowsing.png]]&lt;br /&gt;
&lt;br /&gt;
===Step 2===&lt;br /&gt;
&lt;br /&gt;
We have created an enum 'ConstellationMsg' that holds an isPrivate message containing pipelineId and sender as attributes.&lt;br /&gt;
&lt;br /&gt;
[[File: Enum_Struct.png]]&lt;br /&gt;
&lt;br /&gt;
The below member has been added to the pipeline struct to check if it's private&lt;br /&gt;
&lt;br /&gt;
[[File: Selection_004.png ]]&lt;br /&gt;
&lt;br /&gt;
===Step 2===&lt;br /&gt;
&lt;br /&gt;
The below function is to check whether the pipeline is private or not.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Pipeline_Function.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Design Pattern===&lt;br /&gt;
As per the design document, we have added few fields/members, defined an enum and added a method. The requirements did not require any design pattern to be implemented as such and thus, we have not used any design pattern for the code we have written.&lt;br /&gt;
&lt;br /&gt;
===Testing===&lt;br /&gt;
For this particular project, an automated test is to be created to test the functionality which is part of the subsequent steps and is not included in the initial steps, and hence at this point of time the users/reviewers are not supposed perform any manual testing or testing from GUI. More details about writing the automated test for this project can be found [https://github.com/servo/servo/blob/master/tests/wpt/README.md#writing-new-tests here].&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Vrajadh</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Enum_Struct.png&amp;diff=101637</id>
		<title>File:Enum Struct.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Enum_Struct.png&amp;diff=101637"/>
		<updated>2016-04-02T02:40:05Z</updated>

		<summary type="html">&lt;p&gt;Vrajadh: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Vrajadh</name></author>
	</entry>
</feed>