The Verifying Compiler: a Grand Challenge for Computing Research Tony Hoare John von Neumann Society October 6, 2004.

Slides:



Advertisements
Similar presentations
3/27/ :01 PM © 2007 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered.
Advertisements

The ideal of program correctness Tony Hoare CAVSeattleAugust 2006.
The Verifying Compiler: a Grand Challenge for Computing Research Tony Hoare Leiden5 November, 2003.
Configuration management
Configuration management
Omnibus: A clean language and supporting tool for integrating different assertion-based verification techniques Thomas Wilson, Savi Maharaj, Robert G.
14-1 © Prentice Hall, 2004 Chapter 14: OOSAD Implementation and Operation (Adapted) Object-Oriented Systems Analysis and Design Joey F. George, Dinesh.
Software Engineering Software Engineering is the science and art of building significant software systems that are: 1) on time 2) on budget 3) with acceptable.
© Chinese University, CSE Dept. Software Engineering / Software Engineering Topic 1: Software Engineering: A Preview Your Name: ____________________.
The ideal of program correctness Tony Hoare BudapestSeptember 2006.
Dr Gordon Russell, Napier University Unit Data Dictionary 1 Data Dictionary Unit 5.3.
An Integration of Program Analysis and Automated Theorem Proving Bill J. Ellis & Andrew Ireland School of Mathematical & Computer Sciences Heriot-Watt.
Laboratory Personnel Dr/Ehsan Moahmen Rizk.
1 CV Writing for Post-doctoral Researchers June Kay Careers Development Consultant Durham University Careers Advisory Service.
Software Evolution Managing the processes of software system change
System Design and Analysis
1 The last commit and the end of configuration management Bertrand Meyer Chair of Software Engineering, ETH Zurich Eiffel Software, Santa Barbara Work.
CSC 395 – Software Engineering Lecture 9: Testing -or- How I Stopped Worrying and Learned to Love the Bug.
Supplement 02CASE Tools1 Supplement 02 - Case Tools And Franchise Colleges By MANSHA NAWAZ.
SE 112 Slide 1 SE 112 l
Formal verification Marco A. Peña Universitat Politècnica de Catalunya.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 8 Slide 1 Tools of Software Development l 2 types of tools used by software engineers:
Frequently asked questions about software engineering
Unit 2: Engineering Design Process Foundations of Technology Lesson 3: Design Principles Design Principles.
Testing. Definition From the dictionary- the means by which the presence, quality, or genuineness of anything is determined; a means of trial. For software.
Writing Impact into Research Funding Applications Paula Gurteen Centre for Advanced Studies.
N By: Md Rezaul Huda Reza n
14-1 © Prentice Hall, 2004 Chapter 14: OOSAD Implementation and Operation Object-Oriented Systems Analysis and Design Joey F. George, Dinesh Batra, Joseph.
Mathematical Modeling and Formal Specification Languages CIS 376 Bruce R. Maxim UM-Dearborn.
Topic (1)Software Engineering (601321)1 Introduction Complex and large SW. SW crises Expensive HW. Custom SW. Batch execution.
Chapter 2: Software Process Omar Meqdadi SE 2730 Lecture 2 Department of Computer Science and Software Engineering University of Wisconsin-Platteville.
Configuration Management (CM)
14-1 © Prentice Hall, 2004 Chapter 14: OOSAD Implementation and Operation Object-Oriented Systems Analysis and Design Joey F. George, Dinesh Batra, Joseph.
Design and Programming Chapter 7 Applied Software Project Management, Stellman & Greene See also:
© Andrew IrelandDependable Systems Group ITI Techmedia and Technology Transfer Andrew Ireland Dependable Systems Group School of Mathematical & Computer.
Framework for the Development and Testing of Dependable and Safety-Critical Systems IKTA 065/ Supported by the Information and Communication.
© Andrew IrelandDependable Systems Group On the Scalability of Proof Carrying Code for Software Certification Andrew Ireland School of Mathematical & Computer.
Well-behaved objects Main concepts to be covered Testing Debugging Test automation Writing for maintainability Objects First with Java - A Practical.
© Andrew IrelandDependable Systems Group Invariant Patterns for Program Reasoning Andrew Ireland Dependable Systems Group School of Mathematical & Computer.
3.2 Semantics. 2 Semantics Attribute Grammars The Meanings of Programs: Semantics Sebesta Chapter 3.
1 CSCD 326 Data Structures I Software Design. 2 The Software Life Cycle 1. Specification 2. Design 3. Risk Analysis 4. Verification 5. Coding 6. Testing.
©euroCRIS/Keith G JefferyCRIS: Stakeholders, Benefits, History, Process, Architecture CRIS “a Current Research Information System, commonly.
Chapter 2: Software Maintenance Omar Meqdadi SE 3860 Lecture 2 Department of Computer Science and Software Engineering University of Wisconsin-Platteville.
Objects First With Java A Practical Introduction Using BlueJ Well-behaved objects 2.1.
Formal Methods in Software Engineering1 Today’s Agenda  Mailing list  Syllabus  Introduction.
© Andrew IrelandGrand Challenges for Computing Research 2004 The Verifying Compiler Andrew Ireland Dependable Systems Group School of Mathematical & Computer.
March 2004 At A Glance Advanced Mission Design (AMD) researches and develops innovative trajectories and the mathematical methods used for optimal designs.
CS 5150 Software Engineering Lecture 22 Reliability 3.
Choosing a Formal Method Mike Weissert COSC 481. Outline Introduction Reasons For Choosing Formality Application Characteristics Criteria For A Successful.
Accreditation of study programs at the Faculty of information technologies Tempus SMGR BE ESABIH EU standards for accreditation of study.
CASE (Computer-Aided Software Engineering) Tools
CS 5150 Software Engineering Lecture 21 Reliability 2.
MEASURE Evaluation Data Quality Assurance Workshop Session 3 Introduction to Routine Data Quality Assessment.
Linux Standard Base Основной современный стандарт Linux, стандарт ISO/IEC с 2005 года Определяет состав и поведение основных системных библиотек.
CompSci 280 S Introduction to Software Development
Chapter3:Software Processes
Engineering Fundamentals and Problem Solving, 6e
Software Processes (a)
Frequently asked questions about software engineering
Tools of Software Development
An Introduction to Software Engineering
Software Engineering Software Engineering is the science and art of
Capability Maturity Model
Project Management: Inspections and Reviews Formal Specifications
Software Engineering Software Engineering is the science and art of
Capability Maturity Model
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 8 Slide 1 Tools of Software Development l 2 types of tools used by software engineers:
Rich Model Toolkit – An Infrastructure for Reliable Computer Systems
Activities of Formal Methods
MCAS-Alt “Grade-level” and “Competency” Portfolios
Presentation transcript:

