|
4 | 4 | pageNav: 3 |
5 | 5 | --- |
6 | 6 |
|
7 | | -# MALAdress Developer Guide |
| 7 | +# AB-3 Developer Guide |
8 | 8 |
|
9 | 9 | <!-- * Table of Contents --> |
10 | 10 | <page-nav-print /> |
@@ -323,6 +323,94 @@ Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unli |
323 | 323 | **Extensions** |
324 | 324 |
|
325 | 325 |
|
| 326 | +* 2a. Invalid phone format - System shows error message and does not add. |
| 327 | + |
| 328 | +* 3a.Duplicate contact detected - System rejects add and shows duplicate error. |
| 329 | + |
| 330 | + |
| 331 | + |
| 332 | +**Use case: Tag a contact as supplier/customer and update remarks** |
| 333 | +System updates the conta |
| 334 | + |
| 335 | +#### Design considerations: |
| 336 | + |
| 337 | +**Aspect: How undo & redo executes:** |
| 338 | + |
| 339 | +* **Alternative 1 (current choice):** Saves the entire address book. |
| 340 | + * Pros: Easy to implement. |
| 341 | + * Cons: May have performance issues in terms of memory usage. |
| 342 | + |
| 343 | +* **Alternative 2:** Individual command knows how to undo/redo by |
| 344 | + itself. |
| 345 | + * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted). |
| 346 | + * Cons: We must ensure that the implementation of each individual command are correct. |
| 347 | + |
| 348 | +_{more aspects and alternatives to be added}_ |
| 349 | + |
| 350 | +### \[Proposed\] Data archiving |
| 351 | + |
| 352 | +_{Explain here how the data archiving feature will be implemented}_ |
| 353 | + |
| 354 | + |
| 355 | +-------------------------------------------------------------------------------------------------------------------- |
| 356 | + |
| 357 | +## **Documentation, logging, testing, configuration, dev-ops** |
| 358 | + |
| 359 | +* [Documentation guide](Documentation.md) |
| 360 | +* [Testing guide](Testing.md) |
| 361 | +* [Logging guide](Logging.md) |
| 362 | +* [Configuration guide](Configuration.md) |
| 363 | +* [DevOps guide](DevOps.md) |
| 364 | + |
| 365 | +-------------------------------------------------------------------------------------------------------------------- |
| 366 | + |
| 367 | +## **Appendix: Requirements** |
| 368 | + |
| 369 | +### Product scope |
| 370 | + |
| 371 | +**Target user profile**: |
| 372 | + |
| 373 | +* has a need to manage a significant number of contacts |
| 374 | +* prefer desktop apps over other types |
| 375 | +* can type fast |
| 376 | +* prefers typing to mouse interactions |
| 377 | +* is reasonably comfortable using CLI apps |
| 378 | + |
| 379 | +**Value proposition**: manage contacts faster than a typical mouse/GUI driven app |
| 380 | + |
| 381 | + |
| 382 | +### User stories |
| 383 | + |
| 384 | +Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*` |
| 385 | + |
| 386 | +| Priority | As a … | I want to … | So that I can… | |
| 387 | +|----------|--------------------------------------------|------------------------------|------------------------------------------------------------------------| |
| 388 | +| `* * *` | new user | see usage instructions | refer to instructions when I forget how to use the App | |
| 389 | +| `* * *` | user | add a new person | | |
| 390 | +| `* * *` | user | delete a person | remove entries that I no longer need | |
| 391 | +| `* * *` | user | find a person by name | locate details of persons without having to go through the entire list | |
| 392 | +| `* *` | user | hide private contact details | minimize chance of someone else seeing them by accident | |
| 393 | +| `*` | user with many persons in the address book | sort persons by name | locate a person easily | |
| 394 | + |
| 395 | +*{More to be added}* |
| 396 | + |
| 397 | +### Use cases |
| 398 | + |
| 399 | +(For all use cases below, the **System** is the `AddressBook` and the **Actor** is the `user`, unless specified otherwise) |
| 400 | + |
| 401 | +**Use case: Add a supplier/customer contact with contact info** |
| 402 | + |
| 403 | +**MSS** |
| 404 | + |
| 405 | +1. The user enters the add command with name and phone. |
| 406 | +2. System shows “successfully saved” message |
| 407 | +3. System refreshed the UI contact list with the latest added contact. |
| 408 | + |
| 409 | + Use case ends. |
| 410 | + |
| 411 | +**Extensions** |
| 412 | + |
| 413 | + |
326 | 414 | * 2a. Invalid phone format - System shows error message and does not add. |
327 | 415 | * 3a.Duplicate contact detected - System rejects add and shows duplicate error. |
328 | 416 |
|
@@ -394,6 +482,46 @@ System updates the contact with the new tag and updated remarks. |
394 | 482 |
|
395 | 483 | Given below are instructions to test the app manually. |
396 | 484 |
|
| 485 | +ct with the new tag and updated remarks. |
| 486 | + |
| 487 | + |
| 488 | +**MSS** |
| 489 | + |
| 490 | +1. The user enters a tag command with a supplier or consumer tag and its remarks. |
| 491 | +2. The system shows a “successfully updated” message. |
| 492 | +3. System refreshed the UI contact list with the latest added contact. |
| 493 | + |
| 494 | + Use case ends. |
| 495 | + |
| 496 | +**Extensions** |
| 497 | + |
| 498 | + |
| 499 | +* 2a. Invalid phone format - System shows error message and does not add. |
| 500 | + |
| 501 | +* 3a.Duplicate contact detected - System rejects add and shows duplicate error. |
| 502 | + |
| 503 | + |
| 504 | +*{More to be added}* |
| 505 | + |
| 506 | +### Non-Functional Requirements |
| 507 | + |
| 508 | +1. Should work on any _mainstream OS_ as long as it has Java `17` or above installed. |
| 509 | +2. Should be able to hold up to 1000 persons without a noticeable sluggishness in performance for typical usage. |
| 510 | +3. 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. |
| 511 | + |
| 512 | +*{More to be added}* |
| 513 | + |
| 514 | +### Glossary |
| 515 | + |
| 516 | +* **Mainstream OS**: Windows, Linux, Unix, MacOS |
| 517 | +* **Private contact detail**: A contact detail that is not meant to be shared with others |
| 518 | + |
| 519 | +-------------------------------------------------------------------------------------------------------------------- |
| 520 | + |
| 521 | +## **Appendix: Instructions for manual testing** |
| 522 | + |
| 523 | +Given below are instructions to test the app manually. |
| 524 | + |
397 | 525 | <box type="info" seamless> |
398 | 526 |
|
399 | 527 | **Note:** These instructions only provide a starting point for testers to work on; |
|
0 commit comments