Mountain View

System Design

11 May 2017

Nullfinders blog on System design of the fintrack app. We have been working on the architectural front of the application in adopting a suitable design pattern and creating classes and their association to be used in the implementation phase. We have also added some enhancements to our user stories.

Overview

Sequence diagram
A sequence diagram is an interaction diagram that shows how objects operate with one another and in what order. It is a construct of a message sequence chart. A sequence diagram shows object interactions arranged in time sequence. The sequence diagrams are used to model the below

Sequence diagram of the login module
Below is an interactive sequence diagram of the login module.

 module

Sequence diagram of the transaction module

Below is an interactive sequence diagram of the transaction module.  module

Sequence diagram of the transaction history/ reporting module

Below is an interactive sequence diagram of the transaction history/ reportin module.  module

Classes Diagram

In software engineering, a class diagram in the Unified Modeling Language (UML) is a type of static structure diagram that describes the structure of a system by showing the system's classes, their attributes, operations (or methods), and the relationships among objects.

UML Class diagram.

 module

Authentication Class
The authentication class is used in the authentication or login flow of the app.

Attributes

Methods

TransactionActivity Class
The TransactionActivity class is used in entering the transaction from the user into the database.

Methods

TransactionHistoryActivity Class
The TransactionHistoryActivity class is used in fetching the report from the database based on the filter criteria.

Methods

MenuActivity Class
The MenuActivity class is used to add or delete category and payment methods by the user.

Attributes

Methods

Bean Classes

 module  module

Language enumeration
The app suports multiple languages and we use enumeration as it is prefdefined

language enums

Currency enumeration
The app suports multiple currency where the user can set it in the settings

Currency enums

Design Pattern

In software engineering, a design pattern is a general repeatable solution to a commonly occurring problem in software design. A design pattern isn’t a finished design that can be transformed directly into code. It is a description or template for how to solve a problem that can be used in many different situations.

Here we will be using an MVC like design pattern where our presentation layer will be sepreated from the business logic layer and also adopting to this pattern assists in core reusability and reduces code complexity.

 module

Development strategy
Since we are working on a scrum based agile methodology we have created milestones one for working on the archetectural design of the application and the other to parallely work on the blog. Weekly have a weekly meeting and the queries on the issues were logged on the zenhub board and ambiguities were addressed in the upcoming meetings. We created a seperate branch for individual modules to work on the code.

Issues were grouped into epics.

Sprint 1

Enhancements We have added new features to our application

Payment method

Cash is no longer the only mode of payment, the user can also add new method like adding a credit card or debit card and also the reporting can be done based on the payment method The user can add or delete new methods of payment from the menu.

Currency type

Now the user will have an option to choose between different types in the settings menu. The report will be generated based on the current currency selection for a different currency transaction this will be pulled from a look up table logged based on the dates.

link to Design pattern!
link to UML class diagram!
link to UML tool!