PROJECT: SSENISUB
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
orpublic
state, which will allow only the appropriate personnel to be able to view it on SSENISUB.
Currently only thePhone
,Email
andAddress
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 Emailpe/
and private Addresspa/
. 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]
Examples:
-
privacy 1 p/y a/n
Sets thePhone
number andAddress
of the 1st staff in SSENISUB to private and public respectively. -
privacy 4 e/n p/n
Sets theEmail
andPhone
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
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:
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.