Skip to content

Commit

Permalink
UG update
Browse files Browse the repository at this point in the history
  • Loading branch information
garywongkai committed Apr 15, 2024
1 parent 6143ad3 commit a75957f
Showing 1 changed file with 33 additions and 1 deletion.
34 changes: 33 additions & 1 deletion docs/DeveloperGuide.md
Original file line number Diff line number Diff line change
Expand Up @@ -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).

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

<div style="page-break-after: always;">

## **Design**
Expand All @@ -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.

<div style="page-break-after: always;">

**How the architecture components interact with each other**
Expand All @@ -66,6 +68,7 @@ For example, the `Logic` component defines its API in the `Logic.java` interface
<puml src="diagrams/ComponentManagers.puml" width="300" />

The sections below give more details of each component.

<div style="page-break-after: always;">

### UI component
Expand All @@ -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`.

<div style="page-break-after: always;">

### Logic component
Expand Down Expand Up @@ -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.

<div style="page-break-after: always;">

### Model component
Expand Down Expand Up @@ -159,6 +164,7 @@ The `Storage` component,
Classes used by multiple components are in the `seedu.addressbook.commons` package.

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

<div style="page-break-after: always;">

## **Implementation**
Expand All @@ -174,6 +180,8 @@ The following activity diagram summarizes what happens when a user executes the
<puml src="diagrams/AddSchedActivityDiagram.puml" alt="AddScheduleActivityDiagram" />
<div style="page-break-after: always;">

<div style="page-break-after: always;">

### Edit Schedule feature
The following sequence diagram shows how an add schedule operation goes through the Logic component:
<puml src="diagrams/EditSchedSequenceDiagram.puml" alt="EditSchedSequenceDiagram" />
Expand All @@ -182,13 +190,17 @@ The following activity diagram summarizes what happens when a user executes the
<puml src="diagrams/EditSchedActivityDiagram.puml" alt="EditSchedActivityDiagram" />
<div style="page-break-after: always;">

<div style="page-break-after: always;">

### Delete Schedule feature
The following sequence diagram shows how an add schedule operation goes through the Logic component:
<puml src="diagrams/DeleteSchedSequenceDiagram.puml" alt="DeleteSchedSequenceDiagram" />

The following activity diagram summarizes what happens when a user executes the deleteSched command:
<puml src="diagrams/DeleteSchedActivityDiagram.puml" alt="DeleteSchedActivityDiagram" />

<div style="page-break-after: always;">

### \[Proposed\] Undo/redo feature

#### Proposed Implementation
Expand Down Expand Up @@ -233,6 +245,8 @@ than attempting to perform the undo.

</box>

<div style="page-break-after: always;">

The following sequence diagram shows how an undo operation goes through the `Logic` component:

<puml src="diagrams/UndoSequenceDiagram-Logic.puml" alt="UndoSequenceDiagram-Logic" />
Expand Down Expand Up @@ -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:

<puml src="diagrams/CommitActivityDiagram.puml" width="250" />

<div style="page-break-after: always;">

#### Design considerations:
Expand All @@ -289,6 +304,7 @@ _{Explain here how the data archiving feature will be implemented}_


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

<div style="page-break-after: always;">

## **Documentation, logging, testing, configuration, dev-ops**
Expand All @@ -301,6 +317,8 @@ _{Explain here how the data archiving feature will be implemented}_

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

<div style="page-break-after: always;">

## **Appendix: Requirements**

### Product scope
Expand Down Expand Up @@ -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. |

<div style="page-break-after: always;">

### Use cases

(For all use cases below, the **System** is the `Moddie` and the **Actor** is the `user`, unless specified otherwise)
Expand Down Expand Up @@ -452,6 +472,7 @@ Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unli

Use case ends.

<div style="page-break-after: always;">

**Use case: UC06 - Help**

Expand Down Expand Up @@ -526,6 +547,8 @@ Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unli

Use case ends.

<div style="page-break-after: always;">

**Use case UC09 - Delete a schedule**

**MSS**
Expand Down Expand Up @@ -604,7 +627,6 @@ Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unli

<div style="page-break-after: always;">


### Non-Functional Requirements

1. Should work on any _mainstream OS_ as long as it has Java `11` or above installed.
Expand All @@ -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
--------------------------------------------------------------------------------------------------------------------

<div style="page-break-after: always;">

## **Appendix: Instructions for manual testing**
Expand Down Expand Up @@ -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)<br>
Expected: Similar to previous.

<div style="page-break-after: always;">

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
Expand Down Expand Up @@ -735,6 +760,8 @@ testers are expected to do more *exploratory* testing.

1. Other incorrect addSched commands: all previous incorrect addSched applies here

<div style="page-break-after: always;">

### Editing a schedule

1. Editing a schedule while all persons are being shown
Expand Down Expand Up @@ -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)<br>
Expected: Similar to previous.

<div style="page-break-after: always;">

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
Expand Down Expand Up @@ -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

<div style="page-break-after: always;">

### Deleting a schedule
Expand Down Expand Up @@ -861,6 +891,8 @@ testers are expected to do more *exploratory* testing.

1. Other incorrect deleteSched commands: all previous incorrect deleteSched applies here

<div style="page-break-after: always;">

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,
Expand Down

0 comments on commit a75957f

Please sign in to comment.