Onn Wei Sin's Project Portfolio Page
Project: App-Ointment
App-Ointment is a patient appointment management software adapted from AddressBook - Level 3, which is a desktop address book application used for teaching Software Engineering principles. 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.
Code contributed: RepoSense
- Adaptation of code to rename all mentions of App name
Features Implemented:
- Implementation of UUID field in
Person
classes- Problem:
- Patient and Doctor were immutable Objects (From
Person
in AB-3, good code practice that we didn’t want to change) - Edits to Patient and Doctor replaced the object in the model with a completely new object.
- Since an
Appointment
contains aPatient
and aDoctor
, upon an edit to aPatient
orDoctor
instance,Appointment
still held the oldPatient
andDoctor
objects, and was unable to be updated.
- Patient and Doctor were immutable Objects (From
- Solution:
- Idea: Implement a primary key/foreign key system so that appointments are able to refer to patients and doctors with the foreign key.
- Created a
UUID
field inPerson
classes - Instead of holding a reference to a
Patient
orDoctor
object,Appointment
holds instead a reference to 2UUID
objects, one each forPatient
’s andDoctor
’sUUID
. AppointmentDisplay
class was created (extending fromAppointment
) to not affect GUI- Use of static
java.util.Map
PATIENT_MAP
andDOCTOR_MAP
to obtain PersonName
fromUUID
- Problem:
- Closest Command Feature
- Use of Levenshtein distance algorithm with dynamic programming (reused)
- to calculate minimum edit distance from an invalid command entered by user to known commands
- The known command with the lowest minimum edit distance will be displayed to the user as a prompt.
- List features
- modified the original
list
tolist-appt
, and addedlist-patient
andlist-doctor
to list patients and doctors respectively. Also added tests for these commands.
- modified the original
- Clear features
- modified the original
clear
toclear-appt
and addedclear-patient
andclear-doctor
to clear patient and doctor records respectively. Also added tests for these commands.
- modified the original
Documentation: Contributed to team sections of UG/DG:
- Entire Adaptation of UG/DG to remove all mentions of AB-3 (Updated all links, product names in UG/DG, Ui picures, AB-3 features removed in UG)
- Added to DG on behalf of team: Target User Profile, Value Proposition, Constraints, Non-Functional/Technical/Performance/Quality/ Requirements, Glossary
Project management and Team Tasks:
- Set up GitHub Organisation
- Set up GitHub Team Repo
- Set up Grade, Issue Tracker, GitHub Actions, GitHub Pages, Branch Protection Rules
- Created, closed, and managed release for all milestones (v1.1, v1.2, v1.3)
- Authored 35 issues (Out of 36 issues authored by team)
- Recorded all feature demos (v1.2, v1.3)
- Made sure every single item on tP team progress dashboard was done by the the day before tutorial deadline
Community:
- Reviewed all PRs to the team repo that were not:
- Authored by me.
- Individual tP progress (tutorial)
- Closed before merging
- A total of 33 PRs reviewed: (#19, #20, #23, #25, #27, #28, #31, #32, #41, #47, #48, #49, #50, #51, #54, #55, #63, #67, #70, #71, #72, #73, #74, #78, #81, #83, #88, #89, #146, #147, #150, #151, #152)
- A total of 104 comments on peers’ PRs
- Reviews were given at most within 2 days, usually within a day, from opening of a PR
- 5 Comments in forums about checkstyle and bugfixes for students’ code outside of the team
- 15 Bugs reported in PE Dry Run