Wong Zhen Wei - Project Portfolio Page

Overview

My team of 4 software engineering students and I have created a command line interface project managing software for our CS2113T team project. The app, called SCRUMptious, aims to help project managers handle their project teams efficiently with the help of the SCRUM methodology and digital technologies.

Summary of Contributions

This section summarises my contributions in terms of documentation, coding and other significant matters to the team project.

Enhancements Implemented

The main enhancement I have added is storage manager and automated testing.

1. Storage Manager (Pull Request #31 #67 #81 #117 #118 #187 #196 #209 #215)

I have implemented a storage manager with the help of a third-party library json-simple 3.1.1 by Clifton Labs. The storage manager helps to save data to and load data from a local persistent storage. I have added logic to allow the objects to serialise its data to a string in JSON format, and allow the objects to de-serialise JSON objects to map the values to its own properties. These JSON objects comes from parsing JSON formatted string. This allows the user to retain their data even after closing their program, therefore the user do not need to manually reenter their data.

2. Automated Testing (Pull Request #208)

SCRUMptious contains components that are dependent on current date, as a result the output of the program may vary. For example, creating the first sprint without specifying the start date will result in the start of the project to be the date of the command being ran. This results in the output of the automated testing to differ when it is run on a different date from the generation of the expected outcome. I solve this issue by ensuring that each call for current date will return a fixed date if the automated testing is running. This is achieved by ensuring that each now() call through LocalDate or LocalDateTime includes a parameter Scrumptious.getClock() that will return a fixed datetime for automated testing, otherwise it returns the current datetime.

The challenge to this solution is it requires the discipline to ensure that each call to get the current date (LocalDate.now()) or datetime (LocalDateTime.now()) must include a clock parameter. Otherwise, the automated testing results are unexpected and will cause the test to fail.

Contributions to Team-Based Tasks

Contributions to Documentation

User Guide
Developer Guide
README (Pull Request #236)

Other Contributions

Code contributed: Link