You are on page 1of 101

M-FIN

MICROFINANCE LOAN MANAGEMENT


SYSTEM

T. A. MAKUMBURAGE

BIT Registration No: R081300


Index No: 0813001

Supervisor: Mrs. G. H. Malawara Arachchi

November 2012

BIT

This dissertation is submitted in partial fulfillme nt of the require ment of the


Degree of Bachelor of Information Technology (External) of the University of
Colombo Schoo l of Computing
Declaration

ii
Abstract
Microfinance offers basic financial services mainly to the poor people who have lack
of access to banking and related services. ‘SEEDS’ (Sarvodaya Economic Enterprise
Development Services) is a leading microfinance institute in Sri Lanka, which has
more than 75 branches and divisions. ’SEEDS’ is the economic arm of ‘Sarvoda ya’,
which is established to eliminate poverty through the economic empowerment of rural
people for sustainable livelihood s.

Currently SEEDS is us ing a manual system for loan processing. They are facing many
difficulties because of the lack of efficiency and productivity of the manual system.
Loan officers often get stressed due to the workload which they have to carry out
manually. So SEEDS is badly in need of a software solution for overcome these
problems. This software solution, ‘M-Fin’ will cater those problems and requirements
of SEEDS and help them to be productive and efficient in their field to gain
competitive advantage over others.

‘M-Fin’ is a web based microfinance loa n management system, which would automate
the loan processing system of SEEDS. It also facilitates stakeholder details
management, general ledger, loa n trial calculation, management information, reports,
facility follow-up, closure and day-end process.

‘M-Fin’ is designed and developed according to the requirements of the SEEDS using
object oriented methodologies. Almost all the technologies used to develop the system
are open-source. J2EE is chosen as the main programming language for ‘M-Fin’. Also
highly productive frameworks such as ‘Struts’, ‘Spring’ and ‘Hibernate’ have been
used for this system to preserve its basic needs as a financial system, such as
reliability, security and efficiency. ’M- fin’ is built on ‘MyEclipse’ IDE and running on
‘Apache Tomcat’ application server.

iii
Acknowledgements
Apart from the efforts of mine, the success of any project depends largely on the
encouragement and guidence of many others. I take this opportunity to express my
gratitude to the peop le who have been instrumental in the successful completion of this
project.

I’m highly grateful to Sarvodaya Economic Enterprise Development Services Limited,


specially Mr. Shantha Siriwardhana, Mrs. Nadeesha and Mr. Thushara Pathirana who
gave immense support and guidance on behalf of the client of this project. I would like
to thank Mrs. Chamila, the branch manager of the SEEDS Borella branch, who helped
me to gather requirements properly.

I would like to show my greatest appreciation to my project supervisor Mrs G. H


Malawara Arachchi for guiding me and providing me with all the business and
technical insights throughout this project. Without her encouragement and guidance
this project would not have materialized.

Then I would like to appreciate all the help and support given by my parents and sister
throughout the project to make this a successful one.

I would like to acknowledge the lecturers of OpenArc School of Business and


Technology, who gave the knowledge and guidance throughout the BIT digree
programme.

Also I would like to thank Miss. U.V. Vandebona and my friends who have been with
me and supported me to complete this project

Finally I would be gratefull to University of Colombo School of Computing (UCSC)


and coordinators of the Bachelor of Information Technology (BIT) degree program to
giving me this opportunity to apply the knowledge which I have gained through the
degree program.

iv
Table of Contents
Declaration.........................................................................................................................ii
Abstract ............................................................................................................................ iii
Acknowledgements ........................................................................................................... iv
Table of Contents ...............................................................................................................v
List of Figures ................................................................................................................. viii
List of Tables ..................................................................................................................... x
List of Acronyms............................................................................................................... xi
Chapter 01 – Introduction....................................................................................................1
1.1 Motivation for project ..........................................................................................1
1.2 Background .........................................................................................................1
1.3 Objectives and Importance ...................................................................................2
1.3.1 Objectives ....................................................................................................2
1.3.2 Importance ...................................................................................................2
1.4 Scope ..................................................................................................................3
1.5 Selected Process Model........................................................................................4
1.5.1 Feasibility Study...........................................................................................4
1.5.2 Requirement Analysis ...................................................................................4
1.5.3 Design .........................................................................................................5
1.5.4 Coding .........................................................................................................5
1.5.5 Testing.........................................................................................................5
1.5.6 Maintenance.................................................................................................5
1.6 Dissertation Overview ..........................................................................................6
Chapter 02 - Analysis..........................................................................................................7
2.1 Requirements Gathering .......................................................................................7
2.2 Similar Solutions .................................................................................................7
2.3 Current Business Process....................................................................................10
2.4 Problems Exist in the Current System..................................................................11
2.5 Functional Requirements ....................................................................................11
2.5.1 User Authentication & Authorization ...........................................................13
2.5.2 Maintain Client Database ............................................................................13
2.5.3 Maintain Reference Data.............................................................................13
2.5.4 Loan Calculation ........................................................................................14

v
2.5.5 Loan Approval ...........................................................................................14
2.5.6 Print Loan Documents ................................................................................14
2.5.7 Loan Information........................................................................................14
2.5.8 Day-End process ........................................................................................14
2.6 Non-Functional Requirements ............................................................................15
2.7 Benefits of the System........................................................................................15
Chapter 03 – Design .........................................................................................................17
3.1 Alternative Solutions & Justification ...................................................................17
3.2 Systems Design Methodology.............................................................................18
3.3 Systems Design .................................................................................................18
3.4 Systems Structuring ...........................................................................................19
3.5 Deliverables ......................................................................................................19
3.5.1 Data Model ................................................................................................20
3.5.2 Process Model ............................................................................................24
3.5.3 User Interface Design .................................................................................27
3.5.4 User Interface Standards .............................................................................29
Chapter 04 – Implementation.............................................................................................33
4.1 Development Environment .................................................................................33
4.2 Hardware and Software Requirements.................................................................34
4.2.1 Server Side.................................................................................................34
4.2.2 Client Side .................................................................................................35
4.3 Development Tools ............................................................................................35
4.4 Coding Structure & Standards.............................................................................37
4.4.1 Folder Structure..........................................................................................37
4.4.2 Package Structure .......................................................................................37
4.5 Open Source Frameworks Used ..........................................................................39
4.5.1 Apache Struts .............................................................................................39
4.5.2 Spring ........................................................................................................40
4.5.3 Hibernate ...................................................................................................41
4.6 Third Party Components Used............................................................................42
4.6.1 Active Widgets Grid ...................................................................................42
4.6.2 Date Picker ................................................................................................42
4.6.3 dTree .........................................................................................................42
4.6.4 iText ..........................................................................................................43

vi
4.6.5 jExcel ........................................................................................................43
Chapter 05 – Evaluation ....................................................................................................44
5.1 Testing Method..................................................................................................44
5.2 Test Cases .........................................................................................................44
5.3 Integration Testing .............................................................................................47
5.4 System Testing ..................................................................................................47
5.5 Acceptance Testing ............................................................................................48
5.6 Feedback...........................................................................................................48
Chapter 06 – Conclusion ...................................................................................................49
6.1 Critical Assessment of Project ............................................................................49
6.2 Problems Encountered........................................................................................50
6.3 Lessons Learnt...................................................................................................50
6.4 Future Work ......................................................................................................50
References .......................................................................................................................51
Appendix A- System Documentation .................................................................................52
Appendix B- Design Documentation..................................................................................56
Appendix C- User Documentation .....................................................................................63
Appendix D- Management Reports ....................................................................................75
Appendix E – Test Results ................................................................................................77
Appendix F – Code Listing ...............................................................................................80
Appendix G – Client Certificate.........................................................................................88
Glossary & Index..............................................................................................................89

vii
List of Figures
Figure 1.1: Iterative Waterfall Model ...................................................................................4
Figure 2.1: Interface of Mifos ..............................................................................................8
Figure 2.2: Interface of ‘The Banker’ ...................................................................................8
Figure 2.3: Interface of 'Loan Performer' ..............................................................................9
Figure 2.3: Interface of Octopus ..........................................................................................9
Figure 2:4: Actors of the System........................................................................................12
Figure 2:5: System Boundry for Loan WorkFlow ...............................................................13
Figure 3.1: Enterprise Architecture Tool ............................................................................19
Figure 3.2: System Structure .............................................................................................19
Figure 3.3: ER Diagram ....................................................................................................20
Figure 3.4: Class Diagram related classes of Loan process...................................................23
Figure 3.5: Class Diagram related to classes of Stakeholder Reference.................................23
Figure 3.6: Part of the Use Case Diagram...........................................................................24
Figure 3.7: Activity Diagram.............................................................................................25
Figure 3.8: Sequence Diagram...........................................................................................26
Figure 3.9: Home Page......................................................................................................27
Figure 3.10: Main Screen ..................................................................................................28
Figure 3.11: Input Forms ...................................................................................................29
Figure 3.12: Validations ....................................................................................................30
Figure 3.13: Data Tables ...................................................................................................30
Figure 3:14: Message from the System...............................................................................31
Figure 3:15: Date Field and Date Picker .............................................................................31
Figure 3:16: Common Browser..........................................................................................32
Figure 4:1: Technical Infastructure of the M-Fin system......................................................33
Figure 4:2: Source Folder Struture .....................................................................................37
Figure 4:3: Java Package Structure ....................................................................................38
Figure 4:4: Struts Framework Components .........................................................................39
Figure 4:5: Spring Framework Components .......................................................................40
Figure 4:6: Hibernate Framework Components ...................................................................41
Figure 4:7: ‘Active Widgets’ Data Grid..............................................................................42
Figure 4:8: ‘Moo Tools’ Date Picker..................................................................................42
Figure 4:9: 'dTree' JavaScript Grid Component ...................................................................43
Figure 5:1: User Feedback Form........................................................................................48
viii
Figure A: 1 Features of Java Installation.............................................................................52
Figure A: 2: Environmental Variables ................................................................................53
Figure A: 3: Setting 'JAVA_HOME' Variable.....................................................................53
Figure A: 4: Apache Tomcat Configuration Options ...........................................................54
Figure A: 5: MySQL Networking Options ..........................................................................55
Figure B: 1: Usecase diagram for 'Officer' actor..................................................................56
Figure B: 2: Usecase diagram for 'Manager' actor ...............................................................56
Figure B: 3: Usecase diagram for 'Loan Administrator' actor ...............................................57
Figure B: 2: Usecase diagram for 'System Administrator' actor ............................................57
Figure: B: 3: Part of the Class diagram...............................................................................59
Figure: B: 4: Part of the Class diagram...............................................................................59
Figure: B: 5: Part of the Class diagram...............................................................................60
Figure: B: 6: Part of the Class diagram...............................................................................60
Figure: B: 8: Activity Diagram for Create Application ........................................................61
Figure: B: 7: Part of the Class diagram...............................................................................61
Figure: B: 6: Sequence Diagram for Login to the system.....................................................62
Figure: B: 7: Sequence Diagram for Application Approval ..................................................62
Figure: C: 1: Branch Details Screen...................................................................................63
Figure: C: 2: Branch Officer Screen ...................................................................................64
Figure C: 3: Stakeholder Details Screen .............................................................................65
Figure C: 4: Stakeholder Type screen.................................................................................65
Figure C: 5: Approval Groups Creation ..............................................................................66
Figure: C: 6: Approval Group Members Screen..................................................................67
Figure: C: 7: Loan Type Screen .........................................................................................67
Figure: C: 8: Loan Calculation Screen................................................................................68
Figure: C: 9: Application Maintenace.................................................................................69
Figure C: 10: Loan Application Screen ..............................................................................70
Figure: C: 11: Loan Appraisal Screen.................................................................................70
Figure C: 12: Application Approval ...................................................................................71
Figure C: 13: Loan Documents Screen...............................................................................71
Figure C: 14: Assignment of Loans ....................................................................................72
Figure C: 15: Loan Inquiry Screen .....................................................................................73
Figure C: 16: Access Rights Screen ...................................................................................73
Figure C: 17: Login Details Screen ....................................................................................74

