<?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=Ddu3</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=Ddu3"/>
	<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=Special:Contributions/Ddu3"/>
	<updated>2026-05-15T18:48:46Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.41.0</generator>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1676_Role-based_reviewing&amp;diff=106090</id>
		<title>CSC/ECE 517 Fall 2016 E1676 Role-based reviewing</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1676_Role-based_reviewing&amp;diff=106090"/>
		<updated>2016-12-02T22:16:32Z</updated>

		<summary type="html">&lt;p&gt;Ddu3: /* Database Design */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Purpose   ==&lt;br /&gt;
In the current version of Expertiza, members among a team can evaluate each other’s contribution and give appropriate scores based on the same questionnaire. However, in the lifetime of software development, members in a team often take on different roles whose works content are vastly differentiated. Like in an agile development environment, such as Scrum, there are typically [http://scrummethodology.com/the-scrum-team-role/ seven roles group members] can take: software engineer, architect, programmer, analyst, QA expert, tester and UI designers . Job description and evaluation entailed are vastly varied among these roles, thus a generic assessment rubric cannot hold reasonably.&lt;br /&gt;
&lt;br /&gt;
The purpose or the rationale of our project is that we want to give project members the option to evaluate each other's work based on the specific role or duty they take in the development process. This can ensure a reasonable assessment for different duties and can also help to improve the utility using members-reviewing in the whole reviewing process.&lt;br /&gt;
&lt;br /&gt;
== Task Description==&lt;br /&gt;
Task Description:&lt;br /&gt;
There are general three aspects we would do in order to achieve the Role-based reviewing function. &lt;br /&gt;
&lt;br /&gt;
1) A new option (check box) would be added to the Review Strategy tab from the instructor view when he creates a new assignment.  What’s more, the instructor can create different roles or duties available for the assignment by typing into a text filed. The instructor also has the power to allow multiple members to choose for the same duty.&lt;br /&gt;
&lt;br /&gt;
2) In the Rubrics tab from the instructor view, New rubric would be generated by creating different questionnaires for different roles when adding new assignment.&lt;br /&gt;
&lt;br /&gt;
3) A new option (drop box) would be added to the “Your team” page from the student view when an assignment was created to be role-based reviewing. Student can choose their roles or duties from the drop box which were generated by the instructor for this specific assignment. When the instructor enabled the multiple selection option, different members in the team can choose same duties for this assignment.&lt;br /&gt;
&lt;br /&gt;
Tasks can be viewed more clearly by the graph below:&lt;br /&gt;
  &lt;br /&gt;
   &lt;br /&gt;
   &lt;br /&gt;
[[File:Drawing.png]]&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
=== Database Design ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
We would create a new table called '''assignment_duties'''.&lt;br /&gt;
!Field Name !!Type !!Description&lt;br /&gt;
|-&lt;br /&gt;
!assignment_id&lt;br /&gt;
|int(11)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!duty_name&lt;br /&gt;
|int(11)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!questionnaire_id&lt;br /&gt;
|int(11)&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
We should add '''duty_based''', '''multiple_duty_based''' and '''all_duty_name''' into '''assignments''' table to store the duty name&lt;br /&gt;
!Field Name !!Type !!Description&lt;br /&gt;
|-&lt;br /&gt;
!duty_based&lt;br /&gt;
|boolean&lt;br /&gt;
|If the assignment's team is duty based, it should be '''true'''. If not, it should be '''false'''.&lt;br /&gt;
|-&lt;br /&gt;
!allow_duty_share&lt;br /&gt;
|boolean&lt;br /&gt;
|If multiple people could choose one duty in the assignment, it should be '''true'''. If not, it should be '''false'''.&lt;br /&gt;
|-&lt;br /&gt;
!duty_names&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|It would save all kinds of duties in the assignment.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
We should add '''duty''' into '''teams_users''' table to store the duty.&lt;br /&gt;
!Field Name !!Type !!Description&lt;br /&gt;
|-&lt;br /&gt;
!duty&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|It would save this user's duty in this team.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Updates==&lt;br /&gt;
&lt;br /&gt;
Below are the key files modified:&lt;br /&gt;
&lt;br /&gt;
===Controllers===&lt;br /&gt;
 1. expertiza/app/controllers/assignments_controller.rb:&lt;br /&gt;
    def edit&lt;br /&gt;
        a. add &amp;quot;role based assignment&amp;quot; option to review strategy section.&lt;br /&gt;
        b. add roles to current assignment.&lt;br /&gt;
        c. add questionnaires to these roles separately. &lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
 2. expertiza/app/controllers/questionnaires_controller.rb&lt;br /&gt;
&lt;br /&gt;
===Models===&lt;br /&gt;
&lt;br /&gt;
See [[#Design|Database Design]] section above.&lt;br /&gt;
&lt;br /&gt;
===Views===&lt;br /&gt;
&lt;br /&gt;
 1. expertiza/app/views/assignments/edit/_review_strategy.html.erb &lt;br /&gt;
  1.1. add a &amp;quot;role based&amp;quot; strategy checkbox here.&lt;br /&gt;
  1.2. add roles input fields if you check the &amp;quot;role based&amp;quot; strategy checkbox.&lt;br /&gt;
 2. expertiza/app/views/assignments/edit/_rubrics.html.erb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:review_strategy.png]]&lt;br /&gt;
&lt;br /&gt;
== Testing Details ==&lt;br /&gt;
In our project, we are providing an option of adding duty for different team members in an assignment and giving review options based on their duty. We will add following functionalities:&lt;br /&gt;
1. How instructor create assignment with duties/roles&lt;br /&gt;
2. How students take duties from a given list of duties&lt;br /&gt;
3. How teammate evaluation rubric assign different review questionnaire based on duty.&lt;br /&gt;
&lt;br /&gt;
=== UI Testing ===&lt;br /&gt;
UI will be tested manually. First, we will test creating an assignment as an instructor with different duties and assign different review questionnaires to each duty. Then we will login in as a student and take a duty from given list of duties. We will try covering all edge case scenarios in test cases section.&lt;br /&gt;
&lt;br /&gt;
=== Test Cases ===&lt;br /&gt;
Following will be the test cases:&lt;br /&gt;
&lt;br /&gt;
1. Login in as an Instructor:&lt;br /&gt;
&lt;br /&gt;
  1.a] While creating an assignment, in the Review Strategy tab provide the list of roles/duties possible for teammates. There will be one text box to add      &lt;br /&gt;
       duty. To add more duties click on &amp;quot;add more&amp;quot;. &lt;br /&gt;
  1.b] Mark the check box that says multiple team members can have the same duty.&lt;br /&gt;
  1.c] Go to the Rubrics tab and select different questionnaires for different duty.    &lt;br /&gt;
  After creating this assignment students should be able to see different duties in &amp;quot;Your Team&amp;quot; page and should be able to select any duty. Multiple students &lt;br /&gt;
  should be able to select same duty.&lt;br /&gt;
&lt;br /&gt;
2. Login in as an Instructor:&lt;br /&gt;
&lt;br /&gt;
  2.a] Repeat steps 1.a and 1.b &lt;br /&gt;
  2.b] This time do not mark the check box that says &amp;quot;multiple team members can have the same duty&amp;quot;.&lt;br /&gt;
  After creating this assignment students should be able to see different duties in &amp;quot;Your Team&amp;quot; page. This time student should not be able to select a duty if &lt;br /&gt;
  it was already selected.&lt;br /&gt;
&lt;br /&gt;
3. Login in as a Student&lt;br /&gt;
&lt;br /&gt;
   When you login in as a student you should be able to pick different duties assigned by the instructor. If multiple members are not allowed to have same duty &lt;br /&gt;
   then you should not be able to pick a duty if it was already selected by some other member.&lt;br /&gt;
&lt;br /&gt;
4. Login in as a Reviewer&lt;br /&gt;
&lt;br /&gt;
   When you login in as a reviewer you should get the questionnaire based on your duty. For example, if you are a software engineer you should get the review &lt;br /&gt;
   questionnaire assigned to software engineer. &lt;br /&gt;
   Different roles will be assigned different questionnaires for review.&lt;br /&gt;
&lt;br /&gt;
=== RSpec ===&lt;br /&gt;
&lt;br /&gt;
For functional testing, we will use RSpec. It uses Behavior Driven Development (BDD) for testing functionality of the system. It provides way to describe specific functionality of the system being tested and helps in better visualization of test cases.&lt;br /&gt;
&lt;br /&gt;
=== Capybara ===&lt;br /&gt;
We will use Capybara  for automating the manual test cases. It is a web-based automation framework and coupled with RSpec. It allow developers to write the test cases which simulate the whole scenario of manual testing.&lt;br /&gt;
&lt;br /&gt;
===Factory Girl===&lt;br /&gt;
We will use Factory Girl for creating data factory. Factory Girl is a Ruby Gem that allow users to create templates for valid and re-usable objects. It allows more customization when user instantiate the objects and it aims to ensure that user have a valid object to work with.&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;br /&gt;
&lt;br /&gt;
Expertiza[https://github.com/expertiza/expertiza]&lt;br /&gt;
&lt;br /&gt;
RSpec [http://rspec.info/]&lt;br /&gt;
&lt;br /&gt;
ScrumRoles [http://scrummethodology.com/the-scrum-team-role]&lt;br /&gt;
&lt;br /&gt;
CapyBara [https://github.com/jnicklas/capybara]&lt;br /&gt;
&lt;br /&gt;
FactoryGirl [https://github.com/thoughtbot/factory_girl]&lt;/div&gt;</summary>
		<author><name>Ddu3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1676_Role-based_reviewing&amp;diff=106089</id>
		<title>CSC/ECE 517 Fall 2016 E1676 Role-based reviewing</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1676_Role-based_reviewing&amp;diff=106089"/>
		<updated>2016-12-02T22:16:18Z</updated>

		<summary type="html">&lt;p&gt;Ddu3: /* Database Design */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Purpose   ==&lt;br /&gt;
In the current version of Expertiza, members among a team can evaluate each other’s contribution and give appropriate scores based on the same questionnaire. However, in the lifetime of software development, members in a team often take on different roles whose works content are vastly differentiated. Like in an agile development environment, such as Scrum, there are typically [http://scrummethodology.com/the-scrum-team-role/ seven roles group members] can take: software engineer, architect, programmer, analyst, QA expert, tester and UI designers . Job description and evaluation entailed are vastly varied among these roles, thus a generic assessment rubric cannot hold reasonably.&lt;br /&gt;
&lt;br /&gt;
The purpose or the rationale of our project is that we want to give project members the option to evaluate each other's work based on the specific role or duty they take in the development process. This can ensure a reasonable assessment for different duties and can also help to improve the utility using members-reviewing in the whole reviewing process.&lt;br /&gt;
&lt;br /&gt;
== Task Description==&lt;br /&gt;
Task Description:&lt;br /&gt;
There are general three aspects we would do in order to achieve the Role-based reviewing function. &lt;br /&gt;
&lt;br /&gt;
1) A new option (check box) would be added to the Review Strategy tab from the instructor view when he creates a new assignment.  What’s more, the instructor can create different roles or duties available for the assignment by typing into a text filed. The instructor also has the power to allow multiple members to choose for the same duty.&lt;br /&gt;
&lt;br /&gt;
2) In the Rubrics tab from the instructor view, New rubric would be generated by creating different questionnaires for different roles when adding new assignment.&lt;br /&gt;
&lt;br /&gt;
3) A new option (drop box) would be added to the “Your team” page from the student view when an assignment was created to be role-based reviewing. Student can choose their roles or duties from the drop box which were generated by the instructor for this specific assignment. When the instructor enabled the multiple selection option, different members in the team can choose same duties for this assignment.&lt;br /&gt;
&lt;br /&gt;
Tasks can be viewed more clearly by the graph below:&lt;br /&gt;
  &lt;br /&gt;
   &lt;br /&gt;
   &lt;br /&gt;
[[File:Drawing.png]]&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
=== Database Design ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
We would create a new table called '''assignment_duties'''.&lt;br /&gt;
!Field Name !!Type !!Description&lt;br /&gt;
|-&lt;br /&gt;
!assignment_id&lt;br /&gt;
|int(11)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!duty_name&lt;br /&gt;
|int(11)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!questionnaire_id&lt;br /&gt;
|int(11)&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
We should add '''duty_based''', '''multiple_duty_based''' and '''all_duty_name''' into '''assignments''' table to store the duty name&lt;br /&gt;
!Field Name !!Type !!Description&lt;br /&gt;
|-&lt;br /&gt;
!duty_based&lt;br /&gt;
|boolean&lt;br /&gt;
|If the assignment's team is duty based, it should be '''true'''. If not, it should be '''false'''.&lt;br /&gt;
|-&lt;br /&gt;
!allow_duty_share&lt;br /&gt;
|boolean&lt;br /&gt;
|If multiple people could choose one duty in the assignment, it should be '''true'''. If not, it should be '''false'''.&lt;br /&gt;
|-&lt;br /&gt;
!duty_names&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|It would save all kinds of duties in the assignment.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
We should add '''duty''' into '''team_user''' table to store the duty.&lt;br /&gt;
!Field Name !!Type !!Description&lt;br /&gt;
|-&lt;br /&gt;
!duty&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|It would save this user's duty in this team.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Updates==&lt;br /&gt;
&lt;br /&gt;
Below are the key files modified:&lt;br /&gt;
&lt;br /&gt;
===Controllers===&lt;br /&gt;
 1. expertiza/app/controllers/assignments_controller.rb:&lt;br /&gt;
    def edit&lt;br /&gt;
        a. add &amp;quot;role based assignment&amp;quot; option to review strategy section.&lt;br /&gt;
        b. add roles to current assignment.&lt;br /&gt;
        c. add questionnaires to these roles separately. &lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
 2. expertiza/app/controllers/questionnaires_controller.rb&lt;br /&gt;
&lt;br /&gt;
===Models===&lt;br /&gt;
&lt;br /&gt;
See [[#Design|Database Design]] section above.&lt;br /&gt;
&lt;br /&gt;
===Views===&lt;br /&gt;
&lt;br /&gt;
 1. expertiza/app/views/assignments/edit/_review_strategy.html.erb &lt;br /&gt;
  1.1. add a &amp;quot;role based&amp;quot; strategy checkbox here.&lt;br /&gt;
  1.2. add roles input fields if you check the &amp;quot;role based&amp;quot; strategy checkbox.&lt;br /&gt;
 2. expertiza/app/views/assignments/edit/_rubrics.html.erb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:review_strategy.png]]&lt;br /&gt;
&lt;br /&gt;
== Testing Details ==&lt;br /&gt;
In our project, we are providing an option of adding duty for different team members in an assignment and giving review options based on their duty. We will add following functionalities:&lt;br /&gt;
1. How instructor create assignment with duties/roles&lt;br /&gt;
2. How students take duties from a given list of duties&lt;br /&gt;
3. How teammate evaluation rubric assign different review questionnaire based on duty.&lt;br /&gt;
&lt;br /&gt;
=== UI Testing ===&lt;br /&gt;
UI will be tested manually. First, we will test creating an assignment as an instructor with different duties and assign different review questionnaires to each duty. Then we will login in as a student and take a duty from given list of duties. We will try covering all edge case scenarios in test cases section.&lt;br /&gt;
&lt;br /&gt;
=== Test Cases ===&lt;br /&gt;
Following will be the test cases:&lt;br /&gt;
&lt;br /&gt;
1. Login in as an Instructor:&lt;br /&gt;
&lt;br /&gt;
  1.a] While creating an assignment, in the Review Strategy tab provide the list of roles/duties possible for teammates. There will be one text box to add      &lt;br /&gt;
       duty. To add more duties click on &amp;quot;add more&amp;quot;. &lt;br /&gt;
  1.b] Mark the check box that says multiple team members can have the same duty.&lt;br /&gt;
  1.c] Go to the Rubrics tab and select different questionnaires for different duty.    &lt;br /&gt;
  After creating this assignment students should be able to see different duties in &amp;quot;Your Team&amp;quot; page and should be able to select any duty. Multiple students &lt;br /&gt;
  should be able to select same duty.&lt;br /&gt;
&lt;br /&gt;
2. Login in as an Instructor:&lt;br /&gt;
&lt;br /&gt;
  2.a] Repeat steps 1.a and 1.b &lt;br /&gt;
  2.b] This time do not mark the check box that says &amp;quot;multiple team members can have the same duty&amp;quot;.&lt;br /&gt;
  After creating this assignment students should be able to see different duties in &amp;quot;Your Team&amp;quot; page. This time student should not be able to select a duty if &lt;br /&gt;
  it was already selected.&lt;br /&gt;
&lt;br /&gt;
3. Login in as a Student&lt;br /&gt;
&lt;br /&gt;
   When you login in as a student you should be able to pick different duties assigned by the instructor. If multiple members are not allowed to have same duty &lt;br /&gt;
   then you should not be able to pick a duty if it was already selected by some other member.&lt;br /&gt;
&lt;br /&gt;
4. Login in as a Reviewer&lt;br /&gt;
&lt;br /&gt;
   When you login in as a reviewer you should get the questionnaire based on your duty. For example, if you are a software engineer you should get the review &lt;br /&gt;
   questionnaire assigned to software engineer. &lt;br /&gt;
   Different roles will be assigned different questionnaires for review.&lt;br /&gt;
&lt;br /&gt;
=== RSpec ===&lt;br /&gt;
&lt;br /&gt;
For functional testing, we will use RSpec. It uses Behavior Driven Development (BDD) for testing functionality of the system. It provides way to describe specific functionality of the system being tested and helps in better visualization of test cases.&lt;br /&gt;
&lt;br /&gt;
=== Capybara ===&lt;br /&gt;
We will use Capybara  for automating the manual test cases. It is a web-based automation framework and coupled with RSpec. It allow developers to write the test cases which simulate the whole scenario of manual testing.&lt;br /&gt;
&lt;br /&gt;
===Factory Girl===&lt;br /&gt;
We will use Factory Girl for creating data factory. Factory Girl is a Ruby Gem that allow users to create templates for valid and re-usable objects. It allows more customization when user instantiate the objects and it aims to ensure that user have a valid object to work with.&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;br /&gt;
&lt;br /&gt;
Expertiza[https://github.com/expertiza/expertiza]&lt;br /&gt;
&lt;br /&gt;
RSpec [http://rspec.info/]&lt;br /&gt;
&lt;br /&gt;
ScrumRoles [http://scrummethodology.com/the-scrum-team-role]&lt;br /&gt;
&lt;br /&gt;
CapyBara [https://github.com/jnicklas/capybara]&lt;br /&gt;
&lt;br /&gt;
FactoryGirl [https://github.com/thoughtbot/factory_girl]&lt;/div&gt;</summary>
		<author><name>Ddu3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1676_Role-based_reviewing&amp;diff=106088</id>
		<title>CSC/ECE 517 Fall 2016 E1676 Role-based reviewing</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1676_Role-based_reviewing&amp;diff=106088"/>
		<updated>2016-12-02T22:15:18Z</updated>

		<summary type="html">&lt;p&gt;Ddu3: /* Database Design */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Purpose   ==&lt;br /&gt;
In the current version of Expertiza, members among a team can evaluate each other’s contribution and give appropriate scores based on the same questionnaire. However, in the lifetime of software development, members in a team often take on different roles whose works content are vastly differentiated. Like in an agile development environment, such as Scrum, there are typically [http://scrummethodology.com/the-scrum-team-role/ seven roles group members] can take: software engineer, architect, programmer, analyst, QA expert, tester and UI designers . Job description and evaluation entailed are vastly varied among these roles, thus a generic assessment rubric cannot hold reasonably.&lt;br /&gt;
&lt;br /&gt;
The purpose or the rationale of our project is that we want to give project members the option to evaluate each other's work based on the specific role or duty they take in the development process. This can ensure a reasonable assessment for different duties and can also help to improve the utility using members-reviewing in the whole reviewing process.&lt;br /&gt;
&lt;br /&gt;
== Task Description==&lt;br /&gt;
Task Description:&lt;br /&gt;
There are general three aspects we would do in order to achieve the Role-based reviewing function. &lt;br /&gt;
&lt;br /&gt;
1) A new option (check box) would be added to the Review Strategy tab from the instructor view when he creates a new assignment.  What’s more, the instructor can create different roles or duties available for the assignment by typing into a text filed. The instructor also has the power to allow multiple members to choose for the same duty.&lt;br /&gt;
&lt;br /&gt;
2) In the Rubrics tab from the instructor view, New rubric would be generated by creating different questionnaires for different roles when adding new assignment.&lt;br /&gt;
&lt;br /&gt;
3) A new option (drop box) would be added to the “Your team” page from the student view when an assignment was created to be role-based reviewing. Student can choose their roles or duties from the drop box which were generated by the instructor for this specific assignment. When the instructor enabled the multiple selection option, different members in the team can choose same duties for this assignment.&lt;br /&gt;
&lt;br /&gt;
Tasks can be viewed more clearly by the graph below:&lt;br /&gt;
  &lt;br /&gt;
   &lt;br /&gt;
   &lt;br /&gt;
[[File:Drawing.png]]&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
=== Database Design ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
We would create a new table called '''assignment_duties'''.&lt;br /&gt;
!Field Name !!Type !!Description&lt;br /&gt;
|-&lt;br /&gt;
!assignment_id&lt;br /&gt;
|int(11)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!duty_name&lt;br /&gt;
|int(11)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!questionnaire_id&lt;br /&gt;
|int(11)&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
We should add '''duty_based''', '''multiple_duty_based''' and '''all_duty_name''' into '''assignments''' table to store the duty name&lt;br /&gt;
!Field Name !!Type !!Description&lt;br /&gt;
|-&lt;br /&gt;
!duty_based&lt;br /&gt;
|boolean&lt;br /&gt;
|If the assignment's team is duty based, it should be '''true'''. If not, it should be '''false'''.&lt;br /&gt;
|-&lt;br /&gt;
!allow_duty_share&lt;br /&gt;
|boolean&lt;br /&gt;
|If multiple people could choose one duty in the assignment, it should be '''true'''. If not, it should be '''false'''.&lt;br /&gt;
|-&lt;br /&gt;
!duty_names&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|It would save all kinds of duties in the assignment.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
We should add '''duty''' into '''team_user''' table to store the duty.&lt;br /&gt;
!Field Name !!Type !!Description&lt;br /&gt;
|-&lt;br /&gt;
!duty_names&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|It would save this user's duty in this team.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Updates==&lt;br /&gt;
&lt;br /&gt;
Below are the key files modified:&lt;br /&gt;
&lt;br /&gt;
===Controllers===&lt;br /&gt;
 1. expertiza/app/controllers/assignments_controller.rb:&lt;br /&gt;
    def edit&lt;br /&gt;
        a. add &amp;quot;role based assignment&amp;quot; option to review strategy section.&lt;br /&gt;
        b. add roles to current assignment.&lt;br /&gt;
        c. add questionnaires to these roles separately. &lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
 2. expertiza/app/controllers/questionnaires_controller.rb&lt;br /&gt;
&lt;br /&gt;
===Models===&lt;br /&gt;
&lt;br /&gt;
See [[#Design|Database Design]] section above.&lt;br /&gt;
&lt;br /&gt;
===Views===&lt;br /&gt;
&lt;br /&gt;
 1. expertiza/app/views/assignments/edit/_review_strategy.html.erb &lt;br /&gt;
  1.1. add a &amp;quot;role based&amp;quot; strategy checkbox here.&lt;br /&gt;
  1.2. add roles input fields if you check the &amp;quot;role based&amp;quot; strategy checkbox.&lt;br /&gt;
 2. expertiza/app/views/assignments/edit/_rubrics.html.erb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:review_strategy.png]]&lt;br /&gt;
&lt;br /&gt;
== Testing Details ==&lt;br /&gt;
In our project, we are providing an option of adding duty for different team members in an assignment and giving review options based on their duty. We will add following functionalities:&lt;br /&gt;
1. How instructor create assignment with duties/roles&lt;br /&gt;
2. How students take duties from a given list of duties&lt;br /&gt;
3. How teammate evaluation rubric assign different review questionnaire based on duty.&lt;br /&gt;
&lt;br /&gt;
=== UI Testing ===&lt;br /&gt;
UI will be tested manually. First, we will test creating an assignment as an instructor with different duties and assign different review questionnaires to each duty. Then we will login in as a student and take a duty from given list of duties. We will try covering all edge case scenarios in test cases section.&lt;br /&gt;
&lt;br /&gt;
=== Test Cases ===&lt;br /&gt;
Following will be the test cases:&lt;br /&gt;
&lt;br /&gt;
1. Login in as an Instructor:&lt;br /&gt;
&lt;br /&gt;
  1.a] While creating an assignment, in the Review Strategy tab provide the list of roles/duties possible for teammates. There will be one text box to add      &lt;br /&gt;
       duty. To add more duties click on &amp;quot;add more&amp;quot;. &lt;br /&gt;
  1.b] Mark the check box that says multiple team members can have the same duty.&lt;br /&gt;
  1.c] Go to the Rubrics tab and select different questionnaires for different duty.    &lt;br /&gt;
  After creating this assignment students should be able to see different duties in &amp;quot;Your Team&amp;quot; page and should be able to select any duty. Multiple students &lt;br /&gt;
  should be able to select same duty.&lt;br /&gt;
&lt;br /&gt;
2. Login in as an Instructor:&lt;br /&gt;
&lt;br /&gt;
  2.a] Repeat steps 1.a and 1.b &lt;br /&gt;
  2.b] This time do not mark the check box that says &amp;quot;multiple team members can have the same duty&amp;quot;.&lt;br /&gt;
  After creating this assignment students should be able to see different duties in &amp;quot;Your Team&amp;quot; page. This time student should not be able to select a duty if &lt;br /&gt;
  it was already selected.&lt;br /&gt;
&lt;br /&gt;
3. Login in as a Student&lt;br /&gt;
&lt;br /&gt;
   When you login in as a student you should be able to pick different duties assigned by the instructor. If multiple members are not allowed to have same duty &lt;br /&gt;
   then you should not be able to pick a duty if it was already selected by some other member.&lt;br /&gt;
&lt;br /&gt;
4. Login in as a Reviewer&lt;br /&gt;
&lt;br /&gt;
   When you login in as a reviewer you should get the questionnaire based on your duty. For example, if you are a software engineer you should get the review &lt;br /&gt;
   questionnaire assigned to software engineer. &lt;br /&gt;
   Different roles will be assigned different questionnaires for review.&lt;br /&gt;
&lt;br /&gt;
=== RSpec ===&lt;br /&gt;
&lt;br /&gt;
For functional testing, we will use RSpec. It uses Behavior Driven Development (BDD) for testing functionality of the system. It provides way to describe specific functionality of the system being tested and helps in better visualization of test cases.&lt;br /&gt;
&lt;br /&gt;
=== Capybara ===&lt;br /&gt;
We will use Capybara  for automating the manual test cases. It is a web-based automation framework and coupled with RSpec. It allow developers to write the test cases which simulate the whole scenario of manual testing.&lt;br /&gt;
&lt;br /&gt;
===Factory Girl===&lt;br /&gt;
We will use Factory Girl for creating data factory. Factory Girl is a Ruby Gem that allow users to create templates for valid and re-usable objects. It allows more customization when user instantiate the objects and it aims to ensure that user have a valid object to work with.&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;br /&gt;
&lt;br /&gt;
Expertiza[https://github.com/expertiza/expertiza]&lt;br /&gt;
&lt;br /&gt;
RSpec [http://rspec.info/]&lt;br /&gt;
&lt;br /&gt;
ScrumRoles [http://scrummethodology.com/the-scrum-team-role]&lt;br /&gt;
&lt;br /&gt;
CapyBara [https://github.com/jnicklas/capybara]&lt;br /&gt;
&lt;br /&gt;
FactoryGirl [https://github.com/thoughtbot/factory_girl]&lt;/div&gt;</summary>
		<author><name>Ddu3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1676_Role-based_reviewing&amp;diff=106087</id>
		<title>CSC/ECE 517 Fall 2016 E1676 Role-based reviewing</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1676_Role-based_reviewing&amp;diff=106087"/>
		<updated>2016-12-02T22:15:01Z</updated>

		<summary type="html">&lt;p&gt;Ddu3: /* Database Design */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Purpose   ==&lt;br /&gt;
In the current version of Expertiza, members among a team can evaluate each other’s contribution and give appropriate scores based on the same questionnaire. However, in the lifetime of software development, members in a team often take on different roles whose works content are vastly differentiated. Like in an agile development environment, such as Scrum, there are typically [http://scrummethodology.com/the-scrum-team-role/ seven roles group members] can take: software engineer, architect, programmer, analyst, QA expert, tester and UI designers . Job description and evaluation entailed are vastly varied among these roles, thus a generic assessment rubric cannot hold reasonably.&lt;br /&gt;
&lt;br /&gt;
The purpose or the rationale of our project is that we want to give project members the option to evaluate each other's work based on the specific role or duty they take in the development process. This can ensure a reasonable assessment for different duties and can also help to improve the utility using members-reviewing in the whole reviewing process.&lt;br /&gt;
&lt;br /&gt;
== Task Description==&lt;br /&gt;
Task Description:&lt;br /&gt;
There are general three aspects we would do in order to achieve the Role-based reviewing function. &lt;br /&gt;
&lt;br /&gt;
1) A new option (check box) would be added to the Review Strategy tab from the instructor view when he creates a new assignment.  What’s more, the instructor can create different roles or duties available for the assignment by typing into a text filed. The instructor also has the power to allow multiple members to choose for the same duty.&lt;br /&gt;
&lt;br /&gt;
2) In the Rubrics tab from the instructor view, New rubric would be generated by creating different questionnaires for different roles when adding new assignment.&lt;br /&gt;
&lt;br /&gt;
3) A new option (drop box) would be added to the “Your team” page from the student view when an assignment was created to be role-based reviewing. Student can choose their roles or duties from the drop box which were generated by the instructor for this specific assignment. When the instructor enabled the multiple selection option, different members in the team can choose same duties for this assignment.&lt;br /&gt;
&lt;br /&gt;
Tasks can be viewed more clearly by the graph below:&lt;br /&gt;
  &lt;br /&gt;
   &lt;br /&gt;
   &lt;br /&gt;
[[File:Drawing.png]]&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
=== Database Design ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
We would create a new table called '''assignment_duties'''.&lt;br /&gt;
!Field Name !!Type !!Description&lt;br /&gt;
|-&lt;br /&gt;
!assignment_id&lt;br /&gt;
|int(11)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!duty_name&lt;br /&gt;
|int(11)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!questionnaire_id&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|It saves student's duty in specific team.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
We should add '''duty_based''', '''multiple_duty_based''' and '''all_duty_name''' into '''assignments''' table to store the duty name&lt;br /&gt;
!Field Name !!Type !!Description&lt;br /&gt;
|-&lt;br /&gt;
!duty_based&lt;br /&gt;
|boolean&lt;br /&gt;
|If the assignment's team is duty based, it should be '''true'''. If not, it should be '''false'''.&lt;br /&gt;
|-&lt;br /&gt;
!allow_duty_share&lt;br /&gt;
|boolean&lt;br /&gt;
|If multiple people could choose one duty in the assignment, it should be '''true'''. If not, it should be '''false'''.&lt;br /&gt;
|-&lt;br /&gt;
!duty_names&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|It would save all kinds of duties in the assignment.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
We should add '''duty''' into '''team_user''' table to store the duty.&lt;br /&gt;
!Field Name !!Type !!Description&lt;br /&gt;
|-&lt;br /&gt;
!duty_names&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|It would save this user's duty in this team.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Updates==&lt;br /&gt;
&lt;br /&gt;
Below are the key files modified:&lt;br /&gt;
&lt;br /&gt;
===Controllers===&lt;br /&gt;
 1. expertiza/app/controllers/assignments_controller.rb:&lt;br /&gt;
    def edit&lt;br /&gt;
        a. add &amp;quot;role based assignment&amp;quot; option to review strategy section.&lt;br /&gt;
        b. add roles to current assignment.&lt;br /&gt;
        c. add questionnaires to these roles separately. &lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
 2. expertiza/app/controllers/questionnaires_controller.rb&lt;br /&gt;
&lt;br /&gt;
===Models===&lt;br /&gt;
&lt;br /&gt;
See [[#Design|Database Design]] section above.&lt;br /&gt;
&lt;br /&gt;
===Views===&lt;br /&gt;
&lt;br /&gt;
 1. expertiza/app/views/assignments/edit/_review_strategy.html.erb &lt;br /&gt;
  1.1. add a &amp;quot;role based&amp;quot; strategy checkbox here.&lt;br /&gt;
  1.2. add roles input fields if you check the &amp;quot;role based&amp;quot; strategy checkbox.&lt;br /&gt;
 2. expertiza/app/views/assignments/edit/_rubrics.html.erb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:review_strategy.png]]&lt;br /&gt;
&lt;br /&gt;
== Testing Details ==&lt;br /&gt;
In our project, we are providing an option of adding duty for different team members in an assignment and giving review options based on their duty. We will add following functionalities:&lt;br /&gt;
1. How instructor create assignment with duties/roles&lt;br /&gt;
2. How students take duties from a given list of duties&lt;br /&gt;
3. How teammate evaluation rubric assign different review questionnaire based on duty.&lt;br /&gt;
&lt;br /&gt;
=== UI Testing ===&lt;br /&gt;
UI will be tested manually. First, we will test creating an assignment as an instructor with different duties and assign different review questionnaires to each duty. Then we will login in as a student and take a duty from given list of duties. We will try covering all edge case scenarios in test cases section.&lt;br /&gt;
&lt;br /&gt;
=== Test Cases ===&lt;br /&gt;
Following will be the test cases:&lt;br /&gt;
&lt;br /&gt;
1. Login in as an Instructor:&lt;br /&gt;
&lt;br /&gt;
  1.a] While creating an assignment, in the Review Strategy tab provide the list of roles/duties possible for teammates. There will be one text box to add      &lt;br /&gt;
       duty. To add more duties click on &amp;quot;add more&amp;quot;. &lt;br /&gt;
  1.b] Mark the check box that says multiple team members can have the same duty.&lt;br /&gt;
  1.c] Go to the Rubrics tab and select different questionnaires for different duty.    &lt;br /&gt;
  After creating this assignment students should be able to see different duties in &amp;quot;Your Team&amp;quot; page and should be able to select any duty. Multiple students &lt;br /&gt;
  should be able to select same duty.&lt;br /&gt;
&lt;br /&gt;
2. Login in as an Instructor:&lt;br /&gt;
&lt;br /&gt;
  2.a] Repeat steps 1.a and 1.b &lt;br /&gt;
  2.b] This time do not mark the check box that says &amp;quot;multiple team members can have the same duty&amp;quot;.&lt;br /&gt;
  After creating this assignment students should be able to see different duties in &amp;quot;Your Team&amp;quot; page. This time student should not be able to select a duty if &lt;br /&gt;
  it was already selected.&lt;br /&gt;
&lt;br /&gt;
3. Login in as a Student&lt;br /&gt;
&lt;br /&gt;
   When you login in as a student you should be able to pick different duties assigned by the instructor. If multiple members are not allowed to have same duty &lt;br /&gt;
   then you should not be able to pick a duty if it was already selected by some other member.&lt;br /&gt;
&lt;br /&gt;
4. Login in as a Reviewer&lt;br /&gt;
&lt;br /&gt;
   When you login in as a reviewer you should get the questionnaire based on your duty. For example, if you are a software engineer you should get the review &lt;br /&gt;
   questionnaire assigned to software engineer. &lt;br /&gt;
   Different roles will be assigned different questionnaires for review.&lt;br /&gt;
&lt;br /&gt;
=== RSpec ===&lt;br /&gt;
&lt;br /&gt;
For functional testing, we will use RSpec. It uses Behavior Driven Development (BDD) for testing functionality of the system. It provides way to describe specific functionality of the system being tested and helps in better visualization of test cases.&lt;br /&gt;
&lt;br /&gt;
=== Capybara ===&lt;br /&gt;
We will use Capybara  for automating the manual test cases. It is a web-based automation framework and coupled with RSpec. It allow developers to write the test cases which simulate the whole scenario of manual testing.&lt;br /&gt;
&lt;br /&gt;
===Factory Girl===&lt;br /&gt;
We will use Factory Girl for creating data factory. Factory Girl is a Ruby Gem that allow users to create templates for valid and re-usable objects. It allows more customization when user instantiate the objects and it aims to ensure that user have a valid object to work with.&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;br /&gt;
&lt;br /&gt;
Expertiza[https://github.com/expertiza/expertiza]&lt;br /&gt;
&lt;br /&gt;
RSpec [http://rspec.info/]&lt;br /&gt;
&lt;br /&gt;
ScrumRoles [http://scrummethodology.com/the-scrum-team-role]&lt;br /&gt;
&lt;br /&gt;
CapyBara [https://github.com/jnicklas/capybara]&lt;br /&gt;
&lt;br /&gt;
FactoryGirl [https://github.com/thoughtbot/factory_girl]&lt;/div&gt;</summary>
		<author><name>Ddu3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1676_Role-based_reviewing&amp;diff=106086</id>
		<title>CSC/ECE 517 Fall 2016 E1676 Role-based reviewing</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1676_Role-based_reviewing&amp;diff=106086"/>
		<updated>2016-12-02T22:14:41Z</updated>

		<summary type="html">&lt;p&gt;Ddu3: /* Database Design */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Purpose   ==&lt;br /&gt;
In the current version of Expertiza, members among a team can evaluate each other’s contribution and give appropriate scores based on the same questionnaire. However, in the lifetime of software development, members in a team often take on different roles whose works content are vastly differentiated. Like in an agile development environment, such as Scrum, there are typically [http://scrummethodology.com/the-scrum-team-role/ seven roles group members] can take: software engineer, architect, programmer, analyst, QA expert, tester and UI designers . Job description and evaluation entailed are vastly varied among these roles, thus a generic assessment rubric cannot hold reasonably.&lt;br /&gt;
&lt;br /&gt;
The purpose or the rationale of our project is that we want to give project members the option to evaluate each other's work based on the specific role or duty they take in the development process. This can ensure a reasonable assessment for different duties and can also help to improve the utility using members-reviewing in the whole reviewing process.&lt;br /&gt;
&lt;br /&gt;
== Task Description==&lt;br /&gt;
Task Description:&lt;br /&gt;
There are general three aspects we would do in order to achieve the Role-based reviewing function. &lt;br /&gt;
&lt;br /&gt;
1) A new option (check box) would be added to the Review Strategy tab from the instructor view when he creates a new assignment.  What’s more, the instructor can create different roles or duties available for the assignment by typing into a text filed. The instructor also has the power to allow multiple members to choose for the same duty.&lt;br /&gt;
&lt;br /&gt;
2) In the Rubrics tab from the instructor view, New rubric would be generated by creating different questionnaires for different roles when adding new assignment.&lt;br /&gt;
&lt;br /&gt;
3) A new option (drop box) would be added to the “Your team” page from the student view when an assignment was created to be role-based reviewing. Student can choose their roles or duties from the drop box which were generated by the instructor for this specific assignment. When the instructor enabled the multiple selection option, different members in the team can choose same duties for this assignment.&lt;br /&gt;
&lt;br /&gt;
Tasks can be viewed more clearly by the graph below:&lt;br /&gt;
  &lt;br /&gt;
   &lt;br /&gt;
   &lt;br /&gt;
[[File:Drawing.png]]&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
=== Database Design ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
We would create a new table called '''assignment_duties'''.&lt;br /&gt;
!Field Name !!Type !!Description&lt;br /&gt;
|-&lt;br /&gt;
!assignment_id&lt;br /&gt;
|int(11)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!duty_name&lt;br /&gt;
|int(11)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!questionnaire_id&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|It saves student's duty in specific team.&lt;br /&gt;
|-&lt;br /&gt;
!questionnaire_id&lt;br /&gt;
|int(11)&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
We should add '''duty_based''', '''multiple_duty_based''' and '''all_duty_name''' into '''assignments''' table to store the duty name&lt;br /&gt;
!Field Name !!Type !!Description&lt;br /&gt;
|-&lt;br /&gt;
!duty_based&lt;br /&gt;
|boolean&lt;br /&gt;
|If the assignment's team is duty based, it should be '''true'''. If not, it should be '''false'''.&lt;br /&gt;
|-&lt;br /&gt;
!allow_duty_share&lt;br /&gt;
|boolean&lt;br /&gt;
|If multiple people could choose one duty in the assignment, it should be '''true'''. If not, it should be '''false'''.&lt;br /&gt;
|-&lt;br /&gt;
!duty_names&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|It would save all kinds of duties in the assignment.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
We should add '''duty''' into '''team_user''' table to store the duty.&lt;br /&gt;
!Field Name !!Type !!Description&lt;br /&gt;
|-&lt;br /&gt;
!duty_names&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|It would save this user's duty in this team.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Updates==&lt;br /&gt;
&lt;br /&gt;
Below are the key files modified:&lt;br /&gt;
&lt;br /&gt;
===Controllers===&lt;br /&gt;
 1. expertiza/app/controllers/assignments_controller.rb:&lt;br /&gt;
    def edit&lt;br /&gt;
        a. add &amp;quot;role based assignment&amp;quot; option to review strategy section.&lt;br /&gt;
        b. add roles to current assignment.&lt;br /&gt;
        c. add questionnaires to these roles separately. &lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
 2. expertiza/app/controllers/questionnaires_controller.rb&lt;br /&gt;
&lt;br /&gt;
===Models===&lt;br /&gt;
&lt;br /&gt;
See [[#Design|Database Design]] section above.&lt;br /&gt;
&lt;br /&gt;
===Views===&lt;br /&gt;
&lt;br /&gt;
 1. expertiza/app/views/assignments/edit/_review_strategy.html.erb &lt;br /&gt;
  1.1. add a &amp;quot;role based&amp;quot; strategy checkbox here.&lt;br /&gt;
  1.2. add roles input fields if you check the &amp;quot;role based&amp;quot; strategy checkbox.&lt;br /&gt;
 2. expertiza/app/views/assignments/edit/_rubrics.html.erb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:review_strategy.png]]&lt;br /&gt;
&lt;br /&gt;
== Testing Details ==&lt;br /&gt;
In our project, we are providing an option of adding duty for different team members in an assignment and giving review options based on their duty. We will add following functionalities:&lt;br /&gt;
1. How instructor create assignment with duties/roles&lt;br /&gt;
2. How students take duties from a given list of duties&lt;br /&gt;
3. How teammate evaluation rubric assign different review questionnaire based on duty.&lt;br /&gt;
&lt;br /&gt;
=== UI Testing ===&lt;br /&gt;
UI will be tested manually. First, we will test creating an assignment as an instructor with different duties and assign different review questionnaires to each duty. Then we will login in as a student and take a duty from given list of duties. We will try covering all edge case scenarios in test cases section.&lt;br /&gt;
&lt;br /&gt;
=== Test Cases ===&lt;br /&gt;
Following will be the test cases:&lt;br /&gt;
&lt;br /&gt;
1. Login in as an Instructor:&lt;br /&gt;
&lt;br /&gt;
  1.a] While creating an assignment, in the Review Strategy tab provide the list of roles/duties possible for teammates. There will be one text box to add      &lt;br /&gt;
       duty. To add more duties click on &amp;quot;add more&amp;quot;. &lt;br /&gt;
  1.b] Mark the check box that says multiple team members can have the same duty.&lt;br /&gt;
  1.c] Go to the Rubrics tab and select different questionnaires for different duty.    &lt;br /&gt;
  After creating this assignment students should be able to see different duties in &amp;quot;Your Team&amp;quot; page and should be able to select any duty. Multiple students &lt;br /&gt;
  should be able to select same duty.&lt;br /&gt;
&lt;br /&gt;
2. Login in as an Instructor:&lt;br /&gt;
&lt;br /&gt;
  2.a] Repeat steps 1.a and 1.b &lt;br /&gt;
  2.b] This time do not mark the check box that says &amp;quot;multiple team members can have the same duty&amp;quot;.&lt;br /&gt;
  After creating this assignment students should be able to see different duties in &amp;quot;Your Team&amp;quot; page. This time student should not be able to select a duty if &lt;br /&gt;
  it was already selected.&lt;br /&gt;
&lt;br /&gt;
3. Login in as a Student&lt;br /&gt;
&lt;br /&gt;
   When you login in as a student you should be able to pick different duties assigned by the instructor. If multiple members are not allowed to have same duty &lt;br /&gt;
   then you should not be able to pick a duty if it was already selected by some other member.&lt;br /&gt;
&lt;br /&gt;
4. Login in as a Reviewer&lt;br /&gt;
&lt;br /&gt;
   When you login in as a reviewer you should get the questionnaire based on your duty. For example, if you are a software engineer you should get the review &lt;br /&gt;
   questionnaire assigned to software engineer. &lt;br /&gt;
   Different roles will be assigned different questionnaires for review.&lt;br /&gt;
&lt;br /&gt;
=== RSpec ===&lt;br /&gt;
&lt;br /&gt;
For functional testing, we will use RSpec. It uses Behavior Driven Development (BDD) for testing functionality of the system. It provides way to describe specific functionality of the system being tested and helps in better visualization of test cases.&lt;br /&gt;
&lt;br /&gt;
=== Capybara ===&lt;br /&gt;
We will use Capybara  for automating the manual test cases. It is a web-based automation framework and coupled with RSpec. It allow developers to write the test cases which simulate the whole scenario of manual testing.&lt;br /&gt;
&lt;br /&gt;
===Factory Girl===&lt;br /&gt;
We will use Factory Girl for creating data factory. Factory Girl is a Ruby Gem that allow users to create templates for valid and re-usable objects. It allows more customization when user instantiate the objects and it aims to ensure that user have a valid object to work with.&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;br /&gt;
&lt;br /&gt;
Expertiza[https://github.com/expertiza/expertiza]&lt;br /&gt;
&lt;br /&gt;
RSpec [http://rspec.info/]&lt;br /&gt;
&lt;br /&gt;
ScrumRoles [http://scrummethodology.com/the-scrum-team-role]&lt;br /&gt;
&lt;br /&gt;
CapyBara [https://github.com/jnicklas/capybara]&lt;br /&gt;
&lt;br /&gt;
FactoryGirl [https://github.com/thoughtbot/factory_girl]&lt;/div&gt;</summary>
		<author><name>Ddu3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1676_Role-based_reviewing&amp;diff=106085</id>
		<title>CSC/ECE 517 Fall 2016 E1676 Role-based reviewing</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1676_Role-based_reviewing&amp;diff=106085"/>
		<updated>2016-12-02T22:07:40Z</updated>

		<summary type="html">&lt;p&gt;Ddu3: /* Database Design */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Purpose   ==&lt;br /&gt;
In the current version of Expertiza, members among a team can evaluate each other’s contribution and give appropriate scores based on the same questionnaire. However, in the lifetime of software development, members in a team often take on different roles whose works content are vastly differentiated. Like in an agile development environment, such as Scrum, there are typically [http://scrummethodology.com/the-scrum-team-role/ seven roles group members] can take: software engineer, architect, programmer, analyst, QA expert, tester and UI designers . Job description and evaluation entailed are vastly varied among these roles, thus a generic assessment rubric cannot hold reasonably.&lt;br /&gt;
&lt;br /&gt;
The purpose or the rationale of our project is that we want to give project members the option to evaluate each other's work based on the specific role or duty they take in the development process. This can ensure a reasonable assessment for different duties and can also help to improve the utility using members-reviewing in the whole reviewing process.&lt;br /&gt;
&lt;br /&gt;
== Task Description==&lt;br /&gt;
Task Description:&lt;br /&gt;
There are general three aspects we would do in order to achieve the Role-based reviewing function. &lt;br /&gt;
&lt;br /&gt;
1) A new option (check box) would be added to the Review Strategy tab from the instructor view when he creates a new assignment.  What’s more, the instructor can create different roles or duties available for the assignment by typing into a text filed. The instructor also has the power to allow multiple members to choose for the same duty.&lt;br /&gt;
&lt;br /&gt;
2) In the Rubrics tab from the instructor view, New rubric would be generated by creating different questionnaires for different roles when adding new assignment.&lt;br /&gt;
&lt;br /&gt;
3) A new option (drop box) would be added to the “Your team” page from the student view when an assignment was created to be role-based reviewing. Student can choose their roles or duties from the drop box which were generated by the instructor for this specific assignment. When the instructor enabled the multiple selection option, different members in the team can choose same duties for this assignment.&lt;br /&gt;
&lt;br /&gt;
Tasks can be viewed more clearly by the graph below:&lt;br /&gt;
  &lt;br /&gt;
   &lt;br /&gt;
   &lt;br /&gt;
[[File:Drawing.png]]&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
=== Database Design ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
We would create a new table called '''Duty'''.&lt;br /&gt;
!Field Name !!Type !!Description&lt;br /&gt;
|-&lt;br /&gt;
!team_id&lt;br /&gt;
|int(11)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!student_id&lt;br /&gt;
|int(11)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!duty&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|It saves student's duty in specific team.&lt;br /&gt;
|-&lt;br /&gt;
!questionnaire_id&lt;br /&gt;
|int(11)&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
We should add '''duty_based''', '''multiple_duty_based''' and '''all_duty_name''' into '''assignments''' table to store the duty name&lt;br /&gt;
!Field Name !!Type !!Description&lt;br /&gt;
|-&lt;br /&gt;
!duty_based&lt;br /&gt;
|boolean&lt;br /&gt;
|If the assignment's team is duty based, it should be '''true'''. If not, it should be '''false'''.&lt;br /&gt;
|-&lt;br /&gt;
!allow_duty_share&lt;br /&gt;
|boolean&lt;br /&gt;
|If multiple people could choose one duty in the assignment, it should be '''true'''. If not, it should be '''false'''.&lt;br /&gt;
|-&lt;br /&gt;
!duty_names&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|It would save all kinds of duties in the assignment.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
We should add '''duty''' into '''team_user''' table to store the duty.&lt;br /&gt;
!Field Name !!Type !!Description&lt;br /&gt;
|-&lt;br /&gt;
!duty_names&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|It would save this user's duty in this team.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Updates==&lt;br /&gt;
&lt;br /&gt;
Below are the key files modified:&lt;br /&gt;
&lt;br /&gt;
===Controllers===&lt;br /&gt;
 1. expertiza/app/controllers/assignments_controller.rb:&lt;br /&gt;
    def edit&lt;br /&gt;
        a. add &amp;quot;role based assignment&amp;quot; option to review strategy section.&lt;br /&gt;
        b. add roles to current assignment.&lt;br /&gt;
        c. add questionnaires to these roles separately. &lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
 2. expertiza/app/controllers/questionnaires_controller.rb&lt;br /&gt;
&lt;br /&gt;
===Models===&lt;br /&gt;
&lt;br /&gt;
See [[#Design|Database Design]] section above.&lt;br /&gt;
&lt;br /&gt;
===Views===&lt;br /&gt;
&lt;br /&gt;
 1. expertiza/app/views/assignments/edit/_review_strategy.html.erb &lt;br /&gt;
  1.1. add a &amp;quot;role based&amp;quot; strategy checkbox here.&lt;br /&gt;
  1.2. add roles input fields if you check the &amp;quot;role based&amp;quot; strategy checkbox.&lt;br /&gt;
 2. expertiza/app/views/assignments/edit/_rubrics.html.erb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:review_strategy.png]]&lt;br /&gt;
&lt;br /&gt;
== Testing Details ==&lt;br /&gt;
In our project, we are providing an option of adding duty for different team members in an assignment and giving review options based on their duty. We will add following functionalities:&lt;br /&gt;
1. How instructor create assignment with duties/roles&lt;br /&gt;
2. How students take duties from a given list of duties&lt;br /&gt;
3. How teammate evaluation rubric assign different review questionnaire based on duty.&lt;br /&gt;
&lt;br /&gt;
=== UI Testing ===&lt;br /&gt;
UI will be tested manually. First, we will test creating an assignment as an instructor with different duties and assign different review questionnaires to each duty. Then we will login in as a student and take a duty from given list of duties. We will try covering all edge case scenarios in test cases section.&lt;br /&gt;
&lt;br /&gt;
=== Test Cases ===&lt;br /&gt;
Following will be the test cases:&lt;br /&gt;
&lt;br /&gt;
1. Login in as an Instructor:&lt;br /&gt;
&lt;br /&gt;
  1.a] While creating an assignment, in the Review Strategy tab provide the list of roles/duties possible for teammates. There will be one text box to add      &lt;br /&gt;
       duty. To add more duties click on &amp;quot;add more&amp;quot;. &lt;br /&gt;
  1.b] Mark the check box that says multiple team members can have the same duty.&lt;br /&gt;
  1.c] Go to the Rubrics tab and select different questionnaires for different duty.    &lt;br /&gt;
  After creating this assignment students should be able to see different duties in &amp;quot;Your Team&amp;quot; page and should be able to select any duty. Multiple students &lt;br /&gt;
  should be able to select same duty.&lt;br /&gt;
&lt;br /&gt;
2. Login in as an Instructor:&lt;br /&gt;
&lt;br /&gt;
  2.a] Repeat steps 1.a and 1.b &lt;br /&gt;
  2.b] This time do not mark the check box that says &amp;quot;multiple team members can have the same duty&amp;quot;.&lt;br /&gt;
  After creating this assignment students should be able to see different duties in &amp;quot;Your Team&amp;quot; page. This time student should not be able to select a duty if &lt;br /&gt;
  it was already selected.&lt;br /&gt;
&lt;br /&gt;
3. Login in as a Student&lt;br /&gt;
&lt;br /&gt;
   When you login in as a student you should be able to pick different duties assigned by the instructor. If multiple members are not allowed to have same duty &lt;br /&gt;
   then you should not be able to pick a duty if it was already selected by some other member.&lt;br /&gt;
&lt;br /&gt;
4. Login in as a Reviewer&lt;br /&gt;
&lt;br /&gt;
   When you login in as a reviewer you should get the questionnaire based on your duty. For example, if you are a software engineer you should get the review &lt;br /&gt;
   questionnaire assigned to software engineer. &lt;br /&gt;
   Different roles will be assigned different questionnaires for review.&lt;br /&gt;
&lt;br /&gt;
=== RSpec ===&lt;br /&gt;
&lt;br /&gt;
For functional testing, we will use RSpec. It uses Behavior Driven Development (BDD) for testing functionality of the system. It provides way to describe specific functionality of the system being tested and helps in better visualization of test cases.&lt;br /&gt;
&lt;br /&gt;
=== Capybara ===&lt;br /&gt;
We will use Capybara  for automating the manual test cases. It is a web-based automation framework and coupled with RSpec. It allow developers to write the test cases which simulate the whole scenario of manual testing.&lt;br /&gt;
&lt;br /&gt;
===Factory Girl===&lt;br /&gt;
We will use Factory Girl for creating data factory. Factory Girl is a Ruby Gem that allow users to create templates for valid and re-usable objects. It allows more customization when user instantiate the objects and it aims to ensure that user have a valid object to work with.&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;br /&gt;
&lt;br /&gt;
Expertiza[https://github.com/expertiza/expertiza]&lt;br /&gt;
&lt;br /&gt;
RSpec [http://rspec.info/]&lt;br /&gt;
&lt;br /&gt;
ScrumRoles [http://scrummethodology.com/the-scrum-team-role]&lt;br /&gt;
&lt;br /&gt;
CapyBara [https://github.com/jnicklas/capybara]&lt;br /&gt;
&lt;br /&gt;
FactoryGirl [https://github.com/thoughtbot/factory_girl]&lt;/div&gt;</summary>
		<author><name>Ddu3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1676_Role-based_reviewing&amp;diff=106011</id>
		<title>CSC/ECE 517 Fall 2016 E1676 Role-based reviewing</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1676_Role-based_reviewing&amp;diff=106011"/>
		<updated>2016-11-21T17:51:21Z</updated>

		<summary type="html">&lt;p&gt;Ddu3: /* Database Design */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Purpose   ==&lt;br /&gt;
In the current version of Expertiza, members among a team can evaluate each other’s contribution and give appropriate scores based on the same questionnaire. However, in the lifetime of software development, members in a team often take on different roles whose works content are vastly differentiated. Like in an agile development environment, such as Scrum, there are typically [http://scrummethodology.com/the-scrum-team-role/ seven roles group members] can take: software engineer, architect, programmer, analyst, QA expert, tester and UI designers . Job description and evaluation entailed are vastly varied among these roles, thus a generic assessment rubric cannot hold reasonably.&lt;br /&gt;
&lt;br /&gt;
The purpose or the rationale of our project is that we want to give project members the option to evaluate each other's work based on the specific role or duty they take in the development process. This can ensure a reasonable assessment for different duties and can also help to improve the utility using members-reviewing in the whole reviewing process.&lt;br /&gt;
&lt;br /&gt;
== Task Description==&lt;br /&gt;
Task Description:&lt;br /&gt;
There are general three aspects we would do in order to achieve the Role-based reviewing function. &lt;br /&gt;
&lt;br /&gt;
1) A new option (check box) would be added to the Review Strategy tab from the instructor view when he creates a new assignment.  What’s more, the instructor can create different roles or duties available for the assignment by typing into a text filed. The instructor also has the power to allow multiple members to choose for the same duty.&lt;br /&gt;
&lt;br /&gt;
2) In the Rubrics tab from the instructor view, New rubric would be generated by creating different questionnaires for different roles when adding new assignment.&lt;br /&gt;
&lt;br /&gt;
3) A new option (drop box) would be added to the “Your team” page from the student view when an assignment was created to be role-based reviewing. Student can choose their roles or duties from the drop box which were generated by the instructor for this specific assignment. When the instructor enabled the multiple selection option, different members in the team can choose same duties for this assignment.&lt;br /&gt;
&lt;br /&gt;
Tasks can be viewed more clearly by the graph below:&lt;br /&gt;
  &lt;br /&gt;
   &lt;br /&gt;
   &lt;br /&gt;
[[File:Drawing.png]]&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
=== Database Design ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
We would create a new table called '''Duty'''.&lt;br /&gt;
!Field Name !!Type !!Description&lt;br /&gt;
|-&lt;br /&gt;
!team_id&lt;br /&gt;
|int(11)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!student_id&lt;br /&gt;
|int(11)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!duty&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|It saves student's duty in specific team.&lt;br /&gt;
|-&lt;br /&gt;
!questionnaire_id&lt;br /&gt;
|int(11)&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
We should add '''duty_based''', '''multiple_duty_based''' and '''all_duty_name''' into '''assignments''' table to store the duty name&lt;br /&gt;
!Field Name !!Type !!Description&lt;br /&gt;
|-&lt;br /&gt;
!duty_based&lt;br /&gt;
|int(1)&lt;br /&gt;
|If the assignment's team is duty based, it should be '''1'''. If not, it should be '''0'''.&lt;br /&gt;
|-&lt;br /&gt;
!allow_duty_share&lt;br /&gt;
|int(1)&lt;br /&gt;
|If multiple people could choose one duty in the assignment, it should be '''1'''. If not, it should be '''0'''.&lt;br /&gt;
|-&lt;br /&gt;
!duty_names&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|It would save all kinds of duties in the assignment.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
We should add '''duty''' into '''team_user''' table to store the duty.&lt;br /&gt;
!Field Name !!Type !!Description&lt;br /&gt;
|-&lt;br /&gt;
!duty_names&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|It would save this user's duty in this team.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Updates==&lt;br /&gt;
&lt;br /&gt;
Below are the key files modified:&lt;br /&gt;
&lt;br /&gt;
===Controllers===&lt;br /&gt;
 1. expertiza/app/controllers/assignments_controller.rb:&lt;br /&gt;
    def edit&lt;br /&gt;
        a. add &amp;quot;role based assignment&amp;quot; option to review strategy section.&lt;br /&gt;
        b. add roles to current assignment.&lt;br /&gt;
        c. add questionnaires to these roles separately. &lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
 2. expertiza/app/controllers/questionnaires_controller.rb&lt;br /&gt;
&lt;br /&gt;
===Models===&lt;br /&gt;
&lt;br /&gt;
See [[#Design|Database Design]] section above.&lt;br /&gt;
&lt;br /&gt;
===Views===&lt;br /&gt;
&lt;br /&gt;
 1. expertiza/app/views/assignments/edit/_review_strategy.html.erb &lt;br /&gt;
  1.1. add a &amp;quot;role based&amp;quot; strategy checkbox here.&lt;br /&gt;
  1.2. add roles input fields if you check the &amp;quot;role based&amp;quot; strategy checkbox.&lt;br /&gt;
 2. expertiza/app/views/assignments/edit/_rubrics.html.erb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:review_strategy.png]]&lt;br /&gt;
&lt;br /&gt;
== Testing Details ==&lt;br /&gt;
In our project, we are providing an option of adding duty for different team members in an assignment and giving review options based on their duty. We will add following functionalities:&lt;br /&gt;
1. How instructor create assignment with duties/roles&lt;br /&gt;
2. How students take duties from a given list of duties&lt;br /&gt;
3. How teammate evaluation rubric assign different review questionnaire based on duty.&lt;br /&gt;
&lt;br /&gt;
=== UI Testing ===&lt;br /&gt;
UI will be tested manually. First, we will test creating an assignment as an instructor with different duties and assign different review questionnaires to each duty. Then we will login in as a student and take a duty from given list of duties. We will try covering all edge case scenarios in test cases section.&lt;br /&gt;
&lt;br /&gt;
=== Test Cases ===&lt;br /&gt;
Following will be the test cases:&lt;br /&gt;
&lt;br /&gt;
1. Login in as an Instructor:&lt;br /&gt;
&lt;br /&gt;
  1.a] While creating an assignment, in the Review Strategy tab provide the list of roles/duties possible for teammates. There will be one text box to add      &lt;br /&gt;
       duty. To add more duties click on &amp;quot;add more&amp;quot;. &lt;br /&gt;
  1.b] Mark the check box that says multiple team members can have the same duty.&lt;br /&gt;
  1.c] Go to the Rubrics tab and select different questionnaires for different duty.    &lt;br /&gt;
  After creating this assignment students should be able to see different duties in &amp;quot;Your Team&amp;quot; page and should be able to select any duty. Multiple students &lt;br /&gt;
  should be able to select same duty.&lt;br /&gt;
&lt;br /&gt;
2. Login in as an Instructor:&lt;br /&gt;
&lt;br /&gt;
  2.a] Repeat steps 1.a and 1.b &lt;br /&gt;
  2.b] This time do not mark the check box that says &amp;quot;multiple team members can have the same duty&amp;quot;.&lt;br /&gt;
  After creating this assignment students should be able to see different duties in &amp;quot;Your Team&amp;quot; page. This time student should not be able to select a duty if &lt;br /&gt;
  it was already selected.&lt;br /&gt;
&lt;br /&gt;
3. Login in as a Student&lt;br /&gt;
&lt;br /&gt;
   When you login in as a student you should be able to pick different duties assigned by the instructor. If multiple members are not allowed to have same duty &lt;br /&gt;
   then you should not be able to pick a duty if it was already selected by some other member.&lt;br /&gt;
&lt;br /&gt;
4. Login in as a Reviewer&lt;br /&gt;
&lt;br /&gt;
   When you login in as a reviewer you should get the questionnaire based on your duty. For example, if you are a software engineer you should get the review &lt;br /&gt;
   questionnaire assigned to software engineer. &lt;br /&gt;
   Different roles will be assigned different questionnaires for review.&lt;br /&gt;
&lt;br /&gt;
=== RSpec ===&lt;br /&gt;
&lt;br /&gt;
For functional testing, we will use RSpec. It uses Behavior Driven Development (BDD) for testing functionality of the system. It provides way to describe specific functionality of the system being tested and helps in better visualization of test cases.&lt;br /&gt;
&lt;br /&gt;
=== Capybara ===&lt;br /&gt;
We will use Capybara  for automating the manual test cases. It is a web-based automation framework and coupled with RSpec. It allow developers to write the test cases which simulate the whole scenario of manual testing.&lt;br /&gt;
&lt;br /&gt;
===Factory Girl===&lt;br /&gt;
We will use Factory Girl for creating data factory. Factory Girl is a Ruby Gem that allow users to create templates for valid and re-usable objects. It allows more customization when user instantiate the objects and it aims to ensure that user have a valid object to work with.&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;br /&gt;
&lt;br /&gt;
Expertiza[https://github.com/expertiza/expertiza]&lt;br /&gt;
&lt;br /&gt;
RSpec [http://rspec.info/]&lt;br /&gt;
&lt;br /&gt;
ScrumRoles [http://scrummethodology.com/the-scrum-team-role]&lt;br /&gt;
&lt;br /&gt;
CapyBara [https://github.com/jnicklas/capybara]&lt;br /&gt;
&lt;br /&gt;
FactoryGirl [https://github.com/thoughtbot/factory_girl]&lt;/div&gt;</summary>
		<author><name>Ddu3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1676_Role-based_reviewing&amp;diff=105994</id>
		<title>CSC/ECE 517 Fall 2016 E1676 Role-based reviewing</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1676_Role-based_reviewing&amp;diff=105994"/>
		<updated>2016-11-17T02:45:34Z</updated>

		<summary type="html">&lt;p&gt;Ddu3: /* Database Design */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Purpose   ==&lt;br /&gt;
In the current version of Expertiza, members among a team can evaluate each other’s contribution and give appropriate scores based on the same questionnaire. However, in the lifetime of software development, members in a team often take on different roles whose works content are vastly differentiated. Like in an agile development environment, such as Scrum, there are typically [http://scrummethodology.com/the-scrum-team-role/ seven roles group members] can take: software engineer, architect, programmer, analyst, QA expert, tester and UI designers . Job description and evaluation entailed are vastly varied among these roles, thus a generic assessment rubric cannot hold reasonably.&lt;br /&gt;
&lt;br /&gt;
The purpose or the rationale of our project is that we want to give project members the option to evaluate each other's work based on the specific role or duty they take in the development process. This can ensure a reasonable assessment for different duties and can also help to improve the utility using members-reviewing in the whole reviewing process.&lt;br /&gt;
&lt;br /&gt;
== Task Description==&lt;br /&gt;
Task Description:&lt;br /&gt;
There are general three aspects we would do in order to achieve the Role-based reviewing function. &lt;br /&gt;
&lt;br /&gt;
1) A new option (check box) would be added to the Review Strategy tab from the instructor view when he creates a new assignment.  What’s more, the instructor can create different roles or duties available for the assignment by typing into a text filed. The instructor also has the power to allow multiple members to choose for the same duty.&lt;br /&gt;
&lt;br /&gt;
2) In the Rubrics tab from the instructor view, New rubric would be generated by creating different questionnaires for different roles when adding new assignment.&lt;br /&gt;
&lt;br /&gt;
3) A new option (drop box) would be added to the “Your team” page from the student view when an assignment was created to be role-based reviewing. Student can choose their roles or duties from the drop box which were generated by the instructor for this specific assignment. When the instructor enabled the multiple selection option, different members in the team can choose same duties for this assignment.&lt;br /&gt;
&lt;br /&gt;
Tasks can be viewed more clearly by the graph below:&lt;br /&gt;
  &lt;br /&gt;
   &lt;br /&gt;
   &lt;br /&gt;
[[File:Drawing.png]]&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
=== Database Design ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
We would create a new table called '''Duty'''.&lt;br /&gt;
!Field Name !!Type !!Description&lt;br /&gt;
|-&lt;br /&gt;
!team_id&lt;br /&gt;
|int(11)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!student_id&lt;br /&gt;
|int(11)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!duty&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|It saves student's duty in specific team.&lt;br /&gt;
|-&lt;br /&gt;
!questionnaire_id&lt;br /&gt;
|int(11)&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
We should add '''duty_based''', '''multiple_duty_based''' and '''all_duty_name''' into '''assignments''' table to store the duty name&lt;br /&gt;
!Field Name !!Type !!Description&lt;br /&gt;
|-&lt;br /&gt;
!duty_based&lt;br /&gt;
|int(1)&lt;br /&gt;
|If the assignment's team is duty based, it should be '''1'''. If not, it should be '''0'''.&lt;br /&gt;
|-&lt;br /&gt;
!allow_duty_share&lt;br /&gt;
|int(1)&lt;br /&gt;
|If multiple people could choose one duty in the assignment, it should be '''1'''. If not, it should be '''0'''.&lt;br /&gt;
|-&lt;br /&gt;
!duty_names&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|It would save all kinds of duties in the assignment.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Updates==&lt;br /&gt;
&lt;br /&gt;
Below are the key files modified:&lt;br /&gt;
&lt;br /&gt;
===Controllers===&lt;br /&gt;
 1. expertiza/app/controllers/assignments_controller.rb:&lt;br /&gt;
    def edit&lt;br /&gt;
        a. add &amp;quot;role based assignment&amp;quot; option to review strategy section.&lt;br /&gt;
        b. add roles to current assignment.&lt;br /&gt;
        c. add questionnaires to these roles separately. &lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
 2. expertiza/app/controllers/questionnaires_controller.rb&lt;br /&gt;
&lt;br /&gt;
===Models===&lt;br /&gt;
&lt;br /&gt;
See [[#Design|Database Design]] section above.&lt;br /&gt;
&lt;br /&gt;
===Views===&lt;br /&gt;
&lt;br /&gt;
 1. expertiza/app/views/assignments/edit/_review_strategy.html.erb &lt;br /&gt;
  1.1. add a &amp;quot;role based&amp;quot; strategy checkbox here.&lt;br /&gt;
  1.2. add roles input fields if you check the &amp;quot;role based&amp;quot; strategy checkbox.&lt;br /&gt;
 2. expertiza/app/views/assignments/edit/_rubrics.html.erb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:review_strategy.png]]&lt;br /&gt;
&lt;br /&gt;
== Testing Details ==&lt;br /&gt;
In our project, we are providing an option of adding duty for different team members in an assignment and giving review options based on their duty. We will add following functionalities:&lt;br /&gt;
1. How instructor create assignment with duties/roles&lt;br /&gt;
2. How students take duties from a given list of duties&lt;br /&gt;
3. How teammate evaluation rubric assign different review questionnaire based on duty.&lt;br /&gt;
&lt;br /&gt;
=== UI Testing ===&lt;br /&gt;
UI will be tested manually. First, we will test creating an assignment as an instructor with different duties and assign different review questionnaires to each duty. Then we will login in as a student and take a duty from given list of duties. We will try covering all edge case scenarios in test cases section.&lt;br /&gt;
&lt;br /&gt;
=== Test Cases ===&lt;br /&gt;
Following will be the test cases:&lt;br /&gt;
&lt;br /&gt;
1. Login in as an Instructor:&lt;br /&gt;
&lt;br /&gt;
  1.a] While creating an assignment, in the Review Strategy tab provide the list of roles/duties possible for teammates. There will be one text box to add      &lt;br /&gt;
       duty. To add more duties click on &amp;quot;add more&amp;quot;. &lt;br /&gt;
  1.b] Mark the check box that says multiple team members can have the same duty.&lt;br /&gt;
  1.c] Go to the Rubrics tab and select different questionnaires for different duty.    &lt;br /&gt;
  After creating this assignment students should be able to see different duties in &amp;quot;Your Team&amp;quot; page and should be able to select any duty. Multiple students &lt;br /&gt;
  should be able to select same duty.&lt;br /&gt;
&lt;br /&gt;
2. Login in as an Instructor:&lt;br /&gt;
&lt;br /&gt;
  2.a] Repeat steps 1.a and 1.b &lt;br /&gt;
  2.b] This time do not mark the check box that says &amp;quot;multiple team members can have the same duty&amp;quot;.&lt;br /&gt;
  After creating this assignment students should be able to see different duties in &amp;quot;Your Team&amp;quot; page. This time student should not be able to select a duty if &lt;br /&gt;
  it was already selected.&lt;br /&gt;
&lt;br /&gt;
3. Login in as a Student&lt;br /&gt;
&lt;br /&gt;
   When you login in as a student you should be able to pick different duties assigned by the instructor. If multiple members are not allowed to have same duty &lt;br /&gt;
   then you should not be able to pick a duty if it was already selected by some other member.&lt;br /&gt;
&lt;br /&gt;
4. Login in as a Reviewer&lt;br /&gt;
&lt;br /&gt;
   When you login in as a reviewer you should get the questionnaire based on your duty. For example, if you are a software engineer you should get the review &lt;br /&gt;
   questionnaire assigned to software engineer. &lt;br /&gt;
   Different roles will be assigned different questionnaires for review.&lt;br /&gt;
&lt;br /&gt;
=== RSpec ===&lt;br /&gt;
&lt;br /&gt;
For functional testing, we will use RSpec. It uses Behavior Driven Development (BDD) for testing functionality of the system. It provides way to describe specific functionality of the system being tested and helps in better visualization of test cases.&lt;br /&gt;
&lt;br /&gt;
=== Capybara ===&lt;br /&gt;
We will use Capybara  for automating the manual test cases. It is a web-based automation framework and coupled with RSpec. It allow developers to write the test cases which simulate the whole scenario of manual testing.&lt;br /&gt;
&lt;br /&gt;
===Factory Girl===&lt;br /&gt;
We will use Factory Girl for creating data factory. Factory Girl is a Ruby Gem that allow users to create templates for valid and re-usable objects. It allows more customization when user instantiate the objects and it aims to ensure that user have a valid object to work with.&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;br /&gt;
&lt;br /&gt;
Expertiza[https://github.com/expertiza/expertiza]&lt;br /&gt;
&lt;br /&gt;
RSpec [http://rspec.info/]&lt;br /&gt;
&lt;br /&gt;
ScrumRoles [http://scrummethodology.com/the-scrum-team-role]&lt;br /&gt;
&lt;br /&gt;
CapyBara [https://github.com/jnicklas/capybara]&lt;br /&gt;
&lt;br /&gt;
FactoryGirl [https://github.com/thoughtbot/factory_girl]&lt;/div&gt;</summary>
		<author><name>Ddu3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1676_Role-based_reviewing&amp;diff=105992</id>
		<title>CSC/ECE 517 Fall 2016 E1676 Role-based reviewing</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1676_Role-based_reviewing&amp;diff=105992"/>
		<updated>2016-11-17T02:44:28Z</updated>

		<summary type="html">&lt;p&gt;Ddu3: /* Database Design */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Purpose   ==&lt;br /&gt;
In the current version of Expertiza, members among a team can evaluate each other’s contribution and give appropriate scores based on the same questionnaire. However, in the lifetime of software development, members in a team often take on different roles whose works content are vastly differentiated. Like in an agile development environment, such as Scrum, there are typically [http://scrummethodology.com/the-scrum-team-role/ seven roles group members] can take: software engineer, architect, programmer, analyst, QA expert, tester and UI designers . Job description and evaluation entailed are vastly varied among these roles, thus a generic assessment rubric cannot hold reasonably.&lt;br /&gt;
&lt;br /&gt;
The purpose or the rationale of our project is that we want to give project members the option to evaluate each other's work based on the specific role or duty they take in the development process. This can ensure a reasonable assessment for different duties and can also help to improve the utility using members-reviewing in the whole reviewing process.&lt;br /&gt;
&lt;br /&gt;
== Task Description==&lt;br /&gt;
Task Description:&lt;br /&gt;
There are general three aspects we would do in order to achieve the Role-based reviewing function. &lt;br /&gt;
&lt;br /&gt;
1) A new option (check box) would be added to the Review Strategy tab from the instructor view when he creates a new assignment.  What’s more, the instructor can create different roles or duties available for the assignment by typing into a text filed. The instructor also has the power to allow multiple members to choose for the same duty.&lt;br /&gt;
&lt;br /&gt;
2) In the Rubrics tab from the instructor view, New rubric would be generated by creating different questionnaires for different roles when adding new assignment.&lt;br /&gt;
&lt;br /&gt;
3) A new option (drop box) would be added to the “Your team” page from the student view when an assignment was created to be role-based reviewing. Student can choose their roles or duties from the drop box which were generated by the instructor for this specific assignment. When the instructor enabled the multiple selection option, different members in the team can choose same duties for this assignment.&lt;br /&gt;
&lt;br /&gt;
Tasks can be viewed more clearly by the graph below:&lt;br /&gt;
  &lt;br /&gt;
   &lt;br /&gt;
   &lt;br /&gt;
[[File:Drawing.png]]&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
=== Database Design ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
We would create a new table called '''Duty'''.&lt;br /&gt;
!Field Name !!Type !!Description&lt;br /&gt;
|-&lt;br /&gt;
!team_id&lt;br /&gt;
|int(11)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!duty_name&lt;br /&gt;
|text&lt;br /&gt;
|It saves student's duty in specific team.&lt;br /&gt;
|-&lt;br /&gt;
!student_id&lt;br /&gt;
|int(11)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!questionnaire_id&lt;br /&gt;
|int(11)&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
We should add '''duty_based''', '''multiple_duty_based''' and '''all_duty_name''' into '''assignments''' table to store the duty name&lt;br /&gt;
!Field Name !!Type !!Description&lt;br /&gt;
|-&lt;br /&gt;
!duty_based&lt;br /&gt;
|int(1)&lt;br /&gt;
|If the assignment's team is duty based, it should be '''1'''. If not, it should be '''0'''.&lt;br /&gt;
|-&lt;br /&gt;
!allow_duty_share&lt;br /&gt;
|int(1)&lt;br /&gt;
|If multiple people could choose one duty in the assignment, it should be '''1'''. If not, it should be '''0'''.&lt;br /&gt;
|-&lt;br /&gt;
!duty_names&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|It would save all kinds of duties in the assignment.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Updates==&lt;br /&gt;
&lt;br /&gt;
Below are the key files modified:&lt;br /&gt;
&lt;br /&gt;
===Controllers===&lt;br /&gt;
 1. expertiza/app/controllers/assignments_controller.rb:&lt;br /&gt;
    def edit&lt;br /&gt;
        a. add &amp;quot;role based assignment&amp;quot; option to review strategy section.&lt;br /&gt;
        b. add roles to current assignment.&lt;br /&gt;
        c. add questionnaires to these roles separately. &lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
 2. expertiza/app/controllers/questionnaires_controller.rb&lt;br /&gt;
&lt;br /&gt;
===Models===&lt;br /&gt;
&lt;br /&gt;
See [[#Design|Database Design]] section above.&lt;br /&gt;
&lt;br /&gt;
===Views===&lt;br /&gt;
&lt;br /&gt;
 1. expertiza/app/views/assignments/edit/_review_strategy.html.erb &lt;br /&gt;
  1.1. add a &amp;quot;role based&amp;quot; strategy checkbox here.&lt;br /&gt;
  1.2. add roles input fields if you check the &amp;quot;role based&amp;quot; strategy checkbox.&lt;br /&gt;
 2. expertiza/app/views/assignments/edit/_rubrics.html.erb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:review_strategy.png]]&lt;br /&gt;
&lt;br /&gt;
== Testing Details ==&lt;br /&gt;
In our project, we are providing an option of adding duty for different team members in an assignment and giving review options based on their duty. We will add following functionalities:&lt;br /&gt;
1. How instructor create assignment with duties/roles&lt;br /&gt;
2. How students take duties from a given list of duties&lt;br /&gt;
3. How teammate evaluation rubric assign different review questionnaire based on duty.&lt;br /&gt;
&lt;br /&gt;
=== UI Testing ===&lt;br /&gt;
UI will be tested manually. First, we will test creating an assignment as an instructor with different duties and assign different review questionnaires to each duty. Then we will login in as a student and take a duty from given list of duties. We will try covering all edge case scenarios in test cases section.&lt;br /&gt;
&lt;br /&gt;
=== Test Cases ===&lt;br /&gt;
Following will be the test cases:&lt;br /&gt;
&lt;br /&gt;
1. Login in as an Instructor:&lt;br /&gt;
&lt;br /&gt;
  1.a] While creating an assignment, in the Review Strategy tab provide the list of roles/duties possible for teammates. There will be one text box to add      &lt;br /&gt;
       duty. To add more duties click on &amp;quot;add more&amp;quot;. &lt;br /&gt;
  1.b] Mark the check box that says multiple team members can have the same duty.&lt;br /&gt;
  1.c] Go to the Rubrics tab and select different questionnaires for different duty.    &lt;br /&gt;
  After creating this assignment students should be able to see different duties in &amp;quot;Your Team&amp;quot; page and should be able to select any duty. Multiple students &lt;br /&gt;
  should be able to select same duty.&lt;br /&gt;
&lt;br /&gt;
2. Login in as an Instructor:&lt;br /&gt;
&lt;br /&gt;
  2.a] Repeat steps 1.a and 1.b &lt;br /&gt;
  2.b] This time do not mark the check box that says &amp;quot;multiple team members can have the same duty&amp;quot;.&lt;br /&gt;
  After creating this assignment students should be able to see different duties in &amp;quot;Your Team&amp;quot; page. This time student should not be able to select a duty if &lt;br /&gt;
  it was already selected.&lt;br /&gt;
&lt;br /&gt;
3. Login in as a Student&lt;br /&gt;
&lt;br /&gt;
   When you login in as a student you should be able to pick different duties assigned by the instructor. If multiple members are not allowed to have same duty &lt;br /&gt;
   then you should not be able to pick a duty if it was already selected by some other member.&lt;br /&gt;
&lt;br /&gt;
4. Login in as a Reviewer&lt;br /&gt;
&lt;br /&gt;
   When you login in as a reviewer you should get the questionnaire based on your duty. For example, if you are a software engineer you should get the review &lt;br /&gt;
   questionnaire assigned to software engineer. &lt;br /&gt;
   Different roles will be assigned different questionnaires for review.&lt;br /&gt;
&lt;br /&gt;
=== RSpec ===&lt;br /&gt;
&lt;br /&gt;
For functional testing, we will use RSpec. It uses Behavior Driven Development (BDD) for testing functionality of the system. It provides way to describe specific functionality of the system being tested and helps in better visualization of test cases.&lt;br /&gt;
&lt;br /&gt;
=== Capybara ===&lt;br /&gt;
We will use Capybara  for automating the manual test cases. It is a web-based automation framework and coupled with RSpec. It allow developers to write the test cases which simulate the whole scenario of manual testing.&lt;br /&gt;
&lt;br /&gt;
===Factory Girl===&lt;br /&gt;
We will use Factory Girl for creating data factory. Factory Girl is a Ruby Gem that allow users to create templates for valid and re-usable objects. It allows more customization when user instantiate the objects and it aims to ensure that user have a valid object to work with.&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;br /&gt;
&lt;br /&gt;
Expertiza[https://github.com/expertiza/expertiza]&lt;br /&gt;
&lt;br /&gt;
RSpec [http://rspec.info/]&lt;br /&gt;
&lt;br /&gt;
ScrumRoles [http://scrummethodology.com/the-scrum-team-role]&lt;br /&gt;
&lt;br /&gt;
CapyBara [https://github.com/jnicklas/capybara]&lt;br /&gt;
&lt;br /&gt;
FactoryGirl [https://github.com/thoughtbot/factory_girl]&lt;/div&gt;</summary>
		<author><name>Ddu3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1676_Role-based_reviewing&amp;diff=105462</id>
		<title>CSC/ECE 517 Fall 2016 E1676 Role-based reviewing</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1676_Role-based_reviewing&amp;diff=105462"/>
		<updated>2016-11-12T14:24:16Z</updated>

		<summary type="html">&lt;p&gt;Ddu3: /* Database Design */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Purpose   ==&lt;br /&gt;
In the current version of Expertiza, members among a team can evaluate each other’s contribution and give appropriate scores based on the same questionnaire. However, in the lifetime of software development, members in a team often take on different roles whose works content are vastly differentiated. Like in an agile development environment, such as Scrum, there are typically [http://scrummethodology.com/the-scrum-team-role/ seven roles group members] can take: software engineer, architect, programmer, analyst, QA expert, tester and UI designers . Job description and evaluation entailed are vastly varied among these roles, thus a generic assessment rubric cannot hold reasonably.&lt;br /&gt;
&lt;br /&gt;
The purpose or the rationale of our project is that we want to give project members the option to evaluate each other's work based on the specific role or duty they take in the development process. This can ensure a reasonable assessment for different duties and can also help to improve the utility using members-reviewing in the whole reviewing process.&lt;br /&gt;
&lt;br /&gt;
== Task Description==&lt;br /&gt;
Task Description:&lt;br /&gt;
There are generally three aspects we would accomplish in order to achieve the Role-based reviewing function. &lt;br /&gt;
&lt;br /&gt;
1) A new option (check box) would be added to the Review Strategy tab from the instructor view when he creates a new assignment.  What’s more, the instructor can create different roles or duties available for the assignment by typing into a test filed. The instructor also has the power the allow multiple members to choose for the same duty.&lt;br /&gt;
&lt;br /&gt;
2) In the Rubrics tab from the instructor view, New rubric would be generated by creating different questionnaires for different roles when adding new assignment.&lt;br /&gt;
&lt;br /&gt;
3) A new option (drop box) would be added to the “Your team” page from the student view when an assignment was created to be role-based reviewing. Student can choose their roles or duties from the drop box which were generated by the instructor for this specific assignment. When the instructor enabled the multiple selection option, different members in the team can choose same duties for this assignment.&lt;br /&gt;
&lt;br /&gt;
Tasks can be viewed more clearly by the graph below:&lt;br /&gt;
  &lt;br /&gt;
   &lt;br /&gt;
   &lt;br /&gt;
[[File:Picture4.png]]&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
=== Database Design ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
We would create a new table called '''Duty'''.&lt;br /&gt;
!Field Name !!Type !!Description&lt;br /&gt;
|-&lt;br /&gt;
!team_id&lt;br /&gt;
|int(11)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!duty_name&lt;br /&gt;
|text&lt;br /&gt;
|It saves student's duty in specific team.&lt;br /&gt;
|-&lt;br /&gt;
!student_id&lt;br /&gt;
|int(11)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!questionnaire_id&lt;br /&gt;
|int(11)&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
We should add '''duty_based''', '''multiple_duty_based''' and '''all_duty_name''' into '''assignments''' table to store the duty name&lt;br /&gt;
!Field Name !!Type !!Description&lt;br /&gt;
|-&lt;br /&gt;
!duty_based&lt;br /&gt;
|int(11)&lt;br /&gt;
|If the assignment's team is duty based, it should be '''1'''. If not, it should be '''0'''.&lt;br /&gt;
|-&lt;br /&gt;
!multiple_duty_based&lt;br /&gt;
|int(11)&lt;br /&gt;
|If multiple people could choose one duty in the assignment, it should be '''1'''. If not, it should be '''0'''.&lt;br /&gt;
|-&lt;br /&gt;
!all_duty_name&lt;br /&gt;
|int(11)&lt;br /&gt;
|It would save all kinds of duties in the assignment.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Updates==&lt;br /&gt;
&lt;br /&gt;
Below are the key files modified:&lt;br /&gt;
&lt;br /&gt;
===Controllers===&lt;br /&gt;
 1. expertiza/app/controllers/assignments_controller.rb:&lt;br /&gt;
    def edit&lt;br /&gt;
        a. add &amp;quot;role based assignment&amp;quot; option to review strategy section.&lt;br /&gt;
        b. add roles to current assignment.&lt;br /&gt;
        c. add questionnaires to these roles separately. &lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
 2. expertiza/app/controllers/questionnaires_controller.rb&lt;br /&gt;
&lt;br /&gt;
===Models===&lt;br /&gt;
&lt;br /&gt;
See [[#Design|Database Design]] section above.&lt;br /&gt;
&lt;br /&gt;
===Views===&lt;br /&gt;
&lt;br /&gt;
 1. expertiza/app/views/assignments/edit/_review_strategy.html.erb &lt;br /&gt;
  1.1. add a &amp;quot;role based&amp;quot; strategy checkbox here.&lt;br /&gt;
  1.2. add roles input fields if you check the &amp;quot;role based&amp;quot; strategy checkbox.&lt;br /&gt;
 2. expertiza/app/views/assignments/edit/_rubrics.html.erb&lt;br /&gt;
&lt;br /&gt;
== Testing Details ==&lt;br /&gt;
In our project, we are providing an option of adding duty for different team members in an assignment and giving review options based on their duty. We will add following functionalities:&lt;br /&gt;
1. How instructor create assignment with duties/roles&lt;br /&gt;
2. How students take duties from a given list of duties&lt;br /&gt;
3. How teammate evaluation rubric assign different review questionnaire based on duty.&lt;br /&gt;
&lt;br /&gt;
=== UI Testing ===&lt;br /&gt;
UI will be tested manually. First, we will test creating an assignment as an instructor with different duties and assign different review questionnaires to each duty. Then we will login in as a student and take a duty from given list of duties. We will try covering all edge case scenarios in test cases section.&lt;br /&gt;
&lt;br /&gt;
=== Test Cases ===&lt;br /&gt;
Following will be the test cases:&lt;br /&gt;
&lt;br /&gt;
1. Login in as an Instructor:&lt;br /&gt;
&lt;br /&gt;
  1.a] While creating an assignment, in the Review Strategy tab provide the list of roles/duties possible for teammates. There will be one text box to add      &lt;br /&gt;
       duty. To add more duties click on &amp;quot;add more&amp;quot;. &lt;br /&gt;
  1.b] Mark the check box that says multiple team members can have the same duty.&lt;br /&gt;
  1.c] Go to the Rubrics tab and select different questionnaires for different duty.    &lt;br /&gt;
  After creating this assignment students should be able to see different duties in &amp;quot;Your Team&amp;quot; page and should be able to select any duty. Multiple students &lt;br /&gt;
  should be able to select same duty.&lt;br /&gt;
&lt;br /&gt;
2. Login in as an Instructor:&lt;br /&gt;
&lt;br /&gt;
  2.a] Repeat steps 1.a and 1.b &lt;br /&gt;
  2.b] This time do not mark the check box that says &amp;quot;multiple team members can have the same duty&amp;quot;.&lt;br /&gt;
  After creating this assignment students should be able to see different duties in &amp;quot;Your Team&amp;quot; page. This time student should not be able to select a duty if &lt;br /&gt;
  it was already selected.&lt;br /&gt;
&lt;br /&gt;
3. Login in as a Student&lt;br /&gt;
&lt;br /&gt;
   When you login in as a student you should be able to pick different duties assigned by the instructor. If multiple members are not allowed to have same duty &lt;br /&gt;
   then you should not be able to pick a duty if it was already selected by some other member.&lt;br /&gt;
&lt;br /&gt;
4. Login in as a Reviewer&lt;br /&gt;
&lt;br /&gt;
   When you login in as a reviewer you should get the questionnaire based on your duty. For example, if you are a software engineer you should get the review &lt;br /&gt;
   questionnaire assigned to software engineer. &lt;br /&gt;
   Different roles will be assigned different questionnaires for review.&lt;br /&gt;
&lt;br /&gt;
=== RSpec ===&lt;br /&gt;
&lt;br /&gt;
For functional testing, we will use RSpec. It uses Behavior Driven Development (BDD) for testing functionality of the system. It provides way to describe specific functionality of the system being tested and helps in better visualization of test cases.&lt;br /&gt;
&lt;br /&gt;
=== Capybara ===&lt;br /&gt;
We will use Capybara  for automating the manual test cases. It is a web-based automation framework and coupled with RSpec. It allow developers to write the test cases which simulate the whole scenario of manual testing.&lt;br /&gt;
&lt;br /&gt;
===Factory Girl===&lt;br /&gt;
We will use Factory Girl for creating data factory. Factory Girl is a Ruby Gem that allow users to create templates for valid and re-usable objects. It allows more customization when user instantiate the objects and it aims to ensure that user have a valid object to work with.&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;br /&gt;
&lt;br /&gt;
Expertiza[https://github.com/expertiza/expertiza]&lt;br /&gt;
&lt;br /&gt;
RSpec [http://rspec.info/]&lt;br /&gt;
&lt;br /&gt;
ScrumRoles [http://scrummethodology.com/the-scrum-team-role]&lt;br /&gt;
&lt;br /&gt;
CapyBara [https://github.com/jnicklas/capybara]&lt;br /&gt;
&lt;br /&gt;
FactoryGirl [https://github.com/thoughtbot/factory_girl]&lt;/div&gt;</summary>
		<author><name>Ddu3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1676_Role-based_reviewing&amp;diff=105461</id>
		<title>CSC/ECE 517 Fall 2016 E1676 Role-based reviewing</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1676_Role-based_reviewing&amp;diff=105461"/>
		<updated>2016-11-12T14:14:31Z</updated>

		<summary type="html">&lt;p&gt;Ddu3: /* Database Design */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Purpose   ==&lt;br /&gt;
In the current version of Expertiza, members among a team can evaluate each other’s contribution and give appropriate scores based on the same questionnaire. However, in the lifetime of software development, members in a team often take on different roles whose works content are vastly differentiated. Like in an agile development environment, such as Scrum, there are typically [http://scrummethodology.com/the-scrum-team-role/ seven roles group members] can take: software engineer, architect, programmer, analyst, QA expert, tester and UI designers . Job description and evaluation entailed are vastly varied among these roles, thus a generic assessment rubric cannot hold reasonably.&lt;br /&gt;
&lt;br /&gt;
The purpose or the rationale of our project is that we want to give project members the option to evaluate each other's work based on the specific role or duty they take in the development process. This can ensure a reasonable assessment for different duties and can also help to improve the utility using members-reviewing in the whole reviewing process.&lt;br /&gt;
&lt;br /&gt;
== Task Description==&lt;br /&gt;
Task Description:&lt;br /&gt;
There are generally three aspects we would accomplish in order to achieve the Role-based reviewing function. &lt;br /&gt;
&lt;br /&gt;
1) A new option (check box) would be added to the Review Strategy tab from the instructor view when he creates a new assignment.  What’s more, the instructor can create different roles or duties available for the assignment by typing into a test filed. The instructor also has the power the allow multiple members to choose for the same duty.&lt;br /&gt;
&lt;br /&gt;
2) In the Rubrics tab from the instructor view, New rubric would be generated by creating different questionnaires for different roles when adding new assignment.&lt;br /&gt;
&lt;br /&gt;
3) A new option (drop box) would be added to the “Your team” page from the student view when an assignment was created to be role-based reviewing. Student can choose their roles or duties from the drop box which were generated by the instructor for this specific assignment. When the instructor enabled the multiple selection option, different members in the team can choose same duties for this assignment.&lt;br /&gt;
&lt;br /&gt;
Tasks can be viewed more clearly by the graph below:&lt;br /&gt;
  &lt;br /&gt;
   &lt;br /&gt;
   &lt;br /&gt;
[[File:Picture4.png]]&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
=== Database Design ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
We would create a new table '''Duty'''.&lt;br /&gt;
!Field Name !!Type !!Description&lt;br /&gt;
|-&lt;br /&gt;
!team_id&lt;br /&gt;
|int(11)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!duty_name&lt;br /&gt;
|text&lt;br /&gt;
|It saves student's duty in specific team.&lt;br /&gt;
|-&lt;br /&gt;
!student_id&lt;br /&gt;
|int(11)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!questionnaire_id&lt;br /&gt;
|int(11)&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
We should add '''duty_based''' into '''assignments''' table to store the duty name&lt;br /&gt;
!Field Name !!Type !!Description&lt;br /&gt;
|-&lt;br /&gt;
!duty_based&lt;br /&gt;
|int(11)&lt;br /&gt;
|If the assignment's team is duty based, it should be '''1'''. If not, it should be '''0'''.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
We should add '''duty_belong''' into '''questions''' table to store the duty name&lt;br /&gt;
!Field Name !!Type !!Description&lt;br /&gt;
|-&lt;br /&gt;
!duty_belong&lt;br /&gt;
|text&lt;br /&gt;
|It stores which duty the question belongs to.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Updates==&lt;br /&gt;
&lt;br /&gt;
Below are the key files modified:&lt;br /&gt;
&lt;br /&gt;
===Controllers===&lt;br /&gt;
 1. expertiza/app/controllers/assignments_controller.rb:&lt;br /&gt;
    def edit&lt;br /&gt;
        a. add &amp;quot;role based assignment&amp;quot; option to review strategy section.&lt;br /&gt;
        b. add roles to current assignment.&lt;br /&gt;
        c. add questionnaires to these roles separately. &lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
 2. expertiza/app/controllers/questionnaires_controller.rb&lt;br /&gt;
&lt;br /&gt;
===Models===&lt;br /&gt;
&lt;br /&gt;
See [[#Design|Database Design]] section above.&lt;br /&gt;
&lt;br /&gt;
===Views===&lt;br /&gt;
&lt;br /&gt;
 1. expertiza/app/views/assignments/edit/_review_strategy.html.erb &lt;br /&gt;
  1.1. add a &amp;quot;role based&amp;quot; strategy checkbox here.&lt;br /&gt;
  1.2. add roles input fields if you check the &amp;quot;role based&amp;quot; strategy checkbox.&lt;br /&gt;
 2. expertiza/app/views/assignments/edit/_rubrics.html.erb&lt;br /&gt;
&lt;br /&gt;
== Testing Details ==&lt;br /&gt;
In our project, we are providing an option of adding duty for different team members in an assignment and giving review options based on their duty. We will add following functionalities:&lt;br /&gt;
1. How instructor create assignment with duties/roles&lt;br /&gt;
2. How students take duties from a given list of duties&lt;br /&gt;
3. How teammate evaluation rubric assign different review questionnaire based on duty.&lt;br /&gt;
&lt;br /&gt;
=== UI Testing ===&lt;br /&gt;
UI will be tested manually. First, we will test creating an assignment as an instructor with different duties and assign different review questionnaires to each duty. Then we will login in as a student and take a duty from given list of duties. We will try covering all edge case scenarios in test cases section.&lt;br /&gt;
&lt;br /&gt;
=== Test Cases ===&lt;br /&gt;
Following will be the test cases:&lt;br /&gt;
&lt;br /&gt;
1. Login in as an Instructor:&lt;br /&gt;
&lt;br /&gt;
  1.a] While creating an assignment, in the Review Strategy tab provide the list of roles/duties possible for teammates. There will be one text box to add      &lt;br /&gt;
       duty. To add more duties click on &amp;quot;add more&amp;quot;. &lt;br /&gt;
  1.b] Mark the check box that says multiple team members can have the same duty.&lt;br /&gt;
  1.c] Go to the Rubrics tab and select different questionnaires for different duty.    &lt;br /&gt;
  After creating this assignment students should be able to see different duties in &amp;quot;Your Team&amp;quot; page and should be able to select any duty. Multiple students &lt;br /&gt;
  should be able to select same duty.&lt;br /&gt;
&lt;br /&gt;
2. Login in as an Instructor:&lt;br /&gt;
&lt;br /&gt;
  2.a] Repeat steps 1.a and 1.b &lt;br /&gt;
  2.b] This time do not mark the check box that says &amp;quot;multiple team members can have the same duty&amp;quot;.&lt;br /&gt;
  After creating this assignment students should be able to see different duties in &amp;quot;Your Team&amp;quot; page. This time student should not be able to select a duty if &lt;br /&gt;
  it was already selected.&lt;br /&gt;
&lt;br /&gt;
3. Login in as a Student&lt;br /&gt;
&lt;br /&gt;
   When you login in as a student you should be able to pick different duties assigned by the instructor. If multiple members are not allowed to have same duty &lt;br /&gt;
   then you should not be able to pick a duty if it was already selected by some other member.&lt;br /&gt;
&lt;br /&gt;
4. Login in as a Reviewer&lt;br /&gt;
&lt;br /&gt;
   When you login in as a reviewer you should get the questionnaire based on your duty. For example, if you are a software engineer you should get the review &lt;br /&gt;
   questionnaire assigned to software engineer. &lt;br /&gt;
   Different roles will be assigned different questionnaires for review.&lt;br /&gt;
&lt;br /&gt;
=== RSpec ===&lt;br /&gt;
&lt;br /&gt;
For functional testing, we will use RSpec. It uses Behavior Driven Development (BDD) for testing functionality of the system. It provides way to describe specific functionality of the system being tested and helps in better visualization of test cases.&lt;br /&gt;
&lt;br /&gt;
=== Capybara ===&lt;br /&gt;
We will use Capybara  for automating the manual test cases. It is a web-based automation framework and coupled with RSpec. It allow developers to write the test cases which simulate the whole scenario of manual testing.&lt;br /&gt;
&lt;br /&gt;
===Factory Girl===&lt;br /&gt;
We will use Factory Girl for creating data factory. Factory Girl is a Ruby Gem that allow users to create templates for valid and re-usable objects. It allows more customization when user instantiate the objects and it aims to ensure that user have a valid object to work with.&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;br /&gt;
&lt;br /&gt;
Expertiza[https://github.com/expertiza/expertiza]&lt;br /&gt;
&lt;br /&gt;
RSpec [http://rspec.info/]&lt;br /&gt;
&lt;br /&gt;
ScrumRoles [http://scrummethodology.com/the-scrum-team-role]&lt;br /&gt;
&lt;br /&gt;
CapyBara [https://github.com/jnicklas/capybara]&lt;br /&gt;
&lt;br /&gt;
FactoryGirl [https://github.com/thoughtbot/factory_girl]&lt;/div&gt;</summary>
		<author><name>Ddu3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1676_Role-based_reviewing&amp;diff=105460</id>
		<title>CSC/ECE 517 Fall 2016 E1676 Role-based reviewing</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1676_Role-based_reviewing&amp;diff=105460"/>
		<updated>2016-11-12T14:14:13Z</updated>

		<summary type="html">&lt;p&gt;Ddu3: /* Database Design */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Purpose   ==&lt;br /&gt;
In the current version of Expertiza, members among a team can evaluate each other’s contribution and give appropriate scores based on the same questionnaire. However, in the lifetime of software development, members in a team often take on different roles whose works content are vastly differentiated. Like in an agile development environment, such as Scrum, there are typically [http://scrummethodology.com/the-scrum-team-role/ seven roles group members] can take: software engineer, architect, programmer, analyst, QA expert, tester and UI designers . Job description and evaluation entailed are vastly varied among these roles, thus a generic assessment rubric cannot hold reasonably.&lt;br /&gt;
&lt;br /&gt;
The purpose or the rationale of our project is that we want to give project members the option to evaluate each other's work based on the specific role or duty they take in the development process. This can ensure a reasonable assessment for different duties and can also help to improve the utility using members-reviewing in the whole reviewing process.&lt;br /&gt;
&lt;br /&gt;
== Task Description==&lt;br /&gt;
Task Description:&lt;br /&gt;
There are generally three aspects we would accomplish in order to achieve the Role-based reviewing function. &lt;br /&gt;
&lt;br /&gt;
1) A new option (check box) would be added to the Review Strategy tab from the instructor view when he creates a new assignment.  What’s more, the instructor can create different roles or duties available for the assignment by typing into a test filed. The instructor also has the power the allow multiple members to choose for the same duty.&lt;br /&gt;
&lt;br /&gt;
2) In the Rubrics tab from the instructor view, New rubric would be generated by creating different questionnaires for different roles when adding new assignment.&lt;br /&gt;
&lt;br /&gt;
3) A new option (drop box) would be added to the “Your team” page from the student view when an assignment was created to be role-based reviewing. Student can choose their roles or duties from the drop box which were generated by the instructor for this specific assignment. When the instructor enabled the multiple selection option, different members in the team can choose same duties for this assignment.&lt;br /&gt;
&lt;br /&gt;
Tasks can be viewed more clearly by the graph below:&lt;br /&gt;
  &lt;br /&gt;
   &lt;br /&gt;
   &lt;br /&gt;
[[File:Picture4.png]]&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
=== Database Design ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
We would create a new table '''Duty''.'&lt;br /&gt;
!Field Name !!Type !!Description&lt;br /&gt;
|-&lt;br /&gt;
!team_id&lt;br /&gt;
|int(11)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!duty_name&lt;br /&gt;
|text&lt;br /&gt;
|It saves student's duty in specific team.&lt;br /&gt;
|-&lt;br /&gt;
!student_id&lt;br /&gt;
|int(11)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!questionnaire_id&lt;br /&gt;
|int(11)&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
We should add '''duty_based''' into '''assignments''' table to store the duty name&lt;br /&gt;
!Field Name !!Type !!Description&lt;br /&gt;
|-&lt;br /&gt;
!duty_based&lt;br /&gt;
|int(11)&lt;br /&gt;
|If the assignment's team is duty based, it should be '''1'''. If not, it should be '''0'''.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
We should add '''duty_belong''' into '''questions''' table to store the duty name&lt;br /&gt;
!Field Name !!Type !!Description&lt;br /&gt;
|-&lt;br /&gt;
!duty_belong&lt;br /&gt;
|text&lt;br /&gt;
|It stores which duty the question belongs to.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Updates==&lt;br /&gt;
&lt;br /&gt;
Below are the key files modified:&lt;br /&gt;
&lt;br /&gt;
===Controllers===&lt;br /&gt;
 1. expertiza/app/controllers/assignments_controller.rb:&lt;br /&gt;
    def edit&lt;br /&gt;
        a. add &amp;quot;role based assignment&amp;quot; option to review strategy section.&lt;br /&gt;
        b. add roles to current assignment.&lt;br /&gt;
        c. add questionnaires to these roles separately. &lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
 2. expertiza/app/controllers/questionnaires_controller.rb&lt;br /&gt;
&lt;br /&gt;
===Models===&lt;br /&gt;
&lt;br /&gt;
See [[#Design|Database Design]] section above.&lt;br /&gt;
&lt;br /&gt;
===Views===&lt;br /&gt;
&lt;br /&gt;
 1. expertiza/app/views/assignments/edit/_review_strategy.html.erb &lt;br /&gt;
  1.1. add a &amp;quot;role based&amp;quot; strategy checkbox here.&lt;br /&gt;
  1.2. add roles input fields if you check the &amp;quot;role based&amp;quot; strategy checkbox.&lt;br /&gt;
 2. expertiza/app/views/assignments/edit/_rubrics.html.erb&lt;br /&gt;
&lt;br /&gt;
== Testing Details ==&lt;br /&gt;
In our project, we are providing an option of adding duty for different team members in an assignment and giving review options based on their duty. We will add following functionalities:&lt;br /&gt;
1. How instructor create assignment with duties/roles&lt;br /&gt;
2. How students take duties from a given list of duties&lt;br /&gt;
3. How teammate evaluation rubric assign different review questionnaire based on duty.&lt;br /&gt;
&lt;br /&gt;
=== UI Testing ===&lt;br /&gt;
UI will be tested manually. First, we will test creating an assignment as an instructor with different duties and assign different review questionnaires to each duty. Then we will login in as a student and take a duty from given list of duties. We will try covering all edge case scenarios in test cases section.&lt;br /&gt;
&lt;br /&gt;
=== Test Cases ===&lt;br /&gt;
Following will be the test cases:&lt;br /&gt;
&lt;br /&gt;
1. Login in as an Instructor:&lt;br /&gt;
&lt;br /&gt;
  1.a] While creating an assignment, in the Review Strategy tab provide the list of roles/duties possible for teammates. There will be one text box to add      &lt;br /&gt;
       duty. To add more duties click on &amp;quot;add more&amp;quot;. &lt;br /&gt;
  1.b] Mark the check box that says multiple team members can have the same duty.&lt;br /&gt;
  1.c] Go to the Rubrics tab and select different questionnaires for different duty.    &lt;br /&gt;
  After creating this assignment students should be able to see different duties in &amp;quot;Your Team&amp;quot; page and should be able to select any duty. Multiple students &lt;br /&gt;
  should be able to select same duty.&lt;br /&gt;
&lt;br /&gt;
2. Login in as an Instructor:&lt;br /&gt;
&lt;br /&gt;
  2.a] Repeat steps 1.a and 1.b &lt;br /&gt;
  2.b] This time do not mark the check box that says &amp;quot;multiple team members can have the same duty&amp;quot;.&lt;br /&gt;
  After creating this assignment students should be able to see different duties in &amp;quot;Your Team&amp;quot; page. This time student should not be able to select a duty if &lt;br /&gt;
  it was already selected.&lt;br /&gt;
&lt;br /&gt;
3. Login in as a Student&lt;br /&gt;
&lt;br /&gt;
   When you login in as a student you should be able to pick different duties assigned by the instructor. If multiple members are not allowed to have same duty &lt;br /&gt;
   then you should not be able to pick a duty if it was already selected by some other member.&lt;br /&gt;
&lt;br /&gt;
4. Login in as a Reviewer&lt;br /&gt;
&lt;br /&gt;
   When you login in as a reviewer you should get the questionnaire based on your duty. For example, if you are a software engineer you should get the review &lt;br /&gt;
   questionnaire assigned to software engineer. &lt;br /&gt;
   Different roles will be assigned different questionnaires for review.&lt;br /&gt;
&lt;br /&gt;
=== RSpec ===&lt;br /&gt;
&lt;br /&gt;
For functional testing, we will use RSpec. It uses Behavior Driven Development (BDD) for testing functionality of the system. It provides way to describe specific functionality of the system being tested and helps in better visualization of test cases.&lt;br /&gt;
&lt;br /&gt;
=== Capybara ===&lt;br /&gt;
We will use Capybara  for automating the manual test cases. It is a web-based automation framework and coupled with RSpec. It allow developers to write the test cases which simulate the whole scenario of manual testing.&lt;br /&gt;
&lt;br /&gt;
===Factory Girl===&lt;br /&gt;
We will use Factory Girl for creating data factory. Factory Girl is a Ruby Gem that allow users to create templates for valid and re-usable objects. It allows more customization when user instantiate the objects and it aims to ensure that user have a valid object to work with.&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;br /&gt;
&lt;br /&gt;
Expertiza[https://github.com/expertiza/expertiza]&lt;br /&gt;
&lt;br /&gt;
RSpec [http://rspec.info/]&lt;br /&gt;
&lt;br /&gt;
ScrumRoles [http://scrummethodology.com/the-scrum-team-role]&lt;br /&gt;
&lt;br /&gt;
CapyBara [https://github.com/jnicklas/capybara]&lt;br /&gt;
&lt;br /&gt;
FactoryGirl [https://github.com/thoughtbot/factory_girl]&lt;/div&gt;</summary>
		<author><name>Ddu3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1676_Role-based_reviewing&amp;diff=104836</id>
		<title>CSC/ECE 517 Fall 2016 E1676 Role-based reviewing</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1676_Role-based_reviewing&amp;diff=104836"/>
		<updated>2016-11-09T04:06:55Z</updated>

		<summary type="html">&lt;p&gt;Ddu3: /* Database Design */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Purpose   ==&lt;br /&gt;
In the current version of Expertiza, members among a team can evaluate each other’s contribution and give appropriate scores based on the same questionnaire. However, in the lifetime of software development, members in a team often take on different roles whose works content are vastly differentiated. Like in an agile development environment, such as Scrum, there are typically [http://scrummethodology.com/the-scrum-team-role/ seven roles group members] can take: software engineer, architect, programmer, analyst, QA expert, tester and UI designers . Job description and evaluation entailed are vastly varied among these roles, thus a generic assessment rubric cannot hold reasonably.&lt;br /&gt;
&lt;br /&gt;
The purpose or the rationale of our project is that we want to give project members the option to evaluate each other's work based on the specific role or duty they take in the development process. This can ensure a reasonable assessment for different duties and can also help to improve the utility using members-reviewing in the whole reviewing process.&lt;br /&gt;
&lt;br /&gt;
== Task Description==&lt;br /&gt;
Task Description:&lt;br /&gt;
There are generally three aspects we would accomplish in order to achieve the Role-based reviewing function. &lt;br /&gt;
&lt;br /&gt;
1) A new option (check box) would be added to the Review Strategy tab from the instructor view when he creates a new assignment.  What’s more, the instructor can create different roles or duties available for the assignment by typing into a test filed. The instructor also has the power the allow multiple members to choose for the same duty.&lt;br /&gt;
&lt;br /&gt;
2) In the Rubrics tab from the instructor view, New rubric would be generated by creating different questionnaires for different roles when adding new assignment.&lt;br /&gt;
&lt;br /&gt;
3) A new option (drop box) would be added to the “Your team” page from the student view when an assignment was created to be role-based reviewing. Student can choose their roles or duties from the drop box which were generated by the instructor for this specific assignment. When the instructor enabled the multiple selection option, different members in the team can choose same duties for this assignment.&lt;br /&gt;
&lt;br /&gt;
Tasks can be viewed more clearly by the graph below:&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
=== Database Design ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
We should add '''duty_name''' into '''teams_users''' table to store the duty name&lt;br /&gt;
!Field Name !!Type !!Description&lt;br /&gt;
|-&lt;br /&gt;
!duty_name&lt;br /&gt;
|text&lt;br /&gt;
|student's duty in team&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
We should add '''duty_based''' into '''assignments''' table to store the duty name&lt;br /&gt;
!Field Name !!Type !!Description&lt;br /&gt;
|-&lt;br /&gt;
!duty_based&lt;br /&gt;
|int(11)&lt;br /&gt;
|If the assignment's team is duty based, it should be '''1'''. If not, it should be '''0'''.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
We should add '''duty_belong''' into '''questions''' table to store the duty name&lt;br /&gt;
!Field Name !!Type !!Description&lt;br /&gt;
|-&lt;br /&gt;
!duty_belong&lt;br /&gt;
|text&lt;br /&gt;
|It stores which duty the question belongs to.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Updates==&lt;br /&gt;
&lt;br /&gt;
Below are the key files modified:&lt;br /&gt;
===Controllers===&lt;br /&gt;
&lt;br /&gt;
===Models===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Views===&lt;br /&gt;
&lt;br /&gt;
== Testing Details ==&lt;br /&gt;
&lt;br /&gt;
=== RSpec ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Factory Girl===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Running RSpec===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Test Cases===&lt;/div&gt;</summary>
		<author><name>Ddu3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1676_Role-based_reviewing&amp;diff=104835</id>
		<title>CSC/ECE 517 Fall 2016 E1676 Role-based reviewing</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1676_Role-based_reviewing&amp;diff=104835"/>
		<updated>2016-11-09T04:01:48Z</updated>

		<summary type="html">&lt;p&gt;Ddu3: /* Database Design */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Purpose   ==&lt;br /&gt;
In the current version of Expertiza, members among a team can evaluate each other’s contribution and give appropriate scores based on the same questionnaire. However, in the lifetime of software development, members in a team often take on different roles whose works content are vastly differentiated. Like in an agile development environment, such as Scrum, there are typically [http://scrummethodology.com/the-scrum-team-role/ seven roles group members] can take: software engineer, architect, programmer, analyst, QA expert, tester and UI designers . Job description and evaluation entailed are vastly varied among these roles, thus a generic assessment rubric cannot hold reasonably.&lt;br /&gt;
&lt;br /&gt;
The purpose or the rationale of our project is that we want to give project members the option to evaluate each other's work based on the specific role or duty they take in the development process. This can ensure a reasonable assessment for different duties and can also help to improve the utility using members-reviewing in the whole reviewing process.&lt;br /&gt;
&lt;br /&gt;
== Task Description==&lt;br /&gt;
Task Description:&lt;br /&gt;
There are generally three aspects we would accomplish in order to achieve the Role-based reviewing function. &lt;br /&gt;
&lt;br /&gt;
1) A new option (check box) would be added to the Review Strategy tab from the instructor view when he creates a new assignment.  What’s more, the instructor can create different roles or duties available for the assignment by typing into a test filed. The instructor also has the power the allow multiple members to choose for the same duty.&lt;br /&gt;
&lt;br /&gt;
2) In the Rubrics tab from the instructor view, New rubric would be generated by creating different questionnaires for different roles when adding new assignment.&lt;br /&gt;
&lt;br /&gt;
3) A new option (drop box) would be added to the “Your team” page from the student view when an assignment was created to be role-based reviewing. Student can choose their roles or duties from the drop box which were generated by the instructor for this specific assignment. When the instructor enabled the multiple selection option, different members in the team can choose same duties for this assignment.&lt;br /&gt;
&lt;br /&gt;
Tasks can be viewed more clearly by the graph below:&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
=== Database Design ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
We should add '''duty_name''' into '''teams_users''' table to store the duty name&lt;br /&gt;
!Field Name !!Type !!Description&lt;br /&gt;
|-&lt;br /&gt;
!duty_name&lt;br /&gt;
|text&lt;br /&gt;
|student's duty in team&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
We should add '''duty_based''' into '''assignments''' table to store the duty name&lt;br /&gt;
!Field Name !!Type !!Description&lt;br /&gt;
|-&lt;br /&gt;
!duty_based&lt;br /&gt;
|int(11)&lt;br /&gt;
|If the assignment's team is duty based, it should be '''1'''. If not, it should be '''0'''.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
We should add '''duty_belong''' into '''questions''' table to store the duty name&lt;br /&gt;
!Field Name !!Type !!Description&lt;br /&gt;
|-&lt;br /&gt;
!duty_belong&lt;br /&gt;
|text&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Updates==&lt;br /&gt;
&lt;br /&gt;
Below are the key files modified:&lt;br /&gt;
===Controllers===&lt;br /&gt;
&lt;br /&gt;
===Models===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Views===&lt;br /&gt;
&lt;br /&gt;
== Testing Details ==&lt;br /&gt;
&lt;br /&gt;
=== RSpec ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Factory Girl===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Running RSpec===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Test Cases===&lt;/div&gt;</summary>
		<author><name>Ddu3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1676_Role-based_reviewing&amp;diff=104834</id>
		<title>CSC/ECE 517 Fall 2016 E1676 Role-based reviewing</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1676_Role-based_reviewing&amp;diff=104834"/>
		<updated>2016-11-09T03:56:18Z</updated>

		<summary type="html">&lt;p&gt;Ddu3: /* Database Design */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Purpose   ==&lt;br /&gt;
In the current version of Expertiza, members among a team can evaluate each other’s contribution and give appropriate scores based on the same questionnaire. However, in the lifetime of software development, members in a team often take on different roles whose works content are vastly differentiated. Like in an agile development environment, such as Scrum, there are typically [http://scrummethodology.com/the-scrum-team-role/ seven roles group members] can take: software engineer, architect, programmer, analyst, QA expert, tester and UI designers . Job description and evaluation entailed are vastly varied among these roles, thus a generic assessment rubric cannot hold reasonably.&lt;br /&gt;
&lt;br /&gt;
The purpose or the rationale of our project is that we want to give project members the option to evaluate each other's work based on the specific role or duty they take in the development process. This can ensure a reasonable assessment for different duties and can also help to improve the utility using members-reviewing in the whole reviewing process.&lt;br /&gt;
&lt;br /&gt;
== Task Description==&lt;br /&gt;
Task Description:&lt;br /&gt;
There are generally three aspects we would accomplish in order to achieve the Role-based reviewing function. &lt;br /&gt;
&lt;br /&gt;
1) A new option (check box) would be added to the Review Strategy tab from the instructor view when he creates a new assignment.  What’s more, the instructor can create different roles or duties available for the assignment by typing into a test filed. The instructor also has the power the allow multiple members to choose for the same duty.&lt;br /&gt;
&lt;br /&gt;
2) In the Rubrics tab from the instructor view, New rubric would be generated by creating different questionnaires for different roles when adding new assignment.&lt;br /&gt;
&lt;br /&gt;
3) A new option (drop box) would be added to the “Your team” page from the student view when an assignment was created to be role-based reviewing. Student can choose their roles or duties from the drop box which were generated by the instructor for this specific assignment. When the instructor enabled the multiple selection option, different members in the team can choose same duties for this assignment.&lt;br /&gt;
&lt;br /&gt;
Tasks can be viewed more clearly by the graph below:&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
=== Database Design ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
We should add '''duty_name''' into '''teams_users''' table to store the duty name&lt;br /&gt;
!Field Name !!Type !!Description&lt;br /&gt;
|-&lt;br /&gt;
!duty_name&lt;br /&gt;
|text&lt;br /&gt;
|student's duty in team&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
We should add '''duty_based''' into '''assignments''' table to store the duty name&lt;br /&gt;
!Field Name !!Type !!Description&lt;br /&gt;
|-&lt;br /&gt;
!duty_based&lt;br /&gt;
|int(11)&lt;br /&gt;
|If the assignment's team is duty based, it should be '''1'''. If not, it should be '''0'''.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Updates==&lt;br /&gt;
&lt;br /&gt;
Below are the key files modified:&lt;br /&gt;
===Controllers===&lt;br /&gt;
&lt;br /&gt;
===Models===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Views===&lt;br /&gt;
&lt;br /&gt;
== Testing Details ==&lt;br /&gt;
&lt;br /&gt;
=== RSpec ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Factory Girl===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Running RSpec===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Test Cases===&lt;/div&gt;</summary>
		<author><name>Ddu3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1676_Role-based_reviewing&amp;diff=104833</id>
		<title>CSC/ECE 517 Fall 2016 E1676 Role-based reviewing</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1676_Role-based_reviewing&amp;diff=104833"/>
		<updated>2016-11-09T03:48:24Z</updated>

		<summary type="html">&lt;p&gt;Ddu3: /* Database Design */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Purpose   ==&lt;br /&gt;
In the current version of Expertiza, members among a team can evaluate each other’s contribution and give appropriate scores based on the same questionnaire. However, in the lifetime of software development, members in a team often take on different roles whose works content are vastly differentiated. Like in an agile development environment, such as Scrum, there are typically [http://scrummethodology.com/the-scrum-team-role/ seven roles group members] can take: software engineer, architect, programmer, analyst, QA expert, tester and UI designers . Job description and evaluation entailed are vastly varied among these roles, thus a generic assessment rubric cannot hold reasonably.&lt;br /&gt;
&lt;br /&gt;
The purpose or the rationale of our project is that we want to give project members the option to evaluate each other's work based on the specific role or duty they take in the development process. This can ensure a reasonable assessment for different duties and can also help to improve the utility using members-reviewing in the whole reviewing process.&lt;br /&gt;
&lt;br /&gt;
== Task Description==&lt;br /&gt;
Task Description:&lt;br /&gt;
There are generally three aspects we would accomplish in order to achieve the Role-based reviewing function. &lt;br /&gt;
&lt;br /&gt;
1) A new option (check box) would be added to the Review Strategy tab from the instructor view when he creates a new assignment.  What’s more, the instructor can create different roles or duties available for the assignment by typing into a test filed. The instructor also has the power the allow multiple members to choose for the same duty.&lt;br /&gt;
&lt;br /&gt;
2) In the Rubrics tab from the instructor view, New rubric would be generated by creating different questionnaires for different roles when adding new assignment.&lt;br /&gt;
&lt;br /&gt;
3) A new option (drop box) would be added to the “Your team” page from the student view when an assignment was created to be role-based reviewing. Student can choose their roles or duties from the drop box which were generated by the instructor for this specific assignment. When the instructor enabled the multiple selection option, different members in the team can choose same duties for this assignment.&lt;br /&gt;
&lt;br /&gt;
Tasks can be viewed more clearly by the graph below:&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
=== Database Design ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
We should add '''duty_name''' into '''teams_users''' table to store the duty name&lt;br /&gt;
!Field Name !!Type !!Description&lt;br /&gt;
|-&lt;br /&gt;
!duty_name&lt;br /&gt;
|text&lt;br /&gt;
|student's duty in team&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Updates==&lt;br /&gt;
&lt;br /&gt;
Below are the key files modified:&lt;br /&gt;
===Controllers===&lt;br /&gt;
&lt;br /&gt;
===Models===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Views===&lt;br /&gt;
&lt;br /&gt;
== Testing Details ==&lt;br /&gt;
&lt;br /&gt;
=== RSpec ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Factory Girl===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Running RSpec===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Test Cases===&lt;/div&gt;</summary>
		<author><name>Ddu3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1676_Role-based_reviewing&amp;diff=104832</id>
		<title>CSC/ECE 517 Fall 2016 E1676 Role-based reviewing</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1676_Role-based_reviewing&amp;diff=104832"/>
		<updated>2016-11-09T03:41:01Z</updated>

		<summary type="html">&lt;p&gt;Ddu3: /* Database Design */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Purpose   ==&lt;br /&gt;
In the current version of Expertiza, members among a team can evaluate each other’s contribution and give appropriate scores based on the same questionnaire. However, in the lifetime of software development, members in a team often take on different roles whose works content are vastly differentiated. Like in an agile development environment, such as Scrum, there are typically [http://scrummethodology.com/the-scrum-team-role/ seven roles group members] can take: software engineer, architect, programmer, analyst, QA expert, tester and UI designers . Job description and evaluation entailed are vastly varied among these roles, thus a generic assessment rubric cannot hold reasonably.&lt;br /&gt;
&lt;br /&gt;
The purpose or the rationale of our project is that we want to give project members the option to evaluate each other's work based on the specific role or duty they take in the development process. This can ensure a reasonable assessment for different duties and can also help to improve the utility using members-reviewing in the whole reviewing process.&lt;br /&gt;
&lt;br /&gt;
== Task Description==&lt;br /&gt;
Task Description:&lt;br /&gt;
There are generally three aspects we would accomplish in order to achieve the Role-based reviewing function. &lt;br /&gt;
&lt;br /&gt;
1) A new option (check box) would be added to the Review Strategy tab from the instructor view when he creates a new assignment.  What’s more, the instructor can create different roles or duties available for the assignment by typing into a test filed. The instructor also has the power the allow multiple members to choose for the same duty.&lt;br /&gt;
&lt;br /&gt;
2) In the Rubrics tab from the instructor view, New rubric would be generated by creating different questionnaires for different roles when adding new assignment.&lt;br /&gt;
&lt;br /&gt;
3) A new option (drop box) would be added to the “Your team” page from the student view when an assignment was created to be role-based reviewing. Student can choose their roles or duties from the drop box which were generated by the instructor for this specific assignment. When the instructor enabled the multiple selection option, different members in the team can choose same duties for this assignment.&lt;br /&gt;
&lt;br /&gt;
Tasks can be viewed more clearly by the graph below:&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
=== Database Design ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
We should add `duty_name` into `teams_users` table to store the duty name&lt;br /&gt;
!Field Name !!Type !!Description&lt;br /&gt;
|-&lt;br /&gt;
!duty_name&lt;br /&gt;
|text&lt;br /&gt;
|student's duty in team&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Updates==&lt;br /&gt;
&lt;br /&gt;
Below are the key files modified:&lt;br /&gt;
===Controllers===&lt;br /&gt;
&lt;br /&gt;
===Models===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Views===&lt;br /&gt;
&lt;br /&gt;
== Testing Details ==&lt;br /&gt;
&lt;br /&gt;
=== RSpec ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Factory Girl===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Running RSpec===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Test Cases===&lt;/div&gt;</summary>
		<author><name>Ddu3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1676_Role-based_reviewing&amp;diff=104831</id>
		<title>CSC/ECE 517 Fall 2016 E1676 Role-based reviewing</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1676_Role-based_reviewing&amp;diff=104831"/>
		<updated>2016-11-09T03:35:26Z</updated>

		<summary type="html">&lt;p&gt;Ddu3: /* Database Design */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Purpose   ==&lt;br /&gt;
In the current version of Expertiza, members among a team can evaluate each other’s contribution and give appropriate scores based on the same questionnaire. However, in the lifetime of software development, members in a team often take on different roles whose works content are vastly differentiated. Like in an agile development environment, such as Scrum, there are typically [http://scrummethodology.com/the-scrum-team-role/ seven roles group members] can take: software engineer, architect, programmer, analyst, QA expert, tester and UI designers . Job description and evaluation entailed are vastly varied among these roles, thus a generic assessment rubric cannot hold reasonably.&lt;br /&gt;
&lt;br /&gt;
The purpose or the rationale of our project is that we want to give project members the option to evaluate each other's work based on the specific role or duty they take in the development process. This can ensure a reasonable assessment for different duties and can also help to improve the utility using members-reviewing in the whole reviewing process.&lt;br /&gt;
&lt;br /&gt;
== Task Description==&lt;br /&gt;
Task Description:&lt;br /&gt;
There are generally three aspects we would accomplish in order to achieve the Role-based reviewing function. &lt;br /&gt;
&lt;br /&gt;
1) A new option (check box) would be added to the Review Strategy tab from the instructor view when he creates a new assignment.  What’s more, the instructor can create different roles or duties available for the assignment by typing into a test filed. The instructor also has the power the allow multiple members to choose for the same duty.&lt;br /&gt;
&lt;br /&gt;
2) In the Rubrics tab from the instructor view, New rubric would be generated by creating different questionnaires for different roles when adding new assignment.&lt;br /&gt;
&lt;br /&gt;
3) A new option (drop box) would be added to the “Your team” page from the student view when an assignment was created to be role-based reviewing. Student can choose their roles or duties from the drop box which were generated by the instructor for this specific assignment. When the instructor enabled the multiple selection option, different members in the team can choose same duties for this assignment.&lt;br /&gt;
&lt;br /&gt;
Tasks can be viewed more clearly by the graph below:&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
=== Database Design ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
The Teams table maps users to teams; in rare cases, a single individual is on &amp;gt; 1 team for an assignment.&lt;br /&gt;
!Field Name !!Type !!Description&lt;br /&gt;
|- &lt;br /&gt;
!id   &lt;br /&gt;
|int(11)  &lt;br /&gt;
|&lt;br /&gt;
|- &lt;br /&gt;
!team_id   &lt;br /&gt;
|int(11)  &lt;br /&gt;
|id of the team to which the user belongs to &lt;br /&gt;
|- &lt;br /&gt;
!user_id   &lt;br /&gt;
|int(11)&lt;br /&gt;
|student who belongs to the team&lt;br /&gt;
|-&lt;br /&gt;
!duty_name&lt;br /&gt;
|text&lt;br /&gt;
|student's duty in team&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Updates==&lt;br /&gt;
&lt;br /&gt;
Below are the key files modified:&lt;br /&gt;
===Controllers===&lt;br /&gt;
&lt;br /&gt;
===Models===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Views===&lt;br /&gt;
&lt;br /&gt;
== Testing Details ==&lt;br /&gt;
&lt;br /&gt;
=== RSpec ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Factory Girl===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Running RSpec===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Test Cases===&lt;/div&gt;</summary>
		<author><name>Ddu3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1676_Role-based_reviewing&amp;diff=104829</id>
		<title>CSC/ECE 517 Fall 2016 E1676 Role-based reviewing</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1676_Role-based_reviewing&amp;diff=104829"/>
		<updated>2016-11-09T03:23:35Z</updated>

		<summary type="html">&lt;p&gt;Ddu3: /* Database Design */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Purpose   ==&lt;br /&gt;
In the current version of Expertiza, members among a team can evaluate each other’s contribution and give appropriate scores based on the same questionnaire. However, in the lifetime of software development, members in a team often take on different roles whose works content are vastly differentiated. Like in an agile development environment, such as Scrum, there are typically [http://scrummethodology.com/the-scrum-team-role/ seven roles group members] can take: software engineer, architect, programmer, analyst, QA expert, tester and UI designers . Job description and evaluation entailed are vastly varied among these roles, thus a generic assessment rubric cannot hold reasonably.&lt;br /&gt;
&lt;br /&gt;
The purpose or the rationale of our project is that we want to give project members the option to evaluate each other's work based on the specific role or duty they take in the development process. This can ensure a reasonable assessment for different duties and can also help to improve the utility using members-reviewing in the whole reviewing process.&lt;br /&gt;
&lt;br /&gt;
== Task Description==&lt;br /&gt;
Task Description:&lt;br /&gt;
There are generally three aspects we would accomplish in order to achieve the Role-based reviewing function. &lt;br /&gt;
&lt;br /&gt;
1) A new option (check box) would be added to the Review Strategy tab from the instructor view when he creates a new assignment.  What’s more, the instructor can create different roles or duties available for the assignment by typing into a test filed. The instructor also has the power the allow multiple members to choose for the same duty.&lt;br /&gt;
&lt;br /&gt;
2) In the Rubrics tab from the instructor view, New rubric would be generated by creating different questionnaires for different roles when adding new assignment.&lt;br /&gt;
&lt;br /&gt;
3) A new option (drop box) would be added to the “Your team” page from the student view when an assignment was created to be role-based reviewing. Student can choose their roles or duties from the drop box which were generated by the instructor for this specific assignment. When the instructor enabled the multiple selection option, different members in the team can choose same duties for this assignment.&lt;br /&gt;
&lt;br /&gt;
Tasks can be viewed more clearly by the graph below:&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
=== Database Design ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
!Field Name !!Type !!Description&lt;br /&gt;
|- &lt;br /&gt;
!id   &lt;br /&gt;
|int(11)  &lt;br /&gt;
|&lt;br /&gt;
|- &lt;br /&gt;
!team_id   &lt;br /&gt;
|int(11)  &lt;br /&gt;
|id of the team to which the user belongs to &lt;br /&gt;
|- &lt;br /&gt;
!user_id   &lt;br /&gt;
|int(11)&lt;br /&gt;
|student who belongs to the team&lt;br /&gt;
|-&lt;br /&gt;
!duty_name&lt;br /&gt;
|text&lt;br /&gt;
|student's duty in team&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Updates==&lt;br /&gt;
&lt;br /&gt;
Below are the key files modified:&lt;br /&gt;
===Controllers===&lt;br /&gt;
&lt;br /&gt;
===Models===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Views===&lt;br /&gt;
&lt;br /&gt;
== Testing Details ==&lt;br /&gt;
&lt;br /&gt;
=== RSpec ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Factory Girl===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Running RSpec===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Test Cases===&lt;/div&gt;</summary>
		<author><name>Ddu3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1676_Role-based_reviewing&amp;diff=104688</id>
		<title>CSC/ECE 517 Fall 2016 E1676 Role-based reviewing</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1676_Role-based_reviewing&amp;diff=104688"/>
		<updated>2016-11-08T01:29:41Z</updated>

		<summary type="html">&lt;p&gt;Ddu3: Created page with &amp;quot;== Task Description==   == Purpose   ==  ===Rationale of using Scrum &amp;amp; Role based reviewing ===  == Design ==  === Database Design ===  ==Updates==  Below are the key files modif...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Task Description==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Purpose   ==&lt;br /&gt;
&lt;br /&gt;
===Rationale of using Scrum &amp;amp; Role based reviewing ===&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
=== Database Design ===&lt;br /&gt;
&lt;br /&gt;
==Updates==&lt;br /&gt;
&lt;br /&gt;
Below are the key files modified:&lt;br /&gt;
===Controllers===&lt;br /&gt;
&lt;br /&gt;
===Models===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Views===&lt;br /&gt;
&lt;br /&gt;
== Testing Details ==&lt;br /&gt;
&lt;br /&gt;
=== RSpec ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Factory Girl===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Running RSpec===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Test Cases===&lt;/div&gt;</summary>
		<author><name>Ddu3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016&amp;diff=104687</id>
		<title>CSC/ECE 517 Fall 2016</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016&amp;diff=104687"/>
		<updated>2016-11-08T01:28:40Z</updated>

		<summary type="html">&lt;p&gt;Ddu3: /* Final Project Design Document */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[http://www.example.com link title]==Calibration Assignment Submissions==&lt;br /&gt;
*[[Calibration Assignment Submission (Firebrick JS)]]&lt;br /&gt;
*[[Calibration Assignment Submission (Active Job)]]&lt;br /&gt;
==Writing Assignments 2==&lt;br /&gt;
*[[CSC/ECE 517 Fall 2016/E1666. Test team functionality]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2016/E1643. Refactor Suggestion controller]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2016/E1631. Refactoring Bidding Interface]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2016/E1674.Refactor leaderboard.rb and write unit tests]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2016/E1671. Unit Tests for participants.rb Hierarchy]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2016/E1668.Test e-mailing functionality]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2016/E1658. Refractor lottery_controller.rb and write integration tests]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2016/E1660. Review requirements and thresholds]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2016/E1650. Sort instructor views alphabetically by default]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2016/E1644. Refactor and test Teams Controller]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2016/E1645. Refactoring Tree Display Controller]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2016/E1659. Refactor on_the_fly_calc.rb]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2016/E1657. Introduce a Student View for instructors]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2016/E1653. Fix and improve rubric criteria]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2016/E1642. Refactor review_response_map.rb]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2016/E1633. Refactor different question types from quiz feature]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2016/E1664:_Feature_Test_Assignment_Creation]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2016/E1666. Test team functionality]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2016/E1654. Improve_date-picker_and_deadlines]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2016/E1652 Fix teammate advertisements and requests to join a team ]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2016/E1662. UI issues/fixes]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2016/E1673. Refactor question_type.rb]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2016/E1675. Timestamp for student file &amp;amp; hyperlink submissions]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2016/E1640. Refactor response.rb and response_helper.rb]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2016/E1634. Refactor and write unit test of due_date.rb and deadline_helper.rb]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2016/M1654._Improve_network_security_features]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2016/E1670._Unit_tests_for_answers.rb]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2016/E1641. Refactor review_mapping_controller.rb]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2016/M1652_Implement_ImageMap_Support_Servo]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2016/E1648/Add_past_due_assignment]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2016/E1656. Improve imports]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2016/M1653_Implement_HTML_form_validation]]&lt;br /&gt;
==Final Project Design Document==&lt;br /&gt;
*[[CSC/ECE 517 Fall 2016 E1676  Role-based reviewing]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2016/E1680. Improve survey functionality]]&lt;/div&gt;</summary>
		<author><name>Ddu3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/E1673._Refactor_question_type.rb&amp;diff=104413</id>
		<title>CSC/ECE 517 Fall 2016/E1673. Refactor question type.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/E1673._Refactor_question_type.rb&amp;diff=104413"/>
		<updated>2016-11-04T19:15:07Z</updated>

		<summary type="html">&lt;p&gt;Ddu3: /* text_response.rb */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Background==&lt;br /&gt;
Expertiza is an open source software to create reusable learning objects through peer review. It also supports team projects, and the submission of almost any document type, including URLs and wiki pages. It has following features:&lt;br /&gt;
&lt;br /&gt;
*Enables students working together in a class and a topic&lt;br /&gt;
*Enables studnets to do peer review and improve both him/her and others' learn experience&lt;br /&gt;
&lt;br /&gt;
== Reason for Refractor==&lt;br /&gt;
The purpose of this work is to rewrite part of the codes in the Criterion.rb, Scale.rb, Checkbox.rb, Dropdown.rb, Text_response.rb, Text_area.rb, Text_field.rb. This is because some of codes have bad writing sytle, or not followingg OO language rules, which confuse others to understand these code. The detail of the requirements are list below: &lt;br /&gt;
&lt;br /&gt;
*Line is too long&lt;br /&gt;
*Some code found in other location and should put them in the parent class&lt;br /&gt;
*Method has too many lines&lt;br /&gt;
*Some of the code will cause security risk&lt;br /&gt;
*Using the old style validations&lt;br /&gt;
*Using a lower efficent way to do the loop&lt;br /&gt;
&lt;br /&gt;
All of these requirements are based on a analysis software called [https://codeclimate.com code climate]&lt;br /&gt;
&lt;br /&gt;
== Code Changes ==&lt;br /&gt;
===text_field.rb===&lt;br /&gt;
Although it increase the number of classes, the length of function decrease and it's easy to read than before&lt;br /&gt;
&lt;br /&gt;
1. Short the long line&lt;br /&gt;
&lt;br /&gt;
2. Improve security by using safe_join&lt;br /&gt;
&lt;br /&gt;
Previous&lt;br /&gt;
 html.html_safe&lt;br /&gt;
&lt;br /&gt;
Changed&lt;br /&gt;
 safe_join([&amp;quot; &amp;quot;.html_safe, &amp;quot; &amp;quot;.html_safe], html.html_safe)&lt;br /&gt;
3. Short long method&lt;br /&gt;
&lt;br /&gt;
Previous &lt;br /&gt;
 html += '&amp;lt;label for=&amp;quot;responses_' + count.to_s + '&amp;quot;&amp;gt;' + self.txt + '&amp;lt;/label&amp;gt;'&lt;br /&gt;
    html += '&amp;lt;input id=&amp;quot;responses_' + count.to_s + '_score&amp;quot; name=&amp;quot;responses[' + count.to_s + '][score]&amp;quot; type=&amp;quot;hidden&amp;quot; value=&amp;quot;&amp;quot;&amp;gt;'&lt;br /&gt;
    html += '&amp;lt;input id=&amp;quot;responses_' + count.to_s + '_comments&amp;quot; label=' + self.txt + ' name=&amp;quot;responses[' + count.to_s + '][comment]&amp;quot; size=' + self.size.to_s + ' type=&amp;quot;text&amp;quot;'&lt;br /&gt;
    html += 'value=&amp;quot;' + answer.comments unless answer.nil?&lt;br /&gt;
    html += '&amp;quot;&amp;gt;'&lt;br /&gt;
    html += '&amp;lt;/li&amp;gt;&amp;lt;BR/&amp;gt;&amp;lt;BR/&amp;gt;' if self.type == 'TextField' and self.break_before == false&lt;br /&gt;
 def complete(count, answer = nil)&lt;br /&gt;
    html = if self.type == 'TextField' and self.break_before == true&lt;br /&gt;
    html += combine(count, answer)&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
Changed&lt;br /&gt;
 def combline(count, answer = nil)&lt;br /&gt;
    html = complete_helper_response_scores(count) + complete_helper_response_comments(count)&lt;br /&gt;
    html += complete_helper_text(answer) + complete_helper_response_comments&lt;br /&gt;
    html += complete_helper_final_judge&lt;br /&gt;
    html&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
===text_response.rb===&lt;br /&gt;
It makes codes more readable. We also choose safe_join instead of html_safe to prevent security risks. However, we must use html_safe to keep the character encoding.&lt;br /&gt;
&lt;br /&gt;
1. Use new style validations&lt;br /&gt;
Previous&lt;br /&gt;
 validates_presence_of :size&lt;br /&gt;
Changed&lt;br /&gt;
 validates :size, presence: true&lt;br /&gt;
&lt;br /&gt;
2. Short the long line&lt;br /&gt;
&lt;br /&gt;
3. Improve security by safe_join&lt;br /&gt;
Preivious&lt;br /&gt;
 html.html_safe&lt;br /&gt;
Changed&lt;br /&gt;
 safe_join([&amp;quot;&amp;lt;tr&amp;gt;&amp;quot;.html_safe, &amp;quot;&amp;lt;/tr&amp;gt;&amp;quot;.html_safe], html.html_safe)&lt;br /&gt;
&lt;br /&gt;
4. Short long method&lt;br /&gt;
&lt;br /&gt;
Preivious&lt;br /&gt;
 def edit(_count)&lt;br /&gt;
    html = '&amp;lt;tr&amp;gt;'&lt;br /&gt;
    html += '&amp;lt;td align=&amp;quot;center&amp;quot;&amp;gt;&amp;lt;a rel=&amp;quot;nofollow&amp;quot; data-method=&amp;quot;delete&amp;quot; href=&amp;quot;/questions/' + self.id.to_s + '&amp;quot;&amp;gt;Remove&amp;lt;/a&amp;gt;&amp;lt;/td&amp;gt;'&lt;br /&gt;
    html += '&amp;lt;td&amp;gt;&amp;lt;input size=&amp;quot;6&amp;quot; value=&amp;quot;' + self.seq.to_s + '&amp;quot; name=&amp;quot;question[' + self.id.to_s + '][seq]&amp;quot; id=&amp;quot;question_' + self.id.to_s + '_seq&amp;quot; type=&amp;quot;text&amp;quot;&amp;gt;&amp;lt;/td&amp;gt;'&lt;br /&gt;
    html += '&amp;lt;td&amp;gt;&amp;lt;textarea cols=&amp;quot;50&amp;quot; rows=&amp;quot;1&amp;quot; name=&amp;quot;question[' + self.id.to_s + '][txt]&amp;quot; id=&amp;quot;question_' + self.id.to_s + '_txt&amp;quot; placeholder=&amp;quot;Edit question content here&amp;quot;&amp;gt;' + self.txt + '&amp;lt;/textarea&amp;gt;&amp;lt;/td&amp;gt;'&lt;br /&gt;
    html += '&amp;lt;td&amp;gt;&amp;lt;input size=&amp;quot;10&amp;quot; disabled=&amp;quot;disabled&amp;quot; value=&amp;quot;' + self.type + '&amp;quot; name=&amp;quot;question[' + self.id.to_s + '][type]&amp;quot; id=&amp;quot;question_' + self.id.to_s + '_type&amp;quot; type=&amp;quot;text&amp;quot;&amp;gt;''&amp;lt;/td&amp;gt;'&lt;br /&gt;
    html += '&amp;lt;td&amp;gt;&amp;lt;!--placeholder (TextResponse does not need weight)--&amp;gt;&amp;lt;/td&amp;gt;'&lt;br /&gt;
    html += '&amp;lt;td&amp;gt;text area size &amp;lt;input size=&amp;quot;6&amp;quot; value=&amp;quot;' + self.size.to_s + '&amp;quot; name=&amp;quot;question[' + self.id.to_s + '][size]&amp;quot; id=&amp;quot;question_' + self.id.to_s + '_size&amp;quot; type=&amp;quot;text&amp;quot;&amp;gt;&amp;lt;/td&amp;gt;'&lt;br /&gt;
    html += '&amp;lt;/tr&amp;gt;'&lt;br /&gt;
    html.html_safe&lt;br /&gt;
  end&lt;br /&gt;
Changed&lt;br /&gt;
 def edit(_count)&lt;br /&gt;
    html = edit_link + edit_question_lable&lt;br /&gt;
    html += edit_question_textarea + edit_question_textarea_size&lt;br /&gt;
    safe_join([&amp;quot;&amp;lt;tr&amp;gt;&amp;quot;.html_safe, &amp;quot;&amp;lt;/tr&amp;gt;&amp;quot;.html_safe], html.html_safe)&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
===scale.rb===&lt;br /&gt;
1. Use each loop instead of for loop&lt;br /&gt;
&lt;br /&gt;
2. Short the long line &lt;br /&gt;
&lt;br /&gt;
3. Use safe_join to be more security&lt;br /&gt;
&lt;br /&gt;
4. Delete the code similar with other file and put the duplicate into parent class.&lt;br /&gt;
&lt;br /&gt;
5. Modify some method that is too long&lt;br /&gt;
&lt;br /&gt;
===checkbox.rb===&lt;br /&gt;
1. Short the long line&lt;br /&gt;
&lt;br /&gt;
2. Modify some method that is too long&lt;br /&gt;
&lt;br /&gt;
3. Use safe_join to be more security&lt;br /&gt;
&lt;br /&gt;
===criterion.rb===&lt;br /&gt;
1.  Improve security by using safe_join&lt;br /&gt;
&lt;br /&gt;
2. Modify some method that is too long&lt;br /&gt;
&lt;br /&gt;
3. Use new style validations&lt;br /&gt;
&lt;br /&gt;
4. Use each loop instead of for loop&lt;br /&gt;
&lt;br /&gt;
===dropdown.rb===&lt;br /&gt;
1. Use new style validations&lt;br /&gt;
&lt;br /&gt;
2. Modify some method that is too long&lt;br /&gt;
&lt;br /&gt;
3.  Improve security by using safe_join&lt;br /&gt;
&lt;br /&gt;
===text_area.rb===&lt;br /&gt;
1. Replace condition statements in one line&lt;br /&gt;
&lt;br /&gt;
2. Improve security by using safe_join&lt;/div&gt;</summary>
		<author><name>Ddu3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/E1673._Refactor_question_type.rb&amp;diff=104410</id>
		<title>CSC/ECE 517 Fall 2016/E1673. Refactor question type.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/E1673._Refactor_question_type.rb&amp;diff=104410"/>
		<updated>2016-11-04T19:13:31Z</updated>

		<summary type="html">&lt;p&gt;Ddu3: /* text_response.rb */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Background==&lt;br /&gt;
Expertiza is an open source software to create reusable learning objects through peer review. It also supports team projects, and the submission of almost any document type, including URLs and wiki pages. It has following features:&lt;br /&gt;
&lt;br /&gt;
*Enables students working together in a class and a topic&lt;br /&gt;
*Enables studnets to do peer review and improve both him/her and others' learn experience&lt;br /&gt;
&lt;br /&gt;
== Reason for Refractor==&lt;br /&gt;
The purpose of this work is to rewrite part of the codes in the Criterion.rb, Scale.rb, Checkbox.rb, Dropdown.rb, Text_response.rb, Text_area.rb, Text_field.rb. This is because some of codes have bad writing sytle, or not followingg OO language rules, which confuse others to understand these code. The detail of the requirements are list below: &lt;br /&gt;
&lt;br /&gt;
*Line is too long&lt;br /&gt;
*Some code found in other location and should put them in the parent class&lt;br /&gt;
*Method has too many lines&lt;br /&gt;
*Some of the code will cause security risk&lt;br /&gt;
*Using the old style validations&lt;br /&gt;
*Using a lower efficent way to do the loop&lt;br /&gt;
&lt;br /&gt;
All of these requirements are based on a analysis software called [https://codeclimate.com code climate]&lt;br /&gt;
&lt;br /&gt;
== Code Changes ==&lt;br /&gt;
===text_field.rb===&lt;br /&gt;
Although it increase the number of classes, the length of function decrease and it's easy to read than before&lt;br /&gt;
&lt;br /&gt;
1. Short the long line&lt;br /&gt;
&lt;br /&gt;
2. Improve security by using safe_join&lt;br /&gt;
&lt;br /&gt;
Previous&lt;br /&gt;
 html.html_safe&lt;br /&gt;
&lt;br /&gt;
Changed&lt;br /&gt;
 safe_join([&amp;quot; &amp;quot;.html_safe, &amp;quot; &amp;quot;.html_safe], html.html_safe)&lt;br /&gt;
3. Short long method&lt;br /&gt;
&lt;br /&gt;
Previous &lt;br /&gt;
 html += '&amp;lt;label for=&amp;quot;responses_' + count.to_s + '&amp;quot;&amp;gt;' + self.txt + '&amp;lt;/label&amp;gt;'&lt;br /&gt;
    html += '&amp;lt;input id=&amp;quot;responses_' + count.to_s + '_score&amp;quot; name=&amp;quot;responses[' + count.to_s + '][score]&amp;quot; type=&amp;quot;hidden&amp;quot; value=&amp;quot;&amp;quot;&amp;gt;'&lt;br /&gt;
    html += '&amp;lt;input id=&amp;quot;responses_' + count.to_s + '_comments&amp;quot; label=' + self.txt + ' name=&amp;quot;responses[' + count.to_s + '][comment]&amp;quot; size=' + self.size.to_s + ' type=&amp;quot;text&amp;quot;'&lt;br /&gt;
    html += 'value=&amp;quot;' + answer.comments unless answer.nil?&lt;br /&gt;
    html += '&amp;quot;&amp;gt;'&lt;br /&gt;
    html += '&amp;lt;/li&amp;gt;&amp;lt;BR/&amp;gt;&amp;lt;BR/&amp;gt;' if self.type == 'TextField' and self.break_before == false&lt;br /&gt;
 def complete(count, answer = nil)&lt;br /&gt;
    html = if self.type == 'TextField' and self.break_before == true&lt;br /&gt;
    html += combine(count, answer)&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
Changed&lt;br /&gt;
 def combline(count, answer = nil)&lt;br /&gt;
    html = complete_helper_response_scores(count) + complete_helper_response_comments(count)&lt;br /&gt;
    html += complete_helper_text(answer) + complete_helper_response_comments&lt;br /&gt;
    html += complete_helper_final_judge&lt;br /&gt;
    html&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
===text_response.rb===&lt;br /&gt;
It makes codes more readable. We also choose safe_join instead of html_safe to prevent security risks. However, we must use html_safe to keep the character encoding.&lt;br /&gt;
&lt;br /&gt;
1. Use new style validations&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. Short the long line&lt;br /&gt;
&lt;br /&gt;
3. Improve security by safe_join&lt;br /&gt;
&lt;br /&gt;
4. Short long method&lt;br /&gt;
&lt;br /&gt;
Preivioud&lt;br /&gt;
 def edit(_count)&lt;br /&gt;
    html = '&amp;lt;tr&amp;gt;'&lt;br /&gt;
    html += '&amp;lt;td align=&amp;quot;center&amp;quot;&amp;gt;&amp;lt;a rel=&amp;quot;nofollow&amp;quot; data-method=&amp;quot;delete&amp;quot; href=&amp;quot;/questions/' + self.id.to_s + '&amp;quot;&amp;gt;Remove&amp;lt;/a&amp;gt;&amp;lt;/td&amp;gt;'&lt;br /&gt;
    html += '&amp;lt;td&amp;gt;&amp;lt;input size=&amp;quot;6&amp;quot; value=&amp;quot;' + self.seq.to_s + '&amp;quot; name=&amp;quot;question[' + self.id.to_s + '][seq]&amp;quot; id=&amp;quot;question_' + self.id.to_s + '_seq&amp;quot; type=&amp;quot;text&amp;quot;&amp;gt;&amp;lt;/td&amp;gt;'&lt;br /&gt;
    html += '&amp;lt;td&amp;gt;&amp;lt;textarea cols=&amp;quot;50&amp;quot; rows=&amp;quot;1&amp;quot; name=&amp;quot;question[' + self.id.to_s + '][txt]&amp;quot; id=&amp;quot;question_' + self.id.to_s + '_txt&amp;quot; placeholder=&amp;quot;Edit question content here&amp;quot;&amp;gt;' + self.txt + '&amp;lt;/textarea&amp;gt;&amp;lt;/td&amp;gt;'&lt;br /&gt;
    html += '&amp;lt;td&amp;gt;&amp;lt;input size=&amp;quot;10&amp;quot; disabled=&amp;quot;disabled&amp;quot; value=&amp;quot;' + self.type + '&amp;quot; name=&amp;quot;question[' + self.id.to_s + '][type]&amp;quot; id=&amp;quot;question_' + self.id.to_s + '_type&amp;quot; type=&amp;quot;text&amp;quot;&amp;gt;''&amp;lt;/td&amp;gt;'&lt;br /&gt;
    html += '&amp;lt;td&amp;gt;&amp;lt;!--placeholder (TextResponse does not need weight)--&amp;gt;&amp;lt;/td&amp;gt;'&lt;br /&gt;
    html += '&amp;lt;td&amp;gt;text area size &amp;lt;input size=&amp;quot;6&amp;quot; value=&amp;quot;' + self.size.to_s + '&amp;quot; name=&amp;quot;question[' + self.id.to_s + '][size]&amp;quot; id=&amp;quot;question_' + self.id.to_s + '_size&amp;quot; type=&amp;quot;text&amp;quot;&amp;gt;&amp;lt;/td&amp;gt;'&lt;br /&gt;
    html += '&amp;lt;/tr&amp;gt;'&lt;br /&gt;
    html.html_safe&lt;br /&gt;
  end&lt;br /&gt;
Changed&lt;br /&gt;
 def edit(_count)&lt;br /&gt;
    html = edit_link + edit_question_lable&lt;br /&gt;
    html += edit_question_textarea + edit_question_textarea_size&lt;br /&gt;
    safe_join([&amp;quot;&amp;lt;tr&amp;gt;&amp;quot;.html_safe, &amp;quot;&amp;lt;/tr&amp;gt;&amp;quot;.html_safe], html.html_safe)&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
===scale.rb===&lt;br /&gt;
1. Use each loop instead of for loop&lt;br /&gt;
&lt;br /&gt;
2. Short the long line &lt;br /&gt;
&lt;br /&gt;
3. Use safe_join to be more security&lt;br /&gt;
&lt;br /&gt;
4. Delete the code similar with other file and put the duplicate into parent class.&lt;br /&gt;
&lt;br /&gt;
5. Modify some method that is too long&lt;br /&gt;
&lt;br /&gt;
===checkbox.rb===&lt;br /&gt;
1. Short the long line&lt;br /&gt;
&lt;br /&gt;
2. Modify some method that is too long&lt;br /&gt;
&lt;br /&gt;
3. Use safe_join to be more security&lt;br /&gt;
&lt;br /&gt;
===criterion.rb===&lt;br /&gt;
1.  Improve security by using safe_join&lt;br /&gt;
&lt;br /&gt;
2. Modify some method that is too long&lt;br /&gt;
&lt;br /&gt;
3. Use new style validations&lt;br /&gt;
&lt;br /&gt;
4. Use each loop instead of for loop&lt;br /&gt;
&lt;br /&gt;
===dropdown.rb===&lt;br /&gt;
1. Use new style validations&lt;br /&gt;
&lt;br /&gt;
2. Modify some method that is too long&lt;br /&gt;
&lt;br /&gt;
3.  Improve security by using safe_join&lt;br /&gt;
&lt;br /&gt;
===text_area.rb===&lt;br /&gt;
1. Replace condition statements in one line&lt;br /&gt;
&lt;br /&gt;
2. Improve security by using safe_join&lt;/div&gt;</summary>
		<author><name>Ddu3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/E1673._Refactor_question_type.rb&amp;diff=104409</id>
		<title>CSC/ECE 517 Fall 2016/E1673. Refactor question type.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/E1673._Refactor_question_type.rb&amp;diff=104409"/>
		<updated>2016-11-04T19:11:22Z</updated>

		<summary type="html">&lt;p&gt;Ddu3: /* text_field.rb */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Background==&lt;br /&gt;
Expertiza is an open source software to create reusable learning objects through peer review. It also supports team projects, and the submission of almost any document type, including URLs and wiki pages. It has following features:&lt;br /&gt;
&lt;br /&gt;
*Enables students working together in a class and a topic&lt;br /&gt;
*Enables studnets to do peer review and improve both him/her and others' learn experience&lt;br /&gt;
&lt;br /&gt;
== Reason for Refractor==&lt;br /&gt;
The purpose of this work is to rewrite part of the codes in the Criterion.rb, Scale.rb, Checkbox.rb, Dropdown.rb, Text_response.rb, Text_area.rb, Text_field.rb. This is because some of codes have bad writing sytle, or not followingg OO language rules, which confuse others to understand these code. The detail of the requirements are list below: &lt;br /&gt;
&lt;br /&gt;
*Line is too long&lt;br /&gt;
*Some code found in other location and should put them in the parent class&lt;br /&gt;
*Method has too many lines&lt;br /&gt;
*Some of the code will cause security risk&lt;br /&gt;
*Using the old style validations&lt;br /&gt;
*Using a lower efficent way to do the loop&lt;br /&gt;
&lt;br /&gt;
All of these requirements are based on a analysis software called [https://codeclimate.com code climate]&lt;br /&gt;
&lt;br /&gt;
== Code Changes ==&lt;br /&gt;
===text_field.rb===&lt;br /&gt;
Although it increase the number of classes, the length of function decrease and it's easy to read than before&lt;br /&gt;
&lt;br /&gt;
1. Short the long line&lt;br /&gt;
&lt;br /&gt;
2. Improve security by using safe_join&lt;br /&gt;
&lt;br /&gt;
Previous&lt;br /&gt;
 html.html_safe&lt;br /&gt;
&lt;br /&gt;
Changed&lt;br /&gt;
 safe_join([&amp;quot; &amp;quot;.html_safe, &amp;quot; &amp;quot;.html_safe], html.html_safe)&lt;br /&gt;
3. Short long method&lt;br /&gt;
&lt;br /&gt;
Previous &lt;br /&gt;
 html += '&amp;lt;label for=&amp;quot;responses_' + count.to_s + '&amp;quot;&amp;gt;' + self.txt + '&amp;lt;/label&amp;gt;'&lt;br /&gt;
    html += '&amp;lt;input id=&amp;quot;responses_' + count.to_s + '_score&amp;quot; name=&amp;quot;responses[' + count.to_s + '][score]&amp;quot; type=&amp;quot;hidden&amp;quot; value=&amp;quot;&amp;quot;&amp;gt;'&lt;br /&gt;
    html += '&amp;lt;input id=&amp;quot;responses_' + count.to_s + '_comments&amp;quot; label=' + self.txt + ' name=&amp;quot;responses[' + count.to_s + '][comment]&amp;quot; size=' + self.size.to_s + ' type=&amp;quot;text&amp;quot;'&lt;br /&gt;
    html += 'value=&amp;quot;' + answer.comments unless answer.nil?&lt;br /&gt;
    html += '&amp;quot;&amp;gt;'&lt;br /&gt;
    html += '&amp;lt;/li&amp;gt;&amp;lt;BR/&amp;gt;&amp;lt;BR/&amp;gt;' if self.type == 'TextField' and self.break_before == false&lt;br /&gt;
 def complete(count, answer = nil)&lt;br /&gt;
    html = if self.type == 'TextField' and self.break_before == true&lt;br /&gt;
    html += combine(count, answer)&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
Changed&lt;br /&gt;
 def combline(count, answer = nil)&lt;br /&gt;
    html = complete_helper_response_scores(count) + complete_helper_response_comments(count)&lt;br /&gt;
    html += complete_helper_text(answer) + complete_helper_response_comments&lt;br /&gt;
    html += complete_helper_final_judge&lt;br /&gt;
    html&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
===text_response.rb===&lt;br /&gt;
It makes codes more readable. We also choose safe_join instead of html_safe to prevent security risks. However, we must use html_safe to keep the character encoding.&lt;br /&gt;
&lt;br /&gt;
1. Use new style validations&lt;br /&gt;
&lt;br /&gt;
2. Short the long line&lt;br /&gt;
&lt;br /&gt;
3. Improve security by safe_join&lt;br /&gt;
&lt;br /&gt;
4. Short long method&lt;br /&gt;
&lt;br /&gt;
 def edit(_count)&lt;br /&gt;
    html = edit_link + edit_question_lable&lt;br /&gt;
    html += edit_question_textarea + edit_question_textarea_size&lt;br /&gt;
    safe_join([&amp;quot;&amp;lt;tr&amp;gt;&amp;quot;.html_safe, &amp;quot;&amp;lt;/tr&amp;gt;&amp;quot;.html_safe], html.html_safe)&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
===scale.rb===&lt;br /&gt;
1. Use each loop instead of for loop&lt;br /&gt;
&lt;br /&gt;
2. Short the long line &lt;br /&gt;
&lt;br /&gt;
3. Use safe_join to be more security&lt;br /&gt;
&lt;br /&gt;
4. Delete the code similar with other file and put the duplicate into parent class.&lt;br /&gt;
&lt;br /&gt;
5. Modify some method that is too long&lt;br /&gt;
&lt;br /&gt;
===checkbox.rb===&lt;br /&gt;
1. Short the long line&lt;br /&gt;
&lt;br /&gt;
2. Modify some method that is too long&lt;br /&gt;
&lt;br /&gt;
3. Use safe_join to be more security&lt;br /&gt;
&lt;br /&gt;
===criterion.rb===&lt;br /&gt;
1.  Improve security by using safe_join&lt;br /&gt;
&lt;br /&gt;
2. Modify some method that is too long&lt;br /&gt;
&lt;br /&gt;
3. Use new style validations&lt;br /&gt;
&lt;br /&gt;
4. Use each loop instead of for loop&lt;br /&gt;
&lt;br /&gt;
===dropdown.rb===&lt;br /&gt;
1. Use new style validations&lt;br /&gt;
&lt;br /&gt;
2. Modify some method that is too long&lt;br /&gt;
&lt;br /&gt;
3.  Improve security by using safe_join&lt;br /&gt;
&lt;br /&gt;
===text_area.rb===&lt;br /&gt;
1. Replace condition statements in one line&lt;br /&gt;
&lt;br /&gt;
2. Improve security by using safe_join&lt;/div&gt;</summary>
		<author><name>Ddu3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/E1673._Refactor_question_type.rb&amp;diff=104269</id>
		<title>CSC/ECE 517 Fall 2016/E1673. Refactor question type.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/E1673._Refactor_question_type.rb&amp;diff=104269"/>
		<updated>2016-11-04T00:42:29Z</updated>

		<summary type="html">&lt;p&gt;Ddu3: /* text_response.rb */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Background==&lt;br /&gt;
Expertiza is an open source software to create reusable learning objects through peer review. It also supports team projects, and the submission of almost any document type, including URLs and wiki pages. It has following features:&lt;br /&gt;
&lt;br /&gt;
*Enables students working together in a class and a topic&lt;br /&gt;
*Enables studnets to do peer review and improve both him/her and others' learn experience&lt;br /&gt;
&lt;br /&gt;
== Reason for Refractor==&lt;br /&gt;
The purpose of this work is to rewrite part of the codes in the Criterion.rb, Scale.rb, Checkbox.rb, Dropdown.rb, Text_response.rb, Text_area.rb, Text_field.rb. This is because some of codes have bad writing sytle, or not followingg OO language rules, which confuse others to understand these code. The detail of the requirements are list below: &lt;br /&gt;
&lt;br /&gt;
*Line is too long&lt;br /&gt;
*Some code found in other location and should put them in the parent class&lt;br /&gt;
*Method has too many lines&lt;br /&gt;
*Some of the code will cause security risk&lt;br /&gt;
*Using the old style validations&lt;br /&gt;
*Using a lower efficent way to do the loop&lt;br /&gt;
&lt;br /&gt;
All of these requirements are based on a analysis software called [https://codeclimate.com code climate]&lt;br /&gt;
&lt;br /&gt;
== Code Changes ==&lt;br /&gt;
===text_field.rb===&lt;br /&gt;
Although it increase the number of classes, the length of function decrease and it's easy to read than before&lt;br /&gt;
&lt;br /&gt;
1. Short the long line&lt;br /&gt;
&lt;br /&gt;
2. Improve security by using safe_join&lt;br /&gt;
&lt;br /&gt;
3. Short long method&lt;br /&gt;
&lt;br /&gt;
 def complete(count, answer = nil)&lt;br /&gt;
    html = if self.type == 'TextField' and self.break_before == true&lt;br /&gt;
    html += combine(count, answer)&lt;br /&gt;
    safe_join([&amp;quot; &amp;quot;.html_safe, &amp;quot; &amp;quot;.html_safe], html.html_safe)&lt;br /&gt;
 end&lt;br /&gt;
 def combline(count, answer = nil)&lt;br /&gt;
    html = complete_helper_response_scores(count) + complete_helper_response_comments(count)&lt;br /&gt;
    html += complete_helper_text(answer) + complete_helper_response_comments&lt;br /&gt;
    html += complete_helper_final_judge&lt;br /&gt;
    html&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
===text_response.rb===&lt;br /&gt;
It makes codes more readable. We also choose safe_join instead of html_safe to prevent security risks. However, we must use html_safe to keep the character encoding.&lt;br /&gt;
&lt;br /&gt;
1. Use new style validations&lt;br /&gt;
&lt;br /&gt;
2. Short the long line&lt;br /&gt;
&lt;br /&gt;
3. Improve security by safe_join&lt;br /&gt;
&lt;br /&gt;
4. Short long method&lt;br /&gt;
&lt;br /&gt;
 def edit(_count)&lt;br /&gt;
    html = edit_link + edit_question_lable&lt;br /&gt;
    html += edit_question_textarea + edit_question_textarea_size&lt;br /&gt;
    safe_join([&amp;quot;&amp;lt;tr&amp;gt;&amp;quot;.html_safe, &amp;quot;&amp;lt;/tr&amp;gt;&amp;quot;.html_safe], html.html_safe)&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
===scale.rb===&lt;br /&gt;
1. Use each loop instead of for loop&lt;br /&gt;
&lt;br /&gt;
2. Short the long line &lt;br /&gt;
&lt;br /&gt;
3. Use safe_join to be more security&lt;br /&gt;
&lt;br /&gt;
4. Delete the code similar with other file and put the duplicate into parent class.&lt;br /&gt;
&lt;br /&gt;
5. Modify some method that is too long&lt;br /&gt;
&lt;br /&gt;
===checkbox.rb===&lt;br /&gt;
1. Short the long line&lt;br /&gt;
&lt;br /&gt;
2. Modify some method that is too long&lt;br /&gt;
&lt;br /&gt;
3. Use safe_join to be more security&lt;br /&gt;
&lt;br /&gt;
===criterion.rb===&lt;br /&gt;
1.  Improve security by using safe_join&lt;br /&gt;
&lt;br /&gt;
2. Modify some method that is too long&lt;br /&gt;
&lt;br /&gt;
3. Use new style validations&lt;br /&gt;
&lt;br /&gt;
4. Use each loop instead of for loop&lt;br /&gt;
&lt;br /&gt;
===dropdown.rb===&lt;br /&gt;
1. Use new style validations&lt;br /&gt;
&lt;br /&gt;
2. Modify some method that is too long&lt;br /&gt;
&lt;br /&gt;
3.  Improve security by using safe_join&lt;br /&gt;
&lt;br /&gt;
===text_area.rb===&lt;br /&gt;
1. Replace condition statements in one line&lt;br /&gt;
&lt;br /&gt;
2. Improve security by using safe_join&lt;/div&gt;</summary>
		<author><name>Ddu3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/E1673._Refactor_question_type.rb&amp;diff=104268</id>
		<title>CSC/ECE 517 Fall 2016/E1673. Refactor question type.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/E1673._Refactor_question_type.rb&amp;diff=104268"/>
		<updated>2016-11-04T00:39:45Z</updated>

		<summary type="html">&lt;p&gt;Ddu3: /* text_field.rb */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Background==&lt;br /&gt;
Expertiza is an open source software to create reusable learning objects through peer review. It also supports team projects, and the submission of almost any document type, including URLs and wiki pages. It has following features:&lt;br /&gt;
&lt;br /&gt;
*Enables students working together in a class and a topic&lt;br /&gt;
*Enables studnets to do peer review and improve both him/her and others' learn experience&lt;br /&gt;
&lt;br /&gt;
== Reason for Refractor==&lt;br /&gt;
The purpose of this work is to rewrite part of the codes in the Criterion.rb, Scale.rb, Checkbox.rb, Dropdown.rb, Text_response.rb, Text_area.rb, Text_field.rb. This is because some of codes have bad writing sytle, or not followingg OO language rules, which confuse others to understand these code. The detail of the requirements are list below: &lt;br /&gt;
&lt;br /&gt;
*Line is too long&lt;br /&gt;
*Some code found in other location and should put them in the parent class&lt;br /&gt;
*Method has too many lines&lt;br /&gt;
*Some of the code will cause security risk&lt;br /&gt;
*Using the old style validations&lt;br /&gt;
*Using a lower efficent way to do the loop&lt;br /&gt;
&lt;br /&gt;
All of these requirements are based on a analysis software called [https://codeclimate.com code climate]&lt;br /&gt;
&lt;br /&gt;
== Code Changes ==&lt;br /&gt;
===text_field.rb===&lt;br /&gt;
Although it increase the number of classes, the length of function decrease and it's easy to read than before&lt;br /&gt;
&lt;br /&gt;
1. Short the long line&lt;br /&gt;
&lt;br /&gt;
2. Improve security by using safe_join&lt;br /&gt;
&lt;br /&gt;
3. Short long method&lt;br /&gt;
&lt;br /&gt;
 def complete(count, answer = nil)&lt;br /&gt;
    html = if self.type == 'TextField' and self.break_before == true&lt;br /&gt;
    html += combine(count, answer)&lt;br /&gt;
    safe_join([&amp;quot; &amp;quot;.html_safe, &amp;quot; &amp;quot;.html_safe], html.html_safe)&lt;br /&gt;
 end&lt;br /&gt;
 def combline(count, answer = nil)&lt;br /&gt;
    html = complete_helper_response_scores(count) + complete_helper_response_comments(count)&lt;br /&gt;
    html += complete_helper_text(answer) + complete_helper_response_comments&lt;br /&gt;
    html += complete_helper_final_judge&lt;br /&gt;
    html&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
===text_response.rb===&lt;br /&gt;
It makes codes more readable. We also choose safe_join instead of html_safe to prevent security risks. However, we must use html_safe to keep the character encoding.&lt;br /&gt;
&lt;br /&gt;
1. Use new style validations&lt;br /&gt;
&lt;br /&gt;
2. Short the long line&lt;br /&gt;
&lt;br /&gt;
3. Improve security by safe_join&lt;br /&gt;
&lt;br /&gt;
4. Short long method&lt;br /&gt;
&lt;br /&gt;
===scale.rb===&lt;br /&gt;
1. Use each loop instead of for loop&lt;br /&gt;
&lt;br /&gt;
2. Short the long line &lt;br /&gt;
&lt;br /&gt;
3. Use safe_join to be more security&lt;br /&gt;
&lt;br /&gt;
4. Delete the code similar with other file and put the duplicate into parent class.&lt;br /&gt;
&lt;br /&gt;
5. Modify some method that is too long&lt;br /&gt;
&lt;br /&gt;
===checkbox.rb===&lt;br /&gt;
1. Short the long line&lt;br /&gt;
&lt;br /&gt;
2. Modify some method that is too long&lt;br /&gt;
&lt;br /&gt;
3. Use safe_join to be more security&lt;br /&gt;
&lt;br /&gt;
===criterion.rb===&lt;br /&gt;
1.  Improve security by using safe_join&lt;br /&gt;
&lt;br /&gt;
2. Modify some method that is too long&lt;br /&gt;
&lt;br /&gt;
3. Use new style validations&lt;br /&gt;
&lt;br /&gt;
4. Use each loop instead of for loop&lt;br /&gt;
&lt;br /&gt;
===dropdown.rb===&lt;br /&gt;
1. Use new style validations&lt;br /&gt;
&lt;br /&gt;
2. Modify some method that is too long&lt;br /&gt;
&lt;br /&gt;
3.  Improve security by using safe_join&lt;br /&gt;
&lt;br /&gt;
===text_area.rb===&lt;br /&gt;
1. Replace condition statements in one line&lt;br /&gt;
&lt;br /&gt;
2. Improve security by using safe_join&lt;/div&gt;</summary>
		<author><name>Ddu3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/E1673._Refactor_question_type.rb&amp;diff=103806</id>
		<title>CSC/ECE 517 Fall 2016/E1673. Refactor question type.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/E1673._Refactor_question_type.rb&amp;diff=103806"/>
		<updated>2016-10-29T03:35:37Z</updated>

		<summary type="html">&lt;p&gt;Ddu3: /* text_field.rb */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Background==&lt;br /&gt;
Expertiza is an open source software to create reusable learning objects through peer review. It also supports team projects, and the submission of almost any document type, including URLs and wiki pages. It has following features:&lt;br /&gt;
&lt;br /&gt;
*Enables students working together in a class and a topic&lt;br /&gt;
*Enables studnets to do peer review and improve both him/her and others' learn experience&lt;br /&gt;
&lt;br /&gt;
== Reason for Refractor==&lt;br /&gt;
The purpose of this work is to rewrite part of the codes in the Criterion.rb, Scale.rb, Checkbox.rb, Dropdown.rb, Text_response.rb, Text_area.rb, Text_field.rb. This is because some of codes have bad writing sytle, or not followingg OO language rules, which confuse others to understand these code. The detail of the requirements are list below: &lt;br /&gt;
&lt;br /&gt;
*Line is too long&lt;br /&gt;
*Some code found in other location and should put them in the parent class&lt;br /&gt;
*Method has too many lines&lt;br /&gt;
*Some of the code will cause security risk&lt;br /&gt;
*Using the old style validations&lt;br /&gt;
*Using a lower efficent way to do the loop&lt;br /&gt;
&lt;br /&gt;
All of these requirements are based on a analysis software called [https://codeclimate.com code climate]&lt;br /&gt;
&lt;br /&gt;
== Code Changes ==&lt;br /&gt;
===text_field.rb===&lt;br /&gt;
Although it increase the number of classes, the length of function decrease and it's easy to read than before&lt;br /&gt;
&lt;br /&gt;
1. Short the long line&lt;br /&gt;
&lt;br /&gt;
2. Improve security by safe_join&lt;br /&gt;
&lt;br /&gt;
3. Short long method&lt;br /&gt;
&lt;br /&gt;
===text_response.rb===&lt;br /&gt;
It makes codes more readable. We also choose safe_join instead of html_safe to prevent security risks. However, we must use html_safe to keep the character encoding.&lt;br /&gt;
&lt;br /&gt;
1. Use new style validations&lt;br /&gt;
&lt;br /&gt;
2. Short the long line&lt;br /&gt;
&lt;br /&gt;
3. Improve security by safe_join&lt;br /&gt;
&lt;br /&gt;
4. Short long method&lt;br /&gt;
&lt;br /&gt;
===scale.rb===&lt;br /&gt;
1. Use each loop instead of for loop&lt;br /&gt;
&lt;br /&gt;
2. Short the long line &lt;br /&gt;
&lt;br /&gt;
3. Use safe_join to be more security&lt;br /&gt;
&lt;br /&gt;
4. Delete the code similar with other file and put the duplicate into parent class.&lt;br /&gt;
&lt;br /&gt;
5. Modify some method that is too long&lt;br /&gt;
&lt;br /&gt;
===checkbox.rb===&lt;br /&gt;
1. Short the long line&lt;br /&gt;
&lt;br /&gt;
2. Modify some method that is too long&lt;br /&gt;
&lt;br /&gt;
3. Use safe_join to be more security&lt;/div&gt;</summary>
		<author><name>Ddu3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/E1673._Refactor_question_type.rb&amp;diff=103805</id>
		<title>CSC/ECE 517 Fall 2016/E1673. Refactor question type.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/E1673._Refactor_question_type.rb&amp;diff=103805"/>
		<updated>2016-10-29T03:35:30Z</updated>

		<summary type="html">&lt;p&gt;Ddu3: /* text_response.rb */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Background==&lt;br /&gt;
Expertiza is an open source software to create reusable learning objects through peer review. It also supports team projects, and the submission of almost any document type, including URLs and wiki pages. It has following features:&lt;br /&gt;
&lt;br /&gt;
*Enables students working together in a class and a topic&lt;br /&gt;
*Enables studnets to do peer review and improve both him/her and others' learn experience&lt;br /&gt;
&lt;br /&gt;
== Reason for Refractor==&lt;br /&gt;
The purpose of this work is to rewrite part of the codes in the Criterion.rb, Scale.rb, Checkbox.rb, Dropdown.rb, Text_response.rb, Text_area.rb, Text_field.rb. This is because some of codes have bad writing sytle, or not followingg OO language rules, which confuse others to understand these code. The detail of the requirements are list below: &lt;br /&gt;
&lt;br /&gt;
*Line is too long&lt;br /&gt;
*Some code found in other location and should put them in the parent class&lt;br /&gt;
*Method has too many lines&lt;br /&gt;
*Some of the code will cause security risk&lt;br /&gt;
*Using the old style validations&lt;br /&gt;
*Using a lower efficent way to do the loop&lt;br /&gt;
&lt;br /&gt;
All of these requirements are based on a analysis software called [https://codeclimate.com code climate]&lt;br /&gt;
&lt;br /&gt;
== Code Changes ==&lt;br /&gt;
===text_field.rb===&lt;br /&gt;
Although it increase the number of classes, the length of function decrease and it's easy to read than before&lt;br /&gt;
&lt;br /&gt;
1. Short the long line&lt;br /&gt;
2. Improve security by safe_join&lt;br /&gt;
3. Short long method&lt;br /&gt;
&lt;br /&gt;
===text_response.rb===&lt;br /&gt;
It makes codes more readable. We also choose safe_join instead of html_safe to prevent security risks. However, we must use html_safe to keep the character encoding.&lt;br /&gt;
&lt;br /&gt;
1. Use new style validations&lt;br /&gt;
&lt;br /&gt;
2. Short the long line&lt;br /&gt;
&lt;br /&gt;
3. Improve security by safe_join&lt;br /&gt;
&lt;br /&gt;
4. Short long method&lt;br /&gt;
&lt;br /&gt;
===scale.rb===&lt;br /&gt;
1. Use each loop instead of for loop&lt;br /&gt;
&lt;br /&gt;
2. Short the long line &lt;br /&gt;
&lt;br /&gt;
3. Use safe_join to be more security&lt;br /&gt;
&lt;br /&gt;
4. Delete the code similar with other file and put the duplicate into parent class.&lt;br /&gt;
&lt;br /&gt;
5. Modify some method that is too long&lt;br /&gt;
&lt;br /&gt;
===checkbox.rb===&lt;br /&gt;
1. Short the long line&lt;br /&gt;
&lt;br /&gt;
2. Modify some method that is too long&lt;br /&gt;
&lt;br /&gt;
3. Use safe_join to be more security&lt;/div&gt;</summary>
		<author><name>Ddu3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/E1673._Refactor_question_type.rb&amp;diff=103804</id>
		<title>CSC/ECE 517 Fall 2016/E1673. Refactor question type.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/E1673._Refactor_question_type.rb&amp;diff=103804"/>
		<updated>2016-10-29T03:35:14Z</updated>

		<summary type="html">&lt;p&gt;Ddu3: /* text_field.rb */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Background==&lt;br /&gt;
Expertiza is an open source software to create reusable learning objects through peer review. It also supports team projects, and the submission of almost any document type, including URLs and wiki pages. It has following features:&lt;br /&gt;
&lt;br /&gt;
*Enables students working together in a class and a topic&lt;br /&gt;
*Enables studnets to do peer review and improve both him/her and others' learn experience&lt;br /&gt;
&lt;br /&gt;
== Reason for Refractor==&lt;br /&gt;
The purpose of this work is to rewrite part of the codes in the Criterion.rb, Scale.rb, Checkbox.rb, Dropdown.rb, Text_response.rb, Text_area.rb, Text_field.rb. This is because some of codes have bad writing sytle, or not followingg OO language rules, which confuse others to understand these code. The detail of the requirements are list below: &lt;br /&gt;
&lt;br /&gt;
*Line is too long&lt;br /&gt;
*Some code found in other location and should put them in the parent class&lt;br /&gt;
*Method has too many lines&lt;br /&gt;
*Some of the code will cause security risk&lt;br /&gt;
*Using the old style validations&lt;br /&gt;
*Using a lower efficent way to do the loop&lt;br /&gt;
&lt;br /&gt;
All of these requirements are based on a analysis software called [https://codeclimate.com code climate]&lt;br /&gt;
&lt;br /&gt;
== Code Changes ==&lt;br /&gt;
===text_field.rb===&lt;br /&gt;
Although it increase the number of classes, the length of function decrease and it's easy to read than before&lt;br /&gt;
&lt;br /&gt;
1. Short the long line&lt;br /&gt;
2. Improve security by safe_join&lt;br /&gt;
3. Short long method&lt;br /&gt;
&lt;br /&gt;
===text_response.rb===&lt;br /&gt;
It makes codes more readable. We also choose safe_join instead of html_safe to prevent security risks. However, we must use html_safe to keep the character encoding.&lt;br /&gt;
1. Use new style validations&lt;br /&gt;
2. Short the long line&lt;br /&gt;
3. Improve security by safe_join&lt;br /&gt;
4. Short long method&lt;br /&gt;
&lt;br /&gt;
===scale.rb===&lt;br /&gt;
1. Use each loop instead of for loop&lt;br /&gt;
&lt;br /&gt;
2. Short the long line &lt;br /&gt;
&lt;br /&gt;
3. Use safe_join to be more security&lt;br /&gt;
&lt;br /&gt;
4. Delete the code similar with other file and put the duplicate into parent class.&lt;br /&gt;
&lt;br /&gt;
5. Modify some method that is too long&lt;br /&gt;
&lt;br /&gt;
===checkbox.rb===&lt;br /&gt;
1. Short the long line&lt;br /&gt;
&lt;br /&gt;
2. Modify some method that is too long&lt;br /&gt;
&lt;br /&gt;
3. Use safe_join to be more security&lt;/div&gt;</summary>
		<author><name>Ddu3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/E1673._Refactor_question_type.rb&amp;diff=103803</id>
		<title>CSC/ECE 517 Fall 2016/E1673. Refactor question type.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/E1673._Refactor_question_type.rb&amp;diff=103803"/>
		<updated>2016-10-29T03:35:00Z</updated>

		<summary type="html">&lt;p&gt;Ddu3: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Background==&lt;br /&gt;
Expertiza is an open source software to create reusable learning objects through peer review. It also supports team projects, and the submission of almost any document type, including URLs and wiki pages. It has following features:&lt;br /&gt;
&lt;br /&gt;
*Enables students working together in a class and a topic&lt;br /&gt;
*Enables studnets to do peer review and improve both him/her and others' learn experience&lt;br /&gt;
&lt;br /&gt;
== Reason for Refractor==&lt;br /&gt;
The purpose of this work is to rewrite part of the codes in the Criterion.rb, Scale.rb, Checkbox.rb, Dropdown.rb, Text_response.rb, Text_area.rb, Text_field.rb. This is because some of codes have bad writing sytle, or not followingg OO language rules, which confuse others to understand these code. The detail of the requirements are list below: &lt;br /&gt;
&lt;br /&gt;
*Line is too long&lt;br /&gt;
*Some code found in other location and should put them in the parent class&lt;br /&gt;
*Method has too many lines&lt;br /&gt;
*Some of the code will cause security risk&lt;br /&gt;
*Using the old style validations&lt;br /&gt;
*Using a lower efficent way to do the loop&lt;br /&gt;
&lt;br /&gt;
All of these requirements are based on a analysis software called [https://codeclimate.com code climate]&lt;br /&gt;
&lt;br /&gt;
== Code Changes ==&lt;br /&gt;
===text_field.rb===&lt;br /&gt;
Although it increase the number of classes, the length of function decrease and it's easy to read than before&lt;br /&gt;
1. Short the long line&lt;br /&gt;
2. Improve security by safe_join&lt;br /&gt;
3. Short long method&lt;br /&gt;
&lt;br /&gt;
===text_response.rb===&lt;br /&gt;
It makes codes more readable. We also choose safe_join instead of html_safe to prevent security risks. However, we must use html_safe to keep the character encoding.&lt;br /&gt;
1. Use new style validations&lt;br /&gt;
2. Short the long line&lt;br /&gt;
3. Improve security by safe_join&lt;br /&gt;
4. Short long method&lt;br /&gt;
&lt;br /&gt;
===scale.rb===&lt;br /&gt;
1. Use each loop instead of for loop&lt;br /&gt;
&lt;br /&gt;
2. Short the long line &lt;br /&gt;
&lt;br /&gt;
3. Use safe_join to be more security&lt;br /&gt;
&lt;br /&gt;
4. Delete the code similar with other file and put the duplicate into parent class.&lt;br /&gt;
&lt;br /&gt;
5. Modify some method that is too long&lt;br /&gt;
&lt;br /&gt;
===checkbox.rb===&lt;br /&gt;
1. Short the long line&lt;br /&gt;
&lt;br /&gt;
2. Modify some method that is too long&lt;br /&gt;
&lt;br /&gt;
3. Use safe_join to be more security&lt;/div&gt;</summary>
		<author><name>Ddu3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/E1673._Refactor_question_type.rb&amp;diff=103343</id>
		<title>CSC/ECE 517 Fall 2016/E1673. Refactor question type.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/E1673._Refactor_question_type.rb&amp;diff=103343"/>
		<updated>2016-10-28T23:52:34Z</updated>

		<summary type="html">&lt;p&gt;Ddu3: /* text_response.rb */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Background==&lt;br /&gt;
Expertiza is an open source software to create reusable learning objects through peer review. It also supports team projects, and the submission of almost any document type, including URLs and wiki pages. It has following features:&lt;br /&gt;
&lt;br /&gt;
*Enables students working together in a class and a topic&lt;br /&gt;
*Enables studnets to do peer review and improve both him/her and others' learn experience&lt;br /&gt;
&lt;br /&gt;
== Reason for Refractor==&lt;br /&gt;
The purpose of this work is to rewrite the code of seven file for several reason listed below.&lt;br /&gt;
&lt;br /&gt;
*Line is too long&lt;br /&gt;
*Some code found in other location and should put them in the parent class&lt;br /&gt;
*Method has too many lines&lt;br /&gt;
*Some of the code will cause security risk&lt;br /&gt;
*Using the old style validations&lt;br /&gt;
*Using a lower efficent way to do the loop &lt;br /&gt;
&lt;br /&gt;
== Code Changes ==&lt;br /&gt;
===text_field.rb===&lt;br /&gt;
: Although it increase the number of classes, the length of function decrease and it's easy to read than before&lt;br /&gt;
 def view_completed_question(count, answer)&lt;br /&gt;
    if self.type == 'TextField' and self.break_before == true&lt;br /&gt;
      html = view_helper_true(count, answer)&lt;br /&gt;
      html += if Question.exists?(answer.question_id + 1) &amp;amp;&amp;amp; Question.find(answer.question_id + 1).break_before == true&lt;br /&gt;
    else&lt;br /&gt;
      html = view_helper_false(answer)&lt;br /&gt;
    end&lt;br /&gt;
    safe_join([&amp;quot; &amp;quot;.html_safe, &amp;quot; &amp;quot;.html_safe], html.html_safe)&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
===text_response.rb===&lt;br /&gt;
: It makes codes more readable. We also choose safe_join instead of html_safe to prevent security risks. However, we must use html_safe to keep the character encoding.&lt;br /&gt;
 def edit(_count)&lt;br /&gt;
    html = edit_link + edit_question_lable&lt;br /&gt;
    html += edit_question_textarea + edit_question_textarea_size&lt;br /&gt;
    safe_join([&amp;quot;&amp;lt;tr&amp;gt;&amp;quot;.html_safe, &amp;quot;&amp;lt;/tr&amp;gt;&amp;quot;.html_safe], html.html_safe)&lt;br /&gt;
 end&lt;/div&gt;</summary>
		<author><name>Ddu3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/E1673._Refactor_question_type.rb&amp;diff=103326</id>
		<title>CSC/ECE 517 Fall 2016/E1673. Refactor question type.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/E1673._Refactor_question_type.rb&amp;diff=103326"/>
		<updated>2016-10-28T23:46:19Z</updated>

		<summary type="html">&lt;p&gt;Ddu3: /* text_field.rb */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Background==&lt;br /&gt;
Expertiza is an open source software to create reusable learning objects through peer review. It also supports team projects, and the submission of almost any document type, including URLs and wiki pages. It has following features:&lt;br /&gt;
&lt;br /&gt;
*Enables students working together in a class and a topic&lt;br /&gt;
*Enables studnets to do peer review and improve both him/her and others' learn experience&lt;br /&gt;
&lt;br /&gt;
== Reason for Refractor==&lt;br /&gt;
The purpose of this work is to rewrite the code of seven file for several reason listed below.&lt;br /&gt;
&lt;br /&gt;
*Line is too long&lt;br /&gt;
*Some code found in other location and should put them in the parent class&lt;br /&gt;
*Method has too many lines&lt;br /&gt;
*Some of the code will cause security risk&lt;br /&gt;
*Using the old style validations&lt;br /&gt;
*Using a lower efficent way to do the loop &lt;br /&gt;
&lt;br /&gt;
== Code Changes ==&lt;br /&gt;
===text_field.rb===&lt;br /&gt;
: Although it increase the number of classes, the length of function decrease and it's easy to read than before&lt;br /&gt;
 def view_completed_question(count, answer)&lt;br /&gt;
    if self.type == 'TextField' and self.break_before == true&lt;br /&gt;
      html = view_helper_true(count, answer)&lt;br /&gt;
      html += if Question.exists?(answer.question_id + 1) &amp;amp;&amp;amp; Question.find(answer.question_id + 1).break_before == true&lt;br /&gt;
    else&lt;br /&gt;
      html = view_helper_false(answer)&lt;br /&gt;
    end&lt;br /&gt;
    safe_join([&amp;quot; &amp;quot;.html_safe, &amp;quot; &amp;quot;.html_safe], html.html_safe)&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
===text_response.rb===&lt;br /&gt;
: It makes codes more readable. We also choose safe_join instead of html_safe to prevent security risks. However, we must use html_safe to keep the character encoding.&lt;br /&gt;
 def edit(_count)&lt;br /&gt;
    html = edit_link + edit_question_lable&lt;br /&gt;
    html += edit_question_textarea + edit_question_textarea_size&lt;br /&gt;
    safe_join([&amp;quot;&amp;lt;tr&amp;gt;&amp;quot;.html_safe, &amp;quot;&amp;lt;/tr&amp;gt;&amp;quot;.html_safe], html.html_safe)&lt;br /&gt;
  end&lt;/div&gt;</summary>
		<author><name>Ddu3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/E1673._Refactor_question_type.rb&amp;diff=103325</id>
		<title>CSC/ECE 517 Fall 2016/E1673. Refactor question type.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/E1673._Refactor_question_type.rb&amp;diff=103325"/>
		<updated>2016-10-28T23:46:06Z</updated>

		<summary type="html">&lt;p&gt;Ddu3: /* text_field.rb */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Background==&lt;br /&gt;
Expertiza is an open source software to create reusable learning objects through peer review. It also supports team projects, and the submission of almost any document type, including URLs and wiki pages. It has following features:&lt;br /&gt;
&lt;br /&gt;
*Enables students working together in a class and a topic&lt;br /&gt;
*Enables studnets to do peer review and improve both him/her and others' learn experience&lt;br /&gt;
&lt;br /&gt;
== Reason for Refractor==&lt;br /&gt;
The purpose of this work is to rewrite the code of seven file for several reason listed below.&lt;br /&gt;
&lt;br /&gt;
*Line is too long&lt;br /&gt;
*Some code found in other location and should put them in the parent class&lt;br /&gt;
*Method has too many lines&lt;br /&gt;
*Some of the code will cause security risk&lt;br /&gt;
*Using the old style validations&lt;br /&gt;
*Using a lower efficent way to do the loop &lt;br /&gt;
&lt;br /&gt;
== Code Changes ==&lt;br /&gt;
===text_field.rb===&lt;br /&gt;
: Although it increase the number of classes, the length of function decrease and it's easy to read than before&lt;br /&gt;
 def view_completed_question(count, answer)&lt;br /&gt;
    if self.type == 'TextField' and self.break_before == true&lt;br /&gt;
      html = view_helper_true(count, answer)&lt;br /&gt;
      html += '' if Question.exists?(answer.question_id + 1) &amp;amp;&amp;amp; Question.find(answer.question_id + 1).break_before == true&lt;br /&gt;
    else&lt;br /&gt;
      html = view_helper_false(answer)&lt;br /&gt;
    end&lt;br /&gt;
    safe_join([&amp;quot; &amp;quot;.html_safe, &amp;quot; &amp;quot;.html_safe], html.html_safe)&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
===text_response.rb===&lt;br /&gt;
: It makes codes more readable. We also choose safe_join instead of html_safe to prevent security risks. However, we must use html_safe to keep the character encoding.&lt;br /&gt;
 def edit(_count)&lt;br /&gt;
    html = edit_link + edit_question_lable&lt;br /&gt;
    html += edit_question_textarea + edit_question_textarea_size&lt;br /&gt;
    safe_join([&amp;quot;&amp;lt;tr&amp;gt;&amp;quot;.html_safe, &amp;quot;&amp;lt;/tr&amp;gt;&amp;quot;.html_safe], html.html_safe)&lt;br /&gt;
  end&lt;/div&gt;</summary>
		<author><name>Ddu3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/E1673._Refactor_question_type.rb&amp;diff=103321</id>
		<title>CSC/ECE 517 Fall 2016/E1673. Refactor question type.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/E1673._Refactor_question_type.rb&amp;diff=103321"/>
		<updated>2016-10-28T23:44:34Z</updated>

		<summary type="html">&lt;p&gt;Ddu3: /* text_field.rb */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Background==&lt;br /&gt;
Expertiza is an open source software to create reusable learning objects through peer review. It also supports team projects, and the submission of almost any document type, including URLs and wiki pages. It has following features:&lt;br /&gt;
&lt;br /&gt;
*Enables students working together in a class and a topic&lt;br /&gt;
*Enables studnets to do peer review and improve both him/her and others' learn experience&lt;br /&gt;
&lt;br /&gt;
== Reason for Refractor==&lt;br /&gt;
The purpose of this work is to rewrite the code of seven file for several reason listed below.&lt;br /&gt;
&lt;br /&gt;
*Line is too long&lt;br /&gt;
*Some code found in other location and should put them in the parent class&lt;br /&gt;
*Method has too many lines&lt;br /&gt;
*Some of the code will cause security risk&lt;br /&gt;
*Using the old style validations&lt;br /&gt;
*Using a lower efficent way to do the loop &lt;br /&gt;
&lt;br /&gt;
== Code Changes ==&lt;br /&gt;
===text_field.rb===&lt;br /&gt;
: Although it increase the number of classes, the length of function decrease and it's easy to read than before&lt;br /&gt;
 def view_completed_question(count, answer)&lt;br /&gt;
    if self.type == 'TextField' and self.break_before == true&lt;br /&gt;
      html = view_helper_true(count, answer)&lt;br /&gt;
      html += '&amp;lt;BR/&amp;gt;&amp;lt;BR/&amp;gt;' if Question.exists?(answer.question_id + 1) &amp;amp;&amp;amp; Question.find(answer.question_id + 1).break_before == true&lt;br /&gt;
    else&lt;br /&gt;
      html = view_helper_false(answer)&lt;br /&gt;
    end&lt;br /&gt;
    safe_join([&amp;quot; &amp;quot;.html_safe, &amp;quot; &amp;quot;.html_safe], html.html_safe)&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
===text_response.rb===&lt;br /&gt;
: It makes codes more readable. We also choose safe_join instead of html_safe to prevent security risks. However, we must use html_safe to keep the character encoding.&lt;br /&gt;
 def edit(_count)&lt;br /&gt;
    html = edit_link + edit_question_lable&lt;br /&gt;
    html += edit_question_textarea + edit_question_textarea_size&lt;br /&gt;
    safe_join([&amp;quot;&amp;lt;tr&amp;gt;&amp;quot;.html_safe, &amp;quot;&amp;lt;/tr&amp;gt;&amp;quot;.html_safe], html.html_safe)&lt;br /&gt;
  end&lt;/div&gt;</summary>
		<author><name>Ddu3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/E1673._Refactor_question_type.rb&amp;diff=103320</id>
		<title>CSC/ECE 517 Fall 2016/E1673. Refactor question type.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/E1673._Refactor_question_type.rb&amp;diff=103320"/>
		<updated>2016-10-28T23:44:08Z</updated>

		<summary type="html">&lt;p&gt;Ddu3: /* text_field.rb */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Background==&lt;br /&gt;
Expertiza is an open source software to create reusable learning objects through peer review. It also supports team projects, and the submission of almost any document type, including URLs and wiki pages. It has following features:&lt;br /&gt;
&lt;br /&gt;
*Enables students working together in a class and a topic&lt;br /&gt;
*Enables studnets to do peer review and improve both him/her and others' learn experience&lt;br /&gt;
&lt;br /&gt;
== Reason for Refractor==&lt;br /&gt;
The purpose of this work is to rewrite the code of seven file for several reason listed below.&lt;br /&gt;
&lt;br /&gt;
*Line is too long&lt;br /&gt;
*Some code found in other location and should put them in the parent class&lt;br /&gt;
*Method has too many lines&lt;br /&gt;
*Some of the code will cause security risk&lt;br /&gt;
*Using the old style validations&lt;br /&gt;
*Using a lower efficent way to do the loop &lt;br /&gt;
&lt;br /&gt;
== Code Changes ==&lt;br /&gt;
===text_field.rb===&lt;br /&gt;
: Although it increase the number of classes, the length of function decrease and it's easy to read than before&lt;br /&gt;
 def view_completed_question(count, answer)&lt;br /&gt;
    if self.type == 'TextField' and self.break_before == true&lt;br /&gt;
      html = view_helper_true(count, answer)&lt;br /&gt;
      html += '&amp;lt;BR/&amp;gt;&amp;lt;BR/&amp;gt;'  if Question.exists?(answer.question_id + 1) &amp;amp;&amp;amp; Question.find(answer.question_id + 1).break_before == true&lt;br /&gt;
    else&lt;br /&gt;
      html = view_helper_false(answer)&lt;br /&gt;
    end&lt;br /&gt;
    safe_join([&amp;quot; &amp;quot;.html_safe, &amp;quot; &amp;quot;.html_safe], html.html_safe)&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
===text_response.rb===&lt;br /&gt;
: It makes codes more readable. We also choose safe_join instead of html_safe to prevent security risks. However, we must use html_safe to keep the character encoding.&lt;br /&gt;
 def edit(_count)&lt;br /&gt;
    html = edit_link + edit_question_lable&lt;br /&gt;
    html += edit_question_textarea + edit_question_textarea_size&lt;br /&gt;
    safe_join([&amp;quot;&amp;lt;tr&amp;gt;&amp;quot;.html_safe, &amp;quot;&amp;lt;/tr&amp;gt;&amp;quot;.html_safe], html.html_safe)&lt;br /&gt;
  end&lt;/div&gt;</summary>
		<author><name>Ddu3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/E1673._Refactor_question_type.rb&amp;diff=103318</id>
		<title>CSC/ECE 517 Fall 2016/E1673. Refactor question type.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/E1673._Refactor_question_type.rb&amp;diff=103318"/>
		<updated>2016-10-28T23:43:51Z</updated>

		<summary type="html">&lt;p&gt;Ddu3: /* text_field.rb */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Background==&lt;br /&gt;
Expertiza is an open source software to create reusable learning objects through peer review. It also supports team projects, and the submission of almost any document type, including URLs and wiki pages. It has following features:&lt;br /&gt;
&lt;br /&gt;
*Enables students working together in a class and a topic&lt;br /&gt;
*Enables studnets to do peer review and improve both him/her and others' learn experience&lt;br /&gt;
&lt;br /&gt;
== Reason for Refractor==&lt;br /&gt;
The purpose of this work is to rewrite the code of seven file for several reason listed below.&lt;br /&gt;
&lt;br /&gt;
*Line is too long&lt;br /&gt;
*Some code found in other location and should put them in the parent class&lt;br /&gt;
*Method has too many lines&lt;br /&gt;
*Some of the code will cause security risk&lt;br /&gt;
*Using the old style validations&lt;br /&gt;
*Using a lower efficent way to do the loop &lt;br /&gt;
&lt;br /&gt;
== Code Changes ==&lt;br /&gt;
===text_field.rb===&lt;br /&gt;
: Although it increase the number of classes, the length of function decrease and it's easy to read than before&lt;br /&gt;
 def view_completed_question(count, answer)&lt;br /&gt;
    if self.type == 'TextField' and self.break_before == true&lt;br /&gt;
      html = view_helper_true(count, answer)&lt;br /&gt;
      html += '&amp;lt;BR/&amp;gt;&amp;lt;BR/&amp;gt;'  if Question.exists?(answer.question_id + 1) &amp;amp;&amp;amp; Question.find(answer.question_id + 1).break_before == true&lt;br /&gt;
    else&lt;br /&gt;
      html = view_helper_false(answer)&lt;br /&gt;
    end&lt;br /&gt;
    safe_join([&amp;quot; &amp;quot;.html_safe, &amp;quot; &amp;quot;.html_safe], html.html_safe)&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
===text_response.rb===&lt;br /&gt;
: It makes codes more readable. We also choose safe_join instead of html_safe to prevent security risks. However, we must use html_safe to keep the character encoding.&lt;br /&gt;
 def edit(_count)&lt;br /&gt;
    html = edit_link + edit_question_lable&lt;br /&gt;
    html += edit_question_textarea + edit_question_textarea_size&lt;br /&gt;
    safe_join([&amp;quot;&amp;lt;tr&amp;gt;&amp;quot;.html_safe, &amp;quot;&amp;lt;/tr&amp;gt;&amp;quot;.html_safe], html.html_safe)&lt;br /&gt;
  end&lt;/div&gt;</summary>
		<author><name>Ddu3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/E1673._Refactor_question_type.rb&amp;diff=103317</id>
		<title>CSC/ECE 517 Fall 2016/E1673. Refactor question type.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/E1673._Refactor_question_type.rb&amp;diff=103317"/>
		<updated>2016-10-28T23:43:29Z</updated>

		<summary type="html">&lt;p&gt;Ddu3: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Background==&lt;br /&gt;
Expertiza is an open source software to create reusable learning objects through peer review. It also supports team projects, and the submission of almost any document type, including URLs and wiki pages. It has following features:&lt;br /&gt;
&lt;br /&gt;
*Enables students working together in a class and a topic&lt;br /&gt;
*Enables studnets to do peer review and improve both him/her and others' learn experience&lt;br /&gt;
&lt;br /&gt;
== Reason for Refractor==&lt;br /&gt;
The purpose of this work is to rewrite the code of seven file for several reason listed below.&lt;br /&gt;
&lt;br /&gt;
*Line is too long&lt;br /&gt;
*Some code found in other location and should put them in the parent class&lt;br /&gt;
*Method has too many lines&lt;br /&gt;
*Some of the code will cause security risk&lt;br /&gt;
*Using the old style validations&lt;br /&gt;
*Using a lower efficent way to do the loop &lt;br /&gt;
&lt;br /&gt;
== Code Changes ==&lt;br /&gt;
===text_field.rb===&lt;br /&gt;
: Although it increase the number of classes, the length of function decrease and it's easy to read than before&lt;br /&gt;
 def view_completed_question(count, answer)&lt;br /&gt;
    if self.type == 'TextField' and self.break_before == true&lt;br /&gt;
      html = view_helper_true(count, answer)&lt;br /&gt;
      html += '&amp;lt;BR/&amp;gt;&amp;lt;BR/&amp;gt;'if Question.exists?(answer.question_id + 1) &amp;amp;&amp;amp; Question.find(answer.question_id + 1).break_before == true&lt;br /&gt;
    else&lt;br /&gt;
      html = view_helper_false(answer)&lt;br /&gt;
    end&lt;br /&gt;
    safe_join([&amp;quot; &amp;quot;.html_safe, &amp;quot; &amp;quot;.html_safe], html.html_safe)&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
===text_response.rb===&lt;br /&gt;
: It makes codes more readable. We also choose safe_join instead of html_safe to prevent security risks. However, we must use html_safe to keep the character encoding.&lt;br /&gt;
 def edit(_count)&lt;br /&gt;
    html = edit_link + edit_question_lable&lt;br /&gt;
    html += edit_question_textarea + edit_question_textarea_size&lt;br /&gt;
    safe_join([&amp;quot;&amp;lt;tr&amp;gt;&amp;quot;.html_safe, &amp;quot;&amp;lt;/tr&amp;gt;&amp;quot;.html_safe], html.html_safe)&lt;br /&gt;
  end&lt;/div&gt;</summary>
		<author><name>Ddu3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/E1673._Refactor_question_type.rb&amp;diff=103316</id>
		<title>CSC/ECE 517 Fall 2016/E1673. Refactor question type.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/E1673._Refactor_question_type.rb&amp;diff=103316"/>
		<updated>2016-10-28T23:41:35Z</updated>

		<summary type="html">&lt;p&gt;Ddu3: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Background==&lt;br /&gt;
Expertiza is an open source software to create reusable learning objects through peer review. It also supports team projects, and the submission of almost any document type, including URLs and wiki pages. It has following features:&lt;br /&gt;
&lt;br /&gt;
*Enables students working together in a class and a topic&lt;br /&gt;
*Enables studnets to do peer review and improve both him/her and others' learn experience&lt;br /&gt;
&lt;br /&gt;
== Reason for Refractor==&lt;br /&gt;
The purpose of this work is to rewrite the code of seven file for several reason listed below.&lt;br /&gt;
&lt;br /&gt;
*Line is too long&lt;br /&gt;
*Some code found in other location and should put them in the parent class&lt;br /&gt;
*Method has too many lines&lt;br /&gt;
*Some of the code will cause security risk&lt;br /&gt;
*Using the old style validations&lt;br /&gt;
*Using a lower efficent way to do the loop &lt;br /&gt;
&lt;br /&gt;
== Code Changes ==&lt;br /&gt;
===text_field.rb===&lt;br /&gt;
: Although it increase the number of classes, the length of function decrease and it's easy to read than before&lt;br /&gt;
 def view_completed_question(count, answer)&lt;br /&gt;
    if self.type == 'TextField' and self.break_before == true&lt;br /&gt;
      html = view_helper_true(count, answer)&lt;br /&gt;
      html += '&amp;lt;BR/&amp;gt;&amp;lt;BR/&amp;gt;' if Question.exists?(answer.question_id + 1) &amp;amp;&amp;amp; Question.find(answer.question_id + 1).break_before == true&lt;br /&gt;
    else&lt;br /&gt;
      html = view_helper_false(answer)&lt;br /&gt;
    end&lt;br /&gt;
    safe_join([&amp;quot; &amp;quot;.html_safe, &amp;quot; &amp;quot;.html_safe], html.html_safe)&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
===text_response.rb===&lt;br /&gt;
: It makes codes more readable. We also choose safe_join instead of html_safe to prevent security risks. However, we must use html_safe to keep the character encoding.&lt;br /&gt;
 def edit(_count)&lt;br /&gt;
    html = edit_link + edit_question_lable&lt;br /&gt;
    html += edit_question_textarea + edit_question_textarea_size&lt;br /&gt;
    safe_join([&amp;quot;&amp;lt;tr&amp;gt;&amp;quot;.html_safe, &amp;quot;&amp;lt;/tr&amp;gt;&amp;quot;.html_safe], html.html_safe)&lt;br /&gt;
  end&lt;/div&gt;</summary>
		<author><name>Ddu3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/E1673._Refactor_question_type.rb&amp;diff=102927</id>
		<title>CSC/ECE 517 Fall 2016/E1673. Refactor question type.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/E1673._Refactor_question_type.rb&amp;diff=102927"/>
		<updated>2016-10-28T20:29:35Z</updated>

		<summary type="html">&lt;p&gt;Ddu3: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''E1673. Refactor question type.rb'''&lt;br /&gt;
