Skip to content

Latest commit

 

History

History
134 lines (95 loc) · 8.49 KB

mannggoo.adoc

File metadata and controls

134 lines (95 loc) · 8.49 KB

Lim Yu Hui - Project Portfolio

2. About the Project

My team of 5 software engineering students were tasked with enhancing a basic command line interface (CLI) desktop address book application for our Software Engineering project.

2.1. Context

Living in a dynamic world where tasks and events are constantly changing, we recognised a need for a dynamic scheduler that can help computer-savvy college students excel in their busy lives. As such, our team decided to morph the addressbook application into a student assistant.

We decided to call her ELISA, an Exceptionally Loud and Intelligent Student Assistant. Our application enables users to add and track their tasks and events while receiving reminders for them. The assistant is in the form of a chat bot and she was given a sassy and humorous personality to enhance the user experience. There are also other features to aid the productivity of students and serve as an entertaining companion.

2.2. About ELISA

Here is a brief introduction of ELISA. This is one of the views of ELISA:

ELISA EVENT UI
Figure 1. Annotated user interface

Upon startup, ELISA would show the default (T)ask tab. However, as I was more involved in the Events, I have chosen to show the (E)vent tab instead.

Now that I’ve briefly introduced ELISA, the remaining sections will be mainly focusing on what I contributed.

3. Summary of Contributions

In this section, I will be briefly going through my contributions to this team project. For the full extent of my contributions to the project, please visit here.

3.1. My Role

My role lies mainly in the logic component. I refactored most of the code in the logic such as the commands in AddressBook as well as the parser. Given below are the new features that I’ve added for this project.

Enhancement added: Automatic rescheduling of recurring events (Major Feature).

What it does:
Updates the time of recurring events automatically. For example, weekly events’ time will be updated when it has passed.

Justification:
Users might have events that occur weekly such as CS2103T Quiz. When the deadline is over, users would have to manually change the date to next weeks’. However, with this feature, ELISA can change it for them, making it more convenient to update events and keep them relevant.

Highlights:
This enhancement works for 3 aspects:
1) When creating a new event, if the event is already over, AutoReschedule immediately updates its time.
2) When ELISA is running, the view will automatically be refreshed to reflect the changes in the Event’s time.
3) When loading from the storage. If the event is already over, ELISA will update it and show the user the new date.

Challenges faced:
I had to use a thread that schedules for event’s date to be updated, however this often interfered with my teammates’ thread for reminders as reminders would need to be rescheduled too. However, the reminder’s time is not relative to the event’s, as such given our constraints, we decided to disallow rescheduling for events with reminders. Given the many possible scenarios of violating this, we decided to implement an ItemBuilder that prevents the build of an item that has both reschedule and reminder.
Also, there was the issue of creating multiple threads for the rescheduling, as there could be an extremely large number of threads, as such, the singleton pattern is used for a thread that serves as an overall manager for all the rescheduling. This made managing the tasks easier as there are many operations such as undo, and edit that requires frequent modifying of the tasks in the thread. Lastly, updating a past date to an upcoming date required the use of modulo for better efficiency.

Enhancement added: Expanding item view to show its related task, event and reminder (Minor Feature).

What it does:
Expands the item to show all details of an item. This includes fields of its task, event and reminder, if they are present.

Justification:
Each list shows the minimal details related to the item as we want to keep it concise. However, users viewing the task list might want to know if there is deadline for it, or if there is a reminder associated with it. As such, they can expand the item to show all its details.

Highlights:
This feature works on Task list, Event list and Reminder list, making it convenient to find details, regardless of which view the user is on.
Users can also open and close and item using the commands “open” and “close’ without touching the mouse.

Challenges faced:
However, as the details are shown in a popup, there were issues such as the popup covering over other windows, even when the app is minimised. As such, I had to add a listener to the window in order the popup when required, as well as prevent multiple popups.

3.2. Other Contributions

  • Project Management
    PR #51 — Gave suggestions to use LocalDateTime and improve readability of code, which was eventually adopted.
    PR #72 — Gave suggestions to use final variables for the string representation of tabs, which was eventually adopted.
    (PR #99) (PR #119) (PR #130) () — Gave suggestion related to design principles.
    PR #252 — Fixed issues for the team

  • Refactoring
    PR #82 — Refactored the Logic component and parsers to accept commands and parameters needed for ELISA. Changed flag from "d/" to "-d" to be more intuitive for CLI users.

  • Enhancements to existing features
    PR #129 — Accept --tk, --e and --r flags for convenient deletion of a sub-item using edit. Accept 10.min.later parser format.

  • Documentation
    PR #40 — Updated About-Us and Contact-Us.
    (PR #43) (PR #150) (PR #172) (PR #183) — Updated user guide and developer’s guide to be more reader-friendly.

4. Contributions to the User Guide

Given below are sections I contributed to the User Guide for my main feature. They showcase my ability to write documentation targeting end-users. Parts that could not fit into this section are given as links.

Link to: How edit works

5. Contributions to the Developer’s Guide

Given below are sections I contributed to the Developer Guide for the logic implementation, the refactored add and edit, as well as my main feature. They showcase my ability to write technical documentation and the technical depth of my contributions to the project.

Link to: How add works

6. Conclusion

This marks the end of my contributions to ELISA. This journey has been a meaningful one, as it is the first time I’ve worked with teammates on a software engineering project. Although I’ve reached the end of this module, I hope to continue developing ELISA even after, as I truly believe that she has the potential to be a great companion and have a positive impact on many students.