




















Study with the several resources on Docsity
Earn points by helping other students or get them with a premium plan
Prepare for your exams
Study with the several resources on Docsity
Earn points to download
Earn points by helping other students or get them with a premium plan
An introduction to software verification and validation, discussing the distinction between them, the role of program inspections, static analysis, and the cleanroom software development process. It also covers the importance of verification and validation throughout the software development life cycle, and the difference between static and dynamic verification.
Typology: Slides
1 / 28
This page cannot be seen from the preview
Don't miss anything!





















๏ To introduce software verification and validation and to discuss the distinction between them
๏ To describe the program inspection process and its role in V & V
๏ To explain static analysis as a verification technique
๏ To describe the Cleanroom software development process
๏ Verification should check the program meets its specification as written in the requirements document for example. ๏ This may involve checking that it meets it functional and non-functional requirements
๏ Validation ensures that the product meets the customers expectations ๏ This goes beyond checking it meets its specification; as we have seen, system specifications donโt always accurately reflect the real needs of users
๏ As a whole life-cycle process - V & V must be applied at each stage in the software process.
๏ Has two principal objectives
๏ The discovery of defects in a system ๏ The assessment of whether or not the system is usable in an operational situation.
public class Temperature { // constructor public Temperature(double initTemp) { x = initTemp; } // calcTGrd function to calc. the value of a T gradiant public double calcTGrd(float ZVAL) { float a = x * x; a = a * ZVAL * 3.8883; return a; } public double x; }
๏ System testing is only possible when an executable version of the program is available
๏ This is therefore an advantage of incremental development since a testable version of the system is available at a fairly early stage
๏ New functionality can be checked as it is added to the system and we can perform regression testing (we will talk about this in a few slides time)
๏ Real data can be used as input to the system and we try to observe any anomalies in the output
๏ Can reveal the presence of errors NOT their absence !!!
๏ A successful test is a test which discovers one or more errors
๏ Program testing is the only validation technique for non-functional requirements
๏ Should be used in conjunction with static verification to provide full V&V coverage
๏ Defect testing
๏ Tests designed to discover system defects. ๏ A successful defect test is one which reveals the presence of defects in a system.
๏ Statistical testing
๏ Tests designed to reflect the frequency of user inputs. Used for reliability estimation.
๏ Software function โ A much higher level of confidence that the system is fit for purpose is required for safety critical systems that for prototype systems for example
๏ User expectations โ Users sometimes have a low expectation of software and are willing to tolerate some system failures (although this is decreasing)
๏ Marketing environment โ Competing programs must be taken into account and the required schedule for introducing the product to market. Cheaper products may be expected to have more faults.
Defect testing and debugging are distinct processes
๏ (!) Verification and validation is concerned with establishing the existence of defects in a program
**- locating and
๏ (!!) Debugging involves
๏ formulating a hypothesis about program behaviour ๏ then testing these hypotheses to find the system error
public class Temperature {
// calcTGrd function to calc. the value of a T gradient public double calcTGrd(float ZVAL) { int a = (int) x * x if(a = 1) x = ZVAL * 3.8883; return a; } public double x;
}
COMP201 - Software Engineering 16
Syntax error (missing semicolon) Semantic error (should use double equals)
docsity.com
๏ A syntax error should be caught by the compiler which will (usually) indicate the location the error occurred in and the type of error.
๏ A semantic error (also called a logical error) can occur in a program which compiles and runs, but produces incorrect output on some (or all) input (e.g. An incorrect algorithm or mistake in a formulae etc.)
๏ Semantic errors are often harder to detect since the compiler may not be able to indicate where/what the problem is.
Locate error
Design error repair
Repair error
Re-test program
Test results Specification^
Test cases
๏ Careful planning is required to get the most out of testing and inspection processes
๏ Planning should start early in the development process
๏ The plan should identify the balance between static verification and testing
๏ Test planning is about defining standards for the testing process rather than describing product tests