Stepwise Refinement Techniques
• An appropriate mathematical model is required to
write an algorithm for a problem.
• The initial version of the algorithm will contain
general statements, i.e., informal instructions.
• Convert this informal algorithm to formal algorithm,
that is, more definite instructions by applying any
programming language syntax and semantics
partially.
• Finally a program can be developed by converting the
formal algorithm by a programming language
manual.
Contd.,
• There are several steps to reach a program from a
mathematical model.
• In every step there is a refinement (or conversion).
• That is to convert an informal algorithm to a program, several
stages of formalization is required to formally define the
algorithm by a programming language manual — is called
stepwise refinement techniques.
• There are three steps in refinement process
Contd.,
1. In the first stage, modelling, try to represent the problem using an
appropriate mathematical model such as a graph, tree etc. At this
stage, the solution to the problem is an algorithm expressed very
informally.
2. At the next stage, the algorithm is written in pseudo-language
(or formal algorithm) that is, mixture of any programming
language constructs and less formal English statements. The
operations to be performed on the various types of data become
fixed.
3. In the final stage we choose an implementation for each
abstract data type and write the procedures for the various
operations on that type. The remaining informal statements in the
pseudo-language algorithm are replaced by (or any programming
language) C/C++ code
Phases of Programming
• There are five phases in programming
• Requirements
• Design
• Analysis
• Coding and
• Verification
Contd.,
• Requirements - understand the information you
are given (the input) and what results you are to
produce (the output).
• Design – Several Objects, for each object there
will be some basic operations to perform on it.
These operations already exist in the form of
procedures and write an algorithm which solves
the problem according to the requirements.
Contd.,
• Analysis – Choose the more desirable
algorithm than the other
• Refinement and Coding
– write algorithms for each of the operations on
these objects.
– Good design should changes relatively easily.
– Debugging on by doing a new version
Contd.,
• Verification
– consists of three distinct aspects: program proving,
testing and debugging.
1. Program Proving
– prove the program is correct before executing
your program for all possible combinations of
inputs, the program and its specification agree.
Contd.,
2. Testing and Debugging
– Testing is the art of creating sample data upon which to run
your program.
– If the program fails to respond correctly then debugging is
needed to determine what went wrong and how to correct
it.
– process errors are discovered in the code.
– Prove program methodology by discovering errors.
– Tools available to aid in the testing process.
Contd.,
– One such tool instruments your source code and then tells
you for every data set:
(i) The number of times a statement was executed,
(ii) The number of times a branch was taken,
(iii) the smallest and largest values of all variables.
• The test data you construct should force every
statement to execute and every condition to assume
the value true and false at least once.
• Larger the software, the more crucial is the need for
documentation.