Kayden - Project Portfolio
This portfolio serves to document my contributions in a team-based software engineering project CS2113T. My team comprises of 4 members and we were tasked to morph a basic command line interface address book within 8 weeks. After some discussion, we decided that we will work towards a Task Manager named Student Buddy.
Note the following symbols and formatting used in the project portfolio:
-
command
: A grey highlight (called a mark-up) indicates that this is a command that can be inputted into the command line and executed by the application. -
important: Bold mark-ups emphasize that this is a important word or phrase.
-
method: Italics mark-ups signify that this is a class or method name and one should take extra note as it will be useful in understanding the concepts or diagrams discussed.
Overview
Our project’s ultimate aim is to help students organise their tasks and notes more efficiently and effectively. This is done through the following features. Student Buddy allows users to add
and delete
their tasks and miscellaneous notes; view tasks added easily via a calendar panel display; as well as incorporate a signup
and login
feature to strengthen the security of this application.
My role was to design and implement the notes
feature which allows user to add
and delete
miscellaneous notes as well as display them in a clear and concise manner. The following sections will highlight my enhancements in more detail, as well as illustrating the relevant sections that I have contributed to the user and developer guide.
Summary of contributions
This section showcases the different aspects in which I have contributed to the project. These aspects include coding and the updating of user and developer guide.
-
Major enhancement: added the ability to
add notes
anddelete notes
.-
What it does: allows the user to add in new notes to help keep track and manage notes. Unwanted notes or notes that are already completed can be removed by deleting the note.
-
Justification: This feature improves the product significantly because a user can now manage their miscellaneous activities other than school-related tasks which greatly enhances the usablility of Task Manager.
-
Highlights: This enhancement required an in-depth analysis and understanding of the design of Task Manager to know what are its restrictions and how it can be improved.
-
Credits: All the team members.
-
-
Minor enhancement: Added colour codes to depict the importance of a note according to
priority
levels 1 to 3. The highest priority 1 being red-orange followed by yellow for 2 and white for 3. -
Code contributed: [Reposense]
-
Other contributions:
-
Enhancements to existing features:
-
Updated the GUI of the application by adding a panel to display notes: #56
-
-
Documentation:
-
Community:
-
Project Management
-
Created new branch v1.4
-
Spearheaded the discussion of user stories under projects tab in Github: User_Stories
-
-
Contributions to the User Guide
We had to morph the original user guide for address book to adapt to Student Buddy. This includes all the morphed features as well as the additional features that we had implemented. The following is an extract from our Student Buddy User Guide, showing the instructions that I have added for the notes feature. |
{Start of extract}
Adding miscellaneous notes : note
Adds a note to Student Buddy.
Format: note h/HEADING c/CONTENT p/PRIORITY
Example:
-
note h/Popular c/buy blue pens p/2
Add a note with heading Popular, content buy blue pens and priority 2.
The following are 2 diagrams that demostrate the example shown above. One of the diagram shows the state before the command is executed and the other shows the state after command is executed.
Before:
After:
Deleting miscellaneous notes : deletenote
Deletes the specified note from Student Buddy.
Format: deletenote INDEX
Examples:
-
deletenote 2
Deletes the 2nd note from the displayed notes list in Student Buddy.
The following are 2 diagrams that demostrate the example shown above. One of the diagram shows the state before the command is executed and the other shows the state after command is executed.
Before:
After:
{End of extract}
Contributions to the Developer Guide
We were also tasked to morph the original Developer Guide for address book. Inside the developer guide contains all the technical information such as how a feature is implemented, class diagrams as well as sequence diagrams. Given below are sections I contributed to the Developer Guide. They showcase my ability to write technical documentation as well as the depth of my understanding of this project. |
{Start of extract}
Add Notes Feature
This feature allow users to add notes regarding miscellaneous matters.
The class diagram below illustrates the Notes class.
Current Implementation
The add notes mechanism is facilitated by AddNotesCommand. A Notes object is instantiated which contains of Heading, Content and Priority.
Given below is an example usage scenario and how the add notes mechanism behaves at each step.
Step 1. The user enters in a note with its associated parameters. e.g |
Step 2. The LogicManager calls ParseCommand with that input. |
Step 3. The TaskManagerParser is called and returns a AddNotesCommand object to Logic Manager. |
Step 4. The LogicManager will call execute method on the AddNotesCommand object. |
Step 5. ModelManager is then called and will check if the note already exists. |
Step 6. If note already exists, DuplicateNotesException will be thrown. This will return a string message "This note already exists in the task list". |
Step 7. Else, addNotes(notes) method is called and note is added. |
The sequence diagram below illustrates how the mechanism for adding notes function.
Design Considerations
Aspect: Checking for duplicate notes
-
Alternative 1(current choice): Implement a method to check new notes entered. If a new note added is exactly the same as exisitng notes in the Student Buddy, it will be classified as duplicate note and cannot be added.
-
Pros: Easy to implement
-
Cons: May neglect duplicate notes that mean the same because the check is for the exact same heading and content. The following 2 examples shown below will be identified as different notes due to an additional s in example 2
-
h/popular c/buy ring file
-
h/popular c/buy ring files
-
-
-
Alternative 2: Implement a method to check for similarity of notes. If similarity is more than 90%, note is classified as same note and cannot be added.
-
Pros: Can reduce the amount of duplicate notes that are added.
-
Cons: Difficult to implement and cannot eliminate duplicate notes completely.
-
Final decision: Alternative 1 was chosen due to the significantly easier implementation.
Delete Notes Feature
This feature allow users to delete notes that are no longer wanted.
Current Implementation
The Notes mechanism is facilitated by DeleteNotesCommand from the Logic component. Upon executing the DeleteNotesCommand, the unwanted note will be removed from the memory of the Student Buddy.
Given below is an example usage scenario and how the deletenote
mechanism behaves at each step.
Step 1. The user calls the DeleteNotesCommand with the note’s displayed index. e.g |
Step 2. The LogicManager calls parseCommand with the user input. |
Step 3. The TaskManagerParser is called and it returns a DeleteNotesCommand object to the LogicManager. |
Step 4. The LogicManager will call execute() on the DeleteNotesCommand object. If no note of the corresponding index is found, |
it would return a string of message |
Step 5. The Logic component then interacts with the |
|
Step 6. The command result would then return the message |
The following diagram illustrates how the deletenote
operation works:
Design Considerations
Aspect: Weighing user experience to convenience of users
-
Alternative 1: Implement a method to strike off notes that are completed so that users can keep track of what notes they have added in as well as the ones they finished.
-
Pros: Better user experience
-
Cons: May cause incovenience as users have to delete away completed notes every few days so as to allow easier viewing of latest notes.
-
-
Alternative 2(current choice): Deleting completed notes away.
-
Pros: Easy to implement
-
Pros: Easy for users to manage completed notes.
-
Cons: No sense of achievement as users are unable to view the amount of work completed.
-
Final decision: Alternative 2 was chosen due to it being more practical and convenient to users.
Retrieving of notes from storage [coming in V2.0]
Current Implementation
-
Notes added are currently being stored in notes.json file.
-
Retrieving from notes.json file is still in progress.