35
Chapter 2.11 Program Validation

Chapter 2.11 Program Validation. Reliable System = Reliable Hardware AND Reliable Software AND Compatible Hardware and Software

Embed Size (px)

Citation preview

Page 1: Chapter 2.11 Program Validation. Reliable System = Reliable Hardware AND Reliable Software AND Compatible Hardware and Software

Chapter 2.11

Program

Validation

Page 2: Chapter 2.11 Program Validation. Reliable System = Reliable Hardware AND Reliable Software AND Compatible Hardware and Software

Reliable System

=Reliable Hardware

AND

Reliable Software

AND

Compatible Hardware and Software

Page 3: Chapter 2.11 Program Validation. Reliable System = Reliable Hardware AND Reliable Software AND Compatible Hardware and Software

Reliable Hardware

Good Design

Diagnostic Circuits

Build-in

Redundancy

Diagnostic Programs

Page 4: Chapter 2.11 Program Validation. Reliable System = Reliable Hardware AND Reliable Software AND Compatible Hardware and Software

Reliable Software

should be

ADEQUATE(accomplishes the tasks it is used

for)

and

ROBUST(survives all abnormal inputs)

Page 5: Chapter 2.11 Program Validation. Reliable System = Reliable Hardware AND Reliable Software AND Compatible Hardware and Software

Software Validation

Before being used

a program should be

VALIDATED

for

ADEQUACY and ROBUSTNESS

Page 6: Chapter 2.11 Program Validation. Reliable System = Reliable Hardware AND Reliable Software AND Compatible Hardware and Software

Software Validation

WARNING !

Validation can never improve

the quality of software,

it can only prevent the use of

erroneous programs

Page 7: Chapter 2.11 Program Validation. Reliable System = Reliable Hardware AND Reliable Software AND Compatible Hardware and Software

Program Errors

• Syntax errors– Detected by the compiler

• Run-time errors– The program stops with an error message– Special recovery software is activated

• Erroneous results– Consequences can be catastrophic !!!

Software engineering tries to push errors upwards in the list

Page 8: Chapter 2.11 Program Validation. Reliable System = Reliable Hardware AND Reliable Software AND Compatible Hardware and Software

Mandatory Declarations

VAR LOAD, Force : REAL;BEGIN... L0AD := 1000.Undeclared:L0AD... Force := LOAD * ...

BEGIN... L0AD := 1000.... Force:= LOAD * ......

Cross reference: .. . L0AD : 15 LOAD : 20,27,39,44

Normal executionErroneous value of Force

No executionCompilation error

Page 9: Chapter 2.11 Program Validation. Reliable System = Reliable Hardware AND Reliable Software AND Compatible Hardware and Software

Static vs. Dynamic Validation

• Static validation:– based on the analysis of the program – source code required– could guarantee correctness

• Dynamic validation (testing):– based on the execution of the program– only the object code is required– can only prove the presence of errors,

never their absence

Page 10: Chapter 2.11 Program Validation. Reliable System = Reliable Hardware AND Reliable Software AND Compatible Hardware and Software

Bottom-up Validation

• Start with small building blocks

• Finish with the entire system

• Natural and intuitively attractive

• Major incompatibilities between building blocks discovered last

• For dynamic validation:– Test programs required for each building block

Page 11: Chapter 2.11 Program Validation. Reliable System = Reliable Hardware AND Reliable Software AND Compatible Hardware and Software

Top-down Validation

• Start with the entire system, ignoring details.

• Finish with the small building blocks

• Somewhat counter-intuitive

• Major incompatibilities between building blocks discovered first

• For dynamic validation:– Dummy substitutes for all building blocks have to

be made for high-level tests.

Page 12: Chapter 2.11 Program Validation. Reliable System = Reliable Hardware AND Reliable Software AND Compatible Hardware and Software

Static Validation Techniques

• Syntax checking by the compiler

• Manual code checking– Desk checking– Walk through– Inspection

• Data flow analysis

• Correctness proofs

Page 13: Chapter 2.11 Program Validation. Reliable System = Reliable Hardware AND Reliable Software AND Compatible Hardware and Software

Static Validation Techniques

• Syntax checking by the compiler

• Manual code checking– Desk checking– Walk through– Inspection

• Data flow analysis

• Correctness proofs

Page 14: Chapter 2.11 Program Validation. Reliable System = Reliable Hardware AND Reliable Software AND Compatible Hardware and Software

Static Validation Techniques

• Syntax checking by the compiler

• Manual code checking– Desk checking– Walk through– Inspection

• Data flow analysis

• Correctness proofs

Page 15: Chapter 2.11 Program Validation. Reliable System = Reliable Hardware AND Reliable Software AND Compatible Hardware and Software

Manual code checking

• Desk checking– Informal code reading– preferably by somebody else

• Walk through– Formal meeting– Simulated execution of code on blackboard

• Inspection– Formal meeting– Contradictory discussion of code and

programming style

Page 16: Chapter 2.11 Program Validation. Reliable System = Reliable Hardware AND Reliable Software AND Compatible Hardware and Software

Static Validation Techniques

• Syntax checking by the compiler

• Manual code checking– Desk checking– Walk through– Inspection

• Data flow analysis

• Correctness proofs

Page 17: Chapter 2.11 Program Validation. Reliable System = Reliable Hardware AND Reliable Software AND Compatible Hardware and Software

Example : Second

order equation

d > 0 ?

Read a,b,c

Write x1, x2

No

d:=b 2 - 4ac

d = 0 ?x1 := …

x2 := … x := …

Write x Write "no roots"

No

Page 18: Chapter 2.11 Program Validation. Reliable System = Reliable Hardware AND Reliable Software AND Compatible Hardware and Software

Dataflow of a :