ix
List of Tables
Table 3.1: Table Structure – Stakeholder ............................................................................22
Table 3.2: Table Structure – System Program.....................................................................22
Table 3.3: Usecase Narrative – Input Client Details ............................................................25
Table 3.4: Usecase Narrative – Login to the system ............................................................25
Table 3.5: Usecase Narrative – Approve Loans...................................................................25
Table 5: 1: Test Case: Stakeholder Type.............................................................................45
Table 5: 2: Test Case: Assignment of Loans .......................................................................46
Table 5: 3: Test Case: Access Rights ..................................................................................47
Table B: 1: Table Structure: Stakeholder Type....................................................................58
Table B: 2: Table Structure: Stakeholder Program ..............................................................58
Table D: 1: Branch Summary Report .................................................................................75
Table D: 2: Client Details Report .......................................................................................76
Table D: 3: Loan Disbursement Report ..............................................................................76
Table E: 1: Test Case: Loan Type ......................................................................................78
Table E: 2: Test Case: Approval Group ..............................................................................79

x
List of Acronyms
SEEDS - Sarvodaya Economic Enterprise Development Services

J2EE - Java Enterprise Edition

OOD - Object Oriented Design

IT - Information Technology

MIS - Management Information System

UML - Unified Modeling Language

MFI - MicroF ina nce Institute

HTML - Hyper Text Markup Language

CSS - Cascading Style Sheets

JSP - Java Server Pages

JSTL - JavaServer Pages Standard Tag Library

SDK - Software Development Kit

AJAX - Asynchronous JavaScript and XML

MVC - Mode l View Controller

XML - Extens ible Markup Language

IDE - Integrated Development Environment

WYSIWYG - What You See Is What You Get

PDF - Portable Document Format

SMS - Short Message Service

RAM - Rando m Access Memory

xi
Chapter 01 – Introduction
As an immerging sector of Sri Lanka, Microfinance industry has grown its leaps and
bounds to help the poor and poorest of the country. After the end of the war
microfinance institutions has many opportunities to provide loan facilities to the people
in need. Because of the close relationship maintained by microfinance institutions with
people, they are more towards micro loan facilities rather than banking loans. Thus, to
maintain that close relationship, microfinance institutions need lot of details about its
clients and also more resources to manage loan processes. From reducing the cost
and time spent, IT can provide better solution for fact gathering and loa n management
in microfinance institutions.

1.1 Motivation for project

As the economic arm of Sarvodaya and a leading microfinance institute, SEEDS


(Sarvodaya Economic Enterprise Development Services) has provided thousands of
loan facilities to the poor people in Sri Lanka. Its main objective is to alleviate poverty
by promoting economic empowerment of rural people for a sustainable livelihood.
They don’t have proper systematic software to fulfill their needs. This software is
presented as the solution for those requirements of the SEEDS to improve the
productivity of their business.

From this project will provide a web based software solution, mainly for the loan
management purposes of the SEEDS. This system will reduce the paper work and
automate the loan processing system with more management facilities. This project
would help to gather more do main knowledge abo ut the microfina nce industry, muc h
more about software development and project management.

1.2 Background
Currently SEEDS is using a manual system for loan processing. They are facing many
difficulties because of the lack of efficiency and productivity of the manual system.
They have to maintain a manual file for each client, and that has become a huge
overhead for loan officers. Also they tend to suffer financially because there is no
notification system to see the loan installments due on a specific day. Reporting has
1
become a mess for them because they are using a spreadsheet called ‘loan sheet’ to
extract all the reports. Also there is a big risk involving paper work because there is no
procedure for backing- up hard copies of loan documents. If one is misplaced or lost,
there is no replacement.

1.3 Objectives and Importance


1.3.1 Objectives

The main objective of the microfinance loan management system is to improve the
efficiency of loan management processes and functions of the client (SEEDS) and
provide a secure, reliable, platform independent and effective web-based software
solution.

Since this is a finance system, implement more security concerns and store client data
securely in proper manner.

1.3.2 Importance

The major backbo ne of a microfinance organization is its client base. They need to
capture the client data and keep them in a secure place to further reference. With this
system the loan officers can enter, organize and securely store the client information
and relevant data and maintain the client database up-to-date.

In the microfinance industry, loan officers must visit the clients to fill applications,
collect installments, grant loa ns, and many other loan follow-up purpo ses. In this
microfinance system the most of the loan processing workflow is automated, it will
reduce the cost and time spent on paper work and also field work of client’s loan
officers.

The system will help managerial decision making by providing accurate and relevant
data monitoring screens. It suppo rts easy to understand, real-time user interfaces,
showing a graphical presentation of the current status (snapshot) and historical trends
of the or ganization’s Key Performance Indicators (KPIs) to enable immediate
decisions to be made at a glance.

2
1.4 Scope

• Loa n Processing

• Automates the loa n processing s ystem and reduces the manual work.
• Provides a trial calculation facility to users which will apply the loan
calculation and forecasts the loan schedule.
• Work flow sequence for loan processing is automatically checked and
controlled.
• Client Data Handling

• Creates a better stakeholder details base which will facilitate SEEDS to


manage and e xpa nd their bus iness strategies.
• Transaction Handling

• Create receipts to capture rental payments for loans.


• Manage ment Information Handling

• Integrated and powerful management information system with decision


supported dash-boards with graphical representations.
• Report Center

• Equipped with a report center which enable management to monitor and


analyze company performance.
• Day End Handling

• Provides day-end facility to process all the transactions which should


occur at the end o f the da y.
• Closure of Facilities

• Provides closures to close facilities manually after completion of the


installment schedule.

3
1.5 Selected Process Model
Among many software development process models Iterative Waterfall Model is
selected for this project. Derived from the classic Waterfall Model, Iterative Waterfall
Mode l has the advantage of its namesake, iterativeness. In the classic Waterfall Model
assumes that no defects are introduces during any development activity. But in reality
defects do get introduces in almost every phase of the life cycle. Thus we need
feedback paths which included in the Iterative Waterfall Model.

Feasibility Study

Requirement Analysis

Design

Coding

Testing

Maintenance

Figure 1.1: Iterat ive Waterfall Model

1.5.1 Feasibility Study

Main aim of the feasibility study is to determine whether developing the project is
financially and technically feasible. During this phase project manager gets an overall
understanding of the problem. Then a best solution will be formulated by a cost/benefit
analysis and after examining a lternate strategies.

1.5.2 Requirement Analysis

This phase consists of two main activities, requirement gathering and requirement
analysis. Target of Requirement gathering is to collect relevant data from the customer.
Then the collected data will be analyzed to clearly understand what the customer
wants. The goa l of requirement analysis activity is to find out any inconsistencies and
resolve all incomplete requirements. It is important to avoid ambiguities and
contradictions of requirements in this phase.

4
1.5.3 Design

Design phase transforms requirements specification in to suitable implementation in


some programming language. During this phase software architecture is derived from
the software requirements. There are two approaches to the design phase, Structured
and Object Oriented. Object Oriented Design (OOD) is selected for this project. OOD
has many advantages against the structured approach. OOD will first identify various
objects (real world entities) occurred in the problem and then identify the relationships
among those objects.

1.5.4 Coding

Coding phase will translate software design into source code in a decided
programming language. For this project Java is the selected programming language.
For an agreed design, the aim of this phase is to implement the design in the best
possible manner. The coding phase affects both testing and maintenance phases
directly. A well written code reduces the testing and maintenance effort significantly.

1.5.5 Testing

Many testing levels are performed on the source code. Unit Testing, Integration
Testing, System Testing and User Acceptance Testing are the most common. Unit
Testing is do ne by the de velop ers to make sure their code is work with different
environments, conditions and logics. Integration Testing is performed when the two
modules of the system are connecting with each other. System Testing is performed on
the whole system and the User Acceptance Testing is done at the client site by the
customers to give their app roval of the fina l system.

1.5.6 Maintenance

Maintaining most of the software products requires much effort than the effort to
develop the product itself. There are three types of maintenance, Corrective, Perfective
and Adaptive. Correcting errors which were not discovered during the product
development phase is Corrective maintenance. Enhance the functionalities of the
system is Perfective maintenance. Adaptive maintenance is to port software product in
to new environment.

5
1.6 Dissertation Overview
The first chapter, Introduction describes the motivation for the project with scope,
objectives and illustrate about the contents in the dissertation. Then the Analysis
Chapter describes the business procedure along with problems existing with the
manual system, requirements and how they gathered and the details of the proposed
system. Third chapter consists of design techniques used for this project. In this
chapter mainly focuses on UML diagrams that used to design the application. Software
and hardware environments used for develop the system are discussed in the
Implementation chapter. Also it de scribe s the source folder structure of the project and
used third party components and frameworks. The followed testing approaches along
with test results are given in detail in the Evaluation Chapter. Also it contains how the
client feedback was regard to their expectations. The final chapter which is the
Conclusion Chapter includes achievements gained from the project, problems
encountered and how it solved, lessons learnt and the information about further
development of the system.

At the end of the main chapters a reference section for all the materials referred to
write the dissertation are given. After that In appe ndices; System Documentation,
Design Documentation, User Documentation, Management Reports, Test Results,
Code Listing and the Client Certificate are shown. At the end, a glossary of terms and
a general index is provided.

6
Chapter 02 - Analysis

This phase divided in to two main activities, Requirement gathering and Requirement
analysis. Main goal of this phase is to clearly gather customer requirements, avoid
ambiguities and finalize the project scope.

2.1 Requirements Gathering

Requirement gathering is a crucial part of a software solution. If the requirements are


crystal clear, chances are to be success is higher. But most commonly requirements
might be ambiguous as well as not complete. To define the project scope clear and
complete, customer requirements needed. Hence many requirement gathering
techniques were used to complete the task.

• From Intervie ws
An interview is a conversation with stakeholders to elicit or validate needs and
requirements. It is the most common technique has been used for requirement
gathering. For this project, branch manager, IT manager, loan officers were
interviewed for detailed requirements.

• From Company we bsite

SEEDS has their own website hosted in http://www.seeds.lk. The website supplies
many details about the company such as its vision and mission, contact details,
division details, case studies, enterprise services and training de tails.

• From doc uments and book s published by the company

After interviewing the stakeholders it will be better to study company doc uments and
remove unnecessary ambiguity from the requirements.

2.2 Similar Solutions


Similar software solutions have been studied to find other approaches to meet the
requirements. Thus understanding existing solutions will be an advantage to make M-
Fin a better software solution.

7
• Mifos [WWW3]

Mifos is a web based microfinance software. It is an open source software which


charges only for support services and maintenance. The community version of the
software can be downloaded from the website. It has facility to create client groups,
centers and manage loan details. It is also acting as a collaborative platform to share
knowledge and e xperience between micro finance institutions.

Evaluation of similar solutions(IMPORTANT)


Why u dd nt reccmnd this www.mifos.org’ software. What is lacking from it.
Why ur system is so much better than this

Figure 2.1: Interface of M ifos

• The Banker [WWW5]

This is a Sri Lankan software product with multi- user, multi-currency and multi-
lingual capabilities. This product is developed by Senova Multi Systems Ltd.

Figure 2.2: Interface of ‘The Ban ker’

8
• Loa n Pe rforme r [WWW4]
Loan performer is a Multi-User MIS application for microfinance, developed by
Crystal Clear Software Ltd in Uganda. It is developed using Microsoft Visual FoxPro
and VB.Net technology. It combines basic Client data with Shares, Savings and Loan
transactions.

Figure 2.3: Interface of 'Loan Perfo rmer'

• Octopus [WWW6]

Octopus is another microfinance MIS developed in France. There are three editions of
Octopus software, Octopus Community, Professional and Online. Octopus software
supports many sectors in microfinance.

Figure 2.3: Interface of Octopus


9
There are many microfinance software created by many companies around worldwide.

Since microfinance industry has no legalized act in Sri Lanka, business processes of
Microfinance Institutions are much different to each other compared to banks. So most
of the business of MFI’s revolves around the software product they buy. And the
customization charges of such products are so high that they cannot afford to do those
changes. So the M-Fin system provides fully customizable solution for SEEDS. It is
providing all the necessary facilities to automate the loan process while implementing
secur ity and a uthorization they need.

2.3 Current Business Process


The current business process of SEEDS is divided into following categories.

• Client Registration Process

When a customer asks for a loan he or she has to fill an app lication provided by the
SEEDS. The document also contains the loan details, loan agreement, promissory
notes, etc.Then loan officer ope ns a client file and keep the application manually.

• Application Approval Process

After the completion of the loan application, assigned field officer does an appraisal
for the loan. After the appraisal, branch assistant manager visits the client to make sure
everything is in order. Then the loan application is forwarded to the loan manager for
the approval. Each approval authorities have given loan limits for approval. Depending
on the loan amount the approval authority might be vary.