== Reason for Refractor==&lt;br /&gt;
Some codes are so duplicated and unreadability. It's difficult to make extensions and develop. &lt;br /&gt;
&lt;br /&gt;
== Code Changes ==&lt;br /&gt;
; text_field.rb&lt;br /&gt;
: Although it increase the number of classes, the length of function decrease and it's easy to read than before&lt;br /&gt;
 def view_completed_question(count, answer)&lt;br /&gt;
    if self.type == 'TextField' and self.break_before == true&lt;br /&gt;
      html = '&amp;lt;b&amp;gt;' + count.to_s + &amp;quot;. &amp;quot; + self.txt + &amp;quot;&amp;lt;/b&amp;gt;&amp;quot;&lt;br /&gt;
      html += '&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;'&lt;br /&gt;
      html += answer.comments&lt;br /&gt;
      html += '&amp;lt;BR/&amp;gt;&amp;lt;BR/&amp;gt;' if Question.exists?(answer.question_id + 1) &amp;amp;&amp;amp; Question.find(answer.question_id + 1).break_before == true&lt;br /&gt;
    else&lt;br /&gt;
      html = view_helper(answer)&lt;br /&gt;
    end&lt;br /&gt;
    safe_join([&amp;quot; &amp;quot;.html_safe, &amp;quot; &amp;quot;.html_safe], html.html_safe)&lt;br /&gt;
  end&lt;br /&gt;
 def view_helper(answer)&lt;br /&gt;
    html = self.text&lt;br /&gt;
    html += answer.comments&lt;br /&gt;
    html += '&amp;lt;BR/&amp;gt;&amp;lt;BR/&amp;gt;'&lt;br /&gt;
    html&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
