Developer Guide
- Acknowledgements
- Setting up, getting started
- Design
- Implementation
- Documentation, testing
- Appendix: Requirements
- Use Cases
Acknowledgements
- Thanks to Prof Damith C.Rajapakse and Boyd Anderson provide consulation for my ip.
Setting up, getting started
Refer to the guide Setting up and getting started.
Design
- Architecture
- UI component (MainWindow, Launcher, Input/ Output)
- Logic component (Command, Parser)
- Model component (Task, TaskList)
-
Storage component (Storage) API: Storage.java
The Storage component,
a. can save tasks.txt file to/datafolder and load the tasks.txt file back/datafolder with corresponding format.
b. auto save when user execute delete and add tasks command
File formatshowing as below,Here are the tasks in your list: 1.[D][X]return book (by:Dec 2 2021 1800) 2.[E][X]project meeting (at:Dec 2 2021 1700) - Common classes (TaskList)
Class diagram (refer to the image below)

Object diagram

Implementation (Sequence Diagram)
- List Command
The user executelistcommand to show all the items in the list.
UI scannedlistcommand from user,Commandcreate a newListCommandandrun()to get the tasks from Arraylist, taskList return the tasks to UI and show to user.
Documentation, testing
-
Testing Guide
There are two ways to run tests:- Using IntelliJ JUnit test runner. Run all tests, right-click on the
src/test/javafolder </br> a. chooseRun‘All Tests’ </br> b. Run a subset of tests, you can right-click on a test package, test class and selectRun‘ParserTest’ </br> - Using Gradle Open a console and run the command gradlew clean test (Mac/Linux: ./gradlew clean test)
- Using IntelliJ JUnit test runner. Run all tests, right-click on the
Appendix: Requirements
Product scope
Target user profile
- has a need to manage and track daily tasks
- prefers desktop apps over other types
- prefers typing to mouse interactions
- is reasonably comfortable using CLI apps
Value proposition
- keep record of tasks
- track daily tasks easily
- avoid missing some important tasks
User Stories
| As a/an … | I want to … | So that I can … |
|---|---|---|
| engineer | add different types of tasks, marking/unmarking tasks as done, and delete tasks | keep track of various things |
| project manager | list down all the tasks | manage the overall project |
| personal assistant | find a specific task, and view schedule | server my boss well |
| document control officer | back up the task list file to another hard disk | assign the revision to the file |
| student | add the deadline of the homework | manage to submit the homework before the deadline |
Use Cases
(For all use cases below, the System is TASKS MANAGEMENT SYSTEM (TMS) and the Actor is the user, unless specified otherwise)
Use case: Add Todo Task
- User keys in todo task details
- TMS records the todo task
- TMS shows the todo task added successfully
- Data files updated automatically
Use case: Add Deadline Task
- User keys in deadline details
- TMS records the deadline task
- TMS shows the deadline task added successfully
- Data files updated automatically
Use case: Add Event Task
- User keys in event details
- TMS records the event task
- TMS shows the event task added successfully
- Data files updated automatically
Use case: List Tasks
- User requests to view tasks
- TMS shows the list of tasks
Use case: View Schedules
- User keys in the specific date to search
- TMS performs searching
- TMS displays the result
Use case: Delete Task
- User requests to delete a specific task
- TMS deletes the task from the list
- TMS shows the task deleted successfully
- Data files updated automatically
Use case: Find Task
- User keys in the keyword to search
- TMS performs searching
- TMS displays the result
Use case: Bye
- User requests to exit the program
- TMS terminates safely
Non-Functional Requirements
- Should work on any mainstream OS as long as it has Java 11 or above installed.
- Should be able to hold up to 1000 tasks without a noticeable sluggishness in performance.
- The system reacts to the given input is within a few seconds.
- The system allows developers to add in more functions or extent the function through modification of exiting functionality.
- The command should be simple enough so that users are able to accomplish most of the tasks faster using typing than using the mouse.
- Should be easy for new users to get used to usage fast.
Glossary
Mainstream OS: Windows, Linux, Unix, OS-X