• Loan Disbursement Process

After loan approval loan agreement must be signed by both parties. Then the client file
will be updated and documents will hand over to the client. Every client who has
granted a loan must create a savings account with SEEDS. The loa n executive will
disburse the loa n amount to client’s savings account.

• Installment Collection Process

The installments must be paid by the clients on or before due dates through their
savings accounts. Loan cards of clients will be updated by the loan officers manually.

10
• Facility Follow-up Process

SEEDS keeping a loan sheet which includes all the details about loan facilities. It is
being manually updated according to the day-to-day transactions. All the reports are
take n based on the loan sheet. When a client didn’t pay the installments SEEDS will
post reminde r letters. After 3 months of arrears, the facility will be classified as non-
performing and treated accordingly.

2.4 Problems Exist in the Current System

SEEDS doesn’t have a proper automated loan processing system. They do most of the
work manually. Spread-sheets are the only electronic media has been used by the loan
officers.

• For each client, SEEDS maintains a client file and keeps all hard copies o f
documents. If any information needed about the client they have to manually
search the file and go through it for the relevant infor mation.
• When a loan installment is been paid by the client, loan officers has to manua lly
upda te the loa n card a nd the loan sheet.
• All the transaction details are maintained manually in the ledger book s.
• Loan officers couldn’t view the loan installments which due on a specific date.
• The loan sheet which contains all the detail about the loa ns can be only used by a
single user at a time. This has severely reduced the efficiency and the productivity
of the loan officers.
• All the reports are extracted from the loan sheet, which takes lots of time.
• The manual system is less prod uctive and less efficient; it will take weeks to grant
a loan facility.

2.5 Functional Requirements


Functional requirement defines the function of a system component. These
components added up to build the module, and integrated modules complete a whole
system. Usually functional requirements are captured in use cases which is a part of
Unified Modeling Language (UML).

11
Figure 2:4: Actors of the System

Figur e 2:4 shows the main actors of the M-Fin system. Following are the use cases of
the actors.

• Manager :
o Approve / reject loan applications
o Inquire facility details
o Loa n closure
• Loan Administrator :
o Maintain reference data
o Assign loan officers
o View transaction data
• Officer :
o Do loan calculations
o Follow- up loan facilities
o Login to the system
o Create receipts
• System Administrator :
o Grant / revoke access to users
o Run dayend process

12
Figure 2:5: System Boundry for Loan WorkFlow

2.5.1 User Authentication & Authorization

All the officers of the SEEDS should have a username and a password to login in to
the system. The system administrator should create new usernames and passwords for
new users of the system. Also they should have access to the relevant branc hes which
are created in the system. And the system administrator should grant the access rights
to the programs of the system, to each stakeholder type.

2.5.2 Maintain Client Database

For a microfinance institution client database is one of their most important assets.
Client database should include most of the details about client, their family details,
occupation, earnings, education and many more other important details. When a new
client requests for a loan his or her details should be feed in to the system for future
use.

2.5.3 Maintain Reference Data

When using software system, there are many reference data to be maintained. Such as
branch details, stakeholder types, loan types, approval groups, branch details, etc.

13
Officers should be assigned to maintain these data in the system. And have to make
sure any modification to these data could be done by proper authorization level.

2.5.4 Loan Calculation

SEEDS have predefined loan schemes. For each loan type there are maximum and
minimum loan amounts, loan period, and interest rates. But when a customer asks for
different loan amount or different repayment period or interest rate, loan officer can
change those parameters and do a trial calculation. Then the system should show the
net installment amount for the loan. Also system should give a facility to print the
repayment schedule as a quotation.

2.5.5 Loan Approval

After creating the trial calculation, loan application must be created. All the relevant
data to the purpose of the loan is filled in the application. The approval groups are
defined in according to the loan amounts. A member of relevant approval group can
approve or reject a loa n with responsibility.

2.5.6 Print Loan Documents

There are mandatory documents listed for each approved loan. Loan Agreement,
Promissory Note, Guarantor Document are some of them. Relevant client and
application data should be filled automatically in the pre-printed document and should
have a facility to print them.

2.5.7 Loan Information

Information about approved loans should be viewed through a single interface.


Repayment schedule, Payment receipts details, performing non-performing status of
the loan, and amount in arrears, no of loans of a client are the critical MIS information.

2.5.8 Day-End process

Day-end process should be run by system administrator after the loan processes are
finished at the branches. Day-end process should process the loan installments due on
following day, change performing /non-performing status of loan facilities on the
given parameters.

14
2.6 Non-Functional Requirements
• Platform Independency
System will be capable of working flawlessly irrespective of the operating system used
in the user computer. Since this is a web solution only need a web browser to run the
system.

• Reliability
Reliability is the ability of a system to perform its intended functions under stated
conditions. ‘M- fin’ is a financial system. If a financial system becomes not functional
even for a single day, it might be a huge damage for the organization. So reliability is a
crucial factor of the non-functional requirements.

• Usability

Usability means the ease of use. Simply it is the user- friendliness of the system.
System interfaces, processes and many other things user interact with should be
designed and developed to lean and understand by users easily. User interfaces should
be less complicated and responses should be given in a timely manner.

• Maintainability

Maintainability is the capability of a system that can be maintained. Maintenance will


include error correction, new developments, change environments, etc. The system
should be maintained with minimum effort and time.

2.7 Benefits of the System


Regarding the abo ve func tional and non- functional requirements, following benifits
have been provided by the ‘M-Fin’ software solution.

• All system users ha ve a login area of the home screen to log in to their specific
branches. The login process will be secured with ‘https’ protocol and passwords
will save to da tabase as hash values us ing one-way hash functions.
• System provides a registration form for capture all the stakeholder details, such as
family details, residence details, education details, health details and experience.
• Access rights screen provided to grant or revoke access rights from the system
users.

15
• Loa n calculation screen to calculate loan installment and schedule according to
the parameters such as loan amount, period, interest rate, etc…
• There is a screen to capture loan application details.
• System facilitates to print loan documents in the loan workflow screen.
• There is a program to maintain approval authority details. Approval authorities are
validated based on this data when authorizing a loan application.
• Dual-authorization provided to relevant reference data maintenance programs.
• A closure screen provided to do facility closures such as early settlement and
nor mal clos ure.
• A SMS will be generated to the app roval author ities when an app lication is
forwarded for their approval.
• System Administrator can view active users of the system and logout any user if
required.

16
Chapter 03 – Design
3.1 Alternative Solutions & Justification
Several alternative solutions were compared to find the most suitable method to solve
the problem domain and de velop t he system.

• Standalone Application

According to the given requirement M-Fin system should be able to run by many
SEEDS branches in the different locations throughout the country. The system must
run in the network infrastructure which already connected all the branches. If a
standalone solution is developed, every user has to install the system in their computer
to acces the system. Also standalone applications are platform dependent. Standalone
app lications also have high maintenance cost.

• Mobile Solution

When using mobile solution, system will be available to access from anywhere.
However it is incorporated with some problems: Users of the system required to have
web accessible phones such as smart phones to access the system. Currently SEEDS
couldn’t afford such high cost.

• Web Bas ed Solution

Web based systems run through the web browser of a computer. It can be easily
accessible by many users connected to a network. Web based systems have central
application server and database. Thus it can be easily maintained. Since every
operating system has a web browser, the application will be system independent.

Justification

According to the above pros and cons the best solution would be a web based solution.
There are there main technologies to develop web based application, PHP, .Net and
Java. Since Microsoft offers an easy to learn development toolkit, a system can be
developed in a short time period. But the price of a de velop ment IDE’s such as
Microsoft Visual Studio is relatively so high. When comparing two open source
solutions, Java has the most of the framework support, platform indepe nde ncy and

17
robustness. It also has free IDEs for the development purposes. Thus J2EE is chosen as
the de velop ment language for the M-Fin loan management system.

3.2 Systems Design Methodology


The Design phase transforms requirements to suitable implementation in selected
design model or technique. There are two approaches to the design phase, Structured
and Object Oriented. Object Oriented Design (OOD) is selected for this project,
Because OOD has many advantages against the structured appr oach. It will leads to a
clear design with flexibility, scalability. Also the software can be reused and easily
maintained. OOD will first identify various objects (real world entities) occurred in the
prob lem and then identify the relationships among those objects. OOD aims to mode l
the problem domain, the problem we want to solve by developing an object oriented
system. Unified Model language (UML) is selected as the modeling language of the
system. UML is a collection of graphical symbols for expressing model of the system.
UML provide s a very rob ust set of notations which grows from analysis to design.

3.3 Systems Design


Systems design is the process of defining the architecture of the software solution to
meet the specified requirements. Object oriented methodo logies are used in the system
design and UML notations are used to illustrate the designs. A best system design
makes the software solution more efficient.

• Systems Design Tools

There are many tools for system design such as ‘Smart Draw’,’ Rational Rose’, etc.
Also there are plug- ins for many popular IDEs such as Eclipse and NetBeans. But
some of them don’t facilitate the required needs and some are us ing non-standard
notations. ‘Enterprise Architect 7.0’ from Sparx Systems is used as the system design
tool because it provides facilities to draw all the diagrams which needed and it uses
more standardized representation of UML notations. Use-case diagrams, Entity-
relationship diagrams, Class diagrams, Activity diagrams and Sequence diagrams
which are drawn using this tool.

18
Figure 3.1: Enterprise Architecture Tool

3.4 Systems Structuring


The software solution is divided into following modules to reduce the complexity of
the design.

Loan
Processing

Reference Information
Data Center
M-Fin

System General
Administration Ledger

Figure 3.2: System Structure

3.5 Deliverables

The following diagrams will give information about the deliverables in the system
design stage.

19
3.5.1 Data Model

Data mode l is an abstract mode l which shows specifically how the data is stored and
accessed in the system.

• Entity Relations hip Diagram

Entity Relations hip diagrams are abstract and conceptual representation of da ta which
produce a type of conceptual schema. It shows the relationships between entities in a
database. The following digram is the ERD for ‘M- fin’ software solution which is
drawn by using the Enterprise Architect tool.

Figure 3.3: ER Diagram

20
• Table Structures
The following is sample table structures for the table Stakeholder & System Program
in M-fin system.

System : Microfinance Loan Management System


E : Entity
D : Derive
R : Reference

Entity Code : STH


Entity Name : Stakeholder
Table Name : stakeholder
Table ID : tbl_01
Description : Stakeholder
Indexes :

Lengt Decim Ke E/D/


Description Attribute Name Type h al y R
Stakeholder Id STAKEHOLDERID Numeric 7 PK E
STAKEHOLDERTY
Stakeholder Type Id PEID Numeric 7 FK R
Title TITLE Varchar 10 E
Initials INITIALS Varchar 20 E
First Name FNAME Varchar 20 E
Last Name LNAME Varchar 30 E
Full Name FULLNAME Varchar 100 E
Date Of Birth DATEOFBIRTH Date E
Gender GENDER Varchar 1 E
Marial Status MARITALSTATUS Varchar 1 E
NIC/Passport No NICPASSPORTNO Varchar 20 E
Account No ACCOUNTNO Varchar 20 E
Address Line 1 ADDRESSLINE1 Varchar 100 E
Address Line 2 ADDRESSLINE2 Varchar 100 E
Address Line 3 ADDRESSLINE3 Varchar 100 E
Address Line 4 ADDRESSLINE4 Varchar 100 E
Telephone No TELEPHONENO Varchar 20 E
Fax No FAXNO Varchar 20 E
Mobile No MOBILENO Varchar 20 E
Email EMAIL Varchar 20 E
System User ID SYSUSERID Numeric 7 E
Created Date CREATEDDATE Date E

21
Table 3.1: Table Structure – Stakeholder

Entity Code : SYP


Entity Name : System Program
Table Name : system Program
Table ID : tbl_05
Description : System Program
Indexes :

Len Decim Ke E/D/


Description Attribute Name Type gth al y R
SYSTEMERPROGRAM
System Program Id ID Numeric 7 PK E
System Program SYSTEMPROGRAMCO
Code DE Varchar 4 E
Description DESCRIPTION Varchar 20 E
Parent ID PARENTID Numeric 7
Reference URL REFERENCEURL Varchar 100
System User ID SYSUSERID Numeric 7 E
Created Date CREATEDDATE Date E

Table 3.2: Table Structure – System Program

• Class Diagram

