Skip to content

[CS2113T-T12-4] Scheduler--;#32

Open
Colin386 wants to merge 753 commits into
nus-cs2113-AY2021S1:masterfrom
AY2021S1-CS2113T-T12-4:master
Open

[CS2113T-T12-4] Scheduler--;#32
Colin386 wants to merge 753 commits into
nus-cs2113-AY2021S1:masterfrom
AY2021S1-CS2113T-T12-4:master

Conversation

@Colin386

@Colin386 Colin386 commented Oct 1, 2020

Copy link
Copy Markdown

Scheduler--; (S--) is a desktop app for managing deadlines from different sources. The user will use a Command Line Interface to control it. It is specially designed for Computing students who are comfortable in using CLI and have Git project deadlines as well as consolidated Zoom session links due which will suit home based learning in this COVID period.

@iamchenjiajun iamchenjiajun left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Overall well done! Some parts could be improved but I like the Architecture section where the diagrams were clearly used to explain the interactions between the components.

Comment thread docs/DeveloperGuide.md Outdated

#### Command Component

![Diagram for commmand](./diagrams/Command.jpg)

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Was it necessary to show all the Command classes?

According to the CS2113 website,

Omit repetitive details e.g., a class diagram can show only a few representative ones in place of many similar classes (note how the AB3 Logic class diagram shows concrete *Command classes).

Comment thread docs/DeveloperGuide.md

API: [Command.java](https://github.com/AY2021S1-CS2113T-T12-4/tp/blob/master/src/main/java/seedu/duke/command/Command.java)
1. `Parser` class to parse the user command
1. This results in a `Command` object executed by the `Parser`

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is the Command being executed by the Parser or Duke? According to one of the sequence diagrams below, it seems that Duke calls the execute() method on Command.

image

Comment thread docs/DeveloperGuide.md
The repeat command first locates the event that is to be repeated along with its starting date.
Next, it creates an empty ArrayList called `repeatEventList` that will contain all repeated events.

![Sequence Diagram for Repeat Command step 1](./diagrams/repeatstep1.jpg)

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are the arrow heads and tails supposed to connect here?

image

Comment thread docs/DeveloperGuide.md

The following sequence diagram shows how the check operation works:

![Sequence Diagram for CheckCommand](./diagrams/CheckCommand_seq_diagram.jpg)

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe a more descriptive return value can be written here instead of c.

image

Comment thread docs/DeveloperGuide.md

This sequence diagram shows how the `getDate` method functions:

![Sequence Diagram for getDate](./diagrams/getDate_seq_diagram.jpg)

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could this diagram be split into smaller parts? Especially with so many sections of the alt frames, it makes the diagram a little difficult to comprehend.

@Artemis-Hunt Artemis-Hunt left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good architecture diagrams. Could consider using more sequence diagrams in the earlier half. Later half could use more class diagrams. Good mix of both ensures maximum clarity

Comment thread docs/DeveloperGuide.md
It is also responsible for printing messages from commands and exception messages.

#### Parser Component
![Parser diagram](./diagrams/Parser_diagram.jpg)

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Perhaps a sequence diagram would be helpful here. The current diagram does not show where the Command goes to, and as such does not match the explanation given below.

Comment thread docs/DeveloperGuide.md
The `Parser` object uses its `parse` method to parse inputs passed to it from `Ui`. This method returns a `Command` object to be executed by `Duke`.

#### UserData Component
![UserData diagram](./diagrams/UserData_diagram.jpg)

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Indicating multiplicities may be helpful. Also, it may be better to omit the aggregation relationship, according to the textbook, since it does not really add anything of value in my opinion.
image

Comment thread docs/DeveloperGuide.md Outdated
- does not depend on the other components.

#### Storage Component
![Diagram for storage class](./diagrams/classDiagramStorage.jpg)

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The diagram implies that storage knows about UI but UI does not know about storage. Should change to double-headed arrow if both are aware of each other, or reverse the direction of the arrow if UI knows about Storage.
Also, consider replacing the 4 classnames connected to Storage with the actual classnames. For the class attribute name, consider using the standard notation of name:type = default-value e.g. name:String = personal.txt. Unless the 4 classes are not actually classes, in which case they should not be shown on a class diagram as it is non-standard notation.

Consider having some multiplicities in general.

Storage to StorageParser might be better represented by a solid line, since it seems that Storage cannot function fully without the StorageParser i.e. the dependency is not temporary.

Comment thread docs/DeveloperGuide.md
- is able to store all event and goal information onto the computer
- is able to load all event and goal information from the computer into the program

![Diagram for storageOverall](./diagrams/storageOverall.jpg)

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Consider using sequence diagrams instead of non-standard diagram. More chance to showcase diagramming skills is always good. See below: some other type used ... UML ... worked just as well.
image

Comment thread docs/DeveloperGuide.md Outdated
Comment on lines +172 to +182
1. Description
2. Description and date
3. Description, date and time

The zoom event can contain the following fields:
1. Description and link
2. Description, link, date and time

The Timetable event can contain the following fields:
1. Description, date and time
2. Description, location, date and time

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Consider using class/object diagram to represent the attributes of each event

Comment thread docs/DeveloperGuide.md

The following sequence diagram shows how the whole add feature works: <br>

![Sequence Diagram for Add Command](./diagrams/addCommand.jpg)

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Consider adding details about what is being returned. The current diagram implies that addCommand, for example, is returning void, which is probably not the case.

Class names should have a capital first letter i.e. AddCommand and not addCommand.

Consider using a general addEvent and general :Event object to represent the 3 classes, as the method calls and invocations are identical except for the names of the object/method. (e.g. diagram drawn in week 10 lecture, where Cat and Dog were represented by a single Animal class)

@jerroldlam jerroldlam left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Overall still readable but some diagrams can be improved to enhance readability of the developer guide! Overall a very decent effort

Comment thread docs/DeveloperGuide.md Outdated
- does not depend on the other components.

#### Storage Component
![Diagram for storage class](./diagrams/classDiagramStorage.jpg)

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

image
Should the classnames be with colon and underline in the titles to follow the UML notation? Also, do consider using all sharp bends or rounded bends for the arrows for consistency.

Comment thread docs/DeveloperGuide.md
- is able to store all event and goal information onto the computer
- is able to load all event and goal information from the computer into the program

![Diagram for storageOverall](./diagrams/storageOverall.jpg)

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

image
In addition to the above comment, you can consider finding a common place to label the arrows, ie label all below / on top of the arrow as the current diagram has labels on top of and on the arrows itself. This would make the diagram look neater for the reader.

Also it is not immediately clear which you are referring to, loading or saving. Perhaps putting the loading or saving on top in the middle would help with this as putting it in the top left makes it easier to miss

Comment thread docs/DeveloperGuide.md

The following sequence diagram shows how the whole add feature works: <br>

![Sequence Diagram for Add Command](./diagrams/addCommand.jpg)

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

image

Should it be AddCommand instead?

Comment thread docs/DeveloperGuide.md

The following sequence diagram shows the overall process of repeating an event:

![Sequence Diagram for Repeat Command](./diagrams/RepeatScenario.jpg)

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

image

For the left most circle, should the return be included? The other return lines do not have them.

For the 2 right-most circles, the lifelines come out of nowhere and have no constructor for this diagram. Should they have more information about how they are initialized as there is no indication of what classes they are. This would help greatly when a developer looks at the overall picture instead of needing to look at the references.

Should the alt box be opt instead?

Comment thread docs/DeveloperGuide.md Outdated
Given below is how the deadline command behave: <br>

<p align="center">
<img width="414" height="562" src="./diagrams/DeadlineScenario.jpg">

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

image
should the states in the state diagrams be full boxes instead of the half boxes here?

Comment thread docs/DeveloperGuide.md

<ul>
<li>has a need to organise events using scheduler</li>
<li>prefer desktop application</li>

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

should this be "prefers"?

Comment thread docs/DeveloperGuide.md
|v1.0|university student having projects|be informed of the goals of my project|keep track of the project details|
|v1.0|university student|customise repeated task|set events like tutorials to weekly|
|v1.0|teacher|organise all my zoom links for my classes|it can be easily accessible.|
|v1.0|user|see the events that I have created|refer to them when I forget|

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think it would be best to specify user of your app as user is a really broad term and can refer to a user of anything

@OngDeZhi OngDeZhi left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Overall good job! I think maybe just a minor issue with the arrows not connecting, otherwise you guys did a great job making the diagram easy to read!

Comment thread docs/DeveloperGuide.md Outdated

#### Command Component

![Diagram for commmand](./diagrams/Command.jpg)

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

image

You may want to consider using XYZCommand to represent all of these classes, it is a little lengthy.

Comment thread docs/DeveloperGuide.md

Steps 2 to 5 are repeated up till the number specified by `count` as shown in the loop.

![Sequence Diagram for Repeat Command step 6](./diagrams/repeatstep6.jpg)

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

image

The arrows (at the end) are supposed to be connected I think? May want to consider joining it :)