; text_response.rb&lt;br /&gt;
: It makes codes more readable. We also choose safe_join instead of html_safe to prevent security risks. However, we must use html_safe to keep the character encoding.&lt;br /&gt;
 def edit(_count)&lt;br /&gt;
    html = edit_1 + edit_2 + edit_3 + edit_4&lt;br /&gt;
    safe_join([&amp;quot;&amp;lt;tr&amp;gt;&amp;quot;.html_safe, &amp;quot;&amp;lt;/tr&amp;gt;&amp;quot;.html_safe], html.html_safe)&lt;br /&gt;
 end&lt;/div&gt;</summary>
		<author><name>Ddu3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/E1673._Refactor_question_type.rb&amp;diff=102921</id>
		<title>CSC/ECE 517 Fall 2016/E1673. Refactor question type.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/E1673._Refactor_question_type.rb&amp;diff=102921"/>
		<updated>2016-10-28T20:23:20Z</updated>

		<summary type="html">&lt;p&gt;Ddu3: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''E1673. Refactor question type.rb'''&lt;br /&gt;
== Reason for Refractor==&lt;br /&gt;
Some codes are so duplicated and unreadability. It's difficult to make extensions and develop. &lt;br /&gt;
&lt;br /&gt;
== Code Changes ==&lt;br /&gt;
; text_field.rb&lt;br /&gt;
: Although it increase the number of classes, the length of function decrease and it's easy to read than before&lt;br /&gt;
 def view_completed_question(count, answer)&lt;br /&gt;
    if self.type == 'TextField' and self.break_before == true&lt;br /&gt;
      html = '&amp;lt;b&amp;gt;' + count.to_s + &amp;quot;. &amp;quot; + self.txt + &amp;quot;&amp;lt;/b&amp;gt;&amp;quot;&lt;br /&gt;
      html += '&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;'&lt;br /&gt;
      html += answer.comments&lt;br /&gt;
      html += '&amp;lt;BR/&amp;gt;&amp;lt;BR/&amp;gt;' if Question.exists?(answer.question_id + 1) &amp;amp;&amp;amp; Question.find(answer.question_id + 1).break_before == true&lt;br /&gt;
    else&lt;br /&gt;
      html = view_helper(answer)&lt;br /&gt;
    end&lt;br /&gt;
    safe_join([&amp;quot; &amp;quot;.html_safe, &amp;quot; &amp;quot;.html_safe], html.html_safe)&lt;br /&gt;
  end&lt;br /&gt;
 def view_helper(answer)&lt;br /&gt;
    html = self.text&lt;br /&gt;
    html += answer.comments&lt;br /&gt;
    html += '&amp;lt;BR/&amp;gt;&amp;lt;BR/&amp;gt;'&lt;br /&gt;
    html&lt;br /&gt;
 end&lt;/div&gt;</summary>
		<author><name>Ddu3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/E1673._Refactor_question_type.rb&amp;diff=102920</id>
		<title>CSC/ECE 517 Fall 2016/E1673. Refactor question type.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/E1673._Refactor_question_type.rb&amp;diff=102920"/>
		<updated>2016-10-28T20:23:04Z</updated>

		<summary type="html">&lt;p&gt;Ddu3: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''E1673. Refactor question type.rb'''&lt;br /&gt;
