Abstract—This document is a comprehensive

overview of formal method in simple and easy manner, so that one who want to

see the whole picture of formal method use this document. In this document Formal method brief introduction

and current work and it contribution to software industry and future

perspective is given. Formal method is used to formally define the any system

behavior either it software or hardware system. Formally mean where mathematics

is used to define something as we know mathematics is only the concrete tool

which has no ambiguity. Computer Science is going to be very big field in

future so, it need treatments like mathematics because mathematics have very

rigorous in its nature. In Software Engineering software development is the main

stream in computer science, so it need some formal kind of treatment or a

methodological treatment for software development usually for very crucial software

systems i.e. missile control, atomic system and x-ray control system. Such as

algebraic specification in Formal method first defines some abstract data type

and then possible operations on the abstract data type. In this document step

by step approach is followed to understand the concept of Formal method.

Related technical stuff or material also is given to give some technical flavor

to this document. Now in this age an increasing need of computer systems to use

of rigorous formal process. Formal Methods comprise of mathematical model and

treat software requirements and designs of systems in very formal way. This

document gives a whole picture of formal methods in perspective of future of

formal methods. This document is made for computer science geeks to give the

sense of use of formal methods in software development, very important with

respect to the requirement engineering. Keywords—Algebraic;

Specification; Abstract Data; Formal; Hardware; Software; Requirement

Engineering

I. IntroductionFormal method is used to specify abstract data type.

Abstract Data type is type of data container which type is specified at time of

using at dynamic run time of software program. As we know computer science is

going to be increasing day by day in few years and influence the society in

dramatic way. The use of software in human life is on the increase and as

result complex software programs are developed on the large scale. That is why

developing large and complex software is tedious task and cumbersome process.

If there is no way to specify the software before its construction then there

is great chances that program is not constructed as desired and malfunctions. Now

in this era of business environment main goal of software project is to fulfill

the requirement purpose of client. However, there is a great competition

between Software Companies to build high quality software in short time with

low cost. Software Industry deal with big problem that is releasing software on

time and with require quality on decided budget. If problems are identified on

early stage of development of software it will not took costly to rectify them

which in turn reduce the cost of overall budget. If error found at later stage

of development then it will effects the overall budget of software project.If during testing of software products any error is

reported in requirement engineering phase then software engineer need to

correct it in requirement and all other places such as in design and in coding

which is very cumbersome process. Then again test the software products. To

avoid such kind of situations if software projects we need some ways or methods

that will resolve these problems in software products and gives us full proof

of confidence as in mathematics which in turn reduce the overall cost of

software project and time bound.The solution to the above problems

of software systems use of Formal methods. This is some kind of mathematical

ways to specify the software specification or requirement called Formal

methods. In Formal methods to represent the specification of software systems

we use formal specification languages.Writing formal specifications and

analyzing those specifications and some others specification belongs to the

system at hand comes in domain of Formal methods. Formal methods are used in

different stages of development process in software project. Formal methods are

now considered to be part of standards because it involves mathematics, like in

other engineering fields. This document describes different aspects of formal

methods especially in requirement engineering phase of development process of

software project systems in the physical world. One thing very important about

Formal Specification only talks about what, not talk about why this actually

done at implementation level. In this document formal method achievements are

discussed in section 2 and formal specification styles and types of methods are

explain in section 3. In section 4 of this document limitation of formal

methods are presented and in section 5 many benefits of formal methods are

given and in section 6 future of formal

method is touched with conclusion and . A. ACHIEVMENT

OF FORMAL METHODSIn

software development life cycle Formal methods can be used at many stages.

There are following achievements are given below:1. Formal methods help to produce specification

that gives the actual client requirement in very formal way like mathematics

that looks different from simple requirement specification. This type of

specification has no ambiguity in it and easily verify with the help of certain

methods.2. Formal

methods make requirement specification complete in all respect that fully implements

the system at hand either hardware or software.3. These

Formal methods come when we are going to design very critical systems which

must provide reliability and take less time and give us a sense of

completeness. Formal Methods has proved that security, bug free and right systems

are only possible with the use of formal techniques in software development.4. Automatic

Code Generation is another key factor in formal specification. A typical

programmer write 15 lines of code on the average but automation can do better

stuff like code generation.B. Formal

Specification Styles:The Formal Specification Styles are specified as follows:1.

Model Based

Languages:In formal methods, model the system like

mathematical object and apply mathematical operation like we perform on set,

and functions. In algebraic specification system state is hidden but in VDM

(Vienna Development Method), B and Z (Zed specification) are two main modal

based specification languages. Model based languages are a way to write a

specification. The operations on states are defined in term of pre and post

conditions and some invariant conditions.2.

Algebraic

SpecificationAlgebraic technique was initially designed

for the defining of abstract data types and interface. In algebraic

specification we specify the system behaviour of abstract data type using

abstract algebra. There is famous family of language for algebraic

specification which LARCH and OBJ family of languages.3.

Process Oriented:The process based formal specification

language is basically build the specific modal for concurrent systems. In these languages processes are represented

by expression and use the help of elementary expression. In these languages

processes are denoted by expressions and are built up with the help of

elementary expressions which intern yield more complex process. There are many

languages but the most popular is CSP (Communicating Sequential Processes)..

II. Use

of Formal Languages in SDLC

There are two places where

formal languages are used given below:

1.

Requirement Gathering:(Specification)

SRS (software requirement

specification) document describe the software system and it’s characteristics

which client need. Formal languages describe the system and it function

characteristics with the internal detail also.Z, VDM and Larch are utilized for specification of

sequential systems while other formal techniques, for example, CSP, CCS, State

diagrams, Temporal Logic, Lamport and I/O automata, concentrate on indicating

the conduct of concurrent systems. RAISE is utilized for dealing with rich

state spaces what’s more, LOTOS is one of the dialects for dealing with

complicated nature because of simultaneousness.

2.

Testing (Verification):

When we write formal

specifications we can check or verify it through formal Verification which is

the process to prove or disprove the completeness and correctness of proposed

system specification in mathematical way. There are two ways to verify the

given below: a. Model

Checking

In model checking, a finite state model of the

system is

build and its state space is mechanically investigated.

Two well-known and equivalent model checkers are SPIN and NuSMV.b. Theorem Prover Theorem proving is another approach for

verification of

a specification or checking the correctness of a

program. A model of the system is described in a

mathematical language and desired properties of the

model can be proven by a theorem prover. It is

mechanization of a logical proof. The specification to

be checked by a theorem prover is written in a

mathematical notation. Z (pronounced ‘Zed’) is its well-known example. A. LIMITATIONS

OF FORMAL METHODS

Although Formal methods has

significant place in software development process but there are some limitation

also which in turn create some problems. These are discussed below: