Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update architecture diagrams, UI structure, user stories, use cases and NFRs #108

Merged
merged 41 commits into from
Oct 23, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
41 commits
Select commit Hold shift + click to select a range
6d7f6c8
Update AboutUs.adoc for team members to commit
tanlk99 Sep 30, 2019
9f788b0
Add a newline in AboutUs.adoc
tanlk99 Sep 30, 2019
079a27c
Update Developer Guide
tanlk99 Sep 30, 2019
09d9005
Add more use cases to Developer Guide
tanlk99 Sep 30, 2019
a48fdc0
Fix missing endline
tanlk99 Sep 30, 2019
1e72d82
Merge remote-tracking branch 'upstream/master'
tanlk99 Sep 30, 2019
5b926a4
Update various docs to display TagLine
tanlk99 Oct 3, 2019
139c96f
Add placeholder image
tanlk99 Oct 3, 2019
927d939
Merge remote-tracking branch 'upstream/master'
tanlk99 Oct 3, 2019
36492c5
Fix minor typo in user guide
tanlk99 Oct 3, 2019
5a8db7c
Update Tagline to TagLine
tanlk99 Oct 3, 2019
e11a749
Update team name
tanlk99 Oct 3, 2019
e244f51
Merge remote-tracking branch 'upstream/master'
tanlk99 Oct 3, 2019
66f0f5f
Merge remote-tracking branch 'upstream/master'
tanlk99 Oct 3, 2019
5472d71
Fix some typos in user guide and developer guide
tanlk99 Oct 3, 2019
abbc444
Merge remote-tracking branch 'upstream/master'
tanlk99 Oct 3, 2019
3677f7b
Merge remote-tracking branch 'upstream/master'
tanlk99 Oct 8, 2019
ca57720
Merge remote-tracking branch 'upstream/master'
tanlk99 Oct 9, 2019
3ce2c5a
Merge remote-tracking branch 'upstream/master'
tanlk99 Oct 12, 2019
c85f6c9
Merge remote-tracking branch 'upstream/master'
tanlk99 Oct 14, 2019
f05ab9f
Merge remote-tracking branch 'upstream/master'
tanlk99 Oct 16, 2019
27fa3fd
Merge remote-tracking branch 'upstream/master'
tanlk99 Oct 16, 2019
2086fda
Merge remote-tracking branch 'upstream/master'
tanlk99 Oct 16, 2019
44c548f
Merge remote-tracking branch 'upstream/master'
tanlk99 Oct 16, 2019
4866047
Merge remote-tracking branch 'upstream/master'
tanlk99 Oct 17, 2019
11174dd
Merge remote-tracking branch 'upstream/master'
tanlk99 Oct 17, 2019
17493e3
Merge remote-tracking branch 'upstream/master'
tanlk99 Oct 17, 2019
32532fb
Merge remote-tracking branch 'upstream/master'
tanlk99 Oct 17, 2019
3c666db
Merge remote-tracking branch 'upstream/master'
tanlk99 Oct 17, 2019
1f6320b
Merge remote-tracking branch 'upstream/master'
tanlk99 Oct 17, 2019
4ad1282
Update user stories, use cases and NFRs based on feedback
tanlk99 Oct 21, 2019
c5bf947
Merge remote-tracking branch 'upstream/master'
tanlk99 Oct 22, 2019
208b790
Merge branch 'master' into branch-update-DG
tanlk99 Oct 22, 2019
021f5f6
Update UI section of Developer Guide
tanlk99 Oct 22, 2019
e27254f
Update links in Developer Guide
tanlk99 Oct 22, 2019
04f0b83
Beautify class diagram
tanlk99 Oct 22, 2019
04cac86
Crop top margin of UI class diagram
tanlk99 Oct 22, 2019
873913f
Remove extra words
tanlk99 Oct 22, 2019
0da3e7c
Switch use case categories to bold font
tanlk99 Oct 22, 2019
3487b9c
Update architecture diagrams
tanlk99 Oct 23, 2019
c00e78d
Fix error in sequence diagram
tanlk99 Oct 23, 2019
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
52 changes: 33 additions & 19 deletions docs/DeveloperGuide.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ The *_Architecture Diagram_* given above explains the high-level design of the A
The `.puml` files used to create diagrams in this document can be found in the link:{repoURL}/docs/diagrams/[diagrams] folder.
Refer to the <<UsingPlantUml#, Using PlantUML guide>> to learn how to create and edit diagrams.

