I worked in a team of 5 for a software engineering project to morph a basic command line interface addressbook into a flashcard management application called Know-It-All. Know-It-All is designed to help medical students store, organise and share their learning material, integrated with a test session feature and scoring system to allow for a more efficient rote learning process.
My role was to design and implement the test session feature. The following sections illustrate this major feature in more detail.
Note the following icons and formatting used in this document:
ℹ️
|
This symbol indicates important information related to this section. |
test
: A grey highlight (called a mark-up) indicates that this is a command to be executed or a component, class
or object in the architecture of the application.
Information in a box like this represents additional useful information related to this section.
This section shows a summary of my coding, documentation, and other helpful contributions to the team project.
Feature implemented: I implemented the functionalities of a test session.
-
What it does: Student can begin and end a test session. While inside a test session, flashcard questions will be presented and student can input an answer or choose to reveal the answer before moving on to the next flashcard.
-
Justification: This feature is the main highlight of Know-It-All, as students use flashcards to test how much content they have memorised. Equipped with the user friendly answer command that is missing in existing flashcard applications, Know-It-All provides a more engaging and interactive testing experience for the user.
-
Highlights: This feature modifies the existing UI to facilitate the addition of a new test session screen. It also has a heavy dependency on folder methods. Hence, this feature required an in-depth analysis of design alternatives, considering design patterns and principles as well as the user-friendliness of the commands. More detail can be found under design considerations sections of Contributions to the Developer Guide. Implementation and writing tests were also tedious as many checks of the current state of the test session needs to be done to permit only certain commands and ban others.
Code contributed: [Collated code]
Other contributions:
-
Enhancements to features:
-
Wrote additional tests for new features to increase coverage from 79% to 81% (Pull requests #74)
-
-
Documentation:
-
User guide: I updated the QuickStart section, added new features, remove previous addressbook features and modify existing commands (Pull requests #60, #59, #80, #106, #127)
-
Developer guide: I updated relevant sections related to addressbook to our Know-It-All flashcard context like Product scope and Non-Functional Requirements, some of its class diagrams and sequence diagrams, and added implementation for test session (Pull requests #80, #106)
-
About Us page: I collated and updated profiles for all members of the team. (Pull requests #6, #127)
-
-
Community:
We had to update the original addressbook User Guide with instructions for Know-It-All enhancements that we had added. The following is an excerpt from our updated Know-It-All User Guide, showing additions that I have made for the test session feature.
Besides updating the original addressbook User Guide, Developer Guide has to be updated to Know-It-All context and features as well. The following section is an excerpt from our updated Know-It-All Developer Guide about the implementation details and design considerations for the test session feature.