Class diagram is the main building block of the object oriented modeling. They
describe the static structure of a system. A class is a representation of an object and, in
many ways; it is simply a template from which objects are created. The classes in a
class diagram represent the main attributes and their interactions. In the class diagram
these classes are represented with boxes which contain three parts. In the uppe r part
there is the class name. Middle part contains the attributes of the class. Bottom part is
for the methods or the ope rations of the class. A part of the class diagram is displayed
below which is drawn using the Enterprise Architect tool.

22
Figure 3.4: Class Diagram related classes of Loan process

Figure 3.5: Class Diagram related to classes of Stakeholder Reference

23
3.5.2 Process Model

• Use Case Diagram

Use case diagrams are graphically model the functionality of the system using actors
and use cases. Use case diagrams are used to specify requirements on a subject,
required usage of a system. An organization, a person or an external system can be
represented as actors and their interactions with the system represented in use cases.
When drawing a use case diagram system boundaries are marked in rectangle. Use
cases are drawn us ing ovals. Labe l with the ovals with verbs that represent system’s
functions. Actor stereotype is used to draw actors in the use case. Associations
between actors and use cases are indicated in use case diagrams by solid lines. An
association exists whenever an actor is involved with an interaction described by a use
case. A sample use case diagram of M-Fin system display below, which drew for the
officer actor. Compelete usecase diagrams are included in the appendix.

Figure 3.6: Part of the Use Case Diag ram

The following are the usecase narratives of the Mfin system.

Use case No : U1
Use case : Input Client Details
Description : Create Stakeholder in the M-Fin system
Actors : Officer
Preconditions : Stakeholder Type should be exists in the system
1. Enter the NIC number and check for existing users
2. Enter general stakeholder details
Main Flow of Events :
3. Enter communication details of the Stakeholder
4. Fill other stakeholder details
Alternative Flows 1. If NIC already exists don't allow to create stakeholder
Post Conditions : Show the genarated Stakeholder number

24
Table 3.3: Usecase Narrative – Input Client Details

Use case No : U2
Use case : Login to the system
Description : Allow system users to login to the M-Fin system
Actors : Officer, Manager, Loan Administrator, System Administrator
Preconditions : User must have a username and password
1. Run the M-Fin system in the web browser
2. Select the branch user login into
Main Flow of Events
3. Enter the username
:
4. Enter the password
5. Click login button
Alternative Flows 1. If username or password is incorrect, display an error message
Open the main window of the M-Fin system.
Post Conditions :
Dislay the name of the user in the home screen

Table 3.4: Usecase Narrative – Login to the system

Use case No : U3
Use case : Approve Loans
Description : Approve or reject submitted loan applications
Actors : Loan Administrator
Preconditions : Application must be created in the system
1. Go to the application maintenance screen
Main Flow of Events
2. Search and select the application
:
3. Click on the approve button
1. If user click on the reject button, change application status to
Alternative Flows
Cancel
Post Conditions : Change application status to Approved

Table 3.5: Usecase Narrative – Approve Loans

• Activity Diagram

Figure 3.7: Activity Diagram

25
Activity diagram is another important diagram in UML to describe dynamic aspects of
the system. They are typically used for business process modeling. It uses for model
the logic captured by a single use case or usage scenario, or for model the detailed
logic of a business rule. Activity diagrams show the workflow from a start point to the
finish point detailing the many decision paths that exist in the progression of events
contained in the activity. This flow can be sequential, branched or concurrent. The
following diagram is an activity diagram which is drawn using Enterprise Architect
tool to depict loan approval workflow of the M-Fin system.

• Sequence Diagram

The sequence diagram is another UML diagram used primarily to show the
interactions between objects in the sequential order that those interactions occur.
It enables both to documentation and validation your logic, and commonly used for
both analysis and design purposes. Sequence diagram shows object interactions
arranged in time sequence. It depicts the objects and classes involved in the scenario
and the sequence of messages exchanged between the objects needed to carry out the
functionality of the scenario. Time is represented in the vertical direction showing the
sequence of interactions of the header elements, which are displayed horizontally at the
top of the diagram. The following sequence diagram is display the sequence of Login
to the M- fin system activity. It is also drawn using Enterprise Architect tool.

Figure 3.8: Sequence Diagram

26
3.5.3 User Interface Design

User interfaces are the components of the system which users will interact with. User
interface design is the part where designers foc us on user interaction and experience.
The goal of user interface design is to make the user's interaction as simple and
efficient as possible while accomplishing b usiness need.

• Home Page

The following figure shows the homepa ge of the M-Fin loan management system.
Since M-Fin is not a website, there are no animated items available in the page. The
screen is developed with professional look and feel, to a ssure a user can easily navigate
through. It facilitates user to select the branch; then enter the user name and password
for login. As an additional facility user could click on one of the modules he/she wants
to login to. There is a small description below the modules, to educate user what
contains in the modules.

Figure 3.9: Ho me Page

27
• Main Screen

The following figure is the main screen of the M- fin system. It will load as a separate
windo w to the home pa ge. It is mainly divided into four sections. First one is the
header section; it includes the title of the system and it displays the login branch and
the system date. Second one is the navigation section, which includes a tree structure
to display system modules and programs of the M-Fin system. The system tree is
divided into five modules to navigate through easily. If a user select a module from
home screen when login, the main screen will load with expanded tree of the selected
module. A user can jump to another program by selecting it from the tree without
clos ing the current program. That is the main reason to display navigation menu
throughout the whole session. The third section is where the program screen is displays
according to the selected tree node. And the forth section is the toolbar section below.
For some programs the system uses a common toolbar. Which includes add, modify,
de lete, authorize and inq uiry op tions. The common toolbar loads according to the
requirements of the programs and the given access rights for each user.

Figure 3.10: Main Screen

28
3.5.4 User Interface Standards

HyperText Markup Language (HTML) is used to develop the interfaces and Cascading
Style Sheets (CSS) is used as the style sheet language. JavaScript is used as the client
side scripting language. Common interface standard set is developed using above
languages and use to standardize all the user interfaces of the M- fin microfinance
system.

• Input Forms

Input forms contain three sections, input fields, common toolbar and action buttons.
Input fields allow data to be enterd or display data selected in the grid. Display input
fields will be set to readonly. Date input fileds have a button to trigger the date picker
component and display the date selected by the date picker. Also there are reference
input fields which also have a button to trigger the reference browser.

Figure 3.11: Input Forms

29
• Validations

Mandatory fields of the input forms are marked in red colour asterix. Optional fields
are marked in blue colour asterix. If a user violates a validation condition, the error
will display in the division filed be low the element.

Figure 3.12: Validations

• Data Tables

Data Grids display records which already saved in the database. Each column of the
grid can be sorted acending or decending. The records can be selected column wise or
row wise as well.

Figure 3.13: Data Tab les

30
• Dialog Boxes & Messages

M-Fin system uses default browser dialog boxes and messages for alerts. These
messages are simple and descriptive to avoid confusion.

Figure 3:14: Message from the System

• Date Picker

Date Picker is used to pick the dates in date fields of M-Fin system. A user can go o ver
years and moths of the calendar easily because of its well thoughout design. It is very
muc h user friendly and able to enter a date within seconds.

Figure 3:15: Date Field and Date Picker

31
• Reference Data Browsers

Common browser windo ws help user to browse and select the already defined
reference data. It facilitates to search data by criteria, and display data in a grid.
Button toolbar will contain an OK button for input the selected record value to the
parent screen and Cancel button for simply close the popup without inputting any
record. Also double clicking a row will execute the function of the OK button.

Figure 3:16: Co mmon Bro wser

• System Prints

The reports of the system generated in Excel fromat and the reference data inquiries
are generated in PDF format. Excel reports can be directly open by MS Excel
app lication or saved to the local computer. PDF files created by the system ope n in
popup window and can be sent to the printer or be saved in the local computer.

32
Chapter 04 – Implementation
The main activity of the implementation phase is to translate the agreed design to
source code using selected programming language in the best possible manner.

4.1 Development Environment


Java Enterprise Edition (J2EE) is used as the main programming language of the ‘M-
Fin’ software solution. The system used the n-tier architecture displayed as the
following figure. HTML, Jsp/Servlets, JavaScript, JSTL and Ajax technologies are
used in the Presentation Layer of the system. Struts MVC framework is used for
request processing and validations as the Presentation Logic Layer. Spring framework
is used as the Business Delegation Layer for dependency injection and aspect oriented
programming; Hibernate framework is used as Data Access Layer and MySql is used
as the database. All technologies mentioned above are open source. Combination of
these frameworks gives many benefits such as validation, transaction rollback,
database independency with the robustness of the java.

Java Enterprise Edition

Presentation Presentation Business Data Access Data Source


Layer Logic Layer Delegation Layer
Layer
• JSP/ Servlet
• Javascript
• Struts • Spring • Hibernate
• Ajax • MySql

Data Flow

Figure 4:1: Technical Infastructure of the M-Fin system

33
• Software and Hardware Used
o Software

 Microsoft Windows 7
 Enterprise Architect 7
 MyEclipse 8.6
 MySQL Server 5.1
 MySQL GUI Too ls
 Java Development Kit 1.6
 Apache Tomcat Sever 6
 Flex Builder 3
 Web Browser with Flash and PDF reader plug- in and firebug
add-one
 Microsoft Office package
 Struts, Spring and Hibernate jar files
 Adobe Photoshop CS4

o Hardware

 Desktop computer with 2.9 GHz Core2Duo processor


 4GB RAM
 1TB Hard disk
 Keyboard and Mouse
 Internet Connection

4.2 Hardware and Software Requirements


4.2.1 Server Side

• Minimum Hardware Requirements

o Server computer with 64b it architecture


o 3.0 Core2Duo Processor
o 4GB RAM
o 40GB Hard disk space

• Minimum Software Requirements

34
o Operating system which supports 64bit architecture (Windows or
Linux)
o Apache Tomcat Server 6 (64bit)- Windows or Linux version
(Depending on the ope rating s ystem used)
o MySQL server 5.1
o Java SE 1.6 runtime environment

4.2.2 Client Side

• Minimum Hardware Requirements

o Computer with 2.0 GHz processor


o 512MB RAM
o Network Connection

• Minimum Software Requirements

o Windows XP or higher operating system


o Browser with Flash and P DF plug- in

4.3 Development Tools


When develop ing an enterprise scale application, third party tools are become more
useful to save the time and effort of the de velope rs. Because of that reason many
development tools have been used to develop M-Fin loan management system to make
it a successful one.

• MyEclipse 8.6

MyEclipse is a commercially available Integrated Development Environment (IDE) for


Java Enterprise Edition. It is built upon famous Eclipse platform and integrates
proprietary and open source plug- ins to the development environment. It has support
for JSP/XML visual designing, code debugging, code auto generation, direct control
and deployment of Apache Tomcat server, adding Struts, Spring and Hibernate
capabilities, refactoring, hot deployment and many other features which have been
very useful for development of the project.

35
• MySQL GUI Too ls

MySQL GUI tools are a free toolkit which consists of MySQL Administrator, MySQL
Query Browser, MySQL Migration Too lkit and MySQL System Tray Monitor. Using
MySQL Administrator databases can be created, deleted and maintained. It also
provides backup and restore facilities for MySQL server. Users can create tables, drop
tables and view tables structures of existing tables. Main function of MySQL Query
Browser is executing SQL queries. It is also used to view and modify data of tables.
MySQL Migration Too lkit is used to migrate existing databases from various vendors
to MySQL databases. MySQL System Tray Monitor monitors the status of the MySQL
database service and provides options to start-up, shutdown or configure the instance.

• Adobe Photoshop CS4

Throughout the project development Adobe Photoshop CS4 is used as the image
processing software; to create images, edit pictures, and create logos and buttons
which required for the project.

• Adobe Flex Builder 3

Adobe Flex Builder is also an IDE built upon Eclipse platform to support Adobe Flex
development. It supports WYSWUG editing of Adobe Flex application interfaces. Flex
Builder 3 supports only up to Flex SDK 3.0. The newer version of the Flex Builder
renamed as Adobe Flash Builder. Adobe Flex Builder is used to develop the dashboard
of the M-Fin project.

• Firebug

Firebug is a free and famous web development tool comes as an add-on to the Mozilla
Firefox web browser. It has a console and a network monitor with the support for the
HTML, CSS and JavaScript languages. Firebug is really helpful for the developers
because they can monitor HTTP Requests and responds with the parameters and
headers. Also a developer can inspect HTML elements through firebug add-on.

