diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 6348b6c2707..ed57ecaa411 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -22,6 +22,7 @@ _{ list here sources of all reused/adapted ideas, code, documentation, and third Refer to the guide [_Setting up and getting started_](SettingUp.md). -------------------------------------------------------------------------------------------------------------------- +
## **Design** @@ -48,6 +49,7 @@ The bulk of the app's work is done by the following four components: * [**`Storage`**](#storage-component): Reads data from, and writes data to, the hard disk. [**`Commons`**](#common-classes) represents a collection of classes used by multiple other components. +
**How the architecture components interact with each other** @@ -66,6 +68,7 @@ For example, the `Logic` component defines its API in the `Logic.java` interface The sections below give more details of each component. +
### UI component @@ -84,6 +87,7 @@ The `UI` component, * listens for changes to `Model` data so that the UI can be updated with the modified data. * keeps a reference to the `Logic` component, because the `UI` relies on the `Logic` to execute commands. * depends on some classes in the `Model` component, as it displays `Person` object residing in the `Model`. +
### Logic component @@ -118,6 +122,7 @@ Here are the other classes in `Logic` (omitted from the class diagram above) tha How the parsing works: * When called upon to parse a user command, the `AddressBookParser` class creates an `XYZCommandParser` (`XYZ` is a placeholder for the specific command name e.g., `AddCommandParser`) which uses the other classes shown above to parse the user command and create a `XYZCommand` object (e.g., `AddCommand`) which the `AddressBookParser` returns back as a `Command` object. * All `XYZCommandParser` classes (e.g., `AddCommandParser`, `DeleteCommandParser`, ...) inherit from the `Parser` interface so that they can be treated similarly where possible e.g, during testing. +
### Model component @@ -159,6 +164,7 @@ The `Storage` component, Classes used by multiple components are in the `seedu.addressbook.commons` package. -------------------------------------------------------------------------------------------------------------------- +
## **Implementation** @@ -174,6 +180,8 @@ The following activity diagram summarizes what happens when a user executes the
+
+ ### Edit Schedule feature The following sequence diagram shows how an add schedule operation goes through the Logic component: @@ -182,6 +190,8 @@ The following activity diagram summarizes what happens when a user executes the
+
+ ### Delete Schedule feature The following sequence diagram shows how an add schedule operation goes through the Logic component: @@ -189,6 +199,8 @@ The following sequence diagram shows how an add schedule operation goes through The following activity diagram summarizes what happens when a user executes the deleteSched command: +
+ ### \[Proposed\] Undo/redo feature #### Proposed Implementation @@ -233,6 +245,8 @@ than attempting to perform the undo. +
+ The following sequence diagram shows how an undo operation goes through the `Logic` component: @@ -266,6 +280,7 @@ Step 6. The user executes `clear`, which calls `Model#commitAddressBook()`. Sinc The following activity diagram summarizes what happens when a user executes a new command: +
#### Design considerations: @@ -289,6 +304,7 @@ _{Explain here how the data archiving feature will be implemented}_ -------------------------------------------------------------------------------------------------------------------- +
## **Documentation, logging, testing, configuration, dev-ops** @@ -301,6 +317,8 @@ _{Explain here how the data archiving feature will be implemented}_ -------------------------------------------------------------------------------------------------------------------- +
+ ## **Appendix: Requirements** ### Product scope @@ -355,6 +373,8 @@ Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unli | `*` | international student | know my groupmates’ schedules to better arrange my flights (to avoid missing any meeting)| successfully accommodate my travel plans. | | `*` | introverted NUS student |arrange meetings with my new groupmates without interacting with them| comfortably initiate group collaboration and fulfil project requirements. | +
+ ### Use cases (For all use cases below, the **System** is the `Moddie` and the **Actor** is the `user`, unless specified otherwise) @@ -452,6 +472,7 @@ Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unli Use case ends. +
**Use case: UC06 - Help** @@ -526,6 +547,8 @@ Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unli Use case ends. +
+ **Use case UC09 - Delete a schedule** **MSS** @@ -604,7 +627,6 @@ 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. @@ -620,6 +642,7 @@ Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unli * **Private contact detail**: A contact detail that is not meant to be shared with others * **Module**: A slot in the day used for lesson -------------------------------------------------------------------------------------------------------------------- +
## **Appendix: Instructions for manual testing** @@ -706,6 +729,8 @@ testers are expected to do more *exploratory* testing. 1. Other incorrect addSched commands to try: `addSched`, `addSched x s/..`, `...` (where x is larger than the list size)
Expected: Similar to previous. +
+ 1. Adding a schedule while some persons are being shown 1. Prerequisites: List some persons using the `find` command. Multiple persons in the contact list, but less @@ -735,6 +760,8 @@ testers are expected to do more *exploratory* testing. 1. Other incorrect addSched commands: all previous incorrect addSched applies here +
+ ### Editing a schedule 1. Editing a schedule while all persons are being shown @@ -778,6 +805,8 @@ testers are expected to do more *exploratory* testing. 1. Other incorrect editSched commands to try: `editSched`, `editSched x schedule/x`, `...` (where x is larger than the list size)
Expected: Similar to previous. +
+ 1. Editing a schedule while some persons are being shown 1. Prerequisites: List some persons using the `find` command. Multiple persons in the contact list, but less @@ -821,6 +850,7 @@ testers are expected to do more *exploratory* testing. The error is because schedule index is out of range 1. Other incorrect editSched commands: all previous incorrect editSched applies here +
### Deleting a schedule @@ -861,6 +891,8 @@ testers are expected to do more *exploratory* testing. 1. Other incorrect deleteSched commands: all previous incorrect deleteSched applies here +
+ 1. Deleting a schedule while no persons are being shown 1. Prerequisites: List no persons using the `find` command. No person in the contact list. Assume there are 6 contacts in the entire contact list,