The Verifying Compiler: a Grand Challenge for Computing Research Tony Hoare John von Neumann Society October 6, 2004

Typical Grand Challenges Prove Fermat’s last theorem(accomplished) Put a man on the moon (accomplished) Cure cancer within ten years(failed in 1970s) Find the Higgs boson(in progress) Map the Human Genome(accomplished)

In Computing Science Prove that P is not equal to NP (open) The Turing test (outstanding) A championship chess program (completed 1997) The verifying compiler (in progress)

A Grand Challenge May take fifteen years or more to complete Attracts world-wide participation Has a clear test of success or failure Pursues scientific ideals Enlarges fundamental understanding –pursues scientific ideals –in an area of significance to mankind

A Grand Challenge needs Maturity of the state of the art Support from the scientific community Commitment from the teams that engage in it Understanding from funding agencies

The Verifying Compiler A verifying compiler uses automated mathematical and logical reasoning to check the correctness of the programs that it compiles. Correctness is specified by types, assertions, specifications, and other redundant annotations that accompany the code of the program.

Test of success Significant software products are analysed mechanically and formally verified, –ranging from safety-critical and embedded codes to open source and legacy applications –verified at an appropriate level of safety/soundness/security/service. Verified programs replace existing versions in use –subsequent evolution will maintain correctness. Verification is integrated into commercial toolsets

Fundamental understanding What is this program for? –Its specification tells you its function How does it work? –Annotation at interfaces explains how. Why does it work? –The theory of programming explains why. Are the answers accurate? –A verifying compiler provides a reliable check

Scientific ideals The project complements commercially motivated evolution of existing products –which follow market demand –to discover more faults in existing programs. –appeal to current educational level of programmers –with many pictures But academic research pursues ideals of purity, accuracy, completeness -- and correctness –far beyond the current needs of the market place

Beneficial The understanding and knowledge gained on completion of the project promises benefit to mankind. Reduction in program errors could even now save $22 to $60 billion per year in US (US Dept. Commerce Planning Report , May 2002 ).

The team must include … Programming theorists Programming tool-set builders Compiler writers and optimisers Design pattern architects Sympathetic users to test the assertions Open source code contributors Proof-tool builders, model checkers,… Teachers and students to do the work

Maturity The reasons for previous failure to meet the challenge are well understood. –And they can be overcome. Compared with 1969 –Gigabytes and Gigacycles are cheap –Beneficiaries number in millions –The state of the art is much advanced …

State of the art Smart-card applications have been manually proved (eg. Logica). Safety-critical systems have been developed from specification (eg. Praxis). Commodity software already includes many assertions (eg. Microsoft Office) Open Source software is freely available for research, as well as for use (eg. Apache). Programming theory covers O-O, concurrency (eg. Separation Logic, Process algebra,…)

Some Available Tools Assertion generators Program analysers Abstract Syntax Tree compilers Verification Condition Generators Optimisers Program Development Environments Theorem provers Constraint solvers Model checkers

An open verification repository Collects a range of ‘challenge’ codes –ranging from embedded and safety-critical to commodity services and legacy software together with its documentation –specifications, assertions, design trajectories, test harnesses, test suites, etc.

Tools Collects applicable program analysis tools –Ensures their full inter-working –Advises and assists in their use –Facilitates their continuous improvement –Integrates them for convenient application Transfers technology to commercial vendors.

Standards formulates standards for compatibility of analytical programs and the challenge data to which they are applied –Negotiates their acceptance by the scientific community –Advises and assists in the achievement of the standards –Converts data where necessary

IFIP Working Conference? Verified Software: Theories, Tools and Experiments Proposal submitted by TC2 to IFIP Zurich, Fall 2005 Chairmen: Jay Misra and Tony Hoare Organisers: Bertrand Meyer, Natarajan Shankar, David Gries, Jim Woodcock

A Program Verifier One can dream of routinely using a verifying compiler as an everyday tool. In the context of this idea our work has been extremely modest and must be considered as a small first step. We only hope that, indeed, this has been a first step of a progression which will allow this dream to come to fruition. A Program Verifier Thesis by James C. King Carnegie Institute of Technology September 1969