System Design

Ashraful Islam - 29 May 2017

After successful Requirement Analysis phase, we started the system design phase. In this phase, the system behavior and functionalities are defined in broad overview.

Core Objective

At its basic, the application is required to collect a series of data from the user and perform different operations based on the data. The data in this case are related to a basic transaction(Income/Expense). According to our customer, following data has to be present for each transaction

A brief Example of what and how the user wants to enter can be seen in the following mockup diagram we created for the data entry page of our application.

Transaction Entry Activity

This Data will be then listed on the Timeline(shown below) or could be filtered using different available fields.

Timeline Activity

Class Diagrams

Hence, our core data is surrounding the transaction. Initially, we designed an ER Diagram for all the data related to every transaction.

ER Diagram

In the ER diagram, we see that we have three entities:

These entities are now connected by an intermediary table Transaction_Category_Source(marked as “Of”), which will be useful later on if we want to store multiple payment type or category in the future.

Following is a basic overview of the class diagram for the complete combination. The intermediate table is not marked as it is used by our Controller solely to combine the transaction into a whole information set.

Class Diagram

From the diagram we observe that Transaction/Category/PaymentType are our main classes, which provide fields to store crucial information related to the classes. These classes also provide certain methods(such as getAllTransactions) to access their corresponding data from the database.

The main classes and their purposes are

At this stage, we agreed with customer that, each transaction can have 1 to 1 cardinality(relation) with Category and PaymentType, that is, each transaction may only have 1 category and paymenttype.

The DBHelper aggregates the transactions/categories/paymenttypes using the corresponding methods, as well as uses its own private methods(not shown in the diagram) to combine and share the corresponding data as required by the application to provide access to user.

Interaction Diagram

For our first sprint, we are to build the basic functionality of

Following is our interaction diagram.

Interaction Diagram

Design Patterns

Our core pattern is MVC(Model View Controller).

They are as following

We used the DBHelper to control all communication with Database and update the Views. This will allow us to keep our concerns separate.

Development Strategy

We used ZenHub as well as group meetings to arrange and divide the implementation tasks.

We also divide all major features into small sprints, so everyone is contributing.

With Zenhub each feature is assigned to a person, if the assigned person can not or do not complete the task in time, it is moved to next sprint. It is also possible to switch person responsible for certain tasks if there are issues with the current assigned person.

Summary Of Changes

We did not have any major changes in our development and requirements. However, we realized that certain key changes during our design, which would help us to accelerate and keep our progress consistent.

Some of the changes are