Xia Fuxi - Project Portfolio Page
Overview
iGraduate
is a command line application that acts as a centralised hub for NUS students majoring in Information
Security to plan their academic journey. It is equipped features to help students make informed decisions about their academic plans.
Summary of Contributions
Code contributed
Enhancements implemented
Given below are details of my contributions to the project.
Implemented Ui
class of iGraduate
The Ui class is responsible for all operations that interact with the user, including scanning user input and printing information to the screen.
Considerations
Ui was challenging to implement as many methods in Ui depended on the implementations of other classes. I laid out skeleton
methods of all the possible printing methods required for other features in Ui
so that my teammates would be able to access or edit
the methods they required easily.
Implemented Parser
class of iGraduate together with Xin Ru
The Parser class takes in user input, determines the type of command, extracts the information required to
execute the command and creates a Command
object before handing control back to the main program for the execution of the command.
Considerations
Coding the parser was challenging as all commands available in our program have a unique input format. We agreed on a two-tiered parsing system. Firstly, the user command and parameter is parsed. Secondly, flags would be extracted based on command name. I worked on the first parse while Xin Ru worked on the second.
Implemented HelpCommand
class of iGraduate
The help
command provides users with a quick reference guide regarding the proper usage of iGraduate.
Considerations
Due to the large number of commands and features available in iGraduate, we decided to have separate help pages for each command. This methodology helps make the quick guide less cluttered and more targeted towards specific commands that users intend to look up.
Implemented test code for multiple methods
Unit testing and integration testing was important to our project as it helped us to verify the correctness of the program
as well as help us identify bugs that we missed out on. We focused on testing for Parser
and Command
.
Considerations
Unit and Integration testing for Parser
and Command
classes was priority as they deal with user input and were most prone to logic bugs. Unit tests
were implemented with possible inputs that would break the program. Integration tests were introduced to ensure that the
core functionality was working.
Contributions to documentation
User Guide
I added the segments for components I implemented to the UG. I also added the segment for Add command. I also helped to update the FAQ, design the logo and rephrase the introduction. Apart from that, I made many edits improve the phrasing of the guide to be more audience-centric and beginner-friendly.
Contributions to DG
My main contribution to DG is creating sequence diagrams. I also contributed to the standardisation of sequence
diagrams. I also contributed explanations for the components implemented by me. Apart from that, I also added the
details for ModuleList
class, Command
class and the Add
command.
Contributions to team-based tasks
I edited the introduction and the content pages for UG and DG. I also reviewed my teammates’ code, in particular look
out for the reasons for failed gradle builds. I also hunted for bugs by writing unit tests for Parser
and Command
.
I also tagged issues found and assign issues to myself and teammates.
Reviews and PRs
I helped the team with repository maintenance, mostly about git (Pull Requests, Branches, Merge Conflicts etc). Here is a list of some non-trivial pull requests I helped to review and merge: