Skip to content

Latest commit

 

History

History
86 lines (64 loc) · 6.84 KB

chenggeng97.adoc

File metadata and controls

86 lines (64 loc) · 6.84 KB

Ong Cheng Geng - Project Portfolio


Project: Horo (Calendar/Scheduling App)


Overview

Project Description

This is a portfolio that documents my contributions towards a Calendar and Scheduling application called Horo. Horo helps the user maintain a to-do list and to schedule their activities, and is able to post reminders to their desktop.

Here is a screenshot of our application in the default Calendar view.

HoroMainViewDescription
Figure 1. Horo Calendar view screenshot

Project Scope

Horo was made for the CS2103T Software Engineering module, offered by the National University of Singapore’s School of Computing. Over the course of 6 weeks, students were grouped into teams tasked with either enhancing or morphing a basic Command Line Interface (CLI) application. I contributed to the project by writing both functional and test code, as well as documenting these contributions in the product’s User and Developer guides.

Portfolio Purpose

My role in this project was to design and implement the Notification system of the application. Subsequent sections will go into greater detail with regards to my contributions to both the code and documentation.

Note the following symbols and formatting used throughout this document:

notif_on

Text highlighted in grey in the User Guide indicates that a term is a command that can be executed by the program if input through the command line.

NotificationManager

Text highlighted in grey in the Developer Guide indicates that a term is a class or an object used in the source code of the application.

Summary of Contributions

This section lists the code and documentation I contributed to the project.

Major Enhancement Added: Notification System

What it does

The Notification System runs in parallel to the main thread of the app. Every minute, it checks whether the user should be reminded of any Event or Task, and posts a new notification if necessary.

Justification

The Notification System is a natural extension of an application meant for tracking deadlines and schedules. It serves to remind a forgetful or busy user of their commitments.

Highlights

• An initial design for the notification system involved running it not as a parallel thread, but as a separate background application. This would allow notifications to be posted even if the main app were closed. However, this design was eventually reworked. Going forward with the original design would necessitate the development of a second application that the user would have to install in addition to Horo. This would have been at odds with module requirements and learning objectives.

• An alternative design involved running instantiating the Notification System as a separate component to UI, Logic and Model. However, this design would have been at odds with OOP principles. The Notification System was thus further split into separate extensions of the Logic and UI packages.

Code Contributed

Notification System

1 2 3 4 5 6 7

Notification Tests

1 2 3

Task Tests

1 2

Task-Related Command Tests

1 2 3

Other Contributions

Project Documentation

Reviewed pull requests #78 #95 #107

Documentation

Edited the User Guide for better clarity and to fix grammatical mistakes #121

Contributions to the User Guide

The following section includes excerpts of my contribution to the Horo User Guide, explaining the Notification System and the notif_on and notif_off commands.

Contributions to the Developer Guide

The following section includes excerpts of my contributions to the Horo Developer Guide.

Class Architecture and Behaviour

This sub-section includes my explanations of the class architecture and behaviour behind the Notification System.

Intructions for Manual Testing

This sub-section includes instructions I have provided for manual testing of the notification system.