== Reason for Refractor==&lt;br /&gt;
Some codes are so duplicated and unreadability. It's difficult to make extensions and develop. &lt;br /&gt;
&lt;br /&gt;
== Code Changes ==&lt;br /&gt;
; text_field.rb&lt;br /&gt;
: Although it increase the number of classes, the length of function decrease and it's easy to read than before&lt;br /&gt;
def view_completed_question(count, answer)&lt;br /&gt;
    if self.type == 'TextField' and self.break_before == true&lt;br /&gt;
      html = '&amp;lt;b&amp;gt;' + count.to_s + &amp;quot;. &amp;quot; + self.txt + &amp;quot;&amp;lt;/b&amp;gt;&amp;quot;&lt;br /&gt;
      html += '&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;'&lt;br /&gt;
      html += answer.comments&lt;br /&gt;
      html += '&amp;lt;BR/&amp;gt;&amp;lt;BR/&amp;gt;' if Question.exists?(answer.question_id + 1) &amp;amp;&amp;amp; Question.find(answer.question_id + 1).break_before == true&lt;br /&gt;
    else&lt;br /&gt;
      html = view_helper(answer)&lt;br /&gt;
    end&lt;br /&gt;
    safe_join([&amp;quot; &amp;quot;.html_safe, &amp;quot; &amp;quot;.html_safe], html.html_safe)&lt;br /&gt;
  end&lt;br /&gt;
