PROJECT: NOVA

Since: Apr 2020

Overview

My team of 4 software engineering students and I were tasked to enhance a simple command line interface (CLI) desktop address book application for our project to cater to users who are accustomed to typing. We expanded on the address book into an organizer, hoping to aid future software engineering students taking this module in managing their activities.

This portfolio documents the contributions I made to Project NOVA. It contains a section on the summary of contributions towards the project as well as the user guide and developer guide.

Summary of contributions

This section documents a summary of contributions towards the code base, documentation as well as other helpful contributions.

Major enhancement: view command

I added the ability to view the activities in the schedule.

  • What it does: There are two levels of viewing (by date or by week). The view command allows the user to specify the date which he/she wants to view. Alternatively, the user can use the view week command to view the activities happening on that date.

  • Justification: A schedule that cannot be viewed is useless. Users can choose whether to view the schedule at the daily level or the weekly level.

Pull requests: #143

Minor enhancement: Schedule’s framework

I created the framework of the schedule in NOVA.

  • What it does: The framework offers a common platform for the other developers working on the schedule.

  • Justification: Having a common framework reduces the conflict between different implementation of the schedule. It also helps us integrate our features easily.

  • Highlight: The implementation was challenging as a affects the implementation of events, view and study planner. A common agreement needed to be reached to ensure the schedule will not hinder the implementation of those features.

Code contributed:

Here is the link to the code I have contributed: Code Dashboard

Other contributions:

These are some additional contributions I made to the project.

Project management:
  • Maintained the documentation of the project on GitHub.

    • Ensured the team’s documentation is appropriate and free of error

    • Standardized the format for all to follow so the final document is cohesive.

Documentation:
  • Added the view commands under features (#31)

  • Improved the introduction and about sections of the user guide (#287)

  • Added a notations section to the user guide (#287)

  • Added command summary (#287)

  • Added a back to top link to improve navigability of the document (#287)

Community:
  • Shared problems faced with others on the forum so people encountering similar problems as me can discuss our solutions (E.g. 1, 2).

Contributions to the User Guide

Theses are my contributions towards the user guide.

Theses are my contributions towards the front sections.

Introduction (Terence)

Welcome to the user guide (UG) for Next-gen Organizing Virtual Assistant (NOVA).

NOVA is a one-stop desktop application for CS2103T students to manage all CS2103T related activities. Be it studying or planning project meetings, NOVA has you covered. NOVA is designed for users who prefer to interact with programs through typing.

guiComponents

Fig 1: UI Components of NOVA

About (Terence)

This UG is a reference guide to help you use NOVA. This document contains a quick start section to get you up and running soon.

There is an entire section dedicated to how to use any particular feature in NOVA. Examples are provided for your better understanding. We have also provided a summary of commands for your quick reference. Should you face any problems, take a look at the FAQ section.

Notations (Terence)

In this guide, you’ll be seeing the following markup being used.

This icon indicates details that could help you better understand how to use NOVA.
This icon indicates actions that could negatively affect your experience while using NOVA.

Commands and input fields are highlighted.

 

Theses are my contributions towards the features section.

View Schedule of a Day: view (Terence)

You can view the schedule of a specified day. If there is nothing to do on that day, NOVA will tell you.

Format:
view t\[YYYY-MM-DD]

Example:
Suppose you want to check out what events are happening on 20 Feb,

enter the command: view t\2020-02-20

NOVA will show your schedule on 20 Feb 2020 as seen below.

schedule view date

Fig 5.3.7: Display message after entering view t\2020-02-20

View Schedule of a Week: view (Terence)

You can view the schedule of a specified week. If there is nothing to do on that week, NOVA will tell you.

Format:
view week i\[week #]

  • [week #] must be a positive integer. (E.g. 1, 2, 3, …​)

  • Week number for special weeks are as such:

    • Recess week is week 16

    • Reading week is week 14

    • Final examination week is week 15

Example:
Suppose you are interested in what is going to happen in week 6 of the semester,

enter the command: view week i\6

NOVA will show your schedule in week 6 of the semester as seen below.

schedule view week

Fig 5.3.8: Display message after entering view week i\6

Find Free Slots: freeslot (Terence)

You can find free slots on a day easily within your schedule without looking through your schedule.

Format:
freeslot t\[YYYY-MM-DD]

Example:
Suppose you want to find pockets of free time on 20 Feb 2020,

enter the command: freeslot t\2020-02-20

NOVA will show you your freeslots on 20 Feb 2020.

Contributions to the Developer Guide

Theses are my contributions towards the developer guide.

Theses are my contributions towards the model section.

Model component (Terence)

ModelClassDiagram
Figure 1. Structure of the Model Component

API : Model.java

The Model,

  • stores a UserPref object that represents the user’s preferences.

  • stores the Address Book data.

  • stores a 'Schedule' object that represents the user’s schedule.

  • stores a 'ProgressTracker' object that represents the user’s progress in their project tasks.

  • exposes an unmodifiable ObservableList<Person> that can be 'observed' e.g. the UI can be bound to this list so that the UI automatically updates when the data in the list change.

  • does not depend on any of the other three components.

 

Theses are my contributions towards the user stories section.

|* * * |Student | View my schedule for a day| Know the flow of events on that day

|* * * |Student | View my schedule for a week | Know what will happen for that week

|* |Student | View my timetable | Can check when my classes are

 

Theses are my contributions towards the use cases section.

Use case 21: View the schedule for a day

MSS

  1. User requests for the schedule of a day.

  2. NOVA shows the schedule for the day.

    Use case ends.

Extensions

  • 1a. User enters the wrong format.

  • 1a1. NOVA displays the correct format for the command.

  • 2a. The schedule for the day is empty.

  • 2a1. NOVA displays that day does not have any events.

    Use case ends.

Use case 22: View the schedule for a week

MSS

  1. User requests for the schedule of a week.

  2. NOVA shows the schedule for the week.

    Use case ends.

Extensions

  • 1a. User enters the wrong format.

  • 1a1. NOVA displays the correct format for the command.

  • 2a. The schedule for the week is empty.

  • 2a1. NOVA displays that week does not have any events.

    Use case ends.

 

Theses are my contributions towards the manual testing section.

View schedule (Terence)

  1. Enter schedule mode via nav schedule

  2. View the schedule

    1. Prerequisite: An event has been added to 13 Jan 2020.

    2. Test case: view t\2020-01-13
      Expected: The event that was pre-added will be displayed.

    3. Test case: view t\2020-01-12
      Expected: Error message is shown to tell user that the date is out of the range of schedule.