Skip to content

Latest commit

 

History

History
129 lines (75 loc) · 7.45 KB

sianghwee.adoc

File metadata and controls

129 lines (75 loc) · 7.45 KB

Ng Siang Hwee - Project Portfolio

1. Overview

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

With modern life comes a fast-paced, hectic lifestyle. It is increasingly easy to be overwhelmed by the insurmountable number of responsibilities and tasks we have to fulfill. Most task-manager applications involve countless clicking and navigation, which defeats their purpose. To rectify this, my team decided to design a simple, no frills CLI student assistant from the address book to cater to students who prefer CLI.

We named our application ELISA, an Exceptionally Loud and Intelligent Student Assistant. ELISA enables users to add and track their tasks and events while receiving reminders for them. With a sassy and humorous personality and her user-interface interaction (in the form of a chat bot), she is simpler, yet more engaging to use than other regular task managers. There are also other features to aid the productivity of students and to spice up their life.

2. Application introduction

This is how our application looks like:

task panel
Figure 1. User interface annotated

ELISA’s various components serve the following functions:

Component Function

ELISA icon

Icon of the application which changes with the different mode of ELISA.

Result display

The "chat box" with ELISA which contains all past user input and ELISA’s response.

Command box

The user can type their commands here to interact with ELISA.

View panel

The current view of the application. It can show the task, event, reminder or calendar panel.

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. Functional contributions

  • Priority mode (Major Feature):

What does it do?

This feature allows the user to enter a priority mode where they are able to prioritize tasks with a higher priority first and focus on that task to complete it.

Why make it?

This features helps the user narrow their focus down to completing one task at a time and prevents them from being overwhelmed by a long list of tasks.

Why is it special?

There are multiple modes to cater to different user needs. Users can choose from a focus mode, a timed mode, a normal mode or a combination of multiple modes. The different modes will be explained in greater detail in the user guide.

At the same time, users are able to update their task list in realtime (add, delete, edit) so that they can always be sure that the task that they are currently doing is the most important one.

Difficulties?

The difficulty of this feature comes from the fact that it has to be integrated with all the other commands within the application. That means that the algorithm needs to be written in a way such that it is constantly updating itself to give the user the most important task despite the changes in the tasks.

For example, when a new task of a higher priority (than the current task) is added, the algorithm should be able to make that the task that is to be completed first. This requires a lot of integration with all the other code so that ELISA can behave differently depending on whether she is in priority mode.

  • Sorting (Minor Feature):

The sorting feature allows users to sort their items so that they are able to better arrange their items in a way that is most useful to them. Each list has its own sorting algorithm while users can also choose to sort the items based on their priority or description. Refer to here for more information on this feature.

  • Find (Minor Feature):

The find feature allows users to find an item based on the description of the item. This will aid users in getting the item that they need at the fastest possible time. Refer to here for more information on this feature.

  • Other implementations:

Helped my teammates with the following features and implementation:

  1. Implementation (PR #138) and fixes on the calendar panel so that it is able to display the events and update the events when there are changes to the events (PR #148, PR #181 and PR #244).

  2. Helped with the implementation of the undo for marking a task as completed (PR #153).

3.2. Other contributions:

  • Project management:

Review and made notable suggestions on the following PR:

  1. PR #69 - gave idea of storing the priority in the item class that was ultimately adopted

  2. PR #130 - gave idea of getting the command word to display to the user was ultimately adopted

  3. PR #132 - gave suggestion on how to improve the code for readability and to follow coding practice.

  4. PR #134 - gave idea of moving method to the UndoableCommand abstract class was ultimately adopted in PR #137

  5. PR #141 - gave suggestion of using Long instead of BigInteger

  6. PR #158 - gave suggestion on how to improve the feed back message to the users for undo command, which was ultimately adopted

  7. PR #252 - gave suggestion on fixing some issue with the code and optimizing it

  • Refactoring:

Refactored the model (PR #68) and storage (PR #79) class so that it will work with the project.

  • Documentation:

Updated the developer guide to include the use cases (PR #44),user stories (PR #47) and manual testing (PR #271).

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.

5. Contributions to the Developer Guide

Given below are sections I contributed to the Developer Guide for the model implementation and my main feature. They showcase my ability to write technical documentation and the technical depth of my contributions to the project.