PROJECT: SSENISUB


Ui

Hi, my name is Tan Yuxuan. I am a Year 2 Computer Science Student studying in NUS. This project portfolio will serve to document my contributions to SSENISUB, a CS2103 Software Engineering module project.

Overview

SSENISUB is a business management application that is designed for ease of management of staffs and their related informations.

The main features of SSENISUB allows users to

  • Find the contact details of other co-workers that they need to reach

  • Add, Delete and Edit staff information

  • Personalize the list of contacts by favouriting contacts that they may need to view more often

  • Give feedback and ratings to staff

  • Have the choice to set their private information to a private state

My main responsibility in the SSENISUB project is to implement the privacy feature which can allow staff to set their information to private, if they prefer it. Doing so will then hide that information from the regular staff in the GUI.

Summary of contributions

  • Code contributed: [RepoSense]

  • Major enhancement 1: Added the Privacy command feature.

    • What it does: This feature allows staff to have the choice to set their private information to a private or public state, which will allow only the appropriate personnel to be able to view it on SSENISUB.
      Currently only the Phone, Email and Address fields of a Staff can have their privacy set using this command.

    • Justification: This feature is important as it respects and protects the privacy of the staff’s information, disallowing misuse of their information by regular staff.

    • Highlights: The implementation of this feature is quite universal within the constraints of the project, and thus 'privacy' can be implemented to other fields deemed necessary in the future with similar logic.

  • Major enhancement 2: Modify add command feature.

    • What it does: This enhancement modifies the AddCommand to be able to take in three new prefixes for private Phone pp/, private Email pe/ and private Address pa/. This allows a user to add a staff directly with private fields if required.

    • Justification: This feature will allow HR Managers whose job require them to add Staff into the SSENISUB system to have an easier time as they can immediately add in a staff with private fields if they requested so, instead of first adding the staff in, then using the privacy command to change their privacy fields.

  • Other contributions:

    • Enhancements to existing features:

      • Made the staff panel portion of the GUI reflect the staff’s information differently based on its privacy settings. #56

      • Made Phone Numbers and Email addresses unique within the SSENISUB staff list as no two staff should be using the same phone number or email address. #114

        • Implementation: changed the AddCommand and EditCommand to check the existing staffs for duplicate phone or emails before fully executing the command.

    • Documentation:

    • Community:

{you can add/remove categories in the list above}

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.

Setting private fields: privacy

Sets the mentioned field into a private field (displays as 'private' on staff panel).

Format: privacy INDEX [p/ y or n] [e/ y or n] [a/ y or n]

  • Modifies the privacy of the information of 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, …​

  • Only Phone, Email and Address can be set to private.

  • 'y' means setting to private and 'n' means setting to public.

  • Coming in v2.0: View private fields

    • With the authorization level features implemented, a user with high enough level of authority will be able to see the actual values of the private field (instead of 'private').

Examples:

  • privacy 1 p/y a/n
    Sets the Phone number and Address of the 1st staff in SSENISUB to private and public respectively.

  • privacy 4 e/n p/n
    Sets the Email and Phone number of the 4th staff in SSENISUB to public.

Authorization levels for features [coming in v2.0]: login, logout

Allows a user to log into the SSENISUB system with different authorization levels.
Format: login USERNAME PASSWORD, logout

  • In future versions, we plan to have features locked by authorization level, as we intend for SSENISUB to be used by all staff within the same Organization, it makes more sense if only a HR Manager is allowed to add or delete staff, or only the staff himself to be able to change his own information privacy settings.

  • Implementation of this authorization level feature will then allow us to develop new features makes the organization hierachy more understandable and obvious.

Examples:

  • login AmyBee 123456

  • logout

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.

Privacy Feature

Introduction

We have implemented a privacy feature to fields that we deem to have importance in having an option to be made private. A Privacy Command is implemented to be able to set the privacy values of the information of the selected person.

Current implementation

The privacy feature is currently implemented as a boolean field under information classes that can be made private (Phone, Email, Address as of v1.4).

A new command PrivacyCommand is implemented to be able to change the Privacy values of classes that have a Privacy field. The add command can also add a Staff with private fields directly.

The GUI will also display private fields as private.

This command can only change fields that can be made private, and will throw an exception otherwise.

Coming in v2.0:
To change a field to private or not private, a 'y' or 'n' is the expected input respectively. This is planned to change in future updates where there can be different levels of privacy for different fields.

Given below is an activity diagram that shows how the Privacy command works:

PrivacyCommandActivityDiagram

Design Considerations

How to implement Privacy
  • Alternative 1 (current choice): Use privacy as a boolean value

    • Pros: Easy to implement as there is only 2 values to take note off

    • Cons: Restrictive in what it can do looking at a future aspect where different level of privacy may be required

  • Alternative 2: Implement Privacy as a Enum class

    • Pros: Able to have different level of Privacy and prevents wrong input automatically

    • Cons: Harder to implement and extra work not required in current stage of project

[Proposed] Login Feature

Introduction

The login feature will be implemented together with an authorization level feature. Based on the login credentials, the staff using the SSENISUB will have varying levels of access to the various features offered.

The idea and motivation behind this is that as we plan for SSENISUB to be used as a central database and can be used by any staff, not all commands and features should be utilized by a typical staff, such as delete. Only a HR Manager should have the authorization to be able to delete or add staff.

With the implementation of authorization levels, we will then be able to categorize the other features based on authority required to access them, and also affect the visibility state of private information.

A Logout feature will also be implemented for the case of a shared device, which multiple staff can be using throughout the day.

Given below is an activity diagram that shows how this feature works when a user wants to use the Delete command.

LoginLogoutActivityDiagram