Skip to content

Commit

Permalink
update dg
Browse files Browse the repository at this point in the history
  • Loading branch information
simbayippy committed Oct 3, 2023
1 parent 1149f32 commit f5f174e
Show file tree
Hide file tree
Showing 3 changed files with 90 additions and 40 deletions.
108 changes: 68 additions & 40 deletions docs/DeveloperGuide.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
---
layout: default.md
title: "Developer Guide"
pageNav: 3
layout: default.md
title: "Developer Guide"
pageNav: 3
---

# Asclepius Developer Guide
# AB-3 Developer Guide

<!-- * Table of Contents -->
<page-nav-print />
Expand Down Expand Up @@ -236,13 +236,13 @@ The following activity diagram summarizes what happens when a user executes a ne
**Aspect: How undo & redo executes:**

* **Alternative 1 (current choice):** Saves the entire address book.
* Pros: Easy to implement.
* Cons: May have performance issues in terms of memory usage.
* Pros: Easy to implement.
* Cons: May have performance issues in terms of memory usage.

* **Alternative 2:** Individual command knows how to undo/redo by
itself.
* Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).
* Cons: We must ensure that the implementation of each individual command are correct.
* Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).
* Cons: We must ensure that the implementation of each individual command are correct.

_{more aspects and alternatives to be added}_

Expand All @@ -267,13 +267,12 @@ _{Explain here how the data archiving feature will be implemented}_

### Product scope

**Target user profile**:
**Target user profile: Clinic Assistants**

* has a need to manage a significant number of contacts
* has a need to manage a significant number of patients
* prefer desktop apps over other types
* can type fast
* prefers typing to mouse interactions
* is reasonably comfortable using CLI apps

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

Expand All @@ -282,29 +281,58 @@ _{Explain here how the data archiving feature will be implemented}_

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 | |
| `* * *` | user | delete a person | remove entries that I no longer need |
| `* * *` | 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 |
| Priority | As a …​ | I want to …​ | So that I can…​ |
|----------|--------------------------------------|-------------------------------------------|--------------------------------------------------------|
| `* * *` | clinic assistant | register new patients to the database | reduce the use of physical documents and storage costs |
| `* * *` | clinic admin staff | delete patient records | keep our records up-to-date |
| `* * *` | clinic assistant | add new appointments to specific patients | keep track of their appointments |
| `* * *` | clinic admin staff | delete appointments of patients | update cancellations of no-shows |
| `* * *` | overwhelmed healthcare professional | view all the patient records | not memorise all the patients of the clinic |
| `* * *` | overwhelmed healthcare professional | view a specific patient's details | save time |

*{More to be added}*

### Use cases

(For all use cases below, the **System** is the `AddressBook` and the **Actor** is the `user`, unless specified otherwise)
(For all use cases below, the **System** is the `ClinicRecords` and the **Actor** is the `Clinic staff`, unless specified otherwise)

**Use case: Delete a person**
**Use case 1: Add a patient**

**MSS**

1. User requests to list persons
2. AddressBook shows a list of persons
1. New patient visits the clinic
2. Patient is not in ClinicRecords
3. Clinic staff adds this new patient into the ClinicRecords
4. ClinicRecords shows a confirmation message

Use case ends.

**Extensions**

* 3a. The given input is invalid.

* 3a1. ClinicRecords shows an error message.

Use case resumes at step 3.

**Use case 2: List all patients**

**MSS**

1. Clinic staff needs patient records
2. Clinic staff requests to list patients
3. ClinicRecords shows a list of patients

Use case ends.

**Use case 3: Delete a patient**

**MSS**

1. User requests to list patients
2. ClinicRecords shows a list of patients
3. User requests to delete a specific person in the list
4. AddressBook deletes the person
4. ClinicRecords deletes the person

Use case ends.

Expand All @@ -314,9 +342,9 @@ Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unli

Use case ends.

* 3a. The given index is invalid.
* 3a. The given input is invalid.

* 3a1. AddressBook shows an error message.
* 3a1. ClinicRecords shows an error message.

Use case resumes at step 2.

Expand All @@ -325,15 +353,15 @@ Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unli
### 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 patients 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}*

### Glossary

* **Mainstream OS**: Windows, Linux, Unix, OS-X
* **Private contact detail**: A contact detail that is not meant to be shared with others
* **Private patient record**: Details that are not meant to be shared with others

--------------------------------------------------------------------------------------------------------------------

Expand All @@ -352,15 +380,15 @@ testers are expected to do more *exploratory* testing.

1. Initial launch

1. Download the jar file and copy into an empty folder
1. Download the jar file and copy into an empty folder

1. Double-click the jar file Expected: Shows the GUI with a set of sample contacts. The window size may not be optimum.
1. Double-click the jar file Expected: Shows the GUI with a set of sample contacts. The window size may not be optimum.

1. Saving window preferences

1. Resize the window to an optimum size. Move the window to a different location. Close the window.
1. Resize the window to an optimum size. Move the window to a different location. Close the window.

1. Re-launch the app by double-clicking the jar file.<br>
1. Re-launch the app by double-clicking the jar file.<br>
Expected: The most recent window size and location is retained.

1. _{ more test cases …​ }_
Expand All @@ -369,23 +397,23 @@ testers are expected to do more *exploratory* testing.

1. Deleting a person while all persons are being shown

1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.
1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.

1. Test case: `delete 1`<br>
Expected: First contact is deleted from the list. Details of the deleted contact shown in the status message. Timestamp in the status bar is updated.
1. Test case: `delete 1`<br>
Expected: First contact is deleted from the list. Details of the deleted contact shown in the status message. Timestamp in the status bar is updated.

1. Test case: `delete 0`<br>
Expected: No person is deleted. Error details shown in the status message. Status bar remains the same.
1. Test case: `delete 0`<br>
Expected: No person is deleted. Error details shown in the status message. Status bar remains the same.

1. Other incorrect delete commands to try: `delete`, `delete x`, `...` (where x is larger than the list size)<br>
Expected: Similar to previous.
1. Other incorrect delete commands to try: `delete`, `delete x`, `...` (where x is larger than the list size)<br>
Expected: Similar to previous.

1. _{ more test cases …​ }_

### Saving data

1. Dealing with missing/corrupted data files

1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_
1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_

1. _{ more test cases …​ }_
19 changes: 19 additions & 0 deletions docs/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 3 additions & 0 deletions docs/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,5 +10,8 @@
},
"devDependencies": {
"markbind-cli": "^5.1.0"
},
"dependencies": {
"ci": "^2.3.0"
}
}

0 comments on commit f5f174e

Please sign in to comment.