PROJECT: NUSSU Connect

Introduction

This Portfolio is a documentation of the contributions that I have made for this project, titled NUSSU Connect.

NUSSU Connect is a CLI application mainly targeted towards executive committee (exco) members of the NUS Student Union (NUSSU). Being representatives of the NUS student body, the exco members has a part in many projects and initiatives. This application therefore aims to help them perform some of these miscellaneous tasks that often comes from these projects much more easily, and to deliver value by requiring less manhours from each NUSSU members to perform a given task, saving on costs.

The application was developed on Windows and was tested on Windows and macOS. It accepts mainly text-based input, which aims to offer a faster and more responsive experience compared to a graphical user interface (GUI), for experienced users.

Additionally, it comes with several features. This includes budgets/expenses management, human resource allocation and managing of important contacts. The original source code of this project is the AddressBook-Level4 project created by SE-EDU initiative, and hence, it also comes with some features from the AB4 project.

Summary of contributions

In this project, my main contribution is the Add Skill Command, which augments the main Person class with two additional properties: the Skill and SkillLevel. This aids in Human Resource Management and committee recruitment as the best people for a particular role can be quickly identified and selected. I also developed the Sort Command.

  • Major enhancement: added the AddSkillLevelCommand (keyword: "asl")

    • What it does: Data integrity is important, but these days, users expect their data to be highly available. The sort command

    • Justification: There is a need to track people and their skills, often being their most valuable assets, are especially critical to track. A project manager may now easily find any new people that the organization tracks, and given adequete talent pool, will be able to identify what they want.

    • Highlights: In order to implement this, all aspects of the application were touched on, namely UI, Storage, Logic and Model.

  • Major enhancement: added the SortCommand (keyword: "sort")

    • What it does: Sorts a list of people by some criteria.

    • Justification: Data integrity is useful, but nowadays people expect data to be have high availability (in a quick and accessible format). A project manager, with the sort command, is now able to, at a glance, review potential candidates for the role.

Contributions to the User Guide

Given below are sections I contributed to the User Guide. They showcase my ability to write documentation targeting end-users.

Adding person’s skill: asl

Edits a person’s skill in NUSSU-Connect.

Format: asl INDEX s/SKILL l/SKILL_LEVEL

A skill level must be an integer from 0 to 100 (inclusive).

Examples:

  • asl 2 s/Photography l/30

  • asl 4 s/Java l/40

Before executing the command:

aslbefore

After executing the command:

aslafter

Sorting : sort

Sorts a list of people in NUSSU Connect.
Format: sort st/[PARAMETER]

  • Sorts a list of people by the specified PARAMETER .

  • Currently, the only valid parameters are name, skill, and sl (Skill Level)].

The sort command currently sorts and displays all data in NUSSU Connect. Interaction between this command and the find command is coming in v2.0.

Examples:

  • sort st/name
    Sorts the list of people by name, in alphabetical order.

  • sort st/skill
    Sorts the list of people by skill, in alphabetical order.

  • sort st/sl
    Sorts the list of people by skill level, in order of increasing skill.

Before executing the command:

sort1

After sorting by skill:

sort2

After sorting by sl (skillLevel):

sort3

Contributions to the Developer Guide

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

Add Skill Level Command

Current Implementation

The add skill mechanism builds on the addressBookParser. This as well as it’s subclass addSkillCommandParser ensures that the correct number of arguments is given to the command.

You can observe how the application Logic handles the request to change a skill in one particular scenario in the following steps:

Step 1. The user launches the application. The application boots up and lists all members.

Step 2. The user locates the person he wants to add on at Index 4. They execute the asl 4 s/Photography l/60 command.

Step 3.'LogicManager' calls the 'parseCommand' in the 'AddressBookParser', which calls AddSkillCommandParser to parse it.

Step 4. After parsing, the command is sent to the Model which alters the Person object by modifying their Skill and SkillLevel properties.

Step 5. The result is encapsulated as a CommandResult object which is passed back to the UI.

The following is a sequence diagram illustrating the above.

asl sequence

Usage:

Before executing the command:

aslbefore

After executing the command:

aslafter

Alternate implementations

We considered two different ways to implement the Skill Class.

  • Alternative 1: Combining both Skill and SkillLevel properties together into a single class.

    • Pros: Resembles the real world, as there is a one-to-one mapping of Skill to SkillLevel.

    • Cons: Harder to test, and violates Single Responsiblity Principle.

  • Alternative 2 (Current Choice): Separating the Skill and SkillLevel classes into different classes.

    • Pros: Easier to test.

    • Cons: Adds to the number of classes unnecessarily.

Possible extensions

  • One possiblilty is to enhance the add command such that skills can be added together with the rest of the information during addition of personal information.

  • Another is to enhance the edit command, possibly depreciating the use of the add skill level command.

  • Another is to enhance the storage such that multiple skills can be added per person.