Skip to content

Commit

Permalink
Merge branch 'master' into docs/update-developer-guide
Browse files Browse the repository at this point in the history
  • Loading branch information
pra-navi authored Oct 4, 2023
2 parents dd8d132 + 7c2f781 commit 3d4a73f
Show file tree
Hide file tree
Showing 30 changed files with 339 additions and 46 deletions.
187 changes: 169 additions & 18 deletions docs/DeveloperGuide.md
Original file line number Diff line number Diff line change
Expand Up @@ -265,30 +265,72 @@ _{Explain here how the data archiving feature will be implemented}_

**Value proposition**: manage contacts faster than a typical mouse/GUI driven app


### User stories

Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`

| Priority | As a …​ | I want to …​ | So that I can…​ |
| -------- | ------------------------------------------ | ------------------------------ | ---------------------------------------------------------------------- |
| `* * *` | new user | see usage instructions | refer to instructions when I forget how to use the App |
| `* * *` | user | add a new person | |
| `* * *` | event planner | edit a person's details | update details of persons that are outdated with new information |
| `* * *` | user | find a person by name | locate details of persons without having to go through the entire list |
| `* * *` | user | delete a person | remove person entries that I no longer need |
| `* * *` | event planner | delete all tasks | clear all task entries and restart with a new clean task list |
| `* * *` | event planner | mark a task as done | keep track of task progress and the number of done tasks |
| `* * *` | event planner | mark a task as not done | keep track of task progress and the number of not done tasks |
| `* *` | user | hide private contact details | minimize chance of someone else seeing them by accident |
| `*` | user with many persons in the address book | sort persons by name | locate a person easily |
| Priority | As a …​ | I want to …​ | So that I can…​ |
| -------- | ------------------------------------------ | ---------------------------------- | ---------------------------------------------------------------------- |
| `* * *` | new user | see help instructions | refer to documentation to understand the existing features effectively |
| `* * *` | event planner | view both lists on the same screen | compare the task list and contact list while using the GUI |
| `* * *` | event planner | add a new person's details | remember details of new people I meet |
| `* * *` | event planner | list each person's details | view all my contacts' details at a quick glance |
| `* * *` | event planner | edit a person's details | update details of persons that are outdated with new information |
| `* * *` | event planner | delete a contact | remove contacts that I no longer need |
| `* * *` | event planner | delete all contacts | efficiently restart or declutter my addressbook |
| `* * *` | event planner | create tasks to do | know what tasks I need to do in preparation for the event |
| `* * *` | event planner | list each task's details | view all my tasks' details at a quick glance |
| `* * *` | event planner | edit a task | ensure task details are up-to-date with latest information |
| `* * *` | event planner | delete a task | remove tasks that are no longer relevant |
| `* * *` | event planner | delete all tasks | clear all task entries and restart with a new clean task list |
| `* * *` | event planner | mark a task as done | keep track of task progress and the number of done tasks |
| `* * *` | event planner | mark a task as not done | keep track of task progress and the number of not done tasks |
| `* * *` | user | find a person by name | locate details of persons without having to go through the entire list |
| `* *` | user | hide private contact details | minimize chance of someone else seeing them by accident |
| `*` | user with many persons in the address book | sort persons by name | locate a person easily |

*{More to be added}*

### Use cases

For all use cases below, the **System** is the `CoordiMate` and the **Actor** is the `user`, unless specified otherwise
(For all use cases below, the **System** is `CoordiMate` and the **Actor** is the `user`, unless specified otherwise)

**Use case: UC01 - See help instructions**

**MSS**

1. User requests for help.
2. CoordiMate shows the help instructions, with a link to user guide.
3. User clicks on the link to user guide.

Use case ends.

**Use case: UC02 - Add a person**

**MSS**

1. User requests to add a new person's particulars.
2. CoordiMate adds the person.

Use case ends.

**Extensions**

* 1a. The given particulars are invalid.

* 1a1. CoordiMate shows an error message.

Use case ends.

**Use case: UC03 - List all persons**

**MSS**

1. User requests to list all persons.
2. CoordiMate shows a list of all persons.

Use case ends.

**Use case: UC04 - Edit a person's details**

**MSS**
Expand All @@ -298,11 +340,32 @@ For all use cases below, the **System** is the `CoordiMate` and the **Actor** is
3. User requests to edit a specific person in the list and provides the new person particulars.
4. CoordiMate updates the person's details with the provided new information.

**Extensions**

* 2a. The list is empty.

Use case ends.

* 3a. The given index is invalid.

* 3a1. CoordiMate shows an error message and prompts the user to enter a valid index.

Use case resumes at step 2.

**Use case: UC06 - Delete a person from contact list**

**MSS**

1. User requests to list persons
2. CoordiMate shows a list of persons
3. User requests to delete a specific person in the list
4. CoordiMate deletes the person

Use case ends.

**Extensions**

* 2a. The list is empty.
* 2a. The contact list is empty.

Use case ends.

Expand All @@ -312,6 +375,87 @@ For all use cases below, the **System** is the `CoordiMate` and the **Actor** is

Use case resumes from step 2.

**Use case: UC07 - Delete all existing contacts**

**MSS**

1. User requests to delete all contacts.
2. CoordiMate deletes all contacts shows a confirmation message.

Use case ends.

**Use case: UC08 - Add task to task list**

**MSS**

1. User requests to add a task
2. CoordiMate adds the task

Use case ends.

**Extensions**

* 1a. There is no task name provided.

* 1a1. CoordiMate shows an error message.

Use case resumes at step 1.

**Use case: UC09 - List all tasks**

**MSS**

1. User requests to list all tasks.
2. CoordiMate shows a list of all tasks.

Use case ends.

**Use case: UC10 - Edit a task**

**MSS**

1. User requests to list all tasks.
2. CoordiMate shows a list of tasks.
3. User requests to edit a specific task in the list with new details.
4. CoordiMate edits the task with the new details.

Use case ends.

**Extensions**

* 2a. The list is empty.

Use case ends.

* 3a. The given index is invalid.

* 3a1. CoordiMate shows an error message and prompts the user to enter a valid index.

Use case resumes at step 3.

**Use case: UC12 - Delete a task**

**MSS**

1. User requests to list all tasks.
2. CoordiMate shows a list of tasks.
3. User requests to delete a specific task in the list.
4. CoordiMate deletes the task.

Use case ends.

**Extensions**

* 2a. The list is empty.

Use case ends.

* 3a. The given index is invalid.

* 3a1. CoordiMate shows an error message and prompts the user to enter a valid index.

Use case resumes at step 3.

**Use case: UC13 - Delete all tasks**

**MSS**
Expand Down Expand Up @@ -381,13 +525,20 @@ For all use cases below, the **System** is the `CoordiMate` and the **Actor** is

Use case ends.

*{More to be added}*

### Non-Functional Requirements

1. Should work on any _mainstream OS_ as long as it has Java `11` or above installed.
2. Should be able to hold up to 1000 persons without a noticeable sluggishness in performance for typical usage.
2. Should be able to hold up to 1000 persons and tasks without a noticeable sluggishness in performance for typical usage.
3. A user with above average typing speed for regular English text (i.e. not code, not system admin commands) should be able to accomplish most of the tasks faster using commands than using the mouse.

*{More to be added}*
4. Application should be designed for a single user.
5. Data should be stored locally in a human-readable and editable text file.
6. Data should persist across usage sessions.
7. Application should not require internet connection to run.
8. GUI should work well for standard screen resolutions of 1920x1080 and higher, and for screen scales of 100% and 125%.
9. GUI should be usable for resolutions of 1280x720 and higher, and for screen scales of 150%.
10. Application should be packaged and delivered to user in a single JAR file under 100MB.

### Glossary

Expand Down
Loading

0 comments on commit 3d4a73f

Please sign in to comment.