PROJECT: SSENISUB

Ui

Overview

This project portfolio serves to document the work that I have contributed to the software, SSENISUB, during my time as a student of CS2103 (Software Engineering), under the team T13-2 in the National University of Singapore (NUS).

SSENISUB is a software that aims to improve workplace productivity. It assists the Human Resource (HR) department to better manage the employees in the company, it also serves as a tool for managers to better manage their staff and lastly, serve as a contact list for users to find and contact other staff within the company or department. This software consists of about 15 kLoC and it makes use of both the Command Line Interface (CLI) and a Graphical User Interface (GUI) to interact with the user.

My role as a developer in the team was to implement finance related functions for the software. Specifically, I have implemented the Salary, Overtime Hours, Overtime Rate and Pay Deductibles fields for a Staff to allow the Human Resource sector to better manage their staff’s payroll.

Summary of contributions

  • Code contributed: [Functional code]

  • Major enhancement 1: Implemented four new fields for a staff, namely : Salary, Overtime Hours, Overtime Rate and Pay Deductibles.

    • What it does: This feature allows the HR department to store all payroll aspects for a staff and ensure that they are properly accounted for.

    • Justification: This feature not only allows the staff to ensure that he/she is being paid the right amount, but also helps the HR department to store these information in their records and edit them whenever necessary. Thus, this removes the need for paper records of pay which may result in confusion and loss of records.

    • Highlights: The four new fields are able to behave seamlessly as part of the Staff and behaves just like the other attributes would like with Phone and Address.

  • Major enhancement 2: Modified the edit function to be able to edit the four new fields implemented above.

    • What it does: This feature allows the HR department to edit the Salary, Overtime Hours, Overtime Rate and Pay Deductibles on an existing staff.

    • Justification: A HR staff can now edit the abovementioned fields to adjust any of the fields. Such a feature is critical as it affects a staff’s payroll, and we would not want the staff to be wrongly paid. Additionally, this function is of utmost importance as a person’s salary, overtime hours and pay deductibles would change regularly. Hence, this feature is needed to manage to staff’s payroll.

    • Highlights: The HR staff would also be able to edit the four fields whenever necessary to allow changes (such as a pay raise or when the staff has worked more overtime hours than initially recorded).

  • Minor enhancement:

    • Tweaked the staff panel to be able to display the net salary. This required some very minor calculations to be done in the backend. Net salary in this case refers to the final salary calculated after all additions and deductions are taken into account. (Pull Request #53)

  • Other contributions:

    • Test Case Review :

      • Reviewed some of the tests and removed any unnecessary checks within the test case itself (Pull Request #63).

    • Documentation:

      • Edited the README document to reflect our software’s (SSENISUB) overview and features (Pull Request #5).

    • Community:

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.

Editing a staff : edit

Edits an existing staff in SSENISUB.
Format: edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [s/SALARY] [oth/OTHOUR] [otr/OTRATE] [de/DEDUCTIBLES] [d/DEPARTMENT] [m/MANAGER] [t/TAG]…​

  • Edits the staff at the specified INDEX. The index refers to the index number shown in the displayed staff list. The index must be a positive integer 1, 2, 3, …​

  • At least one of the optional fields must be provided.

  • Staff has 4 additional editable fields: salary, overtime hours (ot hours), overtime rate (ot rate) and pay deductibles.

  • Existing values will be updated to the input values.

  • When editing tags, the existing tags of the staff will be removed, i.e. adding of tags is not cumulative.

  • You can remove all the staff’s tags by typing t/ without specifying any tags after it.

Examples:

  • edit 1 p/91234567 e/johndoe@example.com s/1000
    Edits the phone number, email address, salary of the 1st staff to be 91234567, johndoe@example.com and 1000 respectively.

  • edit 2 n/Betsy Crower t/
    Edits the name of the 2nd staff to be Betsy Crower and clears all existing tags.

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.

Salary, OT Hours, OT Rate and Pay Deductibles For Staff

Introduction

We have introduced four new fields to a staff namely the salary, overtime(OT) hours, OT rate and Pay deductibles for a staff. This is to allow the HR department of the company to keep track of individual staff’s details.

Current Implementation

The current implementation of this feature is embedded into a Person object together with the other information that was originally in the Person object. Prefixes for the respective fields were also created to allow the HR user to edit the necessary information whenever needed.

A newly added staff into SSENISUB would be assigned the default values of 0 for all four fields. This is to better allow the HR staff to manage the information of the staff. Naturally, when a person first joins the company, he would not have raked up any OT hours and the rate is dependent on the job of the individual.

Should the user now want to edit a staff’s salary, OT hours, OT rate or pay deductibles, the user can now simply input the prefixes followed by the numerals of each field to edit in the edit command. The fields would then be edited depending if the prefixes were there or not (similar to the edit command).

Design Considerations

  • Alternative 1 (First Implementation): Merging the OT hours, OT rate and pay deductibles within a Salary class

    • Pros: Easier to calculate net pay

    • Cons: Harder to implement and would result in many conflicts within the software itself. Harder to debug

FirstImplementation

Figure 3.9.3.1 Idea of First Implementation

  • Alternative 2 (Current Implementation): Separating out each field to their own classes

    • Pros: Easier to implement and allows for more flexibility if the fields are required to be computed/used for other information, easier to identify issues when something goes wrong

    • Cons: Does not seem intuitive to separate it out since OT hours, OT rate and pay deductibles are used to compute salary

SecondImplementation

Figure 3.9.3.2 Idea of Second Implementation