CSC/ECE 517 Fall 2024 - E2468. Reimplement due date
About Expertiza
Expertiza is an open-source project built using Ruby on Rails. It provides a platform for instructors and students to manage, submit, and evaluate assignments and projects. Instructors can create, edit, and grade assignments, while students can collaborate in teams, submit their work, and review peers' submissions. Expertiza supports submission across various document types, including URLs and wiki pages.
Issues with previous Functionality
- Outdated Code: The original implementation seems to be very old code that does not utilize features that are standard in current ruby versions. Updating this code improves maintainability and code clarity. A prime example is the use of a flag attribute, which apparently has not been used in nearly a decade.
- Readability: The original due_date.rb had become quite bloated and messy, with overly complex methods that were difficult to read. An example of this is self.get_next_due_date. This could hamper future development as understanding exactly what due dates can and cannot do could become difficult due to unclear code.
- Single-Responsibility Principle Violations: The original implementation violated several SOLID principles, primarily violations around the Single-Responsibility Principle. These issues create difficulty in maintainability as code may need to be updated in multiple places that each do the same thing.
Design Goals
Implementation
Reimplemented Methods
New and enhanced methods
The old code had issues with redundancy, lengthy methods, and a lack of clear separation between different pieces of logic. The introduction of these new helper methods addresses these concerns. Here's an overview of the new methods and the rationale behind their implementation:
# | New method | Purpose | Rationale | Commit |
---|---|---|---|---|
Other changes
Testing Plan
We primarily tested using automated testing through RSpec. Since due dates are a relatively self-contained structure, RSpec testing was more than sufficient for covering all testing scenarios. Here are some of our test classes:
Relevant Links
- Github Repository: https://github.com/akuldevali/reimplementation-back-end
- Pull Request: TODO
Team
Mentor: Dr. Ed Gehringer - efg@ncsu.edu
- Akul Devali - devali@ncsu.edu
- Pete Chopelas - pechopel@ncsu.edu
- Snehil Behar - sbehar@ncsu.edu