Elliot's Project Portfolio Page
Project: PeopleSoft
PeopleSoft is a payroll management app for companies handling contractor-based services.
Summary of Contributions
Here are some ways I have contributed to this project.
- New Feature: Added basic create and delete functionality for jobs. #81
- Details: Added
add
anddelete
commands which allows the user to create and delete new jobs respectively. - Justification: These are basic features which are necessary for a payroll management application.
- Details: Added
- New Feature: Added basic search functionality for jobs. #109
- Details: Added
list
which allows users to see all the jobs that have been stored. Also addedfind
to allow users to search for jobs by keyword queries. - Justification: As much of the application relies on the state of the jobs being displayed on the UI, these features were necessary to help the user search through jobs to be able to use other features of the application more efficiently.
- Details: Added
- New Feature: Added the functionality of marking jobs as completed. #81
- Details: Added
mark
which allows users to mark a job as completed. - Justification: As a payroll management application, the state of the completion of a job needs to be tracked. This feature models how there can be synchronous state change of jobs when they are completed in the real-world. However, the ability to reverse the completed state is also available in the event of user errors.
- Details: Added
- New Feature: Added the functionality of assigning jobs to persons. #81
- Details: Added
assign
which allows users to assign a job to one or more persons. - Justification: As a payroll management application, the association between jobs and persons is important. It was necessary to include this association which models the real-world where one or more persons can take on jobs.
- Details: Added
- New Feature: Added the functionality of finalizing payments for jobs. #128
- Details: Added
pay
which allows users to finalize payments for a job. - Justification: As a payroll management application, one defining feature to have is the ability to track payments. As this application is created to simplify the process of managing and calculating pay, it was necessary to add this feature to fulfill the product specifications of payroll management software.
- Details: Added
- New Implementation: Added base implementation for jobs. #46
- Details: Adds a simple abstraction for a job, including its related attributes, encapsulated within
the
Job
class. - Justification: As the application is a payroll management application built off a basic address book design, it was initially missing an implementation for jobs. It was necessary to add a base implementation for jobs in order to fulfill the basic product specifications of payroll management software, which includes managing jobs.
- Details: Adds a simple abstraction for a job, including its related attributes, encapsulated within
the
- New Implementation: Added associations for jobs and persons. #81, #106
- Details: Adds an abstraction for the association between jobs and persons, encapsulated within the
Employment
class. - Justification: Similar to how people can take on jobs in the real-world, the role of
Employment
is to model this same association that people can have with taking on jobs. This is the framework for which certain functionality such asassign
are built upon.
- Details: Adds an abstraction for the association between jobs and persons, encapsulated within the
- Enhancement: Added implementation for the generation of job IDs. #81
- Details: Job IDs play the role of uniquely identifying jobs internally. This allows for the assignment of unique job IDs in the creation of new jobs.
- Enhancement: Added logic for the creation and management of payment objects. #128
- Details: As
Payment
objects are used internally to calculate the actual payment of a person, some logic was required in the creation and management of thesePayment
objects.
- Details: As
- Enhancement: Supported in adding internal JSON serialization/deserialization sub-classes for
job-related classes. #81
- Details: As PeopleSoft creates local data to store the state of the application, some implementations were added to handle JSON serialization/deserialization of some classes.
- Enhancement: Added some tests for automated testing of new features. (e.g. #109)
- Details: Some tests were added to increase the test coverage of new features, including but not limited to those mentioned above. The tests give some assurance of correctness in the main functionality and error handling, and helps to manage regressions caused by new changes.
- Code contributed: RepoSense link
- Project management: Managed Continuous Integration (CI) of team repository.
- Team tasks:
- Reviewed 23 pull requests for the team repository.
- Documentation:
- Community:
- Participated in 14 forum posts for the module.
- Reported 11 issues for other team projects during practical exam dry-run.