Customer Bank Account Management System: Technical Specification Document
Customer Bank Account Management System: Technical Specification Document
Customer Bank Account Management System: Technical Specification Document
Management System
Contents
1 Introduction……………………………………………………………………………………………………………………………3
2 Design Overview……………………………………………………………………………………………………………………4
3 Topology Diagram………………………………………………………………………………………………………………….6
4 Application Architecture…………………………………………………………………………………………………………7
5 Database Architecture…………………………………………………………………………………………………………...14
1.1 Purpose
The purpose of this document is to outline the technical design of the Banking Application and provide
an overview for the implementation.
Its main purpose is to -
Provide the link between the Functional Specification and the detailed Technical Design documents
Detail the functionality which will be provided by each component or group of components and
show how the various components interact in the design
Provide a basis for the Banking Application’s detailed design and development
As is true with any high level design, this document will be updated and refined based on changing requirements.
1.2 Scope
This application will be used to demo use of Struts2 (MVC pattern), Design patterns, Hibernate, Spring
integration in a project implementation. Functionality is kept to bare minimum to avoid complexity. New flow
can be added as and when needed for demo purpose.
1.3 Audience
The intended audiences for this document are the faculty members and students.
2.1 Approach
This document might be extended in multiple phases over the course of the project -
Requirements Phase - During the Requirements Phase, the initial version of this document is
created, describing the candidate architecture to be validated in the System Design Phase.
System Design Phase - During the System Design phase, the Evolutionary Prototype is created
and this document is finalized by establishing a sound architectural foundation for the
Construction Phase.
Construction Phase – During the Construction Phase, this document is not expected to
change radically; it is mainly updated to reflect changes in any interface definitions.
Transition / Training Phase – During the Transition/Training Phase, no further
additions or modifications are made to this document. If a new functionality to
be implemented it will pass though all the above phases and this document will
be updated accordingly.
A key Architectural goal is to leverage industry best practices for designing and developing a scalable,
enterprise-wide J2EE application.
This can be used to learn how to design and code a simple web application using java technology stack, Struts2
framework, Spring integration, Hibernate and MySql.
Guiding principles provide a foundation upon which to develop the target architecture for the
application, in part by setting the standards and measures that the tool must satisfy. These in turn drive
design principles that can be used to validate the design and ensure that it is aligned with Design
Principles and Standards.
This application is designed to be flexible. Flexibility is the ability of the application to adapt and evolve
to accommodate new requirements without affecting the existing operations. This relies on a modular
architecture, which isolates the complexity of integration, presentation, and business logic from each
other in order to allow for the easy integration of new technologies and processes within the application.
Design patterns are elements of reusable object oriented software. A design pattern catalogue is a
repository of design patterns. Use of such patterns makes the design of an application transparent. These
patterns have been used successfully by developers in their respective fields, and therefore, the pros and
cons of the pattern (as well as implementation issues) are known beforehand. All design patterns are
reusable and can be adapted to particular contexts.
Some of the design patterns which will be used in the design and development of this Application are -
Front
Controller
Business
Delegate
Data Access
Object Value
Object
Command
Pattern
A few more patterns will be added to this list in different phases of the project.
The diagram below provides a illustration of the System Architecture along with various system
components that will be used in architecting the Banking Application –
JDBC – Java Database Connectivity is an application program interface (API) specification for
connecting programs written in Java to the data in popular databases. Since we are using Hibernate we
will not be using this API directly and don’t have to write SQL queries or code for object relational
mapping explicitly.
4 Application Architecture
Application architecture defines the various components and their interactions in context of a whole
system.
At a conceptual level, they represent distinct and cohesive aggregations of functionality. This design is
based on a tiered approach. “A tier is a logical partition of the separation of concerns of the system. Each
tier is assigned its unique responsibility in the system. We view each tier as logically separated from one
another. Each tier is loosely coupled with the adjacent tier.” Spring Integration is used in Business and
Data access layer. This Application architecture can be represented in the following layers illustrated by
the diagram below:
The Client Tier represents the point at which data is consumed by the system’s users which include
online users as well as external systems.
A standard Internet Browser such as Chrome is the primary client for the Simple Banking Application.
Presentation or view layer comprised of JSP (HTML + standard tags) and a struts Controller. Controller
on user request invokes appropriate JSP based on struts configuration. The JSPs also include JavaScript
functions where applicable for input validation. Data-to-content conversion and Content-to-data
conversion are the two primary responsibilities of this layer.
The Business layer will implement the business rules for the application. Different components with
their responsibilities are:
4.2.1 Action Classes: Action class act as an adapter between business logic and presentation layer. It
invokes appropriate service for insert, get, delete, update data and act as a business delegate.
4.2.2 Services: Services will be created per BO for providing interface for insert, get, delete, update
operations. Transaction demarcation will be added on the services layer. It is an interface for all
business/data services for clients like a web client.
4.2.3 Business Objects: a Business Object will be created per hibernate entity like Account, Person etc.
Each BO has Respository(DAO) injected which is used for data access. All business related rules will be
executed in this layer including business validations.
Each Repository has session factory injected which is used to obtain a session which is used for data
access from DB. Session factory uses schema provided by hibernate entities (having hibernate
annotations) for Object relational mapping. Hibernate uses JDBC API underneath.
The resource layer includes the underlying resources that the application uses to deliver its
functionality. This is MySql Database to persist information.
In this section we detail the significant interactions between the major components for the Banking
Application from a user’s click to executing business logic. Below is a high level logical sequence
diagram depicting the significant interactions within the application.
Note: The Sequence Diagram below is only a logical representation of the significant interactions of the
system and may not directly map to the physical interactions of the system.
Object Model is the description of the structure of the objects in a system including their identity,
relationships to other objects, attributes, and operations.
The Simple Banking Application will use MySql Database as its repository.
Data Model is a method for describing data structures and a set of operations used to manipulate and
validate that data. Data Model for the Simple Banking Application is as shown below –