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, executing undo 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:
      • Added Glossary to user guide (#201)
      • Made the order the commands appear in the UG the same alphabetical (#140)
      • Did the copy command section for the UG (#138)
      • Reviewed and recommended some improvements to the UG for my teammates (#138, #138, #140)
    • Developer Guide:
      • Added implementation details of the undo and copy feature. (#138, #91)
      • Created the UML diagrams to suit our code structure. (#192, #192, #192)
      • Added the manual testing section of the DG (#263)
  • Community:
    • PRs reviewed (with non-trivial review comments): #243, #99, #106