d > 0 ?

Read a,b,c

Write x1, x2

No

d:=b 2 - 4ac

d = 0 ?x1 := …

x2 := … x := …

Write x Write "no roots"

No

Page 19: Chapter 2.11 Program Validation. Reliable System = Reliable Hardware AND Reliable Software AND Compatible Hardware and Software

Dataflow of x1 :

d > 0 ?

Read a,b,c

Write x1, x2

No

d:=b 2 - 4ac

d = 0 ?x1 := …

x2 := … x := …

Write x Write "no roots"

No

Page 20: Chapter 2.11 Program Validation. Reliable System = Reliable Hardware AND Reliable Software AND Compatible Hardware and Software

Uninitialized variable

?

x := ...

:= X

Page 21: Chapter 2.11 Program Validation. Reliable System = Reliable Hardware AND Reliable Software AND Compatible Hardware and Software

Useless statement

Write x

x := exp1

x := exp2

Why this statement ???

Page 22: Chapter 2.11 Program Validation. Reliable System = Reliable Hardware AND Reliable Software AND Compatible Hardware and Software

Static Validation Techniques

• Syntax checking by the compiler

• Manual code checking– Desk checking– Walk through– Inspection

• Data flow analysis

• Correctness proofs

Page 23: Chapter 2.11 Program Validation. Reliable System = Reliable Hardware AND Reliable Software AND Compatible Hardware and Software

Correctness Proof

Inputs Outputs

Specifications

Program

EQ

UIV

AL

EN

CE

Page 24: Chapter 2.11 Program Validation. Reliable System = Reliable Hardware AND Reliable Software AND Compatible Hardware and Software

Correctness Proof

• Formal proofs can be long and complex– Impossible for large systems– Very error prone– Could be automated

• Doesn't help with specification errors…

• Useful for well specified, short, but complex, algorithms.

Page 25: Chapter 2.11 Program Validation. Reliable System = Reliable Hardware AND Reliable Software AND Compatible Hardware and Software

Dynamic Validation Techniques

• Testing– No guarantee !!! – Black box vs. white box testing.– Test data

• Debugging– The program state– Control flow breakpoints– Data flow breakpoints– Real time considerations

Page 26: Chapter 2.11 Program Validation. Reliable System = Reliable Hardware AND Reliable Software AND Compatible Hardware and Software

Dynamic Validation Techniques

• Testing– No guarantee !!! – Black box vs. white box testing.– Test data

• Debugging– The program state– Control flow breakpoints– Data flow breakpoints– Real time considerations

Page 27: Chapter 2.11 Program Validation. Reliable System = Reliable Hardware AND Reliable Software AND Compatible Hardware and Software

TESTING

"Testing can proof the presence of errors but not

their absence"

E.W.Dijkstra

Page 28: Chapter 2.11 Program Validation. Reliable System = Reliable Hardware AND Reliable Software AND Compatible Hardware and Software

Dynamic Validation Techniques

• Testing– No guarantee !!! – Black box vs. white box testing.– Test data

• Debugging– The program state– Control flow breakpoints– Data flow breakpoints– Real time considerations

Page 29: Chapter 2.11 Program Validation. Reliable System = Reliable Hardware AND Reliable Software AND Compatible Hardware and Software

Dynamic Validation Techniques

• Testing– No guarantee !!! – Black box vs. white box testing.– Test data

• Debugging– The program state– Control flow breakpoints– Data flow breakpoints– Real time considerations

Page 30: Chapter 2.11 Program Validation. Reliable System = Reliable Hardware AND Reliable Software AND Compatible Hardware and Software

Test data

d > 0 ?

Read a,b,c

Write x1, x2

No

d:=b 2 - 4ac

d = 0 ?x1 := …

x2 := … x := …

Write x Write "no roots"

No

Tests should exercise all paths through a program

a b c d1 3 2 11 2 1 01 1 1 -3

Page 31: Chapter 2.11 Program Validation. Reliable System = Reliable Hardware AND Reliable Software AND Compatible Hardware and Software

d > 0 ?

Read a,b,c

Write x1, x2

No

d:=b 2 - 4ac

d = 0 ?x1 := …

x2 := … x := …

Write x Write "no roots"

No

Test dataTests should exercise exceptional values

a b c d0 1 1 11 0 1 -41 1 0 1

Page 32: Chapter 2.11 Program Validation. Reliable System = Reliable Hardware AND Reliable Software AND Compatible Hardware and Software

d > 0 ?

Read a,b,c

Write x1, x2

No

d:=b 2 - 4ac

d = 0 ?x1 := …

x2 := … x := …

Write x Write "no roots"

No

Test dataTests should exercise very large and very small values

a b c1 10000000001 10000000000

Page 33: Chapter 2.11 Program Validation. Reliable System = Reliable Hardware AND Reliable Software AND Compatible Hardware and Software

Dynamic Validation Techniques

• Testing– No guarantee !!! – Black box vs. white box testing.– Test data

• Debugging– The program state– Control flow breakpoints– Data flow breakpoints– Real time considerations

Page 34: Chapter 2.11 Program Validation. Reliable System = Reliable Hardware AND Reliable Software AND Compatible Hardware and Software

Dynamic Validation Techniques

• Testing– No guarantee !!! – Black box vs. white box testing.– Test data

• Debugging– The program state– Control flow breakpoints– Data flow breakpoints– Real time considerations

Page 35: Chapter 2.11 Program Validation. Reliable System = Reliable Hardware AND Reliable Software AND Compatible Hardware and Software

Dynamic Validation Techniques

• Testing– No guarantee !!! – Black box vs. white box testing.– Test data

• Debugging– The program state– Control flow breakpoints– Data flow breakpoints– Real time considerations