Software Engineering Micro Project
Software Engineering Micro Project
In this phase the requirements are gathered by the business analyst and they are
analyzed by the team. Requirements are documented during this phase and
clarifications can be sought.
The Business Analysts document the requirement based on their discussion with the
customer.
Going through the requirements and analyzing them has revealed that the project team
needs answers to the following questions which were not covered in the requirements
document –
Will the new banking application be used in more than one country?
Do we have to support multiple languages?
How many users are expected to use the application? etc
System Design
The architect and senior members of the team work on the software architecture, high
level and low level design for the project.
It is decided that the banking application needs to have redundant backup and failover
capabilities such that system is accessible at all times.
The architect creates the Architecture diagrams and high level / low level design
documents.
Implementation
They take the design documents / artifacts and ensure that their solution follows the
design finalized by the architect.
Since the application is a banking application and security was a high priority in the
application requirements, they implement several security checks, audit logging
features in the application.
They also perform several other activities like a senior developer reviewing the other
developers code for any issues. Some developers perform static analysis of the code.
Testing
The testing team tests the complete application and identifies any defects in the
application.
These defects are fixed by the developers and the testing team tests the fixes to ensure
that the defect is fixed.
They also perform regression testing of the application to see if any new defects were
introduced.
Testers with banking domain knowledge were also hired for the project so that they
could test the application based on the domain perspective.
Security testing teams were assigned to test the security of the banking application.
Deployment
The team builds and installs the application on the servers which were procured for
the banking application.
Some of the high level activities include installing the OS on the servers, installing
security patches, hardening the servers, installing web servers and application servers,
installing the database etc.
They also co-ordinate with network and IT administrative teams etc to finally get the
application up and running on the production servers.
Maintenance
During the maintenance phase, the team ensures that the application is running
smoothly on the servers without any downtime.
Issues that are reported after going live are fixed by the team and tested by the testing
team.
V model
Explanation: - In the V model, the testing phase and development phase are
designed in such a way that they are planned parallel to each other.
So if we take alphabet V there is validation on one end and verification on the other
end and the joining point of the both is the coding phase.
In this, the software testing starts at the beginner level right after writing of
requirements.
It is performed after completion of unit testing and in this modules are integrated into
the system to be tested. This verifies the communication aspect.
3. System testing:
It is performed in the user environment that simply resembles the production unit, in
this step it is made sure that the software is ready to be used in the real world.
Incremental process model
Explanation:-
1. Introduction
1.1 Purpose
1.2 Scope
1.3 Overview
2. General Description
3. Functional specifications
3.1Login
3.2Validation
3.3Payment of money
3.4Transfer of money
3.5Transaction report
4. Interface Requirements
4.1 GUI
5. Performance Requirements
6. Constraints
7 Performance
7.1Security
7.2 Reliability
7.3 Availability
7.4 Maintainability
7.5 Reusability
8. Reference
1. Introduction
This document gives detailed functional and nonfunctional requirements for the
bank management system. This product will support online banking
transaction. The purpose of this document is that the requirements mentioned in
it should be utilized by software developer to implement the system.
1.1 Purpose
1.2 Scope
1.3 Overview
2. General description
The client will have client interface in which he can interact with the banking
sys- tem. It is a web based interface which will be the web page of the banking
application. Starting a page is displayed asking the type of customer he is
whether ordinary or a corporate customer. Then the page is redirected to login
page where the user can enter the login details. If the login particulars are valid
then the user is taken to a home page where he has the entire transaction list
that he can perform with the bank. All the above activities come under the
client interface.
The system is a web based application clients are requiring using modern
web browser such as Mozilla Firefox 1.5, PHP.
* Web Server:
* Back End:
3. Functional Specifications
This section provides the functional overview of the product. The project will
require the PHP as a front end and at the back end the database MYSQL will be
running. Various functional modules that can be implemented by the product
will be
1. Login
2. Validation
4. Withdrawal of money
5. Transfer Money
6. Customer info.
3.1 Login:
3.2 Validation:
When a customer enters the ATM card, its validity must be ensured. Then
customer is allowed to enter the valid PIN. The validation can be for following
conditions
“Expired Card”.
After validating the card, the validity of PIN must be ensured. If he/she fails to
enter valid code for three times then the card will not be returned to him. That
means the account can be locked. The counter for number of logins must be
maintained
4. Interface Requirements
4.1 GUI
This is interface must be highly intuitive or interactive because there will not be
an assistance for the user who is operating the System. At most of the places
help desk should be provided for users convenience. The screens appearing
should be designed in such a manner that it can draw User attaraction towards
the new plans for the customers.
1. Touch screen/Monitor
2. Keypad
2. The PHP must be installed. For the database handling MYSQL must be
installed. These products are open source products.
5. Performance Requirements
The system should be compatible enough to hold the general traffic .
It should not get hang or show some other problems arising out due to large no
of concurrent users . The system should be fast enough to meet the customer
The high and low temperature should not affect the performance of the device.
An uninterrupted transaction must be performed.
6.Constraints
* The information of all the users must be stored in a database that is accessible
by the On- line
Banking System.
* The Online Banking System is connected to the computer and is running all
24hours a day.
* The users access the Online Banking System from any computer that has
Internet browsing capabilities and an Internet connection.
*The users must have their correct usernames and passwords to enter into the
Online Banking System.
Design Constraints:
The languages that shall be used for coding Online Banking System are c , c+
+ , java , and HTML. For working on the coding phase of the Online job
portal System Web Sphere Application Server/WebSphere Application
Server CE Server needs to be installed.
*Database design
In our database design, we give names to data flows, processes and data stores.
Although the names are descriptive of data, they do not give details .So
following DFD, our interest is to build some details of the contents of data
flows, processes and data store. A data dictionary is a structured repository of
data about data .It is a set of rigorous definitions of all DFD data elements
and data structures .
7. Performance
7.1 Security
7.2 Reliability
The application should be highly reliable and it should generate all the updated
information in correct order.
7.3 Availability
Any information about the account should be quickly available from any
computer to the authorized user. The previously visited customer’s data must
not be cleared.
7.4 Maintainability
7.5 Portability
The application should be portable on any windows based system. It should not
be machine specific.
8 References:
www.w3schools.com
www.roseindia.net
www.dbforums.com
www.ibm.com
http://tomcat.apache.org/
4.UMl diagrams
1. Use case diagram
2. Activity diagram
3. Sequence diagram
5. Code
//***************************************************************
// HEADER FILE USED IN PROJECT
//****************************************************************
#include<iostream>
#include<fstream>
#include<cctype>
#include<iomanip>
using namespace std;
//***************************************************************
// CLASS USED IN PROJECT
//****************************************************************
class account
{
int acno;
char name[50];
int deposit;
char type;
public:
void create_account(); //function to get data from user
void show_account() const; //function to show data on screen
void modify(); //function to add new data
void dep(int); //function to accept amount and add to
balance amount
void draw(int); //function to accept amount and subtract
from balance amount
void report() const; //function to show data in tabular
format
int retacno() const; //function to return account number
int retdeposit() const; //function to return balance amount
char rettype() const; //function to return type of account
}; //class ends here
void account::create_account()
{
cout<<"\nEnter The account No. :";
cin>>acno;
cout<<"\n\nEnter The Name of The account Holder : ";
cin.ignore();
cin.getline(name,50);
cout<<"\nEnter Type of The account (C/S) : ";
cin>>type;
type=toupper(type);
cout<<"\nEnter The Initial amount(>=500 for Saving and
>=1000 for current ) : ";
cin>>deposit;
cout<<"\n\n\nAccount Created..";
}
void account::modify()
{
cout<<"\nAccount No. : "<<acno;
cout<<"\nModify Account Holder Name : ";
cin.ignore();
cin.getline(name,50);
cout<<"\nModify Type of Account : ";
cin>>type;
type=toupper(type);
cout<<"\nModify Balance amount : ";
cin>>deposit;
}
void account::dep(int x)
{
deposit+=x;
}
void account::draw(int x)
{
deposit-=x;
}
//***************************************************************
// function declaration
//****************************************************************
void write_account(); //function to write record in binary file
void display_sp(int); //function to display account details given by
user
void modify_account(int); //function to modify record of file
void delete_account(int); //function to delete record of file
void display_all(); //function to display all account details
void deposit_withdraw(int, int); // function to desposit/withdraw
amount for given account
void intro(); //introductory screen function
//***************************************************************
// THE MAIN FUNCTION OF PROGRAM
//****************************************************************
int main()
{
char ch;
int num;
intro();
do
{
system("cls");
cout<<"\n\n\n\tMAIN MENU";
cout<<"\n\n\t01. NEW ACCOUNT";
cout<<"\n\n\t02. DEPOSIT AMOUNT";
cout<<"\n\n\t03. WITHDRAW AMOUNT";
cout<<"\n\n\t04. BALANCE ENQUIRY";
cout<<"\n\n\t05. ALL ACCOUNT HOLDER LIST";
cout<<"\n\n\t06. CLOSE AN ACCOUNT";
cout<<"\n\n\t07. MODIFY AN ACCOUNT";
cout<<"\n\n\t08. EXIT";
cout<<"\n\n\tSelect Your Option (1-8) ";
cin>>ch;
system("cls");
switch(ch)
{
case '1':
write_account();
break;
case '2':
cout<<"\n\n\tEnter The account No. : "; cin>>num;
deposit_withdraw(num, 1);
break;
case '3':
cout<<"\n\n\tEnter The account No. : "; cin>>num;
deposit_withdraw(num, 2);
break;
case '4':
cout<<"\n\n\tEnter The account No. : "; cin>>num;
display_sp(num);
break;
case '5':
display_all();
break;
case '6':
cout<<"\n\n\tEnter The account No. : "; cin>>num;
delete_account(num);
break;
case '7':
cout<<"\n\n\tEnter The account No. : "; cin>>num;
modify_account(num);
break;
case '8':
cout<<"\n\n\tThanks for using bank managemnt
system";
break;
default :cout<<"\a";
}
cin.ignore();
cin.get();
}while(ch!='8');
return 0;
}
//***************************************************************
// function to write in file
//****************************************************************
void write_account()
{
account ac;
ofstream outFile;
outFile.open("account.dat",ios::binary|ios::app);
ac.create_account();
outFile.write(reinterpret_cast<char *> (&ac), sizeof(account));
outFile.close();
}
//***************************************************************
// function to read specific record from file
//****************************************************************
void display_sp(int n)
{
account ac;
bool flag=false;
ifstream inFile;
inFile.open("account.dat",ios::binary);
if(!inFile)
{
cout<<"File could not be open !! Press any Key...";
return;
}
cout<<"\nBALANCE DETAILS\n";
//***************************************************************
// function to modify record of file
//****************************************************************
void modify_account(int n)
{
bool found=false;
account ac;
fstream File;
File.open("account.dat",ios::binary|ios::in|ios::out);
if(!File)
{
cout<<"File could not be open !! Press any Key...";
return;
}
while(!File.eof() && found==false)
{
File.read(reinterpret_cast<char *> (&ac),
sizeof(account));
if(ac.retacno()==n)
{
ac.show_account();
cout<<"\n\nEnter The New Details of
account"<<endl;
ac.modify();
int pos=(-1)*static_cast<int>(sizeof(account));
File.seekp(pos,ios::cur);
File.write(reinterpret_cast<char *> (&ac),
sizeof(account));
cout<<"\n\n\t Record Updated";
found=true;
}
}
File.close();
if(found==false)
cout<<"\n\n Record Not Found ";
}
//***************************************************************
// function to delete record of file
//****************************************************************
void delete_account(int n)
{
account ac;
ifstream inFile;
ofstream outFile;
inFile.open("account.dat",ios::binary);
if(!inFile)
{
cout<<"File could not be open !! Press any Key...";
return;
}
outFile.open("Temp.dat",ios::binary);
inFile.seekg(0,ios::beg);
while(inFile.read(reinterpret_cast<char *> (&ac),
sizeof(account)))
{
if(ac.retacno()!=n)
{
outFile.write(reinterpret_cast<char *> (&ac),
sizeof(account));
}
}
inFile.close();
outFile.close();
remove("account.dat");
rename("Temp.dat","account.dat");
cout<<"\n\n\tRecord Deleted ..";
}
//***************************************************************
// function to display all accounts deposit list
//****************************************************************
void display_all()
{
account ac;
ifstream inFile;
inFile.open("account.dat",ios::binary);
if(!inFile)
{
cout<<"File could not be open !! Press any Key...";
return;
}
cout<<"\n\n\t\tACCOUNT HOLDER LIST\n\n";
cout<<"===============================================
=====\n";
cout<<"A/c no. NAME Type Balance\n";
cout<<"===============================================
=====\n";
while(inFile.read(reinterpret_cast<char *> (&ac),
sizeof(account)))
{
ac.report();
}
inFile.close();
}
//***************************************************************
// function to deposit and withdraw amounts
//****************************************************************
//***************************************************************
// INTRODUCTION FUNCTION
//****************************************************************
void intro()
{
cout<<"\n\n\n\t BANK";
cout<<"\n\n\tMANAGEMENT";
cout<<"\n\n\t SYSTEM";
cout<<"\n\n\n\nMADE BY : your name";
cout<<"\n\nSCHOOL : your school name";
cin.get();
}
//***************************************************************
// END OF PROJECT
//***************************************************************
Test plan
For testing banking applications, different stages of testing
include
Test cases
For Admin Verify Admin login with valid and Invalid data
Verify admin login without data
Verify all admin home links
Verify admin change password with valid and invalid data
Verify admin change password without data
Verify admin change password with existing data
Verify admin logout
For new Branch Create a new branch with valid and invalid data
Create a new branch without data
Create a new branch with existing branch data
Verify reset and cancel option
Update branch with valid and invalid data
Update branch without data
Update branch with existing branch data
Verify cancel option
Verify branch deletion with and without dependencies
Verify branch search option
For New Role Create a new role with valid and invalid data
Create a new role without data
Verify new role with existing data
verify role description and role types
Verify cancel and reset option
Verify role deletion with and without dependency
verify links in role details page
For New users Create a new user with valid and invalid data
Create a new user without data
Create a new user with existing branch data
Verify cancel and reset option
Update user with valid and invalid data
Update user with existing data
Verify cancel option
Verify deletion of the user
Challenge Mitigation
Getting access to production data and Ensure that test data meets regulatory
replicating it as test data, for testing is compliances requirements and guidelines
challenging Maintain the data confidentiality by
following techniques like data masking,
synthetic test data, testing system
integration, etc.
There may be the cases where The test should participate in the project
requirements are not documented well right from Requirement Analysis phases
and may lead to functional gaps in test and should actively review the Business
plan Requirements
Many non-functional requirements are
not fully documented, and testers do not
know whether to test it or not
The most important point is to check Compliance or Regulatory Policies testing
whether the said system follows the must be done
desired policies and procedures
The scope and the timelines increases as Ensure Time budget for Integration
banking application are integrated with Testing is accounted if your banking
other application like internet application has many external interfaces
or Mobile banking
Banking domain is the most vulnerable area for cyber-theft, and safeguarding
the software requires precise testing. This tutorial gives a clear idea of what it
takes for banking domain testing and how important it is. One must
understand that -
SCOPE:
Creating New Accounts- The application can
be used to create two different types of
accounts by the customers, which are Savings
Account and Current Account. It helps save the
hustle for the customer to visit the bank
physically and create/use these accounts.
Depositing Money- As the world is moving
towards the limited use of paper currency,
depositing or transferring money from one
bank to the other will become as easy as
clicking a few buttons using this application.
Withdrawing Money- Requests can be sent
through the application to ask for money
transfer as well.
Account Holder List- This is a feature for the
admin. The admin can view the list of all the
account holders.
Balance Enquiry- The customer can check
their balance via this application.
Changing Passwords/PIN- The customer can
easily change the passwords and pin numbers
using the application.
Closing- The customer can close their
accounts too using this application.
Despite this growing popularity, some banks still fall short on the
demand for mobile tasks, like bill pay and reward redemption, causing
them to push users to online banking. However, even this push won't
be enough to popularize online banking as millenials and Gen Zers
continue gravitating toward the mobile market.