Comment thread docs/DeveloperGuide.md Outdated

The following sequence diagram shows how the deadline operation works: <br>

![Sequence Diagram for Deadline Command](./diagrams/DeadlineSequenceDiagram.jpg)

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

image

You may want to consider ending the dotted line before the cross.

Comment thread docs/DeveloperGuide.md

The following sequence diagram shows how the `list zoom` command is parsed:

![Sequence diagram for parsing list command](./diagrams/ListParseSequenceDiagram.jpg)

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

image

Perhaps instead of using ref block inside the picture you can use other representation to reduce confusion with the developer.

Comment thread docs/DeveloperGuide.md
The repeat command first locates the event that is to be repeated along with its starting date.
Next, it creates an empty ArrayList called `repeatEventList` that will contain all repeated events.

![Sequence Diagram for Repeat Command step 1](./diagrams/repeatstep1.jpg)

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

image

Consider connecting the arrows to the activation bar.

ninggggx99 and others added 25 commits November 8, 2020 03:09
Add logging for Deadline, Note, Reminder, View
Blank string saved to indicate no location.
Used for checking empty location details
Update developer guide with diagrams for list and calendar
…oes not match any event and detect missing event type or event index

Add Junit for done, undone, delete
Logging now will only print to text file rather than the terminal
ninggggx99 and others added 30 commits November 13, 2020 21:14
# Conflicts:
#	docs/UserGuide.md
Fix command summary table border
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

10 participants