Yip Jung Hon's Project Portfolio Page
Project: NewAddressBook
NewAddressBook 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 10 kLoC.
Given below are my contributions to the project.
- New Feature:
undo
command.- What it does: allows the user to undo all previous commands one at a time.
- Justification: This feature improves the product significantly because a user can make mistakes in commands and the app should provide a convenient way to rectify them.
- Highlights: The implementation was challenging as it required changes to existing commands. Moreover,
undo
was implemented in a such a way such that if the user keyed in commands that did not change the content of the application, executingundo
takes the user back to the last command which changed the content of the application, rather than the last command the user executed. Doing this required some analysis which commands could leave the application state unchanged. (Pull requests: #192, #245, done by Yong Chuan).
- New Feature:
copyStudent/copyTeacher
command.- What it does: it gives users the ability to copy phone numbers, email addresses and names from the displayed list.
- Justification: This feature improves the user’s productivity. For example, should one want to send an email to a subset of students in address book, one can simply filter the students and copy their email addresses.
-
Code contributed: RepoSense link
- Project management:
- Opened up most issues during team meetings to keep track of the tasks needed to be done.
- Highlighted bugs found in the product to my team. (Issues: #117, #110, #191, #248)
- Split command involving students and teachers into separate catergories. This was a massive effort as it required many test cases and classes to be updated. (#75)
- Enhancements to existing features:
- Add code skeleton when our group was working on the meeting window. This is needed because back then, we needed some commands to work for the main window, but not for the meeting window, and vice versa. Hence some sort of mechanism was needed for the application to detect which window the user was executing the command from. This PR implements that detection mechanism. (#102)
- Wrote additional tests for existing features to increase coverage (#78, #75, #51)
- Documentation:
- User Guide:
- Developer Guide:
- Community: