A Unified Approach
to Verification and Validation of Software Systems
CS378 – Fall 2005
Unique Number -
54172
J.C Browne
browne@cs.utexas.edu
1. Goal and Purpose
Correctness is the most critical concern of the software
industry. The goal of this course is to make available to students in Computer
Sciences at the
1.1
Background
The methods and tools which are available for validating and verifying software includes static analysis of program code, conventional and systematic testing, model checking for temporal properties, runtime monitoring, and formal proofs of correctness. Yet there does not exist a unified approach to verification and validation which integrates the several methods and tools for verification and validation. Teaching of verification and validation reflects this fragmentation. This course is part of an effort to provide such a unified and integrated approach. The instructor and Profess Calvin Lin have obtained funding from the National Science Foundation to develop a unified approach to verification and validation and an undergraduate course teaching this unified approach.
The two unifying concepts are a “universal” property specification language from which properties can be verified by static analysis, testing, model checking, proof methods or compiled to runtime monitors as appropriate or required and the insight that all methods of verification and validation are searches of the state space of a program for truth or falsity of specified properties. A third unifying conceptual element is the common set of component-oriented set of design principles which enable effective and scalable application of both formal and informal validation and verification.
The lectures will cover the principles and methods. The participants in the course will follow an example through the steps in an integrated process. They will also evaluate the tools which are available for each aspect of the method. Participants will come away from this course with a unique perspective on verification and validation.
The principles and mechanisms for validation and verification are language independent but the tools implementing the mechanisms are language specific. The lectures will be largely language independent but the examples and the outside assignments will use Java and C. A substantial portion of the lectures will be devoted to design for verification and validation and an integrated and comprehensive approach to specification of properties to be verified and evaluated.
The content for the course will include:
Specification of properties, behaviors and assertion
Test coverage algorithms based on static analysis processes
Testing as a continuous process integrating runtime monitoring with conventional testing, model checking and proof-based verification.
Model checking as the endpoint of testing
Property formulation
Compositional reasoning
This material is already covered in other courses and will not be repeated but the role of this material in a comprehensive approach to verification and validation will be covered.
g. Run-Time Monitoring
Methods and Tools
Automated compilation of property monitors.
h. Integration of all the methods in a coherent, complete structure for validation and verification.
i. Extension of verification and validation to security policy issues such as information flow.
j. Failure analysis, fault-tolerance, practical self-stabilization, etc.
k. Verification and validation of non-functional properties such as performance.
2. Student
Prerequisites
Upper division standing. CS 336, CS 337 and CS 375 are desirable. Students may wish to consult with the instructor either by email (browne@cs.utexas.edu), by telephone (471-9579) or in person before registering for this course.
3. Texts and Course Materials
The text for this course is “Software Reliability Methods” by Doron A. Peled. There are many monographs and texts focusing on each topic concerning validation and verification (particularly testing). There are survey and tutorial articles and a large amount of web-based material is available on each topic and these will be used in the class.
4. Course Work and Grading
This is mainly a project course but there will be a single examination about two-thirds of the way through the semester. Grades will be assigned on the basis of the presentation, the report and content of the project and will be based 50% on the project, 25% on the examination and 25% on outside assignments which will be given early in the semester.
5. Approximate Lecture Schedule
An approximate lecture schedule follows. The time allocated for each topic may vary. There will be several guest lectures by experts on some of the topics.
Lecture
Date |
Lecture
Topic |
Reference
Material |
|
Unified Approach to
Verification and Validation |
Lecture
Notes |
|
Review of Background –
Sets and Logics, Searches and Proofs |
Peled – Chapters 2 and 3
and Lecture Notes |
|
Designing for
Verification and Validation |
Lecture
Notes |
|
Models and
Abstractions |
Peled – Chapter 4, lecture
notes and web references |
|
Property Specification
and a Unified Property
Specification Language |
Peled – Chapter 5, Lecture
Notes and Web references |
|
Property Specification
– Examples: Temporal Logics, Pre-conditions and Post-conditions, Design
Contracts, etc |
Lecture Notes, web
references |
|
Property Specification
– Examples: Temporal Logics, Pre-conditions and Post-conditions, Design
Contracts, etc |
Lecture Notes, web
references |
|
Testing – Transition
from informal to structured testing |
Peled – Chapter 9, lecture
notes and web references |
|
Testing – Transition
from informal to structured testing |
Peled – Chapter 9, lecture
notes and web references |
|
Fundamentals of Model
Checking |
Peled – Chapters 4,5 and 6. lecture notes, web reference
materials |
|
Fundamentals of Model
Checking |
Peled – Chapters 4,5 and 6. lecture notes, web reference
materials |
|
Introduction to
Runtime Monitoring |
Web reference
material |
|
Introduction to Static
Analysis |
TBD |
|
Introduction to Static
Analysis |
TBD |
|
Translation/Abstraction
based Unification of Static Analysis, Testing, Model Checking and Runtime
Monitoring |
Peled – Chapter 10, Lecture
Notes |
|
Class
Examination |
|
|
Hoare/Dijkstra Proof Methods |
Peled – Chapter
7 |
|
Automated Formal Proof
Methods |
Guest
Lecture |
|
Specification and
Verification of Non-functional Properties – Performance and
Security |
Lecture notes and web
materials |
|
Process Algebras and
Process Calculi |
Peled – Chapter
8 |
|
Project
Presentations |
|
|
Project
Presentations |
|
|
Project
Presentations |
|
|
Project
Presentations |
|
|
Project
Presentations |
|
|
Verification/Validation
in In Practice – Case
Study |
TBD |
|
Verification/Validation
in Practice – Case Study |
TBD |