[CS2113T-T10-3] Decodex#27
Conversation
crabnuggets
left a comment
There was a problem hiding this comment.
This is a really good DG and the quality of the writing/diagrams is very consistently written throughout. Well done!
| - [Introduction](#introduction) | ||
| - [Purpose of This Guide](#purpose-of-this-guide) | ||
| - [Developer Guide Usage](#developer-guide-usage) |
There was a problem hiding this comment.
Perhaps it would be good to consider moving the table of contents to the top. Otherwise, it might seem a little queer to have to come across sections that the developer has already read (e.g. Introduction, Purpose of This Guide, Developer Guide Usage) in the table of contents.
|
|
||
| ### UI Component | ||
|
|
||
|  |
There was a problem hiding this comment.
It is good that only the commonly used methods are listed in the diagram to avoid overloading the reader with information. Once again, a good well-drawn diagram that is very comprehensible.
|  | ||
|
|
||
|  |
There was a problem hiding this comment.
Since there are many derived *Command classes and the association between these classes and the abstract Command class is the same for all of them (i.e., inheritence), maybe it would be better to have one diagram that can generalize and demonstrate the relationship between these classes and the abstract Command class (i.e., just have a general *Command class representation inheriting from the Command class). It was somewhat tedious for the readerto read through both diagrams only to realise that the main takeaway was the inheritence relationship between the classes.
|
|
||
| The ***Architecture Diagram*** given below shows the high-level design of Decodex. | ||
|
|
||
|  |
There was a problem hiding this comment.
This is really clean and comprehensible! The additional note below the diagram aids readers in understanding the interactions between components. Very well done.
|
|
||
| Below is the class diagram showing the association between the abstract `Module` class and its derived `*Decoder` classes. | ||
|
|
||
|  |
There was a problem hiding this comment.
As mentioned, I think it is worth considering simplifying the diagram here as with the Command class.
|
|
||
|  | ||
|
|
||
| > :pen: The reason for having `Recipe` objects is to enable users to run multiple modules at one go sequentially. |
There was a problem hiding this comment.
I like the addition of this note here as it provides developers with an understanding of why certain components of the program are implemented the way they are.
|
|
||
| Below shows the sequence diagram of the initialisation of Decodex. | ||
|
|
||
|  |
There was a problem hiding this comment.
Very interesting use of colours and highlighting which actually helps with the readability of the diagram. It is also really good that the highlight colour chosen for each component is kept consistent in the later parts as well.
|
|
||
| #### SelectCommand | ||
|
|
||
|  |
There was a problem hiding this comment.
Choosing to omit specific and probably complex notations for the implementation of the running of certain modules was a really good choice here.
zonglun99
left a comment
There was a problem hiding this comment.
Well written DG with coverage of most if not all classes. Instructions and descriptions are very clear and concise.
| | Terminology | Definition | | ||
| | --------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | | ||
| | Data transformation | The conversion of one data format to another. | | ||
| | Application, Program | Refer to the `Decodex` program. This two terms are used interchangeably in this User Guide. | |
There was a problem hiding this comment.
Do you mean Developer Guide instead of User Guide?
| ### Terminologies | ||
|
|
||
| | Terminology | Definition | | ||
| | --------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | | ||
| | Data transformation | The conversion of one data format to another. | | ||
| | Application, Program | Refer to the `Decodex` program. This two terms are used interchangeably in this User Guide. | | ||
| | Encoding | Convert a message into a coded form. | | ||
| | Decoding | Convert a coded message into an intelligible form | | ||
| | Base64, Binary, Hexadecimal | Common types of data encoding standards. | | ||
| | Console | This refers to your command prompt window. | | ||
| | Argument | The additional information you provide to the program's command. | | ||
| | Module | A self-contained set of instructions to process your data into another form. | | ||
| | Recipe | Acts as a container for you to select your modules. When multiple modules are selected, this forms a "module chain". By default, you do not have any recipes. | | ||
|
|
||
| ### Symbols | ||
|
|
||
| | Name | Definition | | ||
| | -------------------- | ----------------------------------------------------------------------------------------------------- | | ||
| | :bulb: | Represents a good tip for you. | | ||
| | :exclamation: | Represents something important that you should take note of. | | ||
| | :information_source: | Represents additional information regarding commands/features for you better understand how it works. | | ||
| | :pen: | Represents our rationale behind the design/implementation. | |
There was a problem hiding this comment.
Good use of table to define terminologies and different symbols for users' understanding.
|
|
||
| This group of modules require at least one additional parameter as their encoding and decoding processes are dependent on the provided parameters. The constructors of these modules should receive parameters as required and stored in private variables. These variables will then be used in their respective `run(Data data)` method. | ||
|
|
||
| The current implementation of the abstract `Module` class provides a strong foundation top be inherited by much more complex modules, and developed into full-functioning modules for Decodex. |
There was a problem hiding this comment.
Possible typo here. Do you mean to be instead of top be?
|
|
||
|  | ||
|
|
||
| Below is the class diagram showing the association between the abstract `Command` class and its derived `*Command` classes. |
There was a problem hiding this comment.
Suggestion: To be consistent with usage of either *command or XYZcommand, I think would be less confusing to stick to just 1, same for RecipeXYZcommand
zonglun99
left a comment
There was a problem hiding this comment.
Well written DG with coverage of most if not all classes. Instructions and descriptions are very clear and concise.
|
|
||
| The ***Architecture Diagram*** given below shows the high-level design of Decodex. | ||
|
|
||
|  |
| This developer guide is made for developers who wish to further understand and/or develop **Decodex**. | ||
| This guide includes the setup instructions, design, implementation, testing, product scope, and other sections to give developers a better understanding of the application. | ||
|
|
||
| ## Table of Contents <!-- omit in toc --> |
|
|
||
| ## Design | ||
|
|
||
| ### Architecture |
There was a problem hiding this comment.
Architecture section is really clean and understandable. Sufficient details and explanations have been given. Well done.
|
|
||
| The `Ui` component consists of: | ||
|
|
||
| - `Ui`: Manages access to the `Scanner` object that reads user input and also contains all the methods for printing to the user. |
There was a problem hiding this comment.
Do not need to create bullet point if there is only one point under UI
|
|
||
| Below is a partial class diagram that shows an overview of the `Logic` component. | ||
|
|
||
|  |
| Modules that do not take in any parameters | ||
|
|
||
| This group of modules do not require any additional parameters as their encoding and decoding processes are fixed. Hence, the constructors of these modules should not receive any parameters. | ||
|
|
||
| Modules that take in at least one parameter | ||
|
|
||
| This group of modules require at least one additional parameter as their encoding and decoding processes are dependent on the provided parameters. The constructors of these modules should receive parameters as required and stored in private variables. These variables will then be used in their respective `run(Data data)` method. |
There was a problem hiding this comment.
Should include a bullet point/bold/underline to show that this is a subsection/elaboration section
Link user to select module examples in command summary. Fixed the TOC linking to one section And also remove one '>'
Added show command and some fixes
Changes to replace the list of modules to table format
…into TianBoon-BugFix#1 # Conflicts: # src/main/java/decodex/ui/messages/ErrorMessages.java
Add `recipe deselect` command
Add recipeName clarification
Add explanation on separators in data
Update module description to follow UG
Fix command argument issues
…op logic, to instead run until, a exit command is found, then break.
…Keyword Replace prefix with suffix
Removed the additional loading method for Decodex in Ui component
Change list module argument to be optional
* Change input examples to inline code blocks * Add note for last test case of creating recipes
Add page breaks to DG
…rguments Fix extraneous arguments for `reset` command





Decodex is a Command Line Interface (CLI) application for Capture-The-Flag (CTF) players to quickly transform data from one format to another with extreme ease. The intuitive interaction can help speed up a player's performance during CTFs and save time without having to manually code the tedious data transformations.