36
4.4 Coding Structure & Standards
4.4.1 Folder Structure

Following figure shows the structure of the source code where Java classes, libraries,
CSS files, images, JavaScript files, JSP files and configuration files included.

Root Folder

Java Classes

CSS Files

Images

JavaScript Files

Libraries

Struts Configuration File

Struts TagLibs DTD Files

Validation Files

Deployment Descriptor File

JSP Files

Figure 4:2: Source Folder Struture

4.4.2 Package Structure

Java source files are contained in the ‘src’ folder of the file structure. Inside src folder,
there is a package named ‘mfin’ and rest of its sub packages are named according to
the design patterns and tasks they used to perform.

37
Struts Action Classes

Business Delegate Interfaces

Business Delegate Implementation Classes

Spring Configuration XML

Data Access Object Interfaces

Data Access Object Implementation Classes

Domain C lasses

Struts Property Files


Figure 4:3: Java Package St ructure Utility C lasses

• Struts Action Classes


An Action class in M-Fin system extends the ‘Dispatch Action’ class of the Struts
framework. Action classes transfer data from view layer to specific buiness process
and return data from business process to view layer.

• Business Deligate Classes


Contains Business Delegate layer interface classes.

• Business Deligate Implementation Classes


Contains classes which implements Business Detagate interface methods.

• Spring Configuration XML Files


Contains applicationContext.xml file and extended spring configuration XML files
such as spring_action.xml, spring_dao.xml, spring_service.xml and spring_global.xml.

• Data Access Object Interfaces


Contains interfaces of Data Access Object layer.

• Data Access Object Layer Implementation Classes


Contains classes which implements Data Access Object interface methods.

• Domain C lasses
Contains domain classses of the project. Domain classes contain the property
mappings with database tables.

38
• Struts Property Files
Contains Buttons, Errors, Lables and Messages property files.

• Utility C lasses
Contains Utility classes of the M-Fin project.

4.5 Open Source Frameworks Used


Frameworks are collection of interfaces and classes that designed to work together to
handle a particular type of problem. Following frameworks are used in the M-Fin loan
management system development.

4.5.1 Apache Struts

Apache Struts is an open source framework for developing Java Enterprise web
applications. It implies the Front Controller design pattern. The main goal of the Struts
framework is to separate the Model from the View and the Controller in the traditional
MVC architecture.

Struts-config.xml

Form Bean

Action Action
Request Model
Servlet object
s

View

Figure 4:4: Struts Framewo rk Co mponents

• Key Components of the Struts frame work

o Action Servlet
Action Servlet is a built- in class that comes with the Struts libraries. It is the controller
component of the application. Only need one Action Servlet class per web application.
In M-Fin application the process method of Action Servlet get extended to check the
session for each HTTP request.

39
o Form Beans
Form Beans are same as Java bean classes. The Action Servlet calls the setters of form
beans to populate them from form data. Form validation is another main usage of form
beans.

o Action Object
After a request is received, The Action Servlet instantiate the relevant Action class
according to the Struts mapping. This action objects usually map to user actions. It has
a call-back like method named execute() which will be called by the Action Servlet.

o Struts-config.xml
Struts-config.xml is a Struts specific deployment descriptor file. It contains mapping o f
request URLs to Actions, Actions to From Beans and Action to JSP pages.

4.5.2 Spring

Spring is an open source application framework which implements inversion of


control. Inversion of Control (IoC) is an object orient programming practise where
object coupling is bound at runtime not at compile time. Spring framework made it
possible by object interactions being defined through abstractions. The binding of
object properties is achieved through Depende ncy Injection. Depe nde ncy Injection is
also a design pattern which allows a choice of property to be made at runtime.

DAO ORM J2EE WEB

------ ------ ------ ------

JDBC Hibernate EJB Struts

JSP
AOP

IoC

Figure 4:5: Spring Framework Co mponents

40
The default Spring configuration file name is applicationContext.xml. I n M-Fin system
this file is extended by four other configuration files. Those are spring_action.xml
which is for Action classes mapping, spring_dao.xml which is for map DAO classes,
spring_service.xml for map service classes and spring_global.xml for global bean
classes.

4.5.3 Hibernate

Hibernate is also an open source technology which uses for object-relational mapp ing
(ORM) in Java language. Hibernate provides a framework for mapping an object
oriented domain mode l to relational databases. It maps the Java classes to database
tables. This mapping can be accomplished through a configuration file or by using
Java Annotations. It also provides data querying and retrieval facilities that
significantly reduces the development time. Hibernate 3.0 which used in M-Fin system
provides three fully- featured query facilities. Hibernate Query Language, Hibernate
Criteria API and Native SQL.

Application

Persistent Objects

Hibernate

Hibernate Properties XML Mapping

Database

Figure 4:6: Hibernate Framework Co mponents

Normally we use hibernate.hbm file to do the Hibernate mapping. But since we are
using Hibernate with Spring framework in M-Fin application, Hibernate property
mappings are written in spring_ globa l.xml file.

41
4.6 Third Party Components Used
4.6.1 Active Widgets Grid

Active widgets Grid is a freely available cross-browser scrolling data grid control
which builts on JavaScript. It allows developers to create data grids dynamically at the
client-side with JavaScript/DHTML. This highly customizable data grid provides
professional look-and- feel and high interactivity.

Figure 4:7: ‘Active Widgets’ Data Grid

4.6.2 Date Picker

Moo Tools Date Picker is used to pick the dates in date fields of M-Fin system. It is
smoothly animating and configurable JavaScript component. It is also supports time-
picking.

Figure 4:8: ‘Moo Tools’ Date Picker

4.6.3 dTree

dTree is a simple and free JavaScript tree menu compo nent. The tree nodes don’t need
to be in an order within the code as you can re-order them. So it is ideal for generating
a tree structure from a database. It is also very customizable and easy to use.
42
Figure 4:9: 'dTree' JavaScript Grid Co mponent

4.6.4 iText

iText is a free and open source library for creating and manipulating PDF files in Java.
It generates dynamic documents and Serve PDF to a browser. So the content can be
customized or personalized; for instance, the name of the end user can be stamped on
the pages. Also data can be presented with real time database information. Any further
people do not need to create PDF manually dealing with massive volume in content
and can be produced in unattended mode.

4.6.5 jExcel

jExcel is a free and open source Java API created to read, write and modify Excel
spreadsheets. It suppor ts many font formatting and cell formatting options. The API
can be used to read data from many Excel formats. In M-Fin project jExcel API is used
for generate reports in Excel format.

43
Chapter 05 – Evaluation
In the software development life cycle, testing p hase is a critical point as it is the stage
that the software being verify and validate to work as expect. It will check whether the
software meets specified requirements and satisfies the needs of stakeholders. So the
following approach takes part to make this phase a success.

5.1 Testing Method


• At the design phase, test cases were prepared to test the system with sample
data. It includes expected outputs, interface standards which will later
compared with the actuals.
• After implementing a system program, it must go through unit testing. Unit
testing is do ne by executing white-box testing on the program according to
a test case.
• When finish implementing modules, perform integration testing to check
whether communications between the modules are functioning properly.
• After all the modules integrated properly, system testing is done to test the
non- functional requirements of the system.
• Then the system is implemented in the client site and the client performs
user acceptance testing.

5.2 Test Cases


Test case is a testing artifact which should be designed at the test development stage.
So the following test cases were designed and they were executed at each testing level
as to identify defects. Several test rounds were carried on until the test case being
passed.

The following are the test cases used to execute the unit testing. First one is for the
Stake holder Type program.

Test Case 01 Stakeholder Type Reference Program


Pass/Fa
No Description Input Expected Output il
a <less than 2 Display Error Message
A Entering Stakeholder characters> P
1 Type Code aaa <more than 2 Display Error Message
characters> P
44
LN <relevant> P
blank<not relevant> Display Error Message P
A aaaaaa<relevant> P
Entering Description
2 blank<not relevant> Display Error Message P
If select 'Add' Option Clear and enable inputs P
B If enter valid data, click 'Submit' -> click Create Pending record P
1 If enter invalid data, 'Ok' Err. Msgs P
click 'Cancel Back to state P
If select 'Modify' Display Active Records
Option grid P
select record Display selected record P
B Disabled code P
2 Enabled description P
If enter valid data, click 'Submit' -> click Create Pending record P
If enter invalid data, 'Ok' Err. Msgs P
click 'Cancel Back to state P
If select 'Delete' Display Active Records
Option grid P
select record Display selected record P
Disabled code,
B description P
3 if select non used Create Pending record
record click 'Submit' -> click P
'Ok'
if select used record Integrity Err. Msgs P
click 'Cancel Back to state P
If select 'Authorize' Display Pending Records
Option grid P
select record Display selected record P
Disabled code,
description P
B click 'Authorize' -> click Make record as ''Active"
4 'Ok' Record' P
click 'Cancel Back to state P
click 'Reject' -> click Delete 'Pending' record
'Ok' P
click 'Cancel Back to state P

Table 5: 1: Test Case: Stakeholder Type

The following testcase is for the Assignment of loans program in the Loan processing
module.

Test
Case 02 Loan Processing Module - Assignment of Loans
Pass/
No Description Input Expected Output
Fail
Display Officer not
1 Screan Load Click tree node
assigned loans in the grid P
45
Display Loan Officers in the
select P
Tick 'Select All' Tick all checkboxes in
option select column P
Untick 'Select All' Untick all checkboxes in
Check/uncheck option select column P
2
checkboxes Click on a unchecked
checkbox cell Tick the checkbox in cell P
Click on a checked
checkbox cell Untick the checkbox in cell P
If no grid checkbox
ticked Err. message P
If no officer
selected Err. message P
3 Click 'Assign'
If both officer is Display the name of the
selected and at officer in the ticked row
least 1 grid check
box is ticked P
If Loan officer
Click 'Submit'
column is blank Err. message P
If at least 1 Loan Click 'Submit' -> Create officer assigned
4
officer column cell click 'OK' records P
is filled Click 'Submit' ->
click 'Cancel' Back to state P
Untick checkboxes P
5 Clear Click 'Clear' Unselect officer P
Clear officer column P

Table 5: 2: Test Case: Assignment of Loans

The following testcase is for the Access Rights program in the System Administration
Module.

Test
Case
03 System Administration Module - Access Rights
Pass
No Description Input Expected Output
/Fail
Click tree Display all the Programs on left
1 Screan Load
node side unchecked P
AAA<not Err. Msgs P
2.1
relevent> Expected Output at No 1 P
Display Stakeholder Type
Description P
Entering Stakeholder Display all the access given
Type ADM<relev
2.2 programs in the right side
ent>
unchecked P
Ticked all the access given
programs in the left side P
2.3 Blank Expected Output at No 1 P

46
Click browse
button Load Reference Browser P
2.4
Pick a Display Stakeholder Type Code P
Record Expected Output at No 2.2 P
Tick
checkbox remove the nodes below level and
rightside upper level accordingly P
Untick
checkbox Untick the below level and upper
Give/Remove
3 leftside level checkboxes accordingly P
Accessrights
Click left create a tree in rightside with
button ticked left side checkbox nodes P
Tick
checkbox Tick checkboxes in upper level
leftside and below level accordingly P
If no stakeholder type Err. Msgs P
If no rightside tree and
new user group Err. Msgs P
If no rightside tree and Click Remove the previously given
4
access given user group 'Submit' access rights P
Remove the previously given
If have rightside tree access rights for removed nodes P
Give access rights for added rows P
5 Clear Click 'Clear' Expected Output at No 1 P

Table 5: 3: Test Case: Access Rights

5.3 Integration Testing


The purpose of Integration testing was to expose the defects in the interface
interactions between integrated components. Bottom- up Integration testing approach
was used in this testing level. So the bottom level units were tested first and move into
upper level units step by step. After test closure once the test meets the exit criteria, the
integrated system was ready to system testing.

5.4 System Testing


System testing is carried out using the completely integrated system. As this is the last
testing level before showing the system to the users, this testing need to be thoroughly
executed. So in this phase, evaluated the system’s compliance with the specified
requirements is verified.

47
5.5 Acceptance Testing
Acceptance testing was performed by the client organization in their working
environment. This was used to define acceptability of the system as they were
expected and to be prepared for the delivery. A representative of each identified user
groups was participated in the acceptance testing and at the end of final test round a
feedback form was given to evaluate the success of the project.