`Main` has two classes called link:{repoURL}/src/main/java/seedu/address/Main.java[`Main`] and link:{repoURL}/src/main/java/seedu/address/MainApp.java[`MainApp`]. It is responsible for,
`Main` has two classes called link:{repoURL}/src/main/java/tagline/Main.java[`Main`] and link:{repoURL}/src/main/java/tagline/MainApp.java[`MainApp`]. It is responsible for,

* At app launch: Initializes the components in the correct sequence, and connects them up with each other.
* At shut down: Shuts down the components and invokes cleanup method where necessary.
Expand Down Expand Up @@ -66,7 +66,7 @@ image::LogicClassDiagram.png[]

The _Sequence Diagram_ below shows how the components interact with each other for the scenario where the user issues the command `delete 1`.

.Component interactions for `delete 1` command
.Component interactions for `contact delete 1` command
image::ArchitectureSequenceDiagram.png[]

The sections below give more details of each component.
Expand All @@ -77,15 +77,22 @@ The sections below give more details of each component.
.Structure of the UI Component
image::UiClassDiagram.png[]

*API* : link:{repoURL}/src/main/java/seedu/address/ui/Ui.java[`Ui.java`]
*API* : link:{repoURL}/src/main/java/tagline/ui/Ui.java[`Ui.java`]

The UI consists of a `MainWindow` that is made up of parts e.g.`CommandBox`, `ResultDisplay`, `PersonListPanel`, `StatusBarFooter` etc. All these, including the `MainWindow`, inherit from the abstract `UiPart` class.
The UI consists of a `MainWindow` which is made up of four parts, i.e. `StatusBarFooter`, `HelpWindow`, `ChatPane` and `ResultPane`. In particular,

The `UI` component uses JavaFx UI framework. The layout of these UI parts are defined in matching `.fxml` files that are in the `src/main/resources/view` folder. For example, the layout of the link:{repoURL}/src/main/java/seedu/address/ui/MainWindow.java[`MainWindow`] is specified in link:{repoURL}/src/main/resources/view/MainWindow.fxml[`MainWindow.fxml`]
* The `ChatPane` manages text interaction with the user. It uses `CommandBox` to read commands and `DialogBox` to display commands and feedback.

* The `ResultPane` displays a relevant `ResultView` based on the command entered.

All these classes, including the `MainWindow` itself, inherit from the abstract `UiPart` class.

The `UI` component uses JavaFx UI framework. The layout of these UI parts are defined in matching `.fxml` files that are in the `src/main/resources/view` folder. For example, the layout of the link:{repoURL}/src/main/java/tagline/ui/MainWindow.java[`MainWindow`] is specified in link:{repoURL}/src/main/resources/view/MainWindow.fxml[`MainWindow.fxml`]

The `UI` component,

* Executes user commands using the `Logic` component.
* Displays feedback and updates the `ResultPane` using `CommandResult` in the `Logic` component.
* Listens for changes to `Model` data so that the UI can be updated with the modified data.

[[Design-Logic]]
Expand All @@ -96,7 +103,7 @@ The `UI` component,
image::LogicClassDiagram.png[]

*API* :
link:{repoURL}/src/main/java/seedu/address/logic/Logic.java[`Logic.java`]
link:{repoURL}/src/main/java/tagline/logic/Logic.java[`Logic.java`]

