Академический Документы
Профессиональный Документы
Культура Документы
INTRODUCTION
The Bitcobs mobile app is simple and easy to use. From the app, the user can buy, sell &
view their trade history, open orders, and crypto holdings with their total equivalent value in
Indian rupees.
Bitcobs uses the Distributed Ledger Technology (Blockchain) offers multiple benefits to
trading that make a difference when implementing a solution that requires a high degree of
trust for transactions. Using the technology offers the possibility to reduce costs and offers
the opportunity for businesses to build and maintain an infrastructure that delivers capabilities
at lower expenses than traditional centralized models.
Blockchain can process transactions faster because it doesn’t use a centralized infrastructure.
Although there is no system totally secure from cyberattacks , the distributed nature of
blockchain provides an unprecedented level of trust. The unchangeable property of
blockchain and its public availability among itsusers.
Another cryptocurrency benefit that blockchain technology provides is that transfers can
cross national boundaries in seconds, with minimum fees, and without going through third –
party entities such as bank.
Page|1
1.1 Background
The idea behind this project we’ll remove many of problems that are exist in other app.
cryptocurrencies sometimes make the problems more likely to occur, and thus more
disturbing. In addition, the same principles are responsible for a certain number of risks
unique to cryptocurrencies.
Involvement of Third party: when the user transfers money from one account to
another, the bank remains involved in this entire session, which is the insecure for
bothparties.
Payment Attack:An attack that is theoretically possible is a 51% attack. Where you
can rewrite blocks and give yourself the mining reward and undo your transactions, so
you can erase previous transactions and get your bitcoinback.
Page|2
1.2 Objectives
Online trading is basically the act of buying and selling financial products through an
online trading platform. Such as, you managed to make a small profit as you bought
your currencies at low rate and sold them back at a higher rate.
Stocks Sharing
Page|3
1.3 Purpose andScope
The BITCOBS platform is easy to use. From the app, the user can buy ,sell and view
their trade .The BITCOBS app makes it easy to trade seamlessly between
cryptocurrencies. The tool designed to make financial markets accessible to the average
person. Traders can trade using limit order, market order, stop-loss, take- profit and settle
position functions over a variety of cryptoexchanges.
Scope:
Security Services
Healthcare
World Trade Managed using Blockchain.
Monitoring
Data Analysis
File Storage
Protection of Intellectual property rights.
A country like India which has recently faced demonetization has developed great affection
for crypto currencies in the recent past. It has been nearly five years sincebitcoin made its
debut in Indian financial markets. In India, the transactions made through cryptocurrency are
on the rise despite the notifications circulated by the finance ministry. This makes it clear that
the upcoming future of bit coin in India is drazzling. There are about 1548 crypto currencies
currently operational in the market available as an alternate to bitcoin. Since bitcoin is not
available in the physical form, is this virtual currency can be converted into physical form by
it on various online exchange platforms.
Page|4
2. SURVEY OF TECHNOLOGIES
Backend-
a) PHP – (recursive acronym for PHP: Hypertext Preprocessor )is a widely –used open
source general-purpose server side scripting language that is especially suited for web
development and can be embedded into HTML.
Frontend-
a) HTML - Hypertext Markup Language(HTML) is the standard markup language for
creating web pages and web applications. With Cascading Style Sheet (CSS) and
JavaScript, it forms a triad of cornerstone technologies for the World Wide
Web.HTML can embed programs written in a scripting language such as JavaScript,
which affects the behaviour and content of web pages. Inclusion of CSS defines the
look and layout of content. The World Wide Web Consortium, maintainer of both the
HTML and the CSS standards, has encouraged the use of CSS over explicit
presentationalHTML.
Page|5
b) Cascading Style Sheet (CSS) – CSS is a Style Sheet language used for
describing the presentation of a document written in a markup language like HTML.
CSS is a cornerstone technology of the World Wide Web, alongside HTML and
JavaScript. CSS is designed to enables the separation of presentation and content ,
including layout, colors, and fonts. This separation can improve content accessibility,
relevant CSS in separate .cssfile , and reduce complexity and repetition in the
structuralcontent.
f) Gulp-Gulp is a tool that helps you out with several tasks when it comes to web devel-
opment. It’s often used to do front end tasks like Spinning up a web server, optimizing
assets like CSS, JavaScript, and images.Basically, feasibility study aims to objectively
and rationally uncover the strengths and weaknesses of an existing business or proposed
venture, opportunities and threats present in the natural environment the resources required
to carry through, and ultimately the prospects for success. In its simplest terms, the two
criteria to judge feasibility are cost required and value to be attained.
g) Task runner- A Task runner is a tool used to automate tasks in the development process.
The task can be used to perform a wide variety of operations such as the compilationof
TypeScript files or the compression of JavaScript files.
Page|6
3. FEASIBILITY STUDY
A feasibility study was conducted to objectively evaluate the project idea and compare it
with solution that already exist in the market. An study and analysis of a
proposed project to determine if it is technically feasible, is feasible within the estimated
cost, and will be profitable. Feasibility studies are almost always conducted where large
sums are at stake, also called feasibilitystudy.
The Feasibility study is focused towards goal of the developer. This study analyzes
whether the software product can be practically materialized in terms of implementation ,
contribution of project to team, cost constraints and as per values and objectives of the
project team.
Basically, feasibility study aims to objectively and rationally uncover the strengths anweak-
nessesof an existing business or proposed venture, opportunities and threats present in the
naturalenvironment the resources required to carry through, and ultimately the prospects
forsuccess. In its simplest terms, the two criteria to judge feasibility are cost required and
value to be attained.
It helps in identifying profit against investment expected from a project. Cost and time are
the most essential factors involved in this field of study.
Data Integrity: Data integrity is the maintenance of, and the assurance of the
accruracy and consistency of, data over its entire life-cycle , and is a critical aspect to
the design,implementation and usage of any system which stores,processes,or
retrievesdata.
Data Authentication : Data authentication is the process of confirming the origin and
integrity of data. The term is typically related to communication, messaging and
integration . Data Authentication has two elements: authenticating that you’re getting
data from the correct entity and validating the integrity of thedata.
Security (Bruteforce) : Brute force cracking is a trial and error method used by
application programs to decode encrypted data such as passwords or data encryption
standard keys, through exhaustive effort(using brute force) rather than employing
intellectualstrategies.
User Interface(UI) Designing : User Interface problems in software use analysis are
mostly related to information that is incorrectly displayed in the application or to
errors that arise in the non-English-languages versions of thesoftware.
Page|8
4.2 Planning and Scheduling
a) GANTT CHART
Page|9
b) PERT CHART
P a g e | 10
4.3Software & Hardware Requirements
Software Requirement :
a) Development–
Ubuntu, is a free and open –source operating system and Linux distribution based on
Debian. Ubuntu is offered in three official editions: Ubuntu Desktop for personal
computers, Ubuntu server for servers and the cloud, and Ubuntu Core for internet of
things devices androbots.
PuTTY is a free open-source terminal emulator, serial console and network file
transfer application. It supports several network protocols, including SCP, SSH,
Telnet, rlogin, and raw socket connection. It can also connect to a serialport.
P a g e | 11
phpMyAdmin is a free software tool written in PHP, intended to
handle the administration of MySQL over the web. phpMyAdmin
supports a wide range of operations on MySQL and MariaDB.
Frequently used operations (managing databases, tables, columns,
relations, indexes, users, permissions, etc.) can be performed via the
user interface, while you still have the ability to directlyexecute any
SQLstatement.
Apache is the most widely used web server software. Developed and
maintained by Apache Software Foundation, Apache is an open source
software available for free.It is fast, reliable andsecure.
b) Deployment-
Hardware Requirements :
a) Development-
b) Deployment-
P a g e | 12
5.SOFTWARE DEVELOPMENT LIFE CYCLE
Implementation
Verification
Maintenance
An Iterative life cycle model does not attempt to start with a full specification of
requirements instead, development begins by specifying and implementing just part of
the software, which then reviewed to indentify further requirements. This process is then
repeated, producing a new version of the software at the end of each iteration of the model.
Iterative Model-Design:
P a g e | 13
Design & Testing Implementation
Development
Requirements
Design & Testing Implementation
Development
In this incremental model, the whole requirement is divided into various builds.
During each iteration, the development module goes thorough the requirements,
design , implementation and testing phase. Each subsequent release of the module
adds function to the previous release. The process continues till the complete system is
ready as per the requirement.
Iterative Model–Application:
Like other SDLC models, iterative and incremental development has some specific
application in the software industry. This model is most often used in the following scenarios
P a g e | 14
A new technology is being used and is being learnt by the development team while
working on the project.
Resources with needed skill sets are not available and are planned to be used on
contractbasis for specific iterations.
There are some high-risk features and goals which may change in the future.
The advantage of this model is that there is a working model of the system at a
very early stage of development, which makes it easier to find functional or desi gn
flaws.Finding issues at an early stage of development enables to take corrective
measures in a limited budget.
The disadvantages with this SDLC model is that it is applicable only to large and bulky
software development projects. This is because it is hard to break a small software system
into further small serviceable increments modules.
The disadvantages of the iterative and incremental SDLC model are as follows –
P a g e | 15
More resources may be required
Although cost of change is lesser, but it is not very suitable for changing
requirements.
More management attention is required.
System architecture or design issues may arises because not all
requirements are gathered in the beginning of the entire life cycle.
Defining increments may require definition of the complete system.
Not suitable for smaller projects.
Management complexity is more.
End of the project may not be known which is a risk.
Highly skilled resources are required for the risk analysis.
Projects progress is highly dependent upon the risk analysis phase.
Basically, Iterative model use for highly risky project and Bitcobs also a new
technology based project like blockchain in which risk available at each phase so,
iterative model help to iterates requirements, design, build and test phases again and
again for each requirement and builds up a system iteratively till it is completely built.
In iterative model we can start with a little of requirements specification and we can
detect the defects and faults at an early stage.It supports user feedback. Less time is
utilized for documentation .More time is utilized for software development.
P a g e | 16
6.PRELIMINARY MODULE DESCRIPTION
ADMIN
Interface
MANAGER
Interface
USER
P a g e | 17
MANAGER PANEL MODULE:
The purpose of this manager module is to view transactions and also verify the
validate user or not. There are some features of manager panel module-
In trading system that have multiple users, they can access the software at any way so we
will find the Manger panel module to be a helpful tool in reviewing and managing the work
of their users within a database. With the module you will be able to
See the list of users, their login Id’s and last activity within the organization’s
database.
Drill-Down to see which accounts were modified by a specific user and the time and
date of modification.
Bitcobs users with appropriate security privileges will now have access to a special “Manger
Panel” section within their Bitcobs database. Options under Manger panel include a user
report that lists the Bitcobs users for your database and a summary of their recent activity. By
drilling down on a user name you can see their activity for the last days. A more detailed
User Activity Report shows details on the number of accounts and journal entries added, and
changed over the last week and last month. Manger panel also block the unauthorized users.
USER Module:
Login
Signup
Wallet Section
Trading View
P a g e | 18
Internet Transaction Database
Multiple Coins view
Google Authentication
Payment gateway
P a g e | 19
7. SYSTEM DESIGNING
A Data Flow Diagram (DFD) is a diagram that describes the flow of data and the
processes that change data throughout a system. It’s a structured analysis and design
tool that can be used for flowcharting in place of or in association with information.
Oriented and process oriented system flowcharts. When analysis prepare the data flow
diagram, they specify the user needs at a level of detail that virtually determines the
information flow into and out of the system and the required data resources. This
network is constructed by using a set of symbols that do not imply physical implemen-
tations. The Data Flow Diagram reviews the current physical system, prepares input
and output specification, specifies the implementation plan etc.
Four basic symbols are used to construct data flow diagram. They are symbols that
represent data source, data flows, and data transformations and data storage. The
pointsat which data are transformed are represented by enclosed figures, usually circles,
which are called nodes.
- Data Flow
- Process
- Storage
P a g e | 20
Steps to construct Data Flow Diagram-
Process should be named and numbered for easy reference. Each name should be
representative of the process.
The destination of flow is from top to bottom and from left to right.
When a process is exploded in to lower level details they are numbered.
The names of data stores, sources and destinations are written in capital letters.
a) 0 Level DFD:
Make Trade
P a g e | 21
b) 1 Level DFD:
P a g e | 22
c) 2 Level DFD :
Manager
User Panel
Provide
Support to
Create Cryptocurr
Accoun ency
t
Update BITCOBS
Review
KYC Cryptocurrency and
update
Exchange KYC
KYC
Status View
Transacti
on
Buy
Cryptoc
Stop/
urrency
Block
Super transfer
user users
access
Acknowle
gement of
Buyer’s
Purchase
Admin
Can block
manager
Sell / too
Transfer
Cryptocu Acknowlegem
rrency ent of Tranfer
of
Cryptocutrre
ncy
P a g e | 23
7.2 Entity Relationship Diagram(ERD)
P a g e | 24
7.3Data Structure
a) Users Table
Sr no. Field Type Null Length Default Extra
b) Coins Table
Sr no. Field Type Null Length Default Extra
c) Balances table
Sr no. Field Type Null Length Default Extra
P a g e | 25
d) Dwacc Table
Sr no. Field Type Null Length Default Extra
e) Opncls Table
Sr no. Field Type Null Length Default Extra
P a g e | 26
8. CODING
Authentication module :
<?php
if(!isset($_SESSION["id"])){
header("Location: login.php");
exit(); }
?>
Funds module :
<?php
include('functions.php');
include('auth.php');
$cust_id = $_SESSION['id'];
$result = funds($cust_id);
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Crypto | Exchange</title>
<link href="https://fonts.googleapis.com/css?family=Montserrat|Roboto+Condensed"
rel="stylesheet">
</head>
<body>
<!-- NAVBAR -->
<section id="showcase">
<nav class="navbar sticky-top navbar-expand-md navbar-dark">
<div class="container">
<a class="navbar-brand" href="#">Navbar</a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-
target="#navbarTogglerDemo02"
aria-controls="navbarTogglerDemo02" aria-expanded="false" aria-label="Toggle
navigation">
<span class="navbar-toggler-icon"></span>
</button>
P a g e | 27
</li>
<li class="nav-item">
<a class="nav-link" href="./funds.php">Funds</a>
</li>
</ul>
</div>
</div>
</nav>
<div class="container">
<!-- FUNDING SECTION STARTED -->
<!-- INTRODUCTORY CARD STARTED -->
<div class="card mt-3 shadow">
<div class="card-body">
<div class="row">
<div class="col-md-2 text-center mt-md-3">
<imgsrc="./img/funds.svg" alt="" style="max-width:100%; height: auto;">
</div>
<div class="col-md-7 mt-md-1" id="funding">
<h5 class="text-dark">Bitcobs P2P: Convert INR ↔ USDT</h5>
<p class="text-muted">
<small>Use Bitcobs P2P when you want to buy USDT to trade cryptos, or when you want to
sell USDT and
cash
out to INR. It's safe and hassle free!</small>
</p>
</div>
<div class="col-md-3 text-center mt-md-4">
<button class="btnbtn-success text-white btn-lg" type="submit">INR ↔ USDT</button>
P a g e | 28
</div>
</div>
</div>
</div>
<!-- INTRODUCTORY CARD ENDED -->
<!-- FUNDING TABLE CONTENT STARTED -->
<h2 class="text-white border-bottom mt-4">Funds</h2>
<div class="card">
<div class="card-body p-1">
<div class="text-dark d-flex justify-content-between flex-wrap">
<div class="fukrey">
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fas fa-search"></i></span>
</div>
<input type="text" class="form-control m-0" aria-label="Dollar amount (with dot and two
decimal places)"
placeholder="search">
</div>
</div>
<!-- MATERIAL SWITCH -->
<div class="d-flex align-self-center mt-2">
<label class="switch align-self-center mt-1 mr-1">
<input type="checkbox">
<span class="slider round"></span>
</label>
<div style="font-size:1rem;"><small>Hide Zero Balances</small></div>
</div>
<div style="font-size:1rem;" class="mt-md-2 mt-2"><small>Estimated Portfolio ~ <i class="fas
fa-rupee-sign align-self-center"></i>00.00</small></div>
</div>
</div>
</div>
<thead>
<tr>
<th scope="col"><small>ASSETS</small></th>
<th scope="col"><small>
<div class="d-flex">
<div>AVAILABLE</div>
<div class="ml-1"> BALANCE</div>
</div>
</small></th>
<th scope="col"><small>
<div class="d-flex">
<div class="mr-1">IN</div>
<div>ORDERS</div>
P a g e | 29
</div>
</small></th>
<th scope="col"><small>TOTAL</small></th>
<th scope="col">
<div class="text-primary"><small>
<div class="d-flex mt-0">
<div>INR</div>
<div class="ml-1">VALUE</div>
<i class="fas fa-arrow-down align-self-center"></i>
</div>
</small></div>
</th>
<th scope="col"><small>ACTION</small></th>
</tr>
</thead>
<tbody>
<?php $i=1;
while($row = mysqli_fetch_array($result)) { ?>
<tr>
<th class="text-dark">
<div class="d-flex"><imgsrc="./img/<?= $row['coin_logo'];?>" alt="ut" style="max-width:1rem;
max-height:1.2rem;" class="align-self-center mr-1">
<div class="d-flex">
<div><small><?= $row['coin_name'];?></small></div>
<div><small>(<?= $row['coin_code'];?>)</small></div>
</div>
</div>
</th>
<td><small>0.0</small></td>
<td><small>0.0</small></td>
<th>0</th>
<td>
<small>
<div class="d-flex">
<i class="fas fa-rupee-sign align-self-center mr-1"></i>
<div>0.00</div>
</div>
</small></td>
<td>
<div class="d-flex">
<div class="btnbtn-outline-success btn-sm mr-2" id="deposite<?php echo $i;
?>">Deposit</div>
<div class="btnbtn-outline-danger btn-sm" id= "withdraw<?php echo $i;?>">Withdraw</div>
</div>
</td>
<tr>
P a g e | 30
<!--<div class="col-12"> -->
<div class="row">
<div class="col-md-4">
<div class="d-flex justify-content-between">
<small>VOLUME</small>
<small>AVAILABLE ZIL: 0.0
</small>
</div>
<input type="number" placeholder="0" class="form-control">
</div>
<div class="col-md-4">
<small>DESTINATION ADDRESS</small>
<input type="number" class="form-control">
</div>
<div class="col-md-4">
<small>REMARKS</small>
<input type="number" class="form-control">
</div>
<div class="col-md-4 mt-4">
<button class="btnbtn-danger text-white"><small>PROCEED WITH WITHDRAW
</div>
</div>
<p class="mt-2"><small>WITHDRAW FEE: ZIL 65</small></p>
</form>
<!--</div> -->
</div>
</div>
P a g e | 31
</div>
</div>
<div id="gayab<?php echo $i; ?>" class="p-3">
<div class="row">
<div class="col-md-8 text-secondary">
<h6 class="text-secondary border-bottom pb-2 font-weight-bold">Send to Your Secure Zebi
Deposit
Address</h6>
<div class="mt-3 mb-3"><small>Destination Address</small></div>
<div id="tooltip">
<button id="copied" class="btnbtn-success">
<span class="tooltiptext" id="myTooltip">Copy</span>
<i class="far fa-clone mr-2"></i>Copy
</button>
</div>
</div>
</div>
</div>
</div>
</td>
</tr>
P a g e | 32
</tr>
<?php
$i++;
} ?>
</tbody>
</table>
</div>
</div>
</div>
</section>
<script src="./js/jquery.min.js"></script>
<script src="./js/bootstrap.min.js"></script>
<script src="./js/bootstrap.bundle.min.js"></script>
<script src="./js/main.js"></script>
<script src="./js/fund.js"></script>
</body>
</html>
<?php
P a g e | 33
include('functions.php');
include('auth.php');
$cust_id = $_SESSION['id'];
$result = funds();
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Crypto | Exchange</title>
<link href="https://fonts.googleapis.com/css?family=Montserrat|Roboto+Condensed"
rel="stylesheet">
</head>
<body>
<!-- NAVBAR -->
<section id="showcase">
<nav class="navbar sticky-top navbar-expand-md navbar-dark">
<div class="container">
<a class="navbar-brand" href="#">Navbar</a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-
target="#navbarTogglerDemo02"
aria-controls="navbarTogglerDemo02" aria-expanded="false" aria-label="Toggle
navigation">
<span class="navbar-toggler-icon"></span>
</button>
P a g e | 34
<li class="nav-item smaller1">
<a class="nav-link" href="./login.php">Sign In</a>
</li>
<li class="nav-item smaller2">
<a class="nav-link" href="./register.php">Sign Up</a>
</li>
</ul>
</div>
</div>
</nav>
<div class="container">
<!-- FUNDING SECTION STARTED -->
<!-- INTRODUCTORY CARD STARTED -->
<div class="card mt-3 shadow">
<div class="card-body">
<div class="row">
<div class="col-md-2 text-center mt-md-3">
<imgsrc="./img/funds.svg" alt="" style="max-width:100%; height: auto;">
</div>
<div class="col-md-7 mt-md-1" id="funding">
<h5 class="text-dark">WazirX P2P: Convert INR ↔ USDT</h5>
<p class="text-muted">
<small>Use WazirX P2P when you want to buy USDT to trade cryptos, or when you want to sell
USDT and
cash
out to INR. It's safe and hassle free!</small>
</p>
</div>
<div class="col-md-3 text-center mt-md-4">
<button class="btnbtn-success text-white btn-lg" type="submit">INR ↔ USDT</button>
</div>
</div>
</div>
</div>
<!-- INTRODUCTORY CARD ENDED -->
<!-- FUNDING TABLE CONTENT STARTED -->
<h2 class="text-white border-bottom mt-4">Funds</h2>
<div class="card">
<div class="card-body p-1">
<div class="text-dark d-flex justify-content-between flex-wrap">
<div class="fukrey">
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fas fa-search"></i></span>
</div>
P a g e | 35
<input type="text" class="form-control m-0" aria-label="Dollar amount (with dot and two
decimal places)"
placeholder="search">
</div>
</div>
<!-- MATERIAL SWITCH -->
<div class="d-flex align-self-center mt-2">
<label class="switch align-self-center mt-1 mr-1">
<input type="checkbox">
<span class="slider round"></span>
</label>
<div style="font-size:1rem;"><small>Hide Zero Balances</small></div>
</div>
<div style="font-size:1rem;" class="mt-md-2 mt-2"><small>Estimated Portfolio ~ <i class="fas
fa-rupee-sign align-self-center"></i>-31.70</small></div>
</div>
</div>
</div>
<thead>
<tr>
<th scope="col"><small>ASSETS</small></th>
<th scope="col"><small>
<div class="d-flex">
<div>AVAILABLE</div>
<div class="ml-1"> BALANCE</div>
</div>
</small></th>
<th scope="col"><small>
<div class="d-flex">
<div class="mr-1">IN</div>
<div>ORDERS</div>
</div>
</small></th>
<th scope="col"><small>TOTAL</small></th>
<th scope="col">
<div class="text-primary"><small>
<div class="d-flex mt-0">
<div>INR</div>
<div class="ml-1">VALUE</div>
<i class="fas fa-arrow-down align-self-center"></i>
</div>
</small></div>
</th>
<th scope="col"><small>ACTION</small></th>
</tr>
</thead>
P a g e | 36
<tbody>
<td>
<small>
<div class="d-flex">
<i class="fas fa-rupee-sign align-self-center mr-1"></i>
<div>0.00</div>
</div>
</small></td>
<td>
<div class="d-flex">
<div class="btnbtn-outline-success btn-sm mr-2" id="deposite">Deposit</div>
<div class="btnbtn-outline-danger btn-sm" id="withdraw">Withdraw</div>
</div>
</td>
<tr>
<div class="row">
<div class="col-md-4">
<div class="d-flex justify-content-between">
<small>VOLUME</small>
<small>AVAILABLE ZIL: 0.0
</small>
</div>
<input type="number" placeholder="0" class="form-control">
</div>
<div class="col-md-4">
P a g e | 37
<small>DESTINATION ADDRESS</small>
<input type="number" class="form-control">
</div>
<div class="col-md-4">
<small>REMARKS</small>
<input type="number" class="form-control">
</div>
<div class="col-md-4 mt-4">
<button class="btnbtn-danger text-white"><small>PROCEED WITH WITHDRAW
</div>
</div>
<p class="mt-2"><small>WITHDRAW FEE: ZIL 65</small></p>
</form>
<!--</div> -->
</div>
</div>
</div>
</div>
<div id="gayab" class="p-3">
<div class="row">
<div class="col-md-8 text-secondary">
<h6 class="text-secondary border-bottom pb-2 font-weight-bold">Send to Your Secure Zebi
Deposit
Address</h6>
<div class="mt-3 mb-3"><small>Destination Address</small></div>
<div id="tooltip">
<button id="copied" class="btnbtn-success">
P a g e | 38
<span class="tooltiptext" id="myTooltip">Copy</span>
<i class="far fa-clone mr-2"></i>Copy
</button>
</div>
</div>
</div>
</div>
</div>
</td>
</tr>
</tr>
<?php } ?>
</tbody>
</table>
</div>
P a g e | 39
</div>
</div>
</section>
<script src="./js/jquery.min.js"></script>
<script src="./js/bootstrap.min.js"></script>
<script src="./js/bootstrap.bundle.min.js"></script>
<script src="./js/main.js"></script>
<script src="./js/fund.js"></script>
</body>
</html>
GoogleauthModule :
<?php
include('functions.php');
include('auth.php');
require "./Authenticator/Authenticator.php";
$id=$_SESSION['id'];
$con=db();
$q="SELECT COUNT(*) from googleauth where c_id='$id'";
$r=mysqli_query($con,$q);
if($a=mysqli_fetch_array($r,MYSQLI_NUM)){
if($a[0]>0)
header('location:twofactor.php');
}else{
header('location:dashboard.php');
}
P a g e | 40
$Authenticator = new Authenticator();
if (!isset($_SESSION['auth_secret'])) {
$secret = $Authenticator->generateRandomSecret();
$_SESSION['auth_secret'] = $secret;
}
if (!isset($_SESSION['failed'])) {
$_SESSION['failed'] = false;
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Two-Factor Authenticator</title>
<link rel="icon" href="favicon.ico" type="image/x-icon" />
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-
alpha.6/css/bootstrap.min.css" integrity="sha384-
rwoIResjU2yc3z8GV/NPeZWAv56rSmLldC3R/AZzGRnGxQQKnKkoFVhFQhNUwEyJ"
crossorigin="anonymous">
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.6/js/bootstrap.min.js"
integrity="sha384-
vBWWzlZJ8ea9aCX4pEW3rVHjgjt7zpkNpZk+02D9phzyeVkE+jo0ieGizqPLForn"
crossorigin="anonymous"></script>
<link rel='shortcut icon' href='/favicon.ico' />
<style>
body,html {
height: 100%;
}
.bg {
/* The image used */
background-image: url("images/bg.jpg");
/* Full height */
height: 100%;
/* Center and scale the image nicely */
background-position: center;
background-repeat: no-repeat;
background-size: cover;
}
</style>
</head>
<body class="bg">
<div class="container">
<div class="row">
<div class="col-md-6 offset-md-3" style="background: white; padding: 20px; box-shadow:
10px 10px 5px #888888; margin-top: 100px;">
<h1>Two-Factor Authentication</h1>
<p style="font-style: italic;">Enter 6-digit Authentication Code</p>
<hr>
<form action="../bitcobs/Authenticator/check.php" method="post">
<div style="text-align: center;">
<?php if ($_SESSION['failed']): ?>
<div class="alert alert-danger" role="alert">
P a g e | 41
<strong>Oh snap!</strong> Invalid Code.
</div>
<?php
$_SESSION['failed'] = false;
?>
<?php endif ?>
</div>
</form>
</div>
</div>
</div>
</body>
</html>
Login Module :
<?php
require 'header.php';
if(isset($_SESSION['id'])){
header('location:market.php');
}
if(isset($_POST['submit'])){
$con=db();
if(empty($_POST['email'])||empty($_POST['pass'])){
$msg="Please fill all fields carefully...";
}
else{
$email=stripslashes($_POST['email']);
$pass=stripslashes($_POST['pass']);
$passhash=hash('sha256',$pass.$email);
$q="SELECT * from users where email='$email'";
$r=mysqli_query($con,$q);
if($a=mysqli_fetch_array($r)){
if(($a['password']==$passhash) && (!userBlocked($email,$passhash))){
//Successfully logged-in
$id=$a['id'];
$status=1;
$_SESSION['id']=$id;
insertLog($id,$status,$con);
$q1="DELETE FROM login_log where c_id='$id' AND status='0'";
$r1=mysqli_query($con,$q1);
header('location:googleauth.php');
}elseif(userBlocked($email,$passhash)){
$msg="Account Blocked temporarily due to suspicious
activiy!";
P a g e | 42
}
else{
//Login unsuccessfull
$status=0;
$id=getId($email,$passhash);
insertLog($id,$status,$con);
$msg="Error logging in!!";
}
}
else{
$msg="Error logging in!!";
}
?>
<!-- NAVBAR ENDED -->
</div>
<input type="email" class="form-control" placeholder="Enter Email" id="email"name="email"
autocomplete="off"
required>
<div class="invalid-feedback">
Invalid email
</div>
</div>
<div class="input-group mb-3">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fas fa-key"></i></span>
</div>
P a g e | 43
<input name="pass"type="password" class="form-control" placeholder="Password"
id="pass" autocomplete="off"
required>
<div class="invalid-feedback">
Invalid password
</div>
</div>
<div class="ginger">
</form>
</div>
<div class="auth">
<div>
<a href="./forgotpassword.html">Forgot Password?</a>
</div>
<div class="mt-2"><a href="#">Don't have an account?</a></div>
<!--<button type="button" class="btnbtn-secondary" data-toggle="tooltip" data-
placement="top" title="Tooltip on top">
Tooltip on top
</button> -->
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- ROW ENDED -->
</div>
</div>
</section>
<script src="./js/jquery.min.js"></script>
<script src="./js/bootstrap.min.js"></script>
P a g e | 44
<script src="./js/main.js"></script>
</body>
</html>
Twofactor :
<?php
include('header.php');
require 'auth.php';
require "./Authenticator/Authenticator.php";
if(isset($_POST['code'])){
$id=$_SESSION['id'];
$con=db();
$q="SELECT * from googleauth where c_id='$id'";
$r=mysqli_query($con,$q);
if($a=mysqli_fetch_array($r,MYSQLI_ASSOC)){
$secret=$a['seckey'];
}
$Authenticator = new Authenticator();
$checkResult = $Authenticator->verifyCode($secret, $_POST['code'], 2); // 2 = 2*30sec clock
tolerance
if($checkResult){
header('location:market.php');
}else{
$_SESSION['failed'] = true;
}
}
?>
<div class="container">
<div class="row">
<div class="col-md-6 offset-md-3" style="background: linear-gradient(to right, #073b5e,
#4ca1af) !important; padding: 20px; box-shadow: 10px 10px 5px #888888; margin-top:
100px;">
<h1>Time-Based Authentication</h1>
<p style="font-style: italic;">A Google Authenticator kinda Authentication</p>
<hr>
<form action="" method="post">
<div style="text-align: center;">
<?php if ($_SESSION['failed']): ?>
<div class="alert alert-danger" role="alert">
<strong>Oh snap!</strong> Invalid Code.
</div>
<?php
$_SESSION['failed'] = false;
?>
<?php endif ?>
<input type="text" class="form-control" name="code" placeholder="******" style="font-size:
xx-large;width: 200px;border-radius: 0px;text-align: center;display: inline;color:
#0275d8;"><br><br>
<button type="submit" class="btnbtn-md btn-primary" style="width: 200px;border-radius:
0px;">Verify</button>
</div>
</form>
</div>
</div>
P a g e | 45
</div>
</html>
Functions :
<?php
session_start();
//database connection
function db(){
static $con;
if($con==NULL){
$con=mysqli_connect("localhost","db_username","xxxxxxx","db_name");
}
return $con;
}
//Returns Id of user
function getId($email,$pass){
$con=db();
$q3="SELECT * from users where email='$email'";
$r3=mysqli_query($con,$q3);
if($arr=mysqli_fetch_array($r3)){
$id=$arr['id'];
return $id;
}
}
P a g e | 46
if($a=mysqli_fetch_array($r4)){
if($a[0]==3){
return true;
}
else{
return false;
}
}
}
//Funds
function funds ($cust_id) {
$con = db();
$query = "select c.coin_name, c.coin_code, c.coin_logo,b.balance, a.address FROM
coins c, balances b, address a WHERE c.coin_id = b.coin_id AND c.coin_id = a.coin_id AND
b.coin_id=a.coin_id AND b.c_id = a.c_id AND b.c_id='$cust_id' AND a.c_id='$cust_id'";
$result = mysqli_query($con,$query);
return $result;
}
//INR balance
function inr($cust_id) {
$con = db();
$query = mysqli_query($con,"SELECT balance FROM balances WHERE c_id =
'$_SESSION[id]' AND coin_id = '3'");
$row = mysqli_fetch_array($query,MYSQLI_ASSOC);
return $row;
}
//register user
function registerUser($fname,$lname,$email,$pass,$mob,$con){
if(userExists($email,$con)==true){
$msg="already exists";
echo json_encode(array("msg"=>$msg));
}
else{
$fname=stripslashes($_POST['fname']);
$lname=stripslashes($_POST['lname']);
$email=stripslashes($_POST['email']);
$pass=stripslashes($_POST['pass']);
$mob=stripslashes($_POST['mob']);
$passhash=hash('sha256',$pass.$email);
$q="INSERT into users (fname,lname,email,password,mobile) VALUES
('$fname','$lname','$email','$passhash','$mob')";
$r=mysqli_query($con,$q);
if($r){
echo json_encode(array("msg"=>"registered"));
}
else
echo json_encode(array("msg"=>"error"));
}
die();
}
P a g e | 47
//get coin id by coin_code
function coin_id($coin_code) {
$con = db();
$query = mysqli_query($con, "SELECT coin_id FROM coins WHERE coin_code =
'$coin_code'");
$result = mysqli_fetch_array($query);
$name = $result['coin_id'];
return $name;
}
?>
Buy module:
<?php
include('../functions.php');
if(!empty($_POST['rate']) && !empty($_POST['amount']) && !empty($_POST['first_pair']) &&
!empty($_POST['second_pair'])) {
$con = db();
$cust_id = $_SESSION['id'];
$rate = mysqli_real_escape_string($con, $_POST['rate']);
$rate = abs($rate);
$amount = mysqli_real_escape_string($con, $_POST['amount']);
$amount = abs($amount);
$total = $rate * $amount;
$first_pair = mysqli_real_escape_string($con, $_POST['first_pair']);
$second_pair = mysqli_real_escape_string($con, $_POST['second_pair']);
$first_pair = coin_id($first_pair);
$second_pair = coin_id($second_pair);
// echo $rate. " " . $amount;
$result = mysqli_query($con,"SELECT balance FROM balances WHERE c_id='$cust_id' AND
coin_id = '$first_pair'");
$res1 = mysqli_fetch_array($result);
$curr_balance = $res1['balance'];
if($curr_balance>= $amount) { //Check if user has sufficient balance
$res1 = mysqli_query($con,"SELECT * FROM opencls WHERE status='0' AND c_id2 IS
NULL AND coin_id1 = '$first_pair' AND coin_id2 = '$second_pair' AND rate='$rate'");
if($res1row = mysqli_fetch_array($res1, MYSQLI_ASSOC)) { //fetch rates from the table
if($res1row['rate']==$rate) {
if($res1row['amount'] == $amount) { // if amount of maker and taker are equal
$curr_balance = $curr_balance - $total;
$trn_date = date("Y-m-d H:i:s");
$query1 = "UPDATE opencls set c_id2='$cust_id', status = '1', trn_date = '$trn_date'
WHERE rate='$rate' AND c_id IS NULL AND $first_pair= '$first_pair' AND second_pair =
'$second_pair'";
$query2 = "UPDATE balances set balance = '$curr_balance' WHERE c_id =
'$cust_id' AND coin_id = '$first_pair'";
if(mysqli_query($con,$query1) &&mysqli_query($con,$query2)) { //Deduct balance
and confirm order
$msg = "Order executed successfully";
}
}
elseif($amount>$res1row['amount']) { //if amount of taker is greater than maker
$team2amount = $res1row['amount'];
$curr_balance = $curr_balance - $amount;
$trn_date = date("Y-m-d H:i:s");
P a g e | 48
$query1 = "UPDATE opencls set c_id2='$cust_id', status = '1', amount =
'$team2amount', trn_date = '$trn_date' WHERE rate='$rate' AND c_id2 IS NULL AND
$first_pair= '$first_pair' AND second_pair = '$second_pair'";
$query2 = "UPDATE users set current_bal = '$curr_balance' WHERE id =
'$cust_id'";
if(mysqli_query($con,$query1) &&mysqli_query($con,$query2)) {
$msg = "Partial order executed";
}
$restamount = $amount-$team2amount;
$trn_date = date("Y-m-d H:i:s");
if(mysqli_query($con,"INSERT INTO curr_order (game_id, uteam1, rate, amount, status,
trn_date) VALUES ('$id', '$cust_id', '$rate', '$restamount', '0', '$trn_date')"))
$msg = $msg . "and some are pending";
}
elseif($amount<$res1row['amount']) {
$team2amount = $res1row['amount'];
$curr_balance = $curr_balance - $amount;
$trn_date = date("Y-m-d H:i:s");
$query1 = "UPDATE curr_order set uteam1='$cust_id', status = '1', amount =
'$amount', trn_date = '$trn_date' WHERE rate='$rate' AND uteam1 IS NULL AND
game_id='$id'";
$query2 = "UPDATE users set current_bal = '$curr_balance' WHERE id =
'$cust_id'";
$query3 = mysqli_query($con,"SELECT uteam2 FROM curr_order WHERE
rate='$rate' AND uteam1 IS NULL AND game_id='$id'");
$uteam2id = mysqli_fetch_array($query3);
if(mysqli_query($con,$query2) &&mysqli_query($con,$query1)) {
$msg = "Partial order executed";
}
$uteam2 = $uteam2id['uteam2'] ;
$restamount = $team2amount-$amount;
date_default_timezone_set('Asia/Kolkata');
$trn_date = date("Y-m-d H:i:s");
if(mysqli_query($con,"INSERT INTO curr_order (game_id, uteam2, rate, amount, status,
trn_date) VALUES ('$id', '$uteam2', '$rate', '$restamount', '0', '$trn_date')"))
$msg = $msg .' '. "and some are pending";
}
}
}
else {
$curr_balance = $curr_balance - $total;
$trn_date = date("Y-m-d H:i:s");
$query2 = "UPDATE balances set balance = '$curr_balance' WHERE c_id = '$cust_id'
AND coin_id = '$first_pair'";
$query1 = "INSERT INTO opncls (coin_id1, c_id1, coin_id2 , rate, amount, status,
trn_date) VALUES ('$first_pair', '$cust_id', '$second_pair', '$rate', '$amount', '0' , '$trn_date')";
if(mysqli_query($con,$query1) &&mysqli_query($con,$query2)) {
$msg = "You order is submitted in the order book.";
}
else {
$msg = mysqli_error($con);
}
}
}
}
else {
$msg = "Please fill all the form details";
}
echo $msg; ?
P a g e | 49
9. SNAPSHOTS
Home Page:
Registration Page:
P a g e | 50
KYC Verification Page:
Log In Page:
P a g e | 51
2 – Factor Authentication:
Market Dashboard:
P a g e | 52
Funds Transfer Page:
P a g e | 53
Transaction Details:
P a g e | 54
10. TESTING
Testing is a process to show the correctness of the program. Testing is needed to show
completeness, it improve the quality of the software and to provide the maintenance aid.
Some testing standards are therefore necessary reduce the testing costs and operation time.
Testing software extends throughout the coding phase and it represents the ultimate
review of configurations, design and coding. Based on the way the software reacts to these
testing, we can decide whether the configuration that has been built is study or not. All
components of an application are tested, as the failure to do so many results in a series of
bugs after the software is put to use.
Black box testing, also called behavioral testing, focuses on the functional requirements
of software. This testing approach enables the software engineer to derive the input
conditions that will fully exercise all requirements for a program. Black box testing
attempts to find the errors like:
White box testing is also called Glass box testing is a test case design control; structure
of the procedural design to derive test cases using White box testing method, the software
engineer can derive the test cases that guarantee that all independent paths within the
module have been exercised at least once. Exercise all logic decisions on their true or false
sides. Exercise all loops at their boundaries and within their operational bounds. Exercise
internal data structures to ensures their validity.
Testing involves
P a g e | 55
Unit testing
Integration testing
Acceptance testing.
The first level of test is Unit Testing. The purpose of unit testing is to ensure that each
program is fully tested.
The second step is Integration Testing. In this individual program units or program are
integrated and tested as a complete system to ensure that the software requirements are
met.
Acceptance Testing involves planning and the execution of various types of tests in order
to demonstrate that the implemented software system satisfies the requirements. Finally
our projects meets the requirements after going through all the levels of testing.
The testing begin by making sure that every button on every screen works. You also
Need to ensure that you can enter simple text into each field without crashing the
Software. You don’t have to try out all the different combination of clicks and characters,
Or edge conditions, because that’s what your testers do and they’re really good at that.
The goal here is this : don’t let other people touch your work if it’s going to crash as soon
as they enter their own name into the username field. If the feature is designed to be
accessed by way of an API, you need to run tests to make sure that the basic API functi-
onality works before submitting it for more intensive testing. If your basic functionality
testing detects something that doesn’t work, that’s fine. Just tell them that it doesn’t
work, that you’re aware of it, and that they shouldn’t bother trying it. You can fix it later,
just don’t leave any surprises in there.
Testing Documentation:
Before Testing:
Testing starts with test cases generation. Following documents are needed for reference-
Test Policy Document- This describes how far testing should take place before releasing the
product.
Test Strategy Document- This mentions detail aspects of test team, responsibility matrix
and rights responsibility of test manager and test engineer.
P a g e | 56
requirement. They can be traced forward and backward.
The following documents may be required while testing is started and is being done-
Test Case Document- This document contains list of tests required to be conducted. It
includes Unit test plan, Integration test plan, System test plan and Acceptance test plan.
Test description- This document is a detailed description of all test cases and procedures to
execute them.
Test case report- This document contains test case report as a result of the test.
Test logs- This document contains test logs for every test case report.
After Testing:
Test Summary-This test summary is collective analysis of all test reports and logs. It
summarizes and concludes if the software is ready to be launched. The software is released
under version control system if it is ready to launch.
We need to understand that software testing is different from software quality assurance,
software quality control and software auditing:
Software quality control-This is a system to maintain the quality of software product. It may
include functional and non- functional aspects of software product, which enhance the
goodwill of the organization. This system makes sure that the customer is receiving quality
product certified as ‘fit for use’.
P a g e | 57
Software life cycle
Every Project needs a Test Strategy and a Test Plan. These artefacts describe the scope for
testing for a project :
P a g e | 58
Approval workflows
Entry / Exit criteria.
2: Test Design
Now that you have a strategy and a plan, the next step is to dive into creating a test suite. A
test suite is a collection of test cases that are necessary to validate the system being built,
against its original requirements.
The product may not yet have hit the critical “star” or “cash cow” stages of its existence-it’s
still a question mark. And you probably have investors backing you, or another product of
your own that is subsidizing this new initiative until it can break even. Here, you’re trying to
make significant strides more like giant leaps with your product before you’re happy to
unwrap it in front of customers. Therefore, you’re less worried about superficial aspects like
look and feel, and more worried about Fundamental functionality that sets your product apart
from your competitors.
3: Test Execution
You can execute tests in many different ways- as single, waterfall SIT(System integration
Test) and UAT (User Acceptance Test) phases; as part of Agile sprints; supplemented with
exploratory tests, or with test-driven development. Ultimately, you need to do adequate
amount of software testing to ensure your system is (relatively) bug-free.
Let’s set methodology aside for a second, and focus on how you can clock adequate testing.
Let’s go back to the example of building a mobile app that can be supported across operating
systems, OS versions, devices. The most important question that will guide your test efforts is
what is my Test environment?
You need to understand your test environment requirements clearly to be able to decide your
testing Strategy. For instance, does your app depend on integration with a core system back
end to display information and notifications to customers? If yes, your test environment needs
to provide back end integration to support meaningful functional tests.
Can you commission such an end-to-end environment to be built and ready for your sprints to
begin?
Depending on how your IT organization is set up, maybe not. This is where the question of
agile
Vs a more flexible approach comes into picture. Could you have foreseen this necessity way
before
the sprints began? Probably not.
P a g e | 59
Given how Agile projects are run, you may only have a couple of weeks between initiating a
project and starting delivery sprints, which time isn’t enough to commission an end-to-end
test environment if one doesn’t already exist. If everything goes fine, you’ll have a test
environment
to your liking, configured to support your project, with all enablers built to specifications. If
not
then your test strategy will be different.
In this example, we’re talking about doing front-end tests with dummy back end to support
in-
Sprint testing, and wait until an integrated test environment is ready. It is common practice to
Schedule integration tests just after delivery sprints and before release. Your team can then
run a dedicated System Integration Test, focusing on how the app components work with the
back end to deliver the required functionality. So while app- specific bugs will primarily be
reported during the sprints, functional end-to-end bugs will crop up during the integration
test.
You can follow this up with a UAT cycle to put finishing touches in terms of look and feel,
copy etc. How your team execute test cycles depends on the enabling infrastructure, project
and team structure in your organization.
4: Test Closure
Right-so you have done the planning necessary, executed tests and now want to green-light
your product for release. You need to consider the exit criteria for signaling completion of the
test cycle and readiness for a release. Let’s look at the components of exit criteria in general:
P a g e | 60
11.COST AND TIME ESTIMATION
COCOMO Model:
Organic, Semidetached and Embedded software projects Boehm postulated that any software
development project can be classified into one of the following three categories based on the
development complexity: organic, semidetached, and embedded. In order to classify a
product into the identified categories, Boehm not only considered the characteristics of the
product but also those of the development team and development environment. Roughly
speaking, these three product classes correspond to application, utility and system programs,
respectively. Normally, data processing programs are considered to be application programs.
Compilers, linkers, etc., are utility programs. Operating systems and real-time system
programs, etc. are system programs. System programs interact directly with the hardware and
typically involve meeting timing constraints and concurrent processing.
Boehm’s [1981] definition of organic, semidetached, and embedded systems are elaborated
below.
Organic: A development project can be considered of organic type, if the project deals with
developing a well understood application program, the size of the development team is
reasonably small, and the team members are experienced in developing similar types of
projects.
Semidetached: A development project can be considered of semidetached type, if the
development consists of a mixture of experienced and inexperienced staff. Team members
may have limited experience on related systems but may be unfamiliar with some aspects of
the system being developed.
Embedded: A development project is considered to be of embedded type, if the software
being developed is strongly coupled to complex hardware, or if the stringent regulations on
the operational procedures exist.
The basic COCOMO model gives an approximate estimate of the project parameters. The
basic COCOMO estimation model is given by the following expressions:
Effort = a1 х (KLOC)a2 PM
Tdev = b1 x (Effort)b2 Months
Where,
P a g e | 61
• KLOC is the estimated size of the software product expressed in Kilo Lines of Code,
• a1, a2, b1, b2 are constants for each category of software products,
• Tdev is the estimated time to develop the software, expressed in months,
• Effort is the total effort required to develop the software product, expressed in person
months (PMs).
The effort estimation is expressed in units of person-months (PM). It is the area under the
person-month plot (as shown in fig. 11.3). It should be carefully noted that an effort of 100
PM does not imply that 100 persons should work for 1 month nor does it imply that 1 person
should be employed for 100 months, but it denotes the area under the person-month curve (as
shown in fig. 11.3).
According to Boehm, every line of source text should be calculated as one LOC irrespective
of the actual number of instructions on that line. Thus, if a single instruction spans several
lines (say n lines), it is considered to be nLOC. The values of a1, a2, b1, b2 for different
categories of products (i.e. organic, semidetached, and embedded) as given by Boehm [1981]
are summarized below. He derived the above expressions by examining historical data
collected from a large number of actual projects.Estimation of development effort for the
three classes of software products, the formulas for estimating the effort based on the code
size are shown below:
some insight into the basic COCOMO model can be obtained by plotting the estimated
characteristics for different software sizes. Fig. 11.4 shows a plot of estimated effort versus
product size. we can observe that the effort is somewhat superlinear in the size of the
software product. Thus, the effort required to develop a product increases very rapidly with
project size.
The development time versus the product size in KLOC is plotted , it can be observed that the
development time is a sublinear function of the size of the product, i.e. when the size of the
product increases by two times, the time to develop the product does not double but rises
moderately. This can be explained by the fact that for larger products, a larger number of
activities which can be carried out concurrently can be identified. The parallel activities can
be carried out simultaneously by the engineers. This reduces the time to complete the project.
Further it can be observed that the development time is roughly the same for all the three
categories of products. For example, a 60 KLOC program can be developed in approximately
18 months, regardless of whether it is of organic, semidetached, or embedded type.
From the effort estimation, the project cost can be obtained by multiplying the required effort
by the manpower cost per month. But, implicit in this project cost computation is the
P a g e | 62
assumption that the entire project cost is incurred on account of the manpower cost alone. In
addition to manpower cost, a project would incur costs due to hardware and software required
for the project and the company overheads for administration, office space, etc.
It is important to note that the effort and the duration estimations obtained using the
COCOMO model are called as nominal effort estimate and nominal duration estimate. The
term nominal implies that if anyone tries to complete the project in a time shorter than the
estimated duration, then the cost will increase drastically. But, if anyone completes the
project over a longer period of time than the estimated, then there is almost no decrease in the
estimated cost value.
Example:
Assume that the size of an organic type software product has been estimated to be 32,000
lines of source code. Assume that the average salary of software engineers be Rs. 15,000/-
per month. Determine the effort required to develop the software product and the nominal
development time.
From the basic COCOMO estimation formula for organic software:
Effort = 2.4 х (32)1.05 = 91 PM
Nominal development time = 2.5 х (91)0.38 = 14 months
Version 2 CSE IIT, Kharagpur
Cost required to develop the product = 14 х 15,000
= Rs. 210,000/-
The basic COCOMO model assumes that effort and development time are functions of the
product size alone. However, a host of other project parameters besides the product size
affect the effort required to develop the product as well as the development time. Therefore,
in order to obtain an accurate estimation of the effort and project duration, the effect of all
relevant parameters must be taken into account. The intermediate COCOMO model
recognizes this fact and refines the initial estimate obtained using the basic COCOMO
expressions by using a set of 15 cost drivers (multipliers) based on various attributes of
software development. For example, if modern programming practices are used, the initial
estimates are scaled downward by multiplication with a cost driver having a value less than 1.
If there are stringent reliability requirements on the software product, this initial estimate is
scaled upward. Boehm requires the project manager to rate these 15 different parameters for a
particular project on a scale of one to three. Then, depending on these ratings, he suggests
appropriate cost driver values which should be multiplied with the initial estimate obtained
using the basic COCOMO. In general, the cost drivers can be classified as being attributes of
the following items:
Product: The characteristics of the product that are considered include the inherent
complexity of the product, reliability requirements of the product, etc.
Computer: Characteristics of the computer that are considered include the execution speed
required, storage space required etc.
Personnel: The attributes of development personnel that are considered include the
experience level of personnel, programming capability, analysis capability, etc.
Development Environment: Development environment attributes capture the development
facilities available to the developers. An important parameter that is considered is the
sophistication of the automation (CASE) tools used for software development.
P a g e | 63
Complete COCOMO model:
A major shortcoming of both the basic and intermediate COCOMO models is that they
consider a software product as a single homogeneous entity. However, most large systems are
made up several smaller sub-systems. These sub-systems may have widely different
characteristics. For example, some sub-systems may be considered as organic type, some
semidetached, and some embedded. Not only that the inherent development complexity of the
subsystems
may be different, but also for some subsystems the reliability requirements may be high, for
some the development team might have no previous experience of similar development, and
so on. The complete COCOMO model considers these differences in characteristics of the
subsystems and estimates the effort and development time as the sum of the estimates for the
individual subsystems. The cost of each subsystem is estimated separately. This approach
reduces the margin of error in the final estimate.
The following development project can be considered as an example application of the
complete COCOMO model. A distributed Management Information System (MIS) product
for an organization having offices at several places across the country can have the following
sub-components:
• Database part
• Graphical User Interface (GUI) part
• Communication part
Of these, the communication part can be considered as embedded software. The database part
could be semi-detached software, and the GUI part organic software. The costs for these three
components can be estimated separately, and summed up to give the overall cost of the
system.
Projects benefit from following a thoughtful and deliberate process when developing
project cost estimates. It is applied to all phases of project delivery, starting with the
planning phase estimate and ending with the plans, specifications, and estimates phase.
Each phase of an estimate may require different estimating inputs, methods, techniques,
and tool.Bitcobs a cost efficient project in which hardware and software specification must
be reliable and easy to access.
The Basis of estimate describes the project. It includes underlying assumptions, notes,
And exclusions, and is required prior to the preparation of every project estimate. The
Basis of estimate document includes project information and previously developed project
scope and schedule data, from which a project cost estimate can be prepared.
Baseline estimated costs for the project components are determined in current year dollars.
These components may be estimated using different techniques depending on the level of
Scope definition and the size and complexity of the project. The number and detail of
Components estimated may vary depending on the data available at the time of the estimate.
For Example, in the scoping phase, the cost estimate covers preliminary engineering (PE),
P a g e | 64
right of way (ROW), and construction (CN). As the design progresses and more detailed.
Key inputs to this activity include project scope details, historical databases, and other
Cost databases.
The baseline estimate is also dependent on the estimated project schedule. The estimated
schedule should be attached to the Basis of Estimates.
Time estimation
Now, list all of the activities you identified in the order in which they need to happen.
Estimate how much time it will take to accomplish every single activity you are going
To implement. Define the key deadline milestones. Check whether you are armed
with all the instruments and resources needed to accomplish the tasks.
Don’t forget to make allowance and find time for the following points:
Administrative work
Emergency cases and unpredictable situations.
Possible issues with equipment.
Communication with the stakeholders.
Meetings
Training
Holidays, vacations and sick leaves of the key people involved.
Obtaining needed technical resources.
Debugging and rejections from a module.
Code review.
Other current tasks with high priority.
With these in mind, you will make your project estimation much more effective as
Compared to the base assumptions. You may find out all these points significantly
Extend the overall project frames.
Now I will estimate the size, effort and schedule from the requirements or feature
list of the project. After that I will compare this estimates with the actual size,
effort and schedule. In this way I will show the reader that how the estimation work
and how you can compare it after you have completed the project.
P a g e | 65
Size for Project
I have used function points for estimating the size. Briefly project is a data acquisition
and processing software. It displays acquired data on the screen.
In function points estimation we have to take into accounts all external inputs, external
Outputs, internal logical files, external interface file and external queries.
For effort estimation I used the ISBSG( International Software Bench-marking Standard
Group) method. ISBSG takes function points as inputs and number of staff to complete
The project and return the effort estimate. Since I have estimated the size of the project
and effort of the project.
P a g e | 66
12. FUTURE SCOPE
Cryptocurrencies are a subset of alternative currencies or specifically of digital currencies
which uses encryption techniques to regulate the generation of units of currency and verify
the transfer of funds, operating independently of a bank. It is a digitalasset that works as a
medium of exchange by using cryptography to secure the transaction.
See I don’t have crystal ball hat could tell what is going to happen in future. But I know one
thing that decentralization is future and cryptocurrencies have that power.I understand the
problem when the money is centralized and the problem you face.
Now, just imagine if the money is controlled by everybody and you can see where it came
from and where it go, so Blockchain gives us that power to monitor all transaction.This is
where the power of cryptocurrency comes in. The Blockchain is the technology that is serves
as the distributed ledger that forms the network. This network creates the means for
transacting, and enables transferring of value and information.
A country like India which has recently faced demonetization has developed great affection
for cryptocurrencies in the recent past. It has been nearly five years since bitcoin made its
debut in Indian Financial markets. In India, the transactions made through cryptocurrency are
on the rise despite the notifications circulated by the finance ministry. This makes it clear that
the upcoming future of bitcoin in India is dazzling. There are about 1548 cryptocurrencies
currently operational in the market available as an alternative to bitcoin.
Since bitcoin is not available in the physical form, this virtual currency can be converted into
physical form by listing it on various online exchange platforms. Taxing the cryptocurrency
another way to legalise this currency. It becomes clear that it is a risky investment option, but
there is no harm in opting for a calculated risk.
Blockchain is the underlying technology behind all cryptocurrencies like bitcoin and
ethereum, has a potential of changing the way we work and communicate, making it
more secure, efficient, and trustworthy.
Data or transactions once written on the blockchain are open for audit and will be stored there
till the end of time. One of the best properties about blockchain is that it helps in removal of
third parties in any sort of transaction or arrangement.
P a g e | 67
Blockchain is the future of many businesses but not all. The key value proposition of
blockchain is to provide transparency and efficiency. Businesses need to do their own
homework to access whether or not they should adopt blockchain, when to adopt and what
division to adopt. For example, a local restaurant who is looking for technology to improve
table turnover is better off to use some existing non blockchain applications. There is no
value added benefit here from a blockchain solution. However, if you are Doing business
with other parties all across the globe and want to know the credential of a new trading
partner before signing a contract, you should probably look for some blockchain solutions.
There is no way a central body can build a global registry/ KYC platform / reputation book
for all businesses across the globe. But decentralized blockchain solutions can. It heads back
the control, data, and decision making to value creaters.
P a g e | 68
13. CONCLUSION
Bitcobs is a secure ,reliable and advanced digital Cryptocurrency trading platform developed
for international and national customers and built on blockchain technology. This
tradingplatform provides innovative and more streamlined approach, while also providing
instant trade execution.
P a g e | 69
14.BIBLIOGRAPHY
www.github.com
www.stackoverflow.com
www.medium.com
www.reddit.com
www.bitcoin.org
www.php.net/manual
www.developers.android.com
P a g e | 70