The Grand Challenge in Verified Software - Introduction
Industrial software usually has extensive documentation, but software behaviour often comes as a complete surprise! Programming is inherently hard because we have to reduce a problem to a set of rules that can be blindly followed by a computer. But components interact and interfere, and undesirable properties emerge. The result is that systems fail to satisfy their users’ needs.
Software is inherently hard to develop. It’s hard to define requirements, to anticipate interactions, and to accommodate new functionality. Documentation involves large amounts of text, pictures, and diagrams, but these are often imprecise and ambiguous. Important information is often hidden by irrelevant detail. Design mistakes are often discovered too late, making them expensive or even impossible to correct. It’s a tribute to the skill of software engineers that systems work at all.
Some practitioners in industry and researchers from universities believe it’s now practical to use formal methods to produce software, even non-critical software. And that this will turn out to be the cheapest way to do it. Given the right computer-based tools, the use of formal methods could become widespread and transform the industrial practice of software engineering. The computer science community recently committed itself to making this a reality within the next fifteen to twenty years.
Golden Gates? Things like even software verification, this has been the Holy Grail of computer science for many decades but now in some very key areas, for example, driver verification we’re building tools that can do actual proof about the software and how it works in order to guarantee the reliability. Bill Gates, Keynote address, WinHec 2002 |
Ode to Joy? I have a few more things I want to do. I still think the tools we have for building reliable software are inadequate. Bill Joy |
Showstopper? Without major breakthroughs, verification will be a non-scalable, show-stopping barrier to further progress in the semiconductor industry. 2005 ITRS Roadmap |
In 2004, Tony Hoare proposed automatically verified software as a grand scientific challenge for computing.
A mature scientific discipline should set its own agenda and pursue ideals of purity, generality, and accuracy far beyond current needs. Science explains why things work in full generality by means of calculation and experiment. An engineering discipline exploits scientific principles in the study of the specification, design, construction, and production of working artifacts, and improvements to both process and design. The verification challenge is to achieve a significant body of verified programs that have precise external specifications, complete internal specifications, machine-checked proofs of correctness with respect to a sound theory of programming. |
If the grand challenge project is successful, then in fifteen years' time we'll have convincing evidence to change standard industrial practice.
Just do it! You can’t say any more it can’t be done! Here, we’ve done it! Tony Hoare |
A comprehensive theory of programming covering the features needed to build practical and reliable programs.
A coherent toolset automating the theory and scaling up to large codes.
A collection of verified programs replacing existing unverified ones, continuing to evolve as verified code: the Verified Software Repository (VSR).
In the last three years a research agenda has started to emerge through a series of meetings and publications.
NSF-funded meetings in the US. (February 2005)
EPSRC-funded meetings in the UK.
Workshop on Dependable Systems Evolution, 13-14 November 2003, Queen Mary, University of London.
Workshop on Dependable Systems Evolution March 2004, Gresham College, London.
Workshop on the Verified Software Repository, 21 December 2004, BSC-FACS Christmas Meeting, London.
Grand Challenge Workshop on Dependable Systems Evolution (GCW-DSE)ETAPS 2005 Edinburgh. April 2005, (a Satellite Workshop of
The VSTTE conference -- Verified Software: Theories, Tools, & Experiments -- was held at ETH Zürich during 10-13 October 2005, as a working conference of IFIP (the International Federation for Information Processing), specifically TC2 (the IFIP committee on programming) and its Working Group 2.3 (Programming Methodology).
Cliff B. Jones, Peter W. O'Hearn, Jim Woodcock: Verified Software: A Grand Challenge. IEEE Computer 39(4): 93-95 (2006).
Jim Woodcock: First Steps in the Verified Software Grand Challenge. IEEE Computer 39(10): 57-64 (2006).
Juan Bicarregui, C. A. R. Hoare, J. C. P. Woodcock: The verified software repository: a step towards the verifying compiler. Formal Aspects of Computing 18(2): 143-151 (2006).
The developing research roadmap is available at the QPQ website. A useful roadmap should set out long-term co-ordinated programme of incremental research.
Accelerated scaling of the performance, robustness, and functionality of basic verification technology.
Integration and embedding of this technology in program development and verification methodologies and environments, and in teaching.
Pilot projects to evaluate feasibility and guide technology development.
Large-scale experiments that benchmark the technology.
To accelerate the development of verification technology through the development of better tools, greater interoperability, and realistic benchmarks.
To provide a focus for the verification community to ensure that the research results are relevant, replicable, complementary, and cumulative, and promote meaningful collaboration between complementary techniques.
To provide open access to the latest results and educational material in areas relevant to verification research.
To collect a significant body of verified code (specification, derivation, proofs, implementation) that addresses challenging applications.
Identify key metrics for evaluating the scale, efficiency, depth, amortization, and reusability of the technology.
Enumerate challenge problems and areas for verification, preferably ones that require multiple techniques.
Identifying (and eventually standardising) formats for representing and exchanging specifications, programs, test cases, proofs, and benchmarks, to support tool interoperability and comparison.
Defining quality standards for the contents of the repository.
Page
created by Jim Woodcock, 18th June 2007,
last updated by Juan Bicarregui, 6th August 2007