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: