Skip to content

Latest commit

 

History

History
96 lines (69 loc) · 7.51 KB

joshuaseetss.adoc

File metadata and controls

96 lines (69 loc) · 7.51 KB

Joshua Seet - Project Portfolio

Introduction

About Me.

joshuaseetss

[github]

Hi! My name is Joshua.

I’m currently a second year SoC (School of Computing) student in NUS majoring in Computer Science.

This write-up documents the contributions I made towards the development of FinSec, a project which my team and I undertook for the module CS2103T. Individually, I have benefited in no small measure, as working on the project has significantly enhanced my knowledge and ability to become a more competent software engineer.

PROJECT: FinSec

This section contains the description of the project.

FinSec is a useful application that was created as an aid to financial secretaries of any organisation. It is a Command Line Interface (CLI) based tool to cater to computing students who are highly adept at typing but also provides a Graphical User Interface (GUI) interface for users to easily view interact with FinSec.

FinSec comprises carefully evaluated and selected features that are tailored to be relevant to the specific needs of our target audience. FinSec’s main features are the Income, Claim and Budget features. All of FinSec’s features and implementations are clearly and exhaustively documented in written guides for users and developers.

Ui
Figure 1. A view of FinSec

Role

This section contains the roles I played in the team.

My primary role in the project was to create the prototype for the Shortcut, Income, and AutocorrectSuggestion features and develop them respectively.

I was also in charge of Testing and UI, ensuring that the coverall percentage does not fall too low and the UI/UX of FinSec is up to standards.

Summary of contributions

This section contains a summary of the coding, documentation, and other contributions I made towards the project.

  • Major enhancement: Added the Shortcut Feature

    • What it does: The shortcut feature enables FinSec to convert an unknown command into a shortcut, which becomes a valid command for future use.

    • Justification: This feature significantly enhances user experience of FinSec as it allows users to create their own manual shortcuts for commands. Our target audience, Financial Secretaries, would find their tasks (typically data entry) much aided by FinSec which removes the need to type in the whole command, such as "add_claim" for every entry. Instead, they can, using FinSec, create an alias such as "ac" for the command "add_claim". This would avoid unnecessary duplication of commands, thereby raising efficiency.

    • Implementation: For this to work, the flow of command execution in FinSec has to be altered. Executing an unknown command that FinSec does not recognize changes the command execution pathway and creates a new command that FinSec will recognise. This is facilitated by the use of a TreeMap in the parser which stores a list of all available commands and their actions as key-value pairs.

    • Highlights: This feature enhances the entire software model to be more Object Oriented since through this implementation, commands are created as objects. This is different from the previous implementation of commands in the Address Book 3 (AB3). With a higher level of abstraction, future features would be easier for implementation.

  • Minor enhancement: Added the Income feature

    • What it does: This feature allows users (typically Financial Secretaries) to enter Income transactions into the FinSec application and track their income entries.

    • Justification: The income feature is a vital feature to the FinSec application since most organisations and clubs have incomes to keep track of. It allows Financial Secretaries to keep proper records of the organisation and to keep track of its financial status.

    • Implementation: The Person class in Address Book 3 (AB3) is remodelled to resemble an income entry (with additional attributes of Description, Amount, Date).

    • Highlights: The implementation of this feature is fairly straightforward since that it is a direct adaptation of the Person class.

  • Minor enhancement: Added the Autocorrect Suggestions feature

    • What it does: This feature gives users suggestions in a drop-down list as they are typing their commands into FinSec. The suggestions given corresponds with what the user is typing at the time. Currently, the possible suggestions are the default commands available for the user. Whenever the user adds a shortcut (from the shortcut feature) or a contact, it will add on (in real-time) to the suggestions list.

    • Justification: The drop-down list that this feature provides greatly enhances the user experience. Because of this feature, the user does not have to keep referring to the User Guide for the list of available commands. This is especially useful for FinSec, which has 20 commands.

    • Implementation: An additional class AutocorrectTextField is created to cater for the add-ons to the TextField class. By loading the updated Set of Strings in that class, the new dictionary of suggestions is available to be displayed to the user as he types.

    • Highlights: The implementation of this feature is slightly challenging as it deals mainly with UI, which I am not very familiar with. However, online tutorials helped me to learn more about the different components like Listeners. I also made minor enhancements to this feature by adding attributes (such as Name) into the claim suggestions for enhanced usage.

  • Code contributed: [All commits] [Project Code Dashboard]

  • Other contributions

    • Project management

      • I managed the release of version 1.3.3 of FinSec on GitHub: v1.3.3

    • Enhancements to existing features

      • I refactored and optimised some reusable code in AB3 to increase code quality and make the program more Object Oriented : #150, #345, #340

    • Documentation

      • I made improvements to the Developer’s Guide and did the Use Cases section: #350, #181, #142

    • Community

      • I conducted reviews on other team’s PR to give suggestions and constructive comments: #31

      • I also reported bugs and potential flaws in other teams' project to help prepare them for the demo: #1, #10, #8

    • Tools

      • Created Google Docs for team planning

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.

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.