5.6 Feedback
At the User Acceptance Testing a feedback form was given to the system users to get
their feedback about many aspects of the system. The user evaluation form shown
be low was distributed among the various types of users covering all the functional
areas of the system in order to get their satisfactory level of the system for evaluating
the system by letting them to answer defined questionnaire.

Figure 5:1: User Feedback Form

The feedbacks for the project were very good and received average overall rating of
4.7 out of 5.

48
Chapter 06 – Conclusion
6.1 Critical Assessment of Project
Since microfinance industry is a rapid de velop ing business, there were many many
international and local alternative software solutions available. Most of them are
standalone and highly customized for the client requirements, thus they are not easy to
maintain. So M-fin is developed as a web based software solution with the aims of
easy maintenance. M-Fin has facility for In-depth access rights management which
was not available in other competitive systems. When comparing with other systems,
M-Fin has another advantage, a customizable automated approval system. Users can
define approval levels and the system will automatically filter the approval groups
based on the loan amount.

M-Fin also have a SMS notification engine which other systems not possess. It
generates notification SMS when a loan is assigned to an officer, when a loan is
approved and when the loan is disbursed. M- fin has many other interesting MIS
facilities such as interactive dashboa rds, manager screens to make it better than the
other existing software solutions.

Final output of this project is higly reliable, user friendly, web based loan management
system for Sarvodaya Economic Enterprise Development Services Limited. The
system was developed according to the requirements of the client and achieved almost
all the objectives of the project. The requirements of the SEEDS are carefully analyzed
and transformed in to a design architecture and impelented into an executable source
code using Java language. Then the system is gone through Unit Testing, Integration
Testing, System Testing and User Accepatance Testing for functional and non-
functional requirements. After that, system was deployed at the client site to begin its
operations.

49
6.2 Problems Encountered
There were several problems encountered during this project design and
implementation.

• Since the microfina nce bus iness has no act or governing rules by the
government, SEEDS business was more complicated. Had to expend
many site visits and more time to clearly identify the requirements.
• Time factor become a main problem because the commitments with the
job.
• Had to do research and development for SMS handling and Flex
development.

6.3 Lessons Learnt


• Very important practical and industrial knowledge was gathered from
this project.
• Documentation and time management was very important to
successfully complete the project.
• Gained the expe rience of working with a corpor ate client and how to
make effective communication with them.
• Gatherd new knowledge in a different domain area which will be
helpful for further development of my carrier.

6.4 Future Work


Almost all of the system was developed in open source technology to support platform
indepe nde ncy and scalability of the system. Any inprovements to those technologies
can be easily incorporated in to the M-Fin system. Apart from that following are the
expected work to be done.

• Connect the M-Fin system to a SMS payment gateway to give


customers an easier opportunity to make payments.
• Improve flex dashboards with more features like forcasting and data
minng options.
• Incorporate Google maps to mark locations of customer homes.
• Implement full General Ledger features.
50
References

[WWW1] – Wikipedia Website

http://www.wikipedia.org/ [2012.01.12]

[WWW2] – Website of Sarvodaya Economic Enterprise Development Services


(SEEDS)

http://www.seeds.lk/ [2012.01.14]

[WWW3] – Another microfinance software website

http://mifos.org/ [2012.01.16]

[WWW4] – Another microfinance software website

http://www.loanperformer.com [2012.01.16]

[WWW5] – Another microfinance software website

http://www.senova.lk [2012.01.18]

[WWW6] – Another microfinance software website

http://www.octopusnetwork.org [2012.01.17]

[WWW7] – Tutorial for configuring Apache Tomcat to run on HTTPS protocol.

http://tomcat.apache.org/tomcat-6.0-doc/ssl-howto.html

51
Appendix A- System Documentation
Following list of software should be installed be fore using M-Fin system.

• Java Development Kit (JDK) 1.6

• Apache Tomcat 6.0

• MySQL server 5.1

• Installing a nd Configuring Java


o Java Development Kit (JDK) can be downloaded
from http://www.java.com for free. Download and save it to your local
computer.
o Double click the java setup to start the installation.
o Click next on the following screen.
o Select the install location from the following screen and click next. The
wizard will install the JDK to the specified location.

Figure A : 1 Features of Java Installat ion

o After that it will prompt for the installation for JRE automatically.
Choose the install location for JRE and click next. The wizard will
finish the installation.

52
o Next step is to configure the environmental variables for java. For that
go to My Computer -> Properties -> Advance System Settings ->
Environment Variables.

Figure A : 2: Environ mental Variables

o Create a new variable named JAVA_HOME under system variables.


Set the pa th of the JDK installation directory as the value.

Figure A : 3: Setting 'JA VA_HOM E' Variable

• Installing a nd Configuring Apac he Tomcat Se rve r

o Apache Tomcat server can be freely downloaded from following


URL. http://tomcat.apache.org/download-60.cgi/ .Download it and save
to the local computer.

53
o Double click the Tomcat 6 setup and start the installation.
o Click next on the following screen.
o Accept the License Agreement.
o Choos e the features of Apache Tomcat you want to install from the next
screen and click next.
o Fill- in the basic configuration from the following screen and c lick next.

Figure A : 4: Apache Tomcat Configuration Options

o Select the path of the installed JRE of the system and click next.
o Select the install location from the following screen.
o Click finish and finish the installation wizard from the next screen.
o Set JAVA_OPTS environment variable to manage maximum and
minimum memory allocated to Apache Tomcat server.
Ex: -Xms512M –Xmx2048M –XX:PermSize=256M –
XX:MaxPermSize=2048 M
• Installing and Configuring MySQL Server

o My SQL server 5.1 can be downloaded from following


URL http://dev.mysql.com/downloads/mysql/5.1. html.
o Download it and save to the local computer.
o Double click the setup file to start the installation.
o Click next on following screen to proceed.

54
o Select the program features you want to install from the next screen and
click next.
o Click install button to install the program. And click finish from the
next window.
o Now start the MySQL server instance configuration wizard.
o Select detailed configuration from the next screen and click next.
o Select developer machine option from the following screen.
o Select multifunc tional database option from the following screen.
o Select manual setting option from the next screen and enter the no of
concurrent connections.
o Add the networking options as follows.

Figure A : 5: MySQL Net working Options

o Select default character set.


o Enter security op tions and click next to finish the wizard.

55
Appendix B- Design Documentation
Following are the designed usecase diagrams of the M-Fin loan management system.

Use Case Diagram

The following use case diagram displays the use cases of actor ‘Officer’.

Figure B: 1: Usecase diagram for 'Officer' actor

The following use case diagram displays the use cases of actor ‘Manager’.

Figure B: 2: Usecase diagram for 'Manager' actor

56
The following use case diagram displays the use cases of actor ‘Loan Administrator’.

Figure B: 3: Usecase diagram for 'Loan Ad min istrator' actor

The following use case diagram displays the use cases of actor ‘System
Administrator’.

Figure B: 2: Usecase diagram for 'System Admin istrator' actor

57
Table Structures

Table Structures designed for Stakeholder Type and Stakeholder Program are
displayed be low. All other table structures are followed that format.

Entity Code STT


Entity Name Stakeholder Type
Table Name stakeholderType
Table ID tbl_02
Description Stakeholder Type
Indexes :

Lengt Decima Ke E/ D/
Description Attribute Name Type h l y R
Nu meri
Stakeholder Type Id STAKEHOLDERTYPEID c 7. PK E
Stakeholder Type STAKEHOLDERTYPECO
Code DE Varchar 3. E
Description DESCRIPTION Varchar 20. E
Nu meri
System User ID SYSUSERID c 7. E
Created Date CREATEDDATE Date E

Table B: 1: Tab le St ructure: Stakeholder Type

Entity Code STP


Entity Name Stakeholder Program
Table Name stakeholderProgram
Table ID tbl_03
Description Stakeholder Program
Indexes :

Lengt Decim E/D/


Description Attribute Name Type h al R
Stakeholder STAKEHOLDERPROGR P
Numeric 7. E
Program ID AMID K
F
System Program ID SYSTEMPROGRAMID Numeric 7. E
K
STAKEHOLDERTYPEI F
Stakeholder Type ID Numeric 7. R
D K
System User ID SYSUSERID Numeric 7. E
Created Date CREATEDDATE Date E

Table B: 2: Tab le St ructure: Stakeholder Program

58
Class Diagrams

The following are the parts of the class diagram designed for M-Fin loan management
system.

Figure: B: 3: Part of the Class diagram

Figure: B: 4: Part of the Class diagram

59
Figure: B: 5: Part of the Class diagram

Figure: B: 6: Part of the Class diagram

60
Figure: B: 7: Part of the Class diagram

Activity Diagrams

The following is a activity diagram, ‘create application’ is drawn for the M-Fin loan
management system.

Figure: B: 8: Activity Diagram for Create Application

61
Sequence Diagrams

The following are sequence diagrams drawn for the M-Fin loan management system.

Figure: B: 6: Sequence Diagram fo r Login to the system

Figure: B: 7: Sequence Diagram fo r Applicat ion Approval

62
Appendix C- User Documentation
Users can login to the system by selecting their branc h and entering the username and
password. After they login there is a system tree in the left side, which displays the
links to programs user have access. The user access will be defined on the stakeholder
type, which they were mapped in the system.

The system is divided in to five modules. Such as,

• Reference Data
• Loan Processing
• Information Center
• General Leger
• System Administration
• Reference Data Module

To create a new loan facility, there are some reference data to be maintained in the
system related to Branch, Stakeholder and Application categories.

o Branch → Branch Details

Figure: C: 1: Branch Details Screen

63
Branch Details screen is used to create Branches for the SEEDS organization. The
screen also has options to modify branch details, delete branch details and inquiry
already created branche details. Except inquiry, other ope rations needed author ization
of another system user.

o Branch → Branch O fficers

Figure: C: 2: Branch Officer Screen

The purpose of the branch details screen is to map officers to their respective branches.
From the top of the screen you can select or enter the officer name. The n in the left
cage displays the branches added in the system, in the right cage displays the branches
already assigned to the officer. User can select a branch from the left cage and input
the expiration date, add it to the right cage and click submit button to grant the access
to the selected officer to the selected branch.

o Stakeholder → Stakeholder Details


New user for the system can be created from the following screen. There are
mandator y and opt iona l fields in the screen.

64
Figure C: 3: Stakeholder Details Screen

o Stakeholder → Stakeholder Type

Figure C: 4: Stakeholder Type screen

65
Stakeholder Types for the system users can be created from this screen.There are
modify, delete and inquiry functions also avaiable. Same as other reference data
screens, Stakeholder Type also needs dual authorization.

o Application → Approval Groups

Figure C: 5: Approval Groups Creation

For approval of loans there are different approval levels. These approval levels are are
created as Approval Groups in the system.

o Application → Approval Group Members

Approval authorities of SEEDS such as managers, senior managers, and loan


administrators need to be assigned to relevant Approval Groups in the system. For that
purpose there is Approval Group Members screen. From the top of the screen you need
to select the App roval Group the n select the Branch where the officer you are going to
assign is mapped in the system. Then select the officer, input expiration da te and move
it to the right cage. The right cage contains the group members of the selected
Approval Group.

66
Figure: C: 6: Approval Group Members Screen

o Loa n Type

Figure: C: 7: Loan Type Screen

Loa n Types for the M-Fin system can be created, modified and deleted from the abo ve
screen.

67
• Loa n Processing M odule

o Loan Processing→ Loan Calculation

Figure: C: 8: Loan Calculation Screen

When creating a loan in the system, first loan calculation needed to be created. In the
Loa n Calculation screen, first you have to enter the loa n type. Loa n Type defines the
value ranges for the loan amount, interest rate and loan period, then the client for the
loan and loan amount. If you enter the effective rate the system will calculate the flat
rate, vise-versa is also possible. Rental frequency can be selected from the options of
the combo box. Loan period can be enterd in the no of rentals field. If there are down
payments, advance payment or pre payment, it can be entered through this screen.
There are fields for enter the stamp d uty or other charges from the client when creating
Loan calculation.

After entering above parameters, click calculate button. System will calculate the net
rental amount, total interest and total gross rental amount and display in the screen. It
will also show the installment schedule of the loan in the bottom part of the screen.
You can print the loan schedule as quotation and give it to the client. The print comes
in a PDF format.

68
o Loan Processing→ Application Maintenance

Figure: C: 9: Application Maintenace

When a user click the Application maintenance node system will show a screen to
search a created application. Application can be searched by application no, loan type,
application status and application created date.

After selecting an application from the search screen, click ok button to proceed.
System will load the loan workflow screen next. Loan workflow includes the Loan
Application, Appraisal, Approval, Documents, CheckList and Disbursement.

In the loan application screen (Figure C: 10) stakeholder details of the application will
be displayed.

Then Loan Appraisal (Figure C: 11) need to be completed. In the appraisal you can
upload user image, map of the residence, scanned copy of NIC or any required images.
Also system will display the details of any previous loans client got from the SEEDS.
Loan officer can include any comment about the client and the applied loan in the
appraisal screen.

69
Figure C: 10: Loan Application Screen

Figure: C: 11: Loan Appraisal Screen

70
Following is the Loan Approval screen of the M-Fin system. According to the loan
amount, Approval Groups are created in the system. Then the system will automaticaly
generated the appr oval pa th of the app ication and display in the App lication Appr oval
screen.

Figure C: 12: Application Approval

Figure C: 13: Loan Documents Screen


71
The Loan Document Screen (Figure C: 13) for print the documents which needed to
complete the loan process. Most commonly there are three such documents, Loan
Agreement, Promissory Note and Gurantors Letter.

o Loan Processing→ Assignment of Loans

Figure C: 14: Assignment of Loans

When a loan application has created in the system, Loan administrator must assign the
loan to a loan officer. The above screen fulfills that purpose. The data in the grid are
the applications which are not assigned. Loan administrator can assign applications
one-by-one or assign in bulk.

• Information Cente r Module

o Information Center → Loan Inquiry


From Loa n Inquiry screen (Figur e C: 15) you can extract all the infor mation abo ut loa n
facilities in one screen. Select a one facility and system will display the installment
schedule and pa yment history of the facility in the screen.

72
Figure C: 15: Loan Inquiry Screen

• System Administration Module

→ Access Rights
o System Administration

Figure C: 16: Access Rights Screen



73
The above Access Rights (Figure C: 16) screen is used to grant system access to
different Stake holde r Type s. On the top of the screen you ha ve to select the
Stakeholder. The left cage shows the full system tree. The right cage shows the amount
of accces the selected Stakeholder Type has. Tick the programs and program events
you want to add access and move to the right side and click the submit button.

→ Login Details
o System Administration

Figure C: 17: Log in Details Screen

Purpose of Login Details screen is to create username and password to system users.
From this screen you can change passwords, delete user Login details, lock officers
and view system users.

74
Appendix D- Management Reports
There are many reports generated by M-Fin system to cater the needs of SEEDS. The
following reports are most essential reports for managerial decision making. Hence the
reports are generated in MS Excel format they are displayed as tables. These reports
display the report name on the top row. Also the date the report is generated and the
user who generated the repo rt.

BRANCH SUMMARY

REPORT DATE : 30/04/2012


USER : MR SYSTEM ADMINISTRATOR
NO.
OF
CLI NO. OF NP
EN FACILITIE PORTFO NO. OF NP NO. OF NP COLLECTI
BRANCH TS S LIO CLIENTS FACILTIIES ON RATIO
Mannar 0 0 0.00 0 0 0.00
Chilaw 0 0 0.00 0 0 0.00
City Branch 0 0 0.00 0 0 0.00
Borella 0 0 0.00 0 0 0.00
Kurunegala 0 0 0.00 0 0 0.00
Nattandiya 0 0 0.00 0 0 0.00
Vavniya 0 0 0.00 0 0 0.00
Kegalle 0 0 0.00 0 0 0.00
Avissavella 0 0 0.00 0 0 0.00
Embilipitiya 0 0 0.00 0 0 0.00
Horana 0 0 0.00 0 0 0.00
Nittambuwa 0 0 0.00 0 0 0.00
Matara 0 0 0.00 0 0 0.00
Homagama 0 0 0.00 0 0 0.00
Hambantota 0 0 0.00 0 0 0.00
Total: 0 0 0.00 0 0 0.00

Table D: 1: Branch Su mmary Report

The above report is the branch summary report. It displays the branchwise summary of
No. of clients in the branch, No. of loan facilities given, Non-performing portfolio of
the branch, No. of clients who have Non-performing loans, No. of Non-performing
loans in the branch and the collection ratio of the branch. Collection ratio is calculated
by dividing total loan collections amount by total loans due amount.

The following report is to get the details of the entire client database branchwise.The
repor t displays the Branch Name, Client No., Salutation of the Client, Inititals, Last

75
Name of the Client and the National Ide ntity card Numbe r. This report can be
generated for all branches or for a single branch.

CLIENT DETAILS FOR THE BRANCH -ALL

REPORT DATE : 30/04/2012


USER : MR SYSTEM ADMINISTRATOR
BRANCH NAME CLIENT NO. SALUATION INITIALS LAST NAME NIC NO

Table D: 2: Client Details Report

The following report is for get information about loan disbursements. It will display
the loan disbursements done by SEEDS within the given period of time. The from date
and to date are parameterized. Like the previous report, this report also can be
generated for branch wise or for all the branches. This report has Branch Name, Loan
Number, Client Number, Loan Amount, Disbursement Amount, Undibursed Amount,
Loa n Approval date and Disbursed Date.

LOAN DISBURSEMENTS FOR A PERIOD - FROM : 30/04/2011 TO : 30/04/2012 FOR


THE BRANCH -ALL

REPORT DATE : 30/04/2012


USER : MR SYSTEM ADMINISTRATOR
BRAN LOAN CLIENT LOAN DISBURS UNDISBUR APPRO DISBURS
CH NUMB NUMB AMOU ED SED VAL EMENT
NAME ER ER NT AMOUNT AMOUNT DATE DATE

Total: 0.00 0.00 0.00 0.00

Table D: 3: Loan Disbursement Report

76
Appendix E – Test Results
The following are the test cases used to execute the unit testing. Table E: 1 is for the
Loa n Type program.

Test Case 04 Loan Type Program


N Pass/F
o Description Input Expected Output ail
a <less than 3 Display Error Message
characters> P
A Entering Loan Type aaaa <more than 3 Display Error Message
1 Code characters> P
LT1 <relevant> P
Blank <not relevant> Display Error Message P
A Aaaaaa <relevant> P
Entering Description
2 Blank <not relevant> Display Error Message P
-1000.00 <not Not allow to enter
A Enter Maximum Loan relevant> negative values P
3 Amount
10000.00 <relevant> P
-5000.00 <not Not allow to enter
A Enter Minimum Loan relevant> negative values P
4 Amount
5000.00 <relevant> P
Not allow to enter
A Enter Maximum Loan -10 <not relevant> negative values P
5 Period
60 <relevant> P
Not allow to enter
A Enter Minimum Loan -10 <not relevant> negative values P
6 Period
12 <relevant> P
Not allow to enter
A Enter Minimum Interest -15.00 <not relevant> negative values P
7 Rate
20.00 <relevant> P
Not allow to enter
A Enter Maximum -30.00 <not relevant> negative values P
8 Interest Rate
27.00 <relevant> P
If select 'Add' Option Clear and enable inputs P
B If enter valid data, click 'Submit' -> click Create Pending record P
1 If enter invalid data, 'Ok' Err. Msgs P
click 'Cancel Back to state P
If select 'Modify' Display Active Records
Option grid P
select record Display selected record P
B Disabled code P
2 Enabled description P
If enter valid data, click 'Submit' -> click Create Pending record P
If enter invalid data, 'Ok' Err. Msgs P
click 'Cancel Back to state P
B If select 'Delete' Option Display Active Records P
77
3 grid
select record Display selected record P
Disabled code, description P
if select non used Create Pending record
record click 'Submit' -> click P
'Ok' Integrity Err. Msgs
if select used record P
click 'Cancel Back to state P
If select 'Authorize' Display Pending Records
Option grid P
select record Display selected record P
Disabled code, description P
B click 'Authorize' -> Make record as ''Active"
4 click 'Ok' Record' P
click 'Cancel Back to state P
click 'Reject' -> click Delete 'Pending' record
'Ok' P
click 'Cancel Back to state P

Table E: 1: Test Case: Loan Type

The following testcase is for the Approval Group program in the Reference Data
module.

Test Case 05 Approval Group Program


Pass/F
No Description Input Expected Output ail
aa <less than 3 Display Error Message
characters> P
A Entering Approval aaaa <more than 3 Display Error Message
1 Group Code characters> P
G01 <relevant> P
blank<not relevant> Display Error Message P
A aaaaaa<relevant> P
Entering Description
2 blank<not relevant> Display Error Message P
If select 'Add' Option Clear and enable inputs P
B If enter valid data, click 'Submit' -> click Create Pending record P
1 If enter invalid data, 'Ok' Err. Msgs P
click 'Cancel Back to state P
If select 'Modify' Display Active Records
Option grid P
select record Display selected record P
B Disabled code P
2 Enabled description P
If enter valid data, click 'Submit' -> click Create Pending record P
If enter invalid data, 'Ok' Err. Msgs P
click 'Cancel Back to state P
B If select 'Delete' Display Active Records P
78
3 Option grid
select record Display selected record P
Disabled code,
description P
if select non used Create Pending record
record click 'Submit' -> click P
'Ok' Integrity Err. Msgs
if select used record P
click 'Cancel Back to state P
If select 'Authorize' Display Pending Records
Option grid P
select record Display selected record P
Disabled code,
B description P
4 click 'Authorize' -> click Make record as ''Active"
'Ok' Record' P
click 'Cancel Back to state P
click 'Reject' -> click 'Ok' Delete 'Pending' record P
click 'Cancel Back to state P

Table E: 2: Test Case: Approval Group

79
Appendix F – Code Listing
The following codes are taken from the Loan Type JSP file.

• LoanType.jsp

The following lines are for import the required tab libiraries for the JSP. They are
JSTL Core, Bean and Logic tags.

<%-- Import tag libraries--%>


<%@ taglib uri="WEB-INF/struts-logic.tld" prefix="logic"%>
<%@ taglib uri="WEB-INF/struts-bean.tld" prefix="bean"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

<html>
<head>
<title>::: Loan Type :::</title>

<%-- Import CSS files--%>


<link href="css/vista/aw.css" rel="stylesheet" type="text/css"></link>
<link href="css/style.css" rel="stylesheet" type="text/css"></link>

<%-- Import JavaScript files--%>


<script src="js/aw.js" type="text/javascript"></script>
<script src="js/ajax.js" type="text/javascript"></script>

<script type="text/javascript">

//return HTML Element


function $(name){
return document.getElementById(name);
}

//prepare URL for the create ajax request


function createData(){
var url="loanType.do?dispatch=createLoanType&loanTypeCode="+
$("txtLoanType").value+"&description="+$("txtDescription").
value;
return url;
}

//Clear input fields and division tags


function clearFilling(){
$('txtLoanType').value='';
$('txtDescription').value='';
$('divLoanType').innerHTML='';
$('divDescription').innerHTML='';
}

//Assign error messages to division tags


function prepareRequestDataValidate(message){
for( var i =0; i < message.length ; i++){
if ( message[i]['loanTypeCode'] ){
$('divLoanType').innerHTML = message[i]['loanTypeCode'];
}else if( message[i]['description'] ){

80
$('divDescription').innerHTML = message[i]['description'];
}else{
alert(message);
}
}
}

//get All loantypes


function getData(){
var url="dispatch=getGridData&rand="+Math.random()*9999;
var ajax=new ajaxObject('loanType.do');
ajax.callback=function(responseText, responseStatus, responseXML){
if (responseStatus == 200) {
var myArray = eval("("+responseText+")");
setGridData(grid,myArray);
}
}
ajax.update(url,'POST');
}

<style>
<%-- Styles for the loan type grid --%>
#loanTypeGrid {height: 200px; width: 710px;}
#loanTypeGrid .aw-row-selector {text-align: center}
#loanTypeGrid .aw-column-0 {width: 80px;}
#loanTypeGrid .aw-column-1 {width: 200px;}
#loanTypeGrid .aw-column-2 {text-align:right;width: 120px;}
</style>

Start of the bod y tag.

<body onload="loadTool();" topmargin="0" bottommargin="0" marginheight="0"


leftmargin="0" style="padding: 1px;margin-left: 0px;margin-right: 2px;"
class="reference">
<input type="hidden" id="pageId" value="loanType">

Start of the JSTL logic tag. Elements inside this tag will display only if the condition is
satisfied.

<logic:equal value="create" name="loantype" property="action" >


<table width="100%" >
<tr>
<td width="100%">
<fieldset style="border-radius: 5px 5px 5px 5px;width: 733px" >
<table style="width: 70%" cellspacing="5px;">
<tr>
<td class="tdRight">
<bean:message key="screen.loanType"/>
</td>
<td class="tdleft">
<input type="text" name="txtLoanType" id="txtLoanType"
onfocus="clearScreen('divLoanType')" maxlength="3" >
<br/>
<div class="validate" id="divLoanType"></div>
</td>
</tr>
<tr>

81
<td class="tdRight">
<bean:message key="screen.description"/>
</td>
<td colspan="2" class="tdleft">
<input type="text" name="txtDescription" id="txtDescription"
size="50" onfocus="clearScreen('divDescription')" >
<br/>
<div class="validate" id="divDescription"></div>
</td>
</tr>
</table>
</logic:equal>

Following is the JavaScript code for create the Active widget grid.

<script type="text/javascript">

var Columns = ['<bean:message key="screen.loanType"/>',


'<bean:message key="screen.description"/>'];

var data = [<logic:iterate name="loantype" property="datalist" id="dt">


["<bean:write filter="false" name="dt" property="loanTypeCode"/>",
"<bean:write filter="false" name="dt" property="description"/>",
],</logic:iterate>];

var str=new AW.Formats.String;


var num=new AW.Formats.Number;
var grid=createBrowser('loanTypeGrid',Columns,[str,str,num,num,num]);
document.write(grid);
setGridData(grid,data);
grid.onSelectedRowsChanged = function(row){
$('txtLoanType').value = this.getCellText(0,row);
$('txtDescription').value= this.getCellText(1,row);
};

</script>

Next source code is the Struts action class, Loan Type Action.

• Loa nTypeAction.java

Following is the action method for create a loan type.

//Create Loan Type


public ActionForward createLoanType(ActionMapping mapping,ActionForm
form,HttpServletRequest request,HttpServletResponse response) throws
Exception{
HttpSession session=request.getSession();
if(session != null){
MessageResources messageResources = getResources(request,"errors");
ActionMessages validateForm =form.validate(mapping,request);
if(!validateForm.isEmpty()){
response.getWriter().write(StrutsFormValidateUtil.
getMessages(request,validateForm,messageResources,
getLocale(request),null).toString());
}else{

82
try {
String loanTypeCode=null,description=null;
double minRate=0,maxRate=0,minAmount=0,maxAmount=0;
int minPeriod=0,maxPeriod=0;
if(request.getParameter("loanTypeCode")!=null &&
request.getParameter("loanTypeCode")!=""){
loanTypeCode=request.getParameter("loanTypeCode");
}
if(request.getParameter("description")!=null &&
request.getParameter("description")!=""){
description=request.getParameter("description");
}

LoanType loanType=new LoanType();


loanType.setLoanTypeCode(loanTypeCode);
loanType.setDescription(description);
loanType.setCreatedDate(new Date());
loanType.setSysUserId(Integer.parseInt(
String.valueOf(session.getAttribute("stakeholderId"))));
loanType.setRecordStatus(1);
messageResources = getResources(request,"message");
getLoanTypeBD().createLoanType(loanType);
response.getWriter().write(StrutsFormValidateUtil.
getMessageCreateSuccess(messageResources).toString());
}catch (CommonException e) {
response.getWriter().write(
StrutsFormValidateUtil.getErrorMessage (
messageResources, e).toString());
}
}
}
return null;
}

• LoanTypeDAOImpl.java

The following is a Data Access Layer class, LoanTypeDAOImpl. It extends the


HibernateDaoSupport class in the Hibernate framework.

package mfin.daoimpl;

import java.util.List;
import mfin.dao.LoanTypeDAO;
import mfin.domain.LoanType;
import mfin.util.CommonException;
import org.hibernate.Criteria;
import org.hibernate.criterion.Projections;
import org.hibernate.criterion.Restrictions;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

public class LoanTypeDAOImpl extends HibernateDaoSupport implements


LoanTypeDAO {

//Create Loan Type


public void createLoanType(LoanType loanType){
Criteria loantypeCriteria=getSession().createCriteria(LoanType.class);
loantypeCriteria.add(Restrictions.eq("loanTypeCode",

83
loanType.getLoanTypeCode()));
loantypeCriteria.setProjection(Projections.rowCount());
int count = ((Integer) loantypeCriteria.uniqueResult()).intValue();
if (count >0){
throw new CommonException("message.recordexist");
}else{
getHibernateTemplate().save(loanType);
}
}

• StakeholderType.java

The following class is the domain class for the Stakeholder Type program. Stakeholder
Type do main class is an exact prop erty mapp ing with the stakeholder_type table. This
class use annotations support for map the properties to the table columns.

package mfin.domain;

import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name="stakeholder_type")
public class StakeholderType {
private int stakeholderTypeId;
private String stakeholderTypeCode;
private String description;
private int sysUserId;
private Date createdDate;
private int recordStatus;
private int originalRecordId;

@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name="stakeholderTypeId")
public int getStakeholderTypeId() {
return stakeholderTypeId;
}
public void setStakeholderTypeId(int stakeholderTypeId) {
this.stakeholderTypeId = stakeholderTypeId;
}

@Column(name="createdDate")
public Date getCreatedDate() {
return createdDate;
}
public void setCreatedDate(Date createdDate) {
this.createdDate = createdDate;
}

84
@Column(name="description")
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}

@Column(name="sysUserId")
public int getSysUserId() {
return sysUserId;
}
public void setSysUserId(int sysUserId) {
this.sysUserId = sysUserId;
}

@Column(name="stakeholderTypeCode")
public String getStakeholderTypeCode() {
return stakeholderTypeCode;
}
public void setStakeholderTypeCode(String stakeholderTypeCode){
this.stakeholderTypeCode = stakeholderTypeCode;
}

@Column(name="recordStatus")
public int getRecordStatus() {
return recordStatus;
}
public void setRecordStatus(int recordStatus) {
this.recordStatus = recordStatus;
}

@Column(name="originalRecordId")
public int getOriginalRecordId() {
return originalRecordId;
}
public void setOriginalRecordId(int originalRecordId) {
this.originalRecordId = originalRecordId;
}

• Stakeholder Type form bean definition

Following code is the mapping of the stakeholdertype form-bean in the struts-


config.xml.Form properties are defined as children and their types are properly
defined.

<form-bean name="stakeholdertype"
type="org.apache.struts.validator.DynaValidatorForm">
<form-property name="stakeholderTypeCode" type="java.lang.String"/>
<form-property name="description" type="java.lang.String"/>
<form-property name="action" type="java.lang.String" initial="create"/>
<form-property name="evn" type="java.lang.String" initial="1"/>
<form-property name="datalist" type="java.util.List" />
</form-bean>

85
• Action mapping

Following code is the mapping of the loantype action in the struts-config.xml.

<action path="/loanType"
name="loantype"
type="org.springframework.web.struts.DelegatingActionProxy"
validate="false"
parameter="dispatch"
input="/LoanType.jsp">
</action>

• Spring configaration

After mapping action in the struts-config.xml, the Struts Action class needed to be mapped to
the specific action. The following code in the spring_action.xml does satisfy the purpose.

<bean name="/loanType" class="mfin.action.LoanTypeAction">


<property name="loanTypeBD" ref="loanTypeBD" />
</bean>

Following code in the spring_service.xml maps the LoanTypeBDImpl class and its
dependancies.

<bean id="loanTypeBD" class="mfin.bdimpl.LoanTypeBDImpl">


<property name="loanTypeDAO" ref="loanTypeDAO" />
</bean>

Following code in the spring_dao.xml maps the LoanTypeDAOImpl class and its
dependancies. Such as hibernate session factory.

<bean id="loanTypeDAO" class="mfin.daoimpl.LoanTypeDAOImpl">


<property name="sessionFactory" ref="sessionFactory />
</bean>

• Database Configuration

Following code shows how to configure the database and define hibernate properties in
the spring_global.xml.

<bean id="datasource" class="org.apache.commons.dbcp.BasicDataSource">


<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mfin"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</bean>

<bean id="hibernateProperties" class="org.springframework.beans.


factory.config.PropertiesFactoryBean">
<property name="properties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.MySQLDialect

86
</prop>
<prop key="hibernate.max_fetch_depth">3</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.format_sql">true</prop>
<prop key="hibernate.use_sql_comments">true</prop>
<prop key="hibernate.generate_statistics">true</prop>
<prop key="hibernate.jdbc.batch_size">20</prop>
<prop key="hibernate.transaction.factory_class">
org.hibernate.transaction.JDBCTransactionFactory</prop>
<prop key="hibernate.jdbc.use_streams_for_binary">true</prop>
</props>
</property>
</bean>

• Struts validation

Back-End valida tions of the M-Fin system are done in the validation.xml in the struts
framework. Following is the code to validate Loan Type program properties.

<formset>
<form name="loantype">
<field property="loanTypeCode" depends="required,mask,minlength">
<arg0 key="screen.loanType" />
<var>
<var-name>mask</var-name>
<var-value>${stringValue}</var-value>
</var>
<arg1 key="${var:minlength}" resource="false" />
<var>
<var-name>minlength</var-name>
<var-value>${Min}</var-value>
</var>
</field>

<field property="description" depends="required,mask">


<arg0 key="screen.description" />
<var>
<var-name>mask</var-name>
<var-value>${stringValue}</var-value>
</var>
</field>
</form>
</formset>

87
Appendix G – Client Certificate

88
Glossary & Index
INDEX
A
L
Activity diagrams --------------------- 18, 25
Loan agreement---------------------------- 10
Analysis -------------------------- 4, 7, 18, 25
Loan approval -------------------------- 10, 25
Applications------------ 2, 12, 17, 24, 37, 67
Appraisal ------------------------------- 10, 64 M
Arrears---------------------------------- 11, 14
M-Fin ------------------- 7, 10, 31, 62, 70, 81
C Microfinance ------------------------ 1, 10, 20
MyEclipse ------------------------------ 32, 33
Calculation -------------------------- 3, 16, 63
Class diagrams ------------------------------18 O
Closures ---------------------------------- 3, 16
OOD --------------------------------------5, 18
D
P
Data model ----------------------------------20
Database------------- 2, 13, 9, 34, 39, 70, 81 Promissory Note ----------------------- 14, 67
Day-end ------------------------------------- 3
R
E Requirement---------------------------- 4, 5, 7
ERD------------------------------------------20
S
F SEEDS ------------------- 1, 7, 46, 64, 70, 71
Feasibility ------------------------------------ 4 SMS ----------------------------------------- 44
Feedback ------------------------------------- 6 Spring ----------------- 31, 32, 36, 38, 39, 80
Field officer ---------------------------------10 Struts ------------------ 31, 32, 33, 77, 80, 81

G T

General ledger ------------------------------- 3 Test case ------------------------------------ 42


Guarantor ------------------------------------14 Trial calculation -------------------------3, 14

H U

Hibernate ------------------ 31, 32, 33, 39, 78 UML ----------------------------- 6, 12, 18, 25
Use case diagrams ------------------------- 23
I User Acceptance Testing ---------------5, 43
User interfaces ------------------------- 15, 26
Installments ---------------------- 1, 2, 11, 15
V
J
Validation --------------------- 25, 31, 38, 81
J2EE ------------------------------------ 18, 31
W
Waterfall Model ----------------------------- 4

89
GLOSSARY

Actor

An Actor is a person, o rganization or external system that plays a role in one or more
interactions with your system. Actors are drawn as stick figures.

Class

A class consists of a collection of types of encapsulated instance variables and types of


methods, pos sibly with implementation of those types together with a constructor
function that can be used to create objects of the class.

Database

Structured collection of records or data. A computer database relies upon software to


organize the storage of data.

JSP

Server side programming language based on java.

Object Oriented

A software design method that models the characteristics of abstract or real objects
using classes and objects.

Requirement Specification

Description of the functionalities to be included in the software system.

Transaction
An electronic operation that changes the contents of a database by adding, modifying,
transferring or deleting data.

Unified Modeling Language


Standard language for specifying, visualizing, constructing, and documenting the
artifacts of software systems.

Use Case
Sequence of an action that provides something of measurable value to an actor and is
drawn as a horizontal ellipse.

Web Frame work


A set of classes that are closely related in terms of function and data.

90

You might also like