Skip to content

Latest commit

 

History

History
140 lines (97 loc) · 7.68 KB

briyanii.adoc

File metadata and controls

140 lines (97 loc) · 7.68 KB

Brian Fung - Project Portfolio

PROJECT: MooLah


Overview

This portfolio aims to document my contributions to MooLah

MooLah is a desktop expense tracking application, which was morphed from the code of Software Engineering Education’s AddressBook - Level 3 used for teaching Software Engineering principles.

MooLah is written in Java and has around 23 kLoC. It aims to provide a streamlined expense tracking solution to NUS students who are more comfortable with Command-Line Interfaces (CLI). With features such as auto-completion, and syntax highlighting, and expense analysis features like budgeting, and statistics. MooLah provides users an expense tracking solution which is both useful and easy to use.

Summary of contributions

  • Major enhancement: added Easier Command-Line feature.

As this project required the use of a Command-Line interface for user interaction, user input can sometimes require a lot of typing and users may find it difficult to remember all the different commands available and the syntax required to use these commands.

This feature consists of several features which make Command-Line easier to use, and to reduce the need for users to refer to the user guide.

Component 1: Aliases

  • What it does:
    This feature allows the user to save input to an alias, allowing them to create shortcuts for command which they frequently require. This saves them time by reducing the keystrokes required to enter a command, as well as reduces the need to remember what exactly needs to be entered.

Component 2: Syntax highlighting

  • What it does:
    This feature provides some validation of user input. It highlights valid command words used for commands as well as the prefixes delimiting arguments within the command. It also makes the user’s input more readable, as commands may require many arguments and prefixes, it may be difficult for users to read their input before entering the command.

  • Justification: This feature improves the product significantly because a user does not need to remember confusing commands and syntax. Especially due to the fact that our application supports a large number of commands. This allows users to see what valid commands there are as well as what arguments are required without having to press enter the command and see an error message.

  • Highlights: This feature required in-depth analysis of the command syntax of the original code base. The implementation was challenging as it required the use of regular expressions to analyse user input so that the right sections of text were properly highlighted. This feature also required integration of RichTextFx JavaFx extensions. As RichTextFx only provided a text styling for multi-line text areas, this feature required significant usage of JavaFx’s event dispatch and in order to ensure that the text area can properly simulate a single-line textfield.

  • Credits: The RichTextFx demo’s included some existing logic for syntax highlighting which was modified for use in MooLash as the behaviour of syntax highlighting in the demo’s code did not require different highlighting behaviour in different context.

Component 3: Input suggestions

  • What it does:
    As with the previous components, the main reason this feature was implemented was to reduce the need for users to have to refer to user guides or remember a lot of commands and their syntax. This feature suggests completions to the user’s current input to provide them with possible commands they may enter, as well as provide them information of what arguments are required by the command and what the prefixes for the argument stand for.

  • Highlights: This feature required in-depth analysis of the command syntax of the original code base. It required modification to the existing Prefix class for it to provide more information to the user. The implementation was challenging as MooLah supports almost 30 commands, all of which have different arguments. As such the feature needed to be designed such that it was scalable to support new commands as well as modification to existing commands. Similar to the syntax highlighting feature, this feature uses a significant use of JavaFx as well.

Component 4: Generic commands.

  • As mentioned previously, MooLah supports around 30 commands, several of which do similar thing (e.g. There are several commands which add information to MooLah use the word 'add'. In order to differentiate these commands, they require a much longer name to be clear as to what the command does. This feature allows multiple commands to use the same word and be parsed differently based on the context they are used.

Major enhancement:

  • Design GUI elements for Budget List, Budgets, Expense, and Aliases Except for the most recent change to the colour theme of Moolah, most of the code to visualise changes to Aliases, Budgets, Expenses were written by me. #106 #231

Minor enhancement:

  • initial refactoring of AddressBook into MooLah to allow tracking of expenses*
    While expenses trackers are similar to an address book such they keep a record of items, the requirements to store expenses are much different. The person class needed to be refactored quite heavily. Additionally, as Expense should be able to share a name unlike the behaviour of the existing Person class, a new way to differentiate Expenses needed to be implemented. #40 #42

Code contributed: RepoSense link

Other contributions:

  • Project management:

    • Managed release for v1.3.2 (the release used for Practical Exam Dry Run) on GitHub

    • In charge of ensuring code is tested.

    • Designed mock up for inital GUI design #60

  • Wrote tests to significantly increase coverage:

  • Documentation:

    • Made changes to UG diagrams to match changes to the code #285

  • Tools:

    • Integrated a third party library (RichTextFX) to the project #93

    • Integrated TestFx into the project for Testing GUI components. #271
      (* much of the code was sourced from AddressBook4 GUI-Tests)

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.