3
3
title : " Developer Guide"
4
4
pageNav : 3
5
5
---
6
+ <bottom-head >
7
+ <link rel="stylesheet" href="stylesheets/userguide.css">
8
+ </bottom-head >
6
9
7
10
# SEPlendid Developer Guide
8
11
9
- <!-- * Table of Contents -->
10
- <page-nav-print />
12
+ ## 1. About SEPlendid
13
+
14
+ SEPlendid is a Course Mapping System that allows NUS Computing students to seamlessly plan for their overseas courses,
15
+ for the highly coveted Student Exchange Programmes (SEP). As a student, you can view and find course mappings in order
16
+ to plan for your overseas studies without the hassle of creating complex Excel sheets. Utilise SEPlendid's course
17
+ mapping function in order to quickly find possible mappings for certain courses you want to map. Finally, SEPlendid's
18
+ note-taking system will assist you in organising your important information you will need for planning for your courses.
19
+
20
+ ## 2. Table of Contents
21
+ <div class = " toc " >
22
+
23
+ 1 . [ About SEPlendid] ( #1-about-seplendid )
24
+ 2 . [ Table of Contents] ( #2-table-of-contents )
25
+ 3 . [ Setting up, Getting Started] ( #3-setting-up-getting-started )
26
+ 4 . [ Design] ( #4-design )
27
+ - 4.1 [ Architecture] ( #4-1-architecture )
28
+ - 4.2 [ UI Component] ( #4-2-ui-component )
29
+ - 4.3 [ SEPlendidLogic Component] ( #4-3-seplendidlogic-component )
30
+ - 4.4 [ Model Component] ( #4-4-model-component )
31
+ - 4.5 [ Storage Component] ( #4-5-storage-component )
32
+ - 4.6 [ Common Classes] ( #4-6-common-classes )
33
+ 5 . [ Implementation] ( #5-implementation )
34
+ - 5.1 [ Parser to Handle Commands with Optional Arguments] ( #5-1-parser-to-handle-commands-with-optional-arguments )
35
+ - 5.2 [ Mapping Feature] ( #5-2-mapping-feature )
36
+ - 5.3 [ Sorting Feature] ( #5-3-sorting-feature )
37
+ - 5.4 [ University Feature] ( #5-4-university-feature )
38
+ - 5.5 [[ Proposed] Data Archiving] ( #5-5-proposed-data-archiving )
39
+ 6 . [ Other Helpful Guides] ( #6-other-helpful-guides )
40
+ 7 . [ Effort] ( #7-effort )
41
+ - 7.1 [ Morphing of AB3 to SEPlendid] ( #7-1-morphing-of-ab3-to-seplendid )
42
+ - 7.2 [ Redesigning the UI] ( #7-2-redesigning-the-ui )
43
+ 8 . [ Requirements] ( #8-requirements )
44
+ - 8.1 [ Product Scope] ( #8-1-product-scope )
45
+ - 8.2 [ User Stories] ( #8-2-user-stories )
46
+ - 8.3 [ Use Cases] ( #8-3-use-cases )
47
+ - 8.4 [ Non-Functional Requirements] ( #8-4-non-functional-requirements )
48
+ - 8.5 [ Glossary] ( #8-5-glossary )
49
+ 9 . [ Instructions for Manual Testing] ( #9-instructions-for-manual-testing )
50
+ - 9.1 [ Launch and Shutdown] ( #9-1-launch-and-shutdown )
51
+ - 9.2 [ Local Course] ( #9-2-local-course )
52
+ - 9.3 [ Partner Course] ( #9-3-partner-course )
53
+ - 9.4 [ University] ( #9-4-university )
54
+ - 9.5 [ Mapping] ( #9-5-mapping )
55
+ - 9.6 [ Note] ( #9-6-note )
56
+
57
+ </div >
11
58
12
59
--------------------------------------------------------------------------------------------------------------------
13
60
14
- ## ** Acknowledgements**
15
-
16
- _ { list here sources of all reused/adapted ideas, code, documentation, and third-party libraries -- include links to the original source as well }_
17
-
18
- --------------------------------------------------------------------------------------------------------------------
19
-
20
- ## ** Setting up, getting started**
61
+ ## 3. Setting up, Getting Started
21
62
22
63
Refer to the guide [ _ Setting up and getting started_ ] ( SettingUp.md ) .
23
64
24
65
--------------------------------------------------------------------------------------------------------------------
25
66
26
- ## ** Design**
67
+ ## 4. Design
27
68
28
- ### Architecture
69
+ ### 4.1 Architecture
29
70
30
71
<puml src =" diagrams/ArchitectureDiagram.puml " width =" 280 " />
31
72
@@ -66,7 +107,7 @@ For example, the `SeplendidLogic` component defines its API in the `SeplendidLog
66
107
67
108
The sections below give more details of each component.
68
109
69
- ### UI component
110
+ ### 4.2 UI Component
70
111
71
112
** API** : [ ` Ui.java ` ] ( https://github.com/AY2324S1-CS2103T-W10-2/tp/blob/master/src/main/java/seedu/address/ui/Ui.java )
72
113
@@ -83,7 +124,7 @@ The `UI` component,
83
124
* keeps a reference to the ` SeplendidLogic ` component, because the ` UI ` relies on the ` SeplendidLogic ` to execute commands.
84
125
* depends on some classes in the ` Model ` component, as it displays ` LocalCourse ` , ` PartnerCourse ` , ` University ` , ` Mapping ` , and ` Note ` objects residing in the ` Model ` .
85
126
86
- ### SeplendidLogic component
127
+ ### 4.3 SeplendidLogic Component
87
128
88
129
** API** : [ ` SeplendidLogic.java ` ] ( https://github.com/AY2324S1-CS2103T-W10-2/tp/blob/master/src/main/java/seedu/address/logic/SeplendidLogic.java )
89
130
@@ -115,7 +156,13 @@ How the parsing works:
115
156
* When called upon to parse a user command, the ` SeplendidParser ` class creates an ` XYZCommandParser ` (` XYZ ` is a placeholder for the specific command name e.g., ` LocalCourseAddCommandParser ` ) which uses the other classes shown above to parse the user command and create a ` XYZCommand ` object (e.g., ` LocalCourseAddCommand ` ) which the ` SeplendidParser ` returns back as a ` Command ` object.
116
157
* All ` XYZCommandParser ` classes (e.g., ` LocalCourseAddCommandParser ` , ` NoteDeleteCommandParser ` , ...) inherit from the ` Parser ` interface so that they can be treated similarly where possible e.g, during testing.
117
158
118
- ### Model component
159
+ ### 4.4 Model Component
160
+ ** API** : [ ` Model.java ` ] ( https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/model/Model.java )
161
+
162
+ <puml src =" diagrams/ModelClassDiagram.puml " width =" 450 " />
163
+
164
+
165
+ The ` Model ` component,
119
166
120
167
** API
121
168
** : [ ` SeplendidModel.java ` ] ( https://github.com/AY2324S1-CS2103T-W10-2/tp/blob/master/src/main/java/seedu/address/model/SeplendidModel.java )
@@ -139,7 +186,7 @@ The `SeplendidModel` component,
139
186
* does not depend on any of the other three components (as the ` SeplendidModel ` represents data entities of the domain,
140
187
they should make sense on their own without depending on other components)
141
188
142
- ### Storage component
189
+ ### 4.5 Storage Component
143
190
144
191
** API
145
192
** : [ ` Storage.java ` ] ( https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/storage/Storage.java )
@@ -156,17 +203,16 @@ The `Storage` component,
156
203
* depends on some classes in the ` SeplendidModel ` component (because the ` Storage ` component's job is to save/retrieve
157
204
objects that belong to the ` SeplendidModel ` ).
158
205
159
- ### Common classes
206
+ ### 4.6 Common Classes
160
207
161
208
Classes used by multiple components are in the ` seedu.addressbook.commons ` package.
162
209
163
210
--------------------------------------------------------------------------------------------------------------------
164
211
165
- ## ** Implementation**
212
+ ## 5. Implementation
166
213
167
214
This section describes some noteworthy details on how certain features are implemented.
168
-
169
- ### Parser to handle both commands with and without arguments
215
+ ### 5.1 Parser to Handle Commands with Optional Arguments
170
216
171
217
The below diagram gives a high-level overview on how the ` SeplendidParser ` parses a command from our command set:
172
218
<puml src =" diagrams/SeplendidParserActivityDiagram.puml " alt =" SeplendidParserActivityDiagram " />
@@ -234,7 +280,7 @@ Each data type has different attributes
234
280
that can be used for sorting.
235
281
--------------------------------------------------------------------------------------------------------------------
236
282
237
- ### Mapping feature
283
+ ### 5.2 Mapping Feature
238
284
239
285
The mapping ` list/add/delete ` mechanism is facilitated by ` MappingCatalogue ` . It stores ` Mapping ` objects which
240
286
contain the ` LocalCode ` , ` UniversityName ` , ` PartnerCode ` and ` MappingMiscInformation ` objects. This means that
@@ -312,9 +358,7 @@ non-empty, the deletion will be performed, otherwise a `CommandException` will b
312
358
done correctly.
313
359
314
360
--------------------------------------------------------------------------------------------------------------------
315
-
316
- ### Sorting feature
317
-
361
+ ### 5.3 Sorting Feature
318
362
#### Implementation
319
363
320
364
#### Design considerations
@@ -332,7 +376,7 @@ non-empty, the deletion will be performed, otherwise a `CommandException` will b
332
376
333
377
334
378
--------------------------------------------------------------------------------------------------------------------
335
- ### University Feature
379
+ ### 5.4 University Feature
336
380
337
381
The university ` list/search/sort ` mechanism is facilitated by ` UniversityCatalogue ` . It stores ` University ` objects
338
382
which contain the ` UniversityName ` object. This means that ` University ` is dependent on ` University ` class.
@@ -385,14 +429,14 @@ The following activity diagram summarizes what happens when a user executes a ne
385
429
386
430
_ {more aspects and alternatives to be added}_
387
431
388
- ### \[ Proposed\] Data archiving
432
+ ### 5.5 \[ Proposed\] Data Archiving
389
433
390
434
_ {Explain here how the data archiving feature will be implemented}_
391
435
392
436
393
437
--------------------------------------------------------------------------------------------------------------------
394
438
395
- ## ** Documentation, logging, testing, configuration, dev-ops **
439
+ ## 6. Other helpful Guides
396
440
397
441
* [ Documentation guide] ( Documentation.md )
398
442
* [ Testing guide] ( Testing.md )
@@ -402,16 +446,16 @@ _{Explain here how the data archiving feature will be implemented}_
402
446
403
447
--------------------------------------------------------------------------------------------------------------------
404
448
405
- ## Effort
449
+ ## 7. Effort
406
450
407
451
The implementation of SEPlendid proved to be a challenging endeavor. Below is the highlights of the extensive effort our
408
452
team dedicated to developing SEPlendid, along with a mention of some of the challenges we encountered along the way.
409
453
410
- ### Morphing of AB3 to SEPlendid
454
+ ### 7.1 Morphing of AB3 to SEPlendid
411
455
412
456
A large portion of code had to be refactored to morph AB3 to SEPlendid.
413
457
414
- ### Redesigning the UI
458
+ ### 7.2 Redesigning the UI
415
459
416
460
In recognising the significance of minimalism for achieving simplicity, we embarked on the task of redesigning the
417
461
original AB3 UI into our custom SEPlendid interface. The endeavor underscored the essential balance between simplicity
@@ -423,9 +467,9 @@ requirements of a student exchange program mapping tool.
423
467
424
468
--------------------------------------------------------------------------------------------------------------------
425
469
426
- ## ** Appendix: Requirements**
470
+ ## 8. Requirements
427
471
428
- ### Product scope
472
+ ### 8.1 Product Scope
429
473
430
474
** Target user profile** :
431
475
@@ -448,7 +492,7 @@ SEPlendid aims to provide an advanced search, allowing users to search for mappi
448
492
as partner universities' course names, and NUS course codes. We aim to also include features such as the ability to
449
493
contribute course mappings, and note-taking.
450
494
451
- ### User stories
495
+ ### 8.2 User Stories
452
496
453
497
Priorities: High (must have) - ` * * * ` , Medium (nice to have) - ` * * ` , Low (unlikely to have) - ` * `
454
498
@@ -481,7 +525,7 @@ Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unli
481
525
482
526
* {More to be added}*
483
527
484
- ### Use cases
528
+ ### 8.3 Use Cases
485
529
486
530
(For all use cases below, the ** System** is the ` SEPlendid ` and the ** Actor** is the ` user ` , unless specified otherwise)
487
531
@@ -854,7 +898,7 @@ Use case ends
854
898
Use case resumes at step 2.
855
899
856
900
857
- ### Non-Functional Requirements
901
+ ### 8.4 Non-Functional Requirements
858
902
859
903
1 . Should work on any _ mainstream OS_ as long as it has Java ` 11 ` or above installed.
860
904
2 . Should be able to hold up to 1000 course mappings, along with its dependent data such as local courses, without a
@@ -865,7 +909,7 @@ Use case ends
865
909
5 . The user interface should be intuitive enough for users who are not IT-savvy.
866
910
6 . The application should be designed to handle a growing database of course mappings and related data.
867
911
868
- ### Glossary
912
+ ### 8.5 Glossary
869
913
870
914
* ** Mainstream OS** : Windows, Linux, Unix, OS-X.
871
915
* ** Course Mapping** : A course offered by a partner university, which NUS Computing students going on exchange can
@@ -875,7 +919,7 @@ Use case ends
875
919
876
920
--------------------------------------------------------------------------------------------------------------------
877
921
878
- ## ** Appendix: Instructions for manual testing **
922
+ ## 9. Instructions for Manual Testing
879
923
880
924
Given below are instructions to test the app manually.
881
925
@@ -886,7 +930,7 @@ testers are expected to do more *exploratory* testing.
886
930
887
931
</box >
888
932
889
- ### Launch and shutdown
933
+ ### 9.1 Launch and Shutdown
890
934
891
935
1 . Initial launch
892
936
@@ -897,7 +941,7 @@ testers are expected to do more *exploratory* testing.
897
941
1 . Double-click the jar file <br >
898
942
Expected: Shows the GUI with a set of sample local course. The window size may not be optimum.
899
943
900
- ### Local Course
944
+ ### 9.2 Local Course
901
945
902
946
#### List all local courses
903
947
@@ -994,7 +1038,7 @@ Expected Output in the Command Output Box: Sorted all local courses
994
1038
995
1039
</box >
996
1040
997
- ### Partner Course
1041
+ ### 9.3 Partner Course
998
1042
999
1043
#### List all partner courses
1000
1044
@@ -1114,7 +1158,7 @@ Expected Output in the Command Output Box: Sorted all partner courses
1114
1158
1115
1159
</box >
1116
1160
1117
- ### University
1161
+ ### 9.4 University
1118
1162
1119
1163
#### List all universities
1120
1164
@@ -1170,7 +1214,7 @@ Expected Output in the Command Output Box: Sorted all universities
1170
1214
1171
1215
</box >
1172
1216
1173
- ### Mapping
1217
+ ### 9.5 Mapping
1174
1218
1175
1219
#### List all mappings
1176
1220
@@ -1255,7 +1299,7 @@ Expected Output in the Command Output Box: Sorted all mappings
1255
1299
</box >
1256
1300
1257
1301
1258
- ### Note
1302
+ ### 9.6 Note
1259
1303
1260
1304
#### List all notes
1261
1305
0 commit comments