CSC/ECE 517 Spring 2013/OSS E734: Difference between revisions

From Expertiza_Wiki
Jump to navigation Jump to search
No edit summary
No edit summary
Line 20: Line 20:
Upon examination the implementation of E732 we decided to start from scratch and create a developer friendly and easily extendable framework for providing analytic data and displaying analytic data.
Upon examination the implementation of E732 we decided to start from scratch and create a developer friendly and easily extendable framework for providing analytic data and displaying analytic data.


== Requirements ==  
= Architecture of the Analytic Framework =
Using the Object Oriented Design Principles and Design Patterns we learn in the class we as well as the objective of the project we came up list of requirements that we we kept in mind while designing the new Analytic framework
Architecture of the Expertiza Analytic Framework is based on the model-view-controller design pattern used in Rails application.
*...(TODO)
[[File:Analytic_framwork_archtecture.png]]
*A clear separation front end (displaying the data) and back end (gathering the data)
 
*Instructors or Teaching assistants must be able to see a comparison among different feedbacks towards the same question in all reviews of an assignments.
== Model ==
*Instructors or Teaching assistants must be able to see the trend of the score changes with respect to time, which is from review to re-review and finally to meta review.
There are two tasks that analytic require the model to perform: data mining and data formating.
*All the above information should be kept to the instructor, TAs and the respecting author.
 
=== Data Mining ===
The data mining operations gathers the data requested by the controller.
 
In the original implementation of analytic, data mining methods use to extract the data are scattered between the assignment model class. There are several problems with this method of implementation.
 
First, assignment model is crucial class for the correct operation of the Expertiza and the data mining methods are not related to the normal operation that the model performs this reduces the readability and maintainability of the model.
 
Second, the data mining methods seem to recursively traverse through the data structure hierarchy level by level (for example: to obtain average grades for assignment, the original implementation do assignment->for each teams-> for each responses->score->grade) in-order to obtain the data that they need. This design violates basic object oriented programming principle, instead the data mining methods should be layered and methods should be added to the corresponding models to avoid this behavior.
 
In the new implementation of analytic the data mining methods are implemented as mixin modules for the corresponding models. The modules are gathered into the /models/analytic folder. The modules contains the analytic methods for the model that they relates to. The analytic modules only calls the methods that are defined in model that they corresponds to and methods defined in other analytic module.
 
This implementation creates a clear separation between the normal model operation and data mining operation; abstract away the complexity of the structure of the underlying databases; improves the readability for the developer.
 
Analytic modules and their corresponding models:
*expertiza/app/models/analytic/course_analytic.rb            => expertiza/app/models/course.rb
*expertiza/app/models/analytic/assignment_analytic.rb        => expertiza/app/models/assignment.rb
*expertiza/app/models/analytic/assignment_team_analytic.rb    => expertiza/app/models/assignment_team.rb
*expertiza/app/models/analytic/questionnaire_analytic.rb      => expertiza/app/models/questionnaire.rb
*expertiza/app/models/analytic/question_analytic.rb          => expertiza/app/models/question.rb
*expertiza/app/models/analytic/response_analytic.rb          => expertiza/app/models/response.rb
*expertiza/app/models/analytic/question_analytic.rb          => expertiza/app/models/question.rb
*expertiza/app/models/analytic/score_analytic.rb              => expertiza/app/models/score.rb
 
=== Data Formatting ===
 
 
 
 
 
 
== Front-End ==
= Access Control =
= Graphical User Interface Design = 
 
= Future Works =
== Front End ==
== Back End ==
= Developer Resources =
== Development Environment Setup ==
== Rendering Example ==

Revision as of 22:32, 28 April 2013

Write-up of This Topic.

This page is the design documentation for Expertiza project E734 conducted in the CSC/ECE 517 Spring 2003 class at North Carolina State University. Learn more about Expertiza by visiting its main page: http://wikis.lib.ncsu.edu/index.php/Expertiza

Team Members

Hao Liu (hliu11@ncsu.edu), Zhuowei Wang (zwang18@ncsu.edu), Chunxue Yang (cyang14@ncsu.edu)

Introduction

The Expertiza project is system for using peer review to create reusable learning objects. Students do different assignments; then peer review selects the best work in each category, and assembles it to create a single unit.

The process of reviewing includes reviews, re-reviews and meta reviews of assignments submitted by students for a course. This method of evaluation also inherently suggests that there will be vagaries in the way reviews have been performed.

This project aim to provide a way for the users to examine various type of statistic about the courses, assignments and reviews.

Objective

The original objective of the project is to extend the Analytic project E732 from previous semester to incorporate new features. Upon examination the implementation of E732 we decided to start from scratch and create a developer friendly and easily extendable framework for providing analytic data and displaying analytic data.

Architecture of the Analytic Framework

Architecture of the Expertiza Analytic Framework is based on the model-view-controller design pattern used in Rails application.

Model

There are two tasks that analytic require the model to perform: data mining and data formating.

Data Mining

The data mining operations gathers the data requested by the controller.

In the original implementation of analytic, data mining methods use to extract the data are scattered between the assignment model class. There are several problems with this method of implementation.

First, assignment model is crucial class for the correct operation of the Expertiza and the data mining methods are not related to the normal operation that the model performs this reduces the readability and maintainability of the model.

Second, the data mining methods seem to recursively traverse through the data structure hierarchy level by level (for example: to obtain average grades for assignment, the original implementation do assignment->for each teams-> for each responses->score->grade) in-order to obtain the data that they need. This design violates basic object oriented programming principle, instead the data mining methods should be layered and methods should be added to the corresponding models to avoid this behavior.

In the new implementation of analytic the data mining methods are implemented as mixin modules for the corresponding models. The modules are gathered into the /models/analytic folder. The modules contains the analytic methods for the model that they relates to. The analytic modules only calls the methods that are defined in model that they corresponds to and methods defined in other analytic module.

This implementation creates a clear separation between the normal model operation and data mining operation; abstract away the complexity of the structure of the underlying databases; improves the readability for the developer.

Analytic modules and their corresponding models:

  • expertiza/app/models/analytic/course_analytic.rb => expertiza/app/models/course.rb
  • expertiza/app/models/analytic/assignment_analytic.rb => expertiza/app/models/assignment.rb
  • expertiza/app/models/analytic/assignment_team_analytic.rb => expertiza/app/models/assignment_team.rb
  • expertiza/app/models/analytic/questionnaire_analytic.rb => expertiza/app/models/questionnaire.rb
  • expertiza/app/models/analytic/question_analytic.rb => expertiza/app/models/question.rb
  • expertiza/app/models/analytic/response_analytic.rb => expertiza/app/models/response.rb
  • expertiza/app/models/analytic/question_analytic.rb => expertiza/app/models/question.rb
  • expertiza/app/models/analytic/score_analytic.rb => expertiza/app/models/score.rb

Data Formatting

Front-End

Access Control

Graphical User Interface Design

Future Works

Front End

Back End

Developer Resources

Development Environment Setup

Rendering Example