def view_helper(answer)&lt;br /&gt;
    html = self.text&lt;br /&gt;
    html += answer.comments&lt;br /&gt;
    html += '&amp;lt;BR/&amp;gt;&amp;lt;BR/&amp;gt;'&lt;br /&gt;
    html&lt;br /&gt;
end&lt;/div&gt;</summary>
		<author><name>Ddu3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/E1673._Refactor_question_type.rb&amp;diff=102919</id>
		<title>CSC/ECE 517 Fall 2016/E1673. Refactor question type.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/E1673._Refactor_question_type.rb&amp;diff=102919"/>
		<updated>2016-10-28T20:22:42Z</updated>

		<summary type="html">&lt;p&gt;Ddu3: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''E1673. Refactor question type.rb'''&lt;br /&gt;
== Reason for Refractor==&lt;br /&gt;
Some codes are so duplicated and unreadability. It's difficult to make extensions and develop. &lt;br /&gt;
&lt;br /&gt;
== Code Changes ==&lt;br /&gt;
; text_field.rb&lt;br /&gt;
: Although it increase the number of classes, the length of function decrease and it's easy to read than before&lt;br /&gt;
def view_completed_question(count, answer)&lt;br /&gt;
    if self.type == 'TextField' and self.break_before == true&lt;br /&gt;
      html = '&amp;lt;b&amp;gt;' + count.to_s + &amp;quot;. &amp;quot; + self.txt + &amp;quot;&amp;lt;/b&amp;gt;&amp;quot;&lt;br /&gt;
      html += '&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;'&lt;br /&gt;
      html += answer.comments&lt;br /&gt;
      html += '&amp;lt;BR/&amp;gt;&amp;lt;BR/&amp;gt;' if Question.exists?(answer.question_id + 1) &amp;amp;&amp;amp; Question.find(answer.question_id + 1).break_before == true&lt;br /&gt;
    else&lt;br /&gt;
      html = view_helper(answer)&lt;br /&gt;
    end&lt;br /&gt;
    safe_join([&amp;quot; &amp;quot;.html_safe, &amp;quot; &amp;quot;.html_safe], html.html_safe)&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  def view_helper(answer)&lt;br /&gt;
    html = self.text&lt;br /&gt;
    html += answer.comments&lt;br /&gt;
    html += '&amp;lt;BR/&amp;gt;&amp;lt;BR/&amp;gt;'&lt;br /&gt;
    html&lt;br /&gt;
  end&lt;br /&gt;
end&lt;/div&gt;</summary>
		<author><name>Ddu3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/E1673._Refactor_question_type.rb&amp;diff=102897</id>
		<title>CSC/ECE 517 Fall 2016/E1673. Refactor question type.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/E1673._Refactor_question_type.rb&amp;diff=102897"/>
		<updated>2016-10-28T20:05:54Z</updated>

		<summary type="html">&lt;p&gt;Ddu3: Created page with &amp;quot;'''E1673. Refactor question type.rb'''&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''E1673. Refactor question type.rb'''&lt;/div&gt;</summary>
		<author><name>Ddu3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016&amp;diff=102893</id>
		<title>CSC/ECE 517 Fall 2016</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016&amp;diff=102893"/>
		<updated>2016-10-28T19:59:46Z</updated>

		<summary type="html">&lt;p&gt;Ddu3: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[http://www.example.com link title]==Calibration Assignment Submissions==&lt;br /&gt;
*[[Calibration Assignment Submission (Firebrick JS)]]&lt;br /&gt;
*[[Calibration Assignment Submission (Active Job)]]&lt;br /&gt;
==Writing Assignments 2==&lt;br /&gt;
*[[CSC/ECE 517 Fall 2016/E1666. Test team functionality]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2016/E1643. Refactor Suggestion controller]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2016/E1631. Refactoring Bidding Interface]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2016/E1674.Refactor leaderboard.rb and write unit tests]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2016/E1668.Test e-mailing functionality]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2016/E1658. Refractor lottery_controller.rb and write integration tests]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2016/E1660. Review requirements and thresholds]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2016/E1650. Sort instructor views alphabetically by default]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2016/E1644. Refactor and test Teams Controller]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2016/E1659. Refactor on_the_fly_calc.rb]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2016/E1657. Introduce a Student View for instructors]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2016/E1653. Fix and improve rubric criteria]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2016/E1642. Refactor review_response_map.rb]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2016/E1666. Test team functionality]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2016/E1654. Improve_date-picker_and_deadlines]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2016/E1652 Fix teammate advertisements and requests to join a team ]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2016/E1662. UI issues/fixes]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2016/E1673. Refactor question_type.rb]]&lt;/div&gt;</summary>
		<author><name>Ddu3</name></author>
	</entry>
</feed>