This portfolio is to document my contributions to project NUStudy, which is a software engineering project under Module CS2103T at National University of Singapore. Our team consists of five students majoring in Computer Science. We decided to morph an existing Java application Address Book 3 into NUStudy, which is a desktop application with command line for user input and a JavaFX GUI for display. NUStudy supports notes management, quiz practice, revision task records, and usage statistics to help with revision.
Note
|
You may take note of the following symbols and formatting used in this portfolio unless otherwise specified:overdue - The monospaced text indicates that it is a user input.Task - An italicised word indicates that it is a class name. #11 - A number with # sign indicates the Pull Request or Issue number. PR - Abbreviation for "Pull Request". monospaced text in Developer Guide has different meanings. If the first letter
of each word is capitalized, then the monospaced text refers to a class or interface name. If
the text comes with a bracket () at the end, then the text refers to a method name. Otherwise, the text refers to user command.
|
This section summarises my contributions to the project, including feature enhancements, documentation and project management.
Enhancement added: I implemented revision task management features (starting from PR #37).
-
What it does: These features support tasks for revising a note or a question at a particular point of time. Users can perform operations with revision tasks such as addition, deletion, searching, editing, marking done, listing finished/unfinished/overdue tasks etc.
-
Justification: This feature allows users to set their revision plans and goals. It makes the revision more structured and organised. The task is designed in a way that each task only supports revision of one note or question. Having this "one tiny easy revision task at a time" approach, users would find it easier to start the revision. This helps to stop procrastination to some extent.
-
Highlights: This enhancement is dependent on Note and Question classes implemented by my teammates. There might be regressions of my task features if my teammates decide to change their implementations. Therefore, I did a thorough analysis of the design pattern and the project architecture to use as least information as possible from their classes in order to reduce coupling. The task management features require a decent amount of effort because they need to support a wide range of operations.
Code contributed: You may feel free to check my code here.
Other contributions:
-
Project management:
-
Documentation:
-
Team work and community contribution:
This section summarises my contributions to the User Guide.
Apart from the documentation of my individual feature, I also helped the team by adding a command summary of everyone’s feature. You may refer to the Command Summary section in the User Guide.
This section summarises my contributions to the Developer Guide. For a full list of all task commands, please refer to the beginning of section "Revision task management - Implementation" in the Developer Guide.
Apart from addition to my individual features, I also modified the diagrams of the UI and Model components. You may refer to Figure 4. Class diagram of the UI component, Figure 5. Detailed class diagram for Panels package and Figure 8. Class diagram of the Model component in the Developer Guide.