Benedict's Project Portfolio Page
Project: SunRez
SunRez is a resident management system for use in hostels and residential colleges (RCs). The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 19 kLoC. Given below are my contributions to the project.
- New Feature: Added command history feature and tests (#63,
#107 and
#175).
- What it does: The
history [COUNT]
command displays (from most to least recent) successful commands previously executed. If theCOUNT
parameter is not specified, the entire history is displayed. Otherwise, theCOUNT
most recent entries are displayed. This history is saved to a file, and loaded back upon app startup. Lastly, theUP
andDOWN
arrow keys can be used to navigate command history (auto-filling the command box with previous successful commands). - Justification: Managing student housing records can involve a lot of repeated commands, or commands which differ only slightly from one another; command history speeds up this repetitive aspect of housing management. History is saved to a file so that users do not lose it when they close SunRez for the day.
- Highlights: This feature entailed in-depth knowledge of every component in SunRez: command text had to be intercepted in the Logic component, stored in the Model component and saved using the Storage component. The UI component had to be modified to support navigating command history, the implementation of which was a design consideration that ultimately led to a refactoring to better respect the Single Responsibility Principle. A further design consideration of whether to record invalid commands in history was discussed and resolved with the decision to only record successful commands.
- Credits: Inspiration for the user-facing behavior of the command history feature was taken from Address Book (Level 4) but its implementation was not referenced during development.
- What it does: The
- New Feature: Added undo/redo commands (#128) with keyboard
and menu shortcuts.
- What it does: The
undo
command reverses the effects of a previous state-changing command, while theredo
command reverses anundo
command’s effects. - Justification: Sometimes users execute the wrong command. The undo/redo feature allows them to easily correct those mistakes. Cross-platform keyboard shortcuts quicken these operations for fast typists, while GUI menu shortcuts provide a simple interface for beginners.
- Highlights: Much of the design was understood and adapted from another project (See Credits below). However,
the adding of shortcuts involved understanding the UI to add accelerators and organize keyboard shortcuts in
KeyboardShortcuts
. - Credits: Code for undo/redo commands was adapted from Address Book (Level 4).
- What it does: The
-
Code contributed: RepoSense link
- Enhancements to existing features:
- Contributions to user guide (UG):
- Standardized UG formatting in initial draft: #19.
- Added the section describing the SunRez UI: #325.
- Added the initial command parameters section (later revised): #279.
- Added feature sections on
history
,undo
,redo
,clear
and data transfer: #63, #128, #163 and #160. - Various other fixes and formatting changes. The comprehensive list is here.
- Contributions to developer guide (DG):
- Wrote use cases UC-017, UC-018 and UC-021.
- Added manual testing instructions for command history and undo/redo: #333.
- Updated logic component descriptions and diagrams: #386 and #429.
- Added implementation details and diagrams for command history: #109, #317 and #417.
- Added introductory sections explaining audience and diagrams: #345 and #408.
- Community:
- PRs reviewed (with non-trivial review comments): #65, #103, #115, #116, #121, #122, #133, #137, #156, #289; and a comprehensive list of all PRs reviewed here.
- Contributed to forum discussions: 1, 2, 3.
- Bug reports for my team: #60, #67, #105, #124, #125, #127, #154, #387, #391; and a comprehensive list here.
- Bug reports made for other teams (9/9 accepted): PE-D.
- Team Tasks:
- Updated the README and project website: #13 and #153.
- Updated various user-visible references of AddressBook to SunRez: #83, #151 and #281.
- Enabled assertions: #101.
- Created SunRez logo: #19.
- Created PE-D bug triage spreadsheet and collated 33 PE-D issues.
- Updated sample SunRez data: #172.
- Updated product image: #153, #309, #400.