Skip to content

Commit

Permalink
Merge pull request #314 from ZD292/Branch-v1.4
Browse files Browse the repository at this point in the history
Update developer guide
  • Loading branch information
Kailash201 authored Nov 13, 2023
2 parents 34e725e + 53bf60f commit a97292e
Show file tree
Hide file tree
Showing 2 changed files with 52 additions and 52 deletions.
90 changes: 45 additions & 45 deletions docs/DeveloperGuide.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ pageNav: 3

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

## 1-Introduction
## 1. Introduction

### **1.1. Product Overview**
ProjectPro is a contacts organisation application designed for university students.
Expand All @@ -25,22 +25,22 @@ This app can help to save time by:

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

### **1.2-Setting-up-getting-started**
### 1.2 Setting up getting started

Refer to the guide [_Setting up and getting started_](SettingUp.md).

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

### **1.3-Acknowledgements**
### 1.3 Acknowledgements

ProjectPro is a brownfield Java Project based on the AB3 project template created by the [SE-EDU initiative](https://se-education.org).


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

## 2-Design
## 2 Design

### 2.1-Architecture
### 2.1 Architecture

<puml src="diagrams/ArchitectureDiagram.puml" width="280" />

Expand Down Expand Up @@ -82,7 +82,7 @@ For example, the `Logic` component defines its API in the `Logic.java` interface

The sections below give more details of each component.

### 2.2-UI component
### 2.2 UI component

The **API** of this component is specified in [`Ui.java`](https://github.com/AY2324S1-CS2103T-T10-3/tp/blob/master/src/main/java/seedu/address/ui/Ui.java)

Expand All @@ -101,7 +101,7 @@ The `UI` component
* 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`.

### 2.3-Logic component
### 2.3 Logic component

**API** : [`Logic.java`](https://github.com/AY2324S1-CS2103T-T10-3/tp/blob/master/src/main/java/seedu/address/logic/Logic.java)

Expand Down Expand Up @@ -133,7 +133,7 @@ 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.

### 2.4-Model component
### 2.4 Model component
**API** : [`Model.java`](https://github.com/AY2324S1-CS2103T-T10-3/tp/blob/master/src/main/java/seedu/address/model/Model.java)

<puml src="diagrams/ModelClassDiagram.puml" width="450" />
Expand All @@ -147,7 +147,7 @@ The `Model` component
* does not depend on any of the other three components (as the `Model` represents data entities of the domain, they should make sense on their own without depending on other components)


### 2.5-Storage component
### 2.5 Storage component

**API** : [`Storage.java`](https://github.com/AY2324S1-CS2103T-T10-3/tp/blob/master/src/main/java/seedu/address/storage/Storage.java)

Expand All @@ -162,17 +162,17 @@ With the inclusion of `Group` and `TimeIntervals` in our application, more compo

To address this requirement, we updated our storage to save both classes in JSON format.

### 2.6-Common classes
### 2.6 Common classes

Classes used by multiple components are in the `seedu.addressbook.commons` package.

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

## 3-Implementation
## 3 Implementation

This section describes some noteworthy details on how certain features are implemented.

### 3.1-Adding a Person
### 3.1 Adding a Person

#### Implementation

Expand All @@ -197,7 +197,7 @@ The following sequence diagram describes the process of `add` command:

</box>

#### Design-consideration
#### Design considerations:

**Aspect: Handling group attribute in user input**

Expand All @@ -211,9 +211,9 @@ The following sequence diagram describes the process of `add` command:

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

### 3.2-Adding-a-Group
### 3.2 Adding a Group

#### Proposed-Implementation
#### Proposed Implementation

The Add Group mechanism is facilitated by `Group` class. This operation is exposed in the `Model` interface as `Model#addGroup()`.

Expand All @@ -237,7 +237,7 @@ Below is a sequence diagram that summarizes how a user creates a new group:

</box>

#### Design-Considerations
#### Design Considerations:

**Aspect: Groups with the same name**

Expand All @@ -251,7 +251,7 @@ Below is a sequence diagram that summarizes how a user creates a new group:

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

### 3.3-Delete-Person-and-Group
### 3.3 Delete Person and Group

#### Implementation

Expand All @@ -270,7 +270,7 @@ The following activity diagram summarizes what happens when a user executes a de

<puml src="diagrams/DeleteCommandActivityDiagram.puml" alt="DeleteCommandActivity" />

### Delete-Person
### Delete Person

Given below is an example usage scenario and how the Delete Person mechanism behaves at each step.

Expand All @@ -296,13 +296,13 @@ The following sequence diagram shows how the Delete Person operation works:

</box>

### Delete-Group
### Delete Group

The Delete Group command mechanism behaves the same as the Delete Person command above, except it deletes the target `Group` object instead of the `Person` object.

Additionally, `AddressBook#removeGroup(Group g)` will remove the target group 'g' from the group lists of all the members that were a part of it by calling `Person#removeGroup(Group g)`.

#### Design-Considerations
#### Design Considerations:

**Aspect: How to handle two similar but different commands (delete group and delete person)**

Expand All @@ -315,7 +315,7 @@ Additionally, `AddressBook#removeGroup(Group g)` will remove the target group 'g
* Cons: Users have to remember more command words which may take more time to get used to

--------------------------------------------------------------------------------------------------------------------
### 3.4-List-Person-and-list-group
### 3.4 List Person and list group

### List-Person

Expand All @@ -340,7 +340,7 @@ The following activity diagram summarizes what happens when a user executes a li
</box>


#### List-Group
#### List Group

The List Group mechanism is facilitated by the `Model` class.

Expand All @@ -366,7 +366,7 @@ The following activity diagram summarizes what happens when a user executes a li

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

### 3.5-Find-Person-and-Find-Group-features
### 3.5 Find Person and Find Group features

#### Implementation

Expand All @@ -382,7 +382,7 @@ The following activity diagram summarizes what happens when a user executes a fi

<puml src="diagrams/FindCommandActivityDiagram.puml" alt="FindCommandActivity" />

### Find-Person
### Find Person

Given below is an example usage scenario and how the Find Person mechanism behaves at each step.

Expand All @@ -407,13 +407,13 @@ The following sequence diagram shows how the Find Person operation works:

</box>

### Find-Group
### Find Group

The Find Group mechanism works like the Find Person mechanism, expect it filters contacts by a different `Predicate<Person>` which will filter for contacts who are a part of the target group.

Additionally, it calls on an extra method `Group#getGroupRemark()`. `Group#getGroupRemarks()` will be called to display the previously saved group remarks to the user.

#### Design-Considerations
#### Design Considerations:

**Aspect: How to handle two similar but different commands (find by group and find by name)**

Expand All @@ -437,7 +437,7 @@ Additionally, it calls on an extra method `Group#getGroupRemark()`. `Group#getGr

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

### 3.6-Group-and-Ungrouping-Person
### 3.6 Group and Ungrouping Person

#### Implementation

Expand All @@ -462,7 +462,7 @@ Ungroup works in the same way as group except the use of Command word ungroup
The following activity diagram summarizes what happens when a user executes a new command:
<puml src="diagrams/GroupPersonActivityDiagram.puml" alt="GroupPersonActivityDiagram"/>

#### Design-Considerations
#### Design Considerations:

**Aspect: Whether to store references in both person and group**

Expand All @@ -476,7 +476,7 @@ The following activity diagram summarizes what happens when a user executes a ne

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

### 3.7-Adding-a-Group-Remark
### 3.7 Adding a Group Remark

#### Implementation

Expand Down Expand Up @@ -518,7 +518,7 @@ The following activity diagram summarizes what happens when a user executes a ne

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

### 3.8-Adding-Time-to-a-Person-or-Group
### 3.8 Adding Time to a Person or Group

#### Implementation

Expand All @@ -533,7 +533,7 @@ The following activity diagram summarizes what happens when a user executes an a

<puml src="diagrams/AddTimeActivityDiagram.puml" alt="AddTimeActivity" />

### Adding-Time-to-a-Person
### Adding Time to a Person

Given below is an example usage scenario and how the Add Time to Person mechanism behaves at each step.

Expand Down Expand Up @@ -561,7 +561,7 @@ The following sequence diagram shows how the Add Time to Person operation works:

</box>

### Adding-Time-to-a-Group
### Adding Time to a Group

The Add Time to Group command mechanism behaves the same as the Add Time to Person command above, except it uses the `Group` class instead of the `Person` class.

Expand Down Expand Up @@ -589,7 +589,7 @@ The Add Time to Group command mechanism behaves the same as the Add Time to Pers

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

### 3.9-Delete-Time-Feature
### 3.9 Delete Time Feature

#### Implementation

Expand All @@ -604,7 +604,7 @@ Below is an activity diagram that illustrates the control flow for Delete Person

<puml src="diagrams/DeletePersonTimeActivityDiagram.puml" alt="DeletePersonTimeActivityDiagram"/>

### Deleting-Time-from-a-Person
### Deleting Time from a Person

The proposed delete time feature is facilitated by the `timeIntervalList` and `Person` class. It accesses the `timeIntervalList` from the `Person` class and deletes a time interval with `Person#deleteFreeTime()`. The operation is exposed in the `Model` interface as `Model#deleteTimeFromPerson`.

Expand All @@ -628,7 +628,7 @@ The following sequence diagram summarizes what happens when a user executes a ne

</box>

### Deleting-Time-from-a-Group
### Deleting Time from a Group

The Delete Time from Group command mechanism behaves the same as the Delete Time from Person command above, except it uses the `Group` class instead of the `Person` class.

Expand Down Expand Up @@ -666,7 +666,7 @@ The Delete Time from Group command mechanism behaves the same as the Delete Time

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

### 3.10-Listing-Time-for-a-Person-or-Group
### 3.10 Listing Time for a Person or Group

#### Implementation

Expand All @@ -685,7 +685,7 @@ The following activity diagram summarizes what happens when a user executes an a

<puml src="diagrams/ListTimeActivityDiagram.puml" alt="ListTimeActivity" />

### Listing-Time-from-a-Person
### Listing Time from a Person

Given below is an example usage scenario and how the List Time from Person mechanism behaves at each step.

Expand All @@ -711,7 +711,7 @@ The following sequence diagram shows how the List Time from Person operation wor

</box>

### Listing-Time-from-a-Group
### Listing Time from a Group

The List Time from Group command mechanism behaves the same as the List Time from Person command above, except it uses the `Group` class instead of the `Person` class.

Expand Down Expand Up @@ -739,7 +739,7 @@ The List Time from Group command mechanism behaves the same as the List Time fro

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

### 3.11-Find-Free-Time
### 3.11 Find Free Time
#### Implementation

The FindFreeTime mechanism is facilitated by the `Model`, `Group` and `Person` class. It retrieves `Group` from `Model` to find a free time between group members in `listOfGroupMates` in `Group` with a duration specified, `Duration`. The operation is exposed to `Model` interface as `Model#findGroup`.
Expand All @@ -759,9 +759,9 @@ The following activity diagram summarizes what happens when a user executes a Fi
<puml src="diagrams/FindFreeTimeActivityDiagram.puml" alt="FindFreeTimeActivityDiagram" />
--------------------------------------------------------------------------------------------------------------------

## 4-Planned-Enhancements
## 4 Planned Enhancements

### 4.1-Undo/redo-feature
### 4.1 Undo/redo feature

Currently, we do not have undo and redo feature which open rooms for users to accidentally have typos in their command messages, causing certain unwanted commands to be executed. This can cause an array of problems,
from deleting important data along with the contact, to inconvenience for the users themselves. As such, we plan to implement undo and redo feature in the future to provide a better user experience for our users.
Expand All @@ -785,7 +785,7 @@ In the `addmeeting` feature, user can add free time intervals to a group. Curren

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

## 5-Documentation_logging_testing_configuration_dev-ops
## 5 Documentation logging testing configuration dev-ops

* [Documentation guide](Documentation.md)
* [Testing guide](Testing.md)
Expand All @@ -795,7 +795,7 @@ In the `addmeeting` feature, user can add free time intervals to a group. Curren

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

## 6-Appendix-Requirements
## 6 Appendix Requirements

### 6.1. Product scope

Expand Down Expand Up @@ -1148,7 +1148,7 @@ Use Case ends.

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

## 7-Appendix-Instructions-for-manual-testing
## 7 Appendix Instructions for manual testing

Given below are instructions to test the app manually.

Expand Down Expand Up @@ -1451,7 +1451,7 @@ testers are expected to do more *exploratory* testing.

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

## 8-Appendix-Effort
## 8 Appendix Effort

ProjectPRO is a project built upon AB3, which was built out of the SE-EDU initiative. Our group has been actively working on ProjectPRO this semester, meeting regularly to discuss about our application to meet deadlines punctually.

Expand Down
14 changes: 7 additions & 7 deletions docs/_markbind/layouts/default.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,13 +30,13 @@
* [Quick Start]({{ baseUrl }}/UserGuide.html#quick-start)
* [Features]({{ baseUrl }}/UserGuide.html#features)
* [Developer Guide]({{ baseUrl }}/DeveloperGuide.html) :expanded:
* [Introduction]({{ baseUrl }}/DeveloperGuide.html#1-Introduction)
* [Design]({{ baseUrl }}/DeveloperGuide.html#2-Design)
* [Implementation]({{ baseUrl }}/DeveloperGuide.html#3-Implementation)
* [Planned Enhancements]({{ baseUrl }}/DeveloperGuide.html#5-Documentation_logging_testing_configuration_dev-ops)
* [Requirements]({{ baseUrl }}/DeveloperGuide.html#6-Appendix-Requirements)
* [Manual Testing]({{ baseUrl }}/DeveloperGuide.html#7-Appendix-Instructions-for-manual-testing)
* [Effort]({{ baseUrl }}/DeveloperGuide.html#8-Appendix-Effort)
* [Introduction]({{ baseUrl }}/DeveloperGuide.html#1-introduction)
* [Design]({{ baseUrl }}/DeveloperGuide.html#2-design)
* [Implementation]({{ baseUrl }}/DeveloperGuide.html#3-implementation)
* [Planned Enhancements]({{ baseUrl }}/DeveloperGuide.html#5-documentation-logging-testing-configuration-dev-ops)
* [Requirements]({{ baseUrl }}/DeveloperGuide.html#6-appendix-requirements)
* [Manual Testing]({{ baseUrl }}/DeveloperGuide.html#7-appendix-instructions-for-manual-testing)
* [Effort]({{ baseUrl }}/DeveloperGuide.html#8-appendix-effort)
* [About us] ({{ baseUrl }}/AboutUs.html)
</site-nav>
</div>
Expand Down

0 comments on commit a97292e

Please sign in to comment.