. `Logic` uses the `AddressBookParser` class to parse the user command.
. This results in a `Command` object which is executed by the `LogicManager`.
Expand All @@ -117,7 +124,7 @@ NOTE: The lifeline for `DeleteCommandParser` should end at the destroy marker (X
.Structure of the Model Component
image::ModelClassDiagram.png[]

*API* : link:{repoURL}/src/main/java/seedu/address/model/Model.java[`Model.java`]
*API* : link:{repoURL}/src/main/java/tagline/model/Model.java[`Model.java`]

The `Model`,

Expand All @@ -137,7 +144,7 @@ image:BetterModelClassDiagram.png[]
.Structure of the Storage Component
image::StorageClassDiagram.png[]

*API* : link:{repoURL}/src/main/java/seedu/address/storage/Storage.java[`Storage.java`]
*API* : link:{repoURL}/src/main/java/tagline/storage/Storage.java[`Storage.java`]

The `Storage` component,

Expand All @@ -147,7 +154,7 @@ The `Storage` component,
[[Design-Commons]]
=== Common classes

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

== Implementation

Expand Down Expand Up @@ -309,17 +316,17 @@ Priorities: High (must have) - `* * \*`, Medium (nice to have) - `* \*`, Low (un
|`* * *` |user |view all notes according to tags |view only notes related to an issue
|`* * *` |user |view all notes related to a contact |discuss these notes with them when I meet them
|`* * *` |user |view all notes related to a group |
|`* *` |user who works with the same person in multiple groups |view all notes related to these groups as well when querying for the person |
|`* *` |user |view all notes related to groups as well when querying for a person |view all information associated with that person at a glance
|`* *` |user with many friends with the same name |be able to differentiate them easily |locate a specific person
|`* *` |user |archive old notes |keep them while not cluttering my app page
|`* *` |clumsy user |export all my data and create a backup |keep my data somewhere safe
|`* *` |forgetful user |get suggestions when typing commands |do not need to memorize commands
|`* *` |user |export all my data and create a backup |keep my data somewhere safe
|`* *` |new user |get suggestions when typing commands |do not need to memorize commands
|`*` |user |embed links in my notes |directly access relevant webpages
|`*` |user |associate photos with notes |organize my photos better
|`*` |user |associate photos with notes |store and view related photos and notes together
|`*` |user |add text styles |personalize my entries
|`*` |user |colour entries with the same tag |organize my notes better
|`*` |clumsy user |prompted for correction when I make typos |fix my command without re-typing it entirely
|`*` |clumsy user |prompted for confirmation when I delete or edit notes or contacts |avoid making irreversible mistakes
|`*` |user |prompted for correction when I make typos |fix my command without re-typing it entirely
|`*` |user |prompted for confirmation when I delete or edit notes or contacts |avoid making irreversible mistakes
|`*` |user |lock notes with authentication |keep my notes secure
|=======================================================================

Expand All @@ -328,6 +335,12 @@ Priorities: High (must have) - `* * \*`, Medium (nice to have) - `* \*`, Low (un

(For each of the use cases below, the *System* is `TagLine` and the *Actor* is the `user`, unless specified otherwise)

The use cases are divided into categories using the following naming convention:

* *UCC* for contact-related use cases
* *UCN* for note-related use cases
* *UCE* for error handling use cases.

[discrete]
=== UCC01 Add person

Expand All @@ -347,7 +360,7 @@ Use case ends.
* 1b. [underline]#UCE02 Missing compulsory fields#

[discrete]
=== UCC02 Add person
=== UCC02 Add group

*MSS*

Expand All @@ -365,10 +378,10 @@ Use case ends.
* 1b. [underline]#UCE02 Command with missing compulsory fields#
+
[none]
* 1c. User inputs a group that already exists.
* 1c. User inputs a group with the same members as one that already exists.
+
[none]
** 1c1. TagLine adds the alternate name to the group.
** 1c1. TagLine adds the new group name as an alias to the currently existing group.
+
[none]
Use case ends.
Expand Down Expand Up @@ -495,8 +508,9 @@ Use case ends.

. Should work on any <<mainstream-os,mainstream OS>> as long as it has Java `11` or above installed.
. Should be able to hold up to 1000 contacts without a noticeable sluggishness in performance for typical usage.
. Should be able to display and navigate large text files without decrease in performance
. Should be able to display large amounts of text quickly, i.e. up to 10MB of text data within 2 seconds
. 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.
. Command syntax should not exceed 10 distinct terms, in order to avoid user confusion.

[appendix]
== Glossary
Expand Down
Binary file modified docs/images/ArchitectureDiagram.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/images/ArchitectureSequenceDiagram.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/images/UiClassDiagram.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.