This portfolio serves to document my contributions to my team’s project - Mortago - for the CS2103T Software Engineering module.
Mortago has came a long way and it started from the Address Book 3 (AB3) application, a rudimentary contacts-management application written in Java, targeted at CS2103T students for software engineering development. My team was tasked with enhancing or morphing AB3 to a fully functional application. We were given a tight span of three months to complete this project, all whilst balancing the workload of other modules. My team’s dedicated commitment has resulted in this mortuary management system - Mortago.
My team consists of five Year 2 Computer Science undergraduates reading the CS2103T Software Engineering module.
Mortago is a desktop application dedicated for mortuary managers to track their mortuary records. It is based on a Command Line Interface (CLI) and in turn, most user interactions are mediated through commands keyed into Mortago. However, users still have to rely on the Graphical User Interface (GUI) to view and track any commands entered into the application.
Mortago provides a user-friendly dashboard that allows managers to manage various types of entries in a mortuary. It replaces and improves upon the traditional whiteboard to enhance productivity.
There are many main features that Mortago is capable of. Users can add a Body
, Worker
, or Fridge
, as well as edit, delete and find these entities. Users can also undo and redo when needed, track important statistics and generate reports. Mortago also generates notifications to alert users of important events.
My role encompassed the complete design of the GUI and auxiliary features. The following sections illustrate these enhancements in greater detail. Excerpts - relevant to these enhancements - from the User Guide and Developer Guide are included to document my work.
This section gives an overview of my contributions to Mortago. A list of my pull requests (PRs) can be found here.
I have contributed 2 major enhancements for Mortago, which will be detailed here.
-
What it does: The GUI allows users to view all the entries in Mortago and serves as a visual representation of the data in the system.
-
Justification: This feature is important for users as a visually appealing GUI will attract and retain users. Users will find it easy to locate minute details in a large amount of information through the dashboard.
-
Highlights: This feature draws on more complex visual design techniques and guidelines to create visual elevation and impact. The dark theme utilised aims to improve visual ergonomics by reducing eye strain on the user. It was implemented through a meticulous and creative design process as perfecting minute details, such as positioning, counts towards the visual appeal of the interface. This feature posed unique challenges in terms of integrating Testfx GUI tests.
-
What it does: The
add
command allows the user to addBody
,Worker
andFridge
entities in Mortago. -
Justification: The
add
command is polymorphic as it utilizes a-FLAG
to tell Mortago what type of entity is being added in. This is vastly different compared to AB3, where only one type of entity can be added in. Users are also not required to input all attributes of an entity, hence saving time by only keying in the necessary information. -
Highlight: This enhancement was particularly challenging due to the amount of refactoring required. Much of the refactoring for the
Model
andLogic
components was done through this enhancement, which thus laid the groundwork for further enhancements. The large amount of attributes inherent to Mortago’s entities also further deepens the complexity when parsing theadd
command.
This section details a minor enhancement that I have contributed in this project.
-
What it does: The
select
command allows users to select a body via its uniqueIdentificationNumber
, which allows them to view the full details of the body. -
Highlights: The
select
command is different from that of AB4 as users now identify the body they want to select through itsIdentificationNumber
instead of its list index on the dashboard. This makes it more intuitive for the user as most interactions in Mortago are made through theIdentificationNumber
.
-
What it does:
IdentificationNumbers
in Mortago consist of two parts: a leading letter that tells users whether it is a worker, body or fridge, and a number at the back that refers to its unique ID number. -
Justification: In Mortago, each entity is assigned a unique
IdentificationNumber
. TheIdentificationNumber
for each entity is a central aspect of Mortago as most interactions with and references of entities in the application are made through theirIdentificationNumbers
. -
Highlights: This mechanism is designed such that the
IdentificationNumber
of any deleted entity will be reassigned to the next added entity. This prevents gaps in the numbering of entities in the system, which otherwise will never be filled, leading to an exponential increase in the running ID number.
You can view the code that I have contributed via RepoSense.
The following sections document other contributions made towards the project.
-
Project management
-
The project was separated to 3 milestones, from version 1.2 - 1.4. I managed the v1.3 milestone and its associated issues in Github
-
-
Enhancement to existing features
-
Added the ability to add photos for Worker
-
Added the
showNotifs
command -
Wrote additional tests for existing features to increase coverage by 5.8% in PR #125
-
-
Documentation
-
Community
-
Tools:
-
Integrated a third party library (ControlsFX) to the project in PR #79
-
Integrated TestFx and adapted Graphical User Interface tests from AB4 in this commit
-
Integrated a Continuous Integration platform for Github (AppVeyor) to the team repository (but was eventually taken down due to relaxation of workflow rigour)
-
Given below are sections I contributed to the User Guide. They showcase my ability to write documentation targeting end-users. |
{start of extract 1}: Add Command
{end of extract 1}
{start of extract 2}: Select Command
{end of extract 2}
Given below are sections I contributed to the Developer Guide. They showcase my ability to write technical documentation and the technical depth of my contributions to the project. |
{start of extract 1}: Unique Identification Number
../DeveloperGuide.adoc {end of extract 1}
{start of extract 2}: Photo Feature
{end of extract 2}
{start of extract 3}: User Interface
{end of extract 3}