Verification of Object-Oriented Software. The KeY Approach

Foreword by K. Rustan M. Leino

  • Editors
  • Bernhard Beckert
  • Reiner Hähnle
  • Peter H. Schmitt

Part of the Lecture Notes in Computer Science book series (LNCS, volume 4334)

Also part of the Lecture Notes in Artificial Intelligence book sub series (LNAI, volume 4334)

Table of contents

  1. Front Matter
  2. A New Look at Formal Methods for Software Construction

  3. Part I: Foundations

    1. Front Matter
      Pages 19-19
    2. Martin Giese
      Pages 21-68
    3. Bernhard Beckert, Vladimir Klebanov, Steffen Schlager
      Pages 69-177
    4. Philipp Rümmer
      Pages 179-242
  4. Part II: Expressing and Formalising Requirements

    1. Front Matter
      Pages 243-243
    2. Andreas Roth, Peter H. Schmitt
      Pages 245-294
    3. Richard Bubel, Reiner Hähnle
      Pages 295-315
    4. Kristofer Johannisson
      Pages 317-333
    5. Andreas Roth
      Pages 335-374
    6. Wojciech Mostowski
      Pages 375-405
  5. Part III: Using the KeY System

    1. Front Matter
      Pages 407-407
    2. Wolfgang Ahrendt
      Pages 409-451
    3. Angela Wallenburg
      Pages 453-479
    4. Steffen Schlager
      Pages 481-505
    5. Vladimir Klebanov
      Pages 507-529
  6. Part IV: Case Studies

    1. Front Matter
      Pages 531-531
    2. Wojciech Mostowski
      Pages 533-568
    3. Richard Bubel
      Pages 569-587

About this book

Introduction

Long gone are the days when program veri?cation was a task carried out merely by hand with paper and pen. For one, we are increasingly interested in proving actual program artifacts, not just abstractions thereof or core algorithms. The programs we want to verify today are thus longer, including whole classes and modules. As we consider larger programs, the number of cases to be considered in a proof increases. The creative and insightful parts of a proof can easily be lost in scores of mundane cases. Another problem with paper-and-pen proofs is that the features of the programming languages we employ in these programs are plentiful, including object-oriented organizations of data, facilities for specifying di?erent c- trol ?ow for rare situations, constructs for iterating over the elements of a collection, and the grouping together of operations into atomic transactions. These language features were designed to facilitate simpler and more natural encodings of programs, and ideally they are accompanied by simpler proof rules. But the variety and increased number of these features make it harder to remember all that needs to be proved about their uses. As a third problem, we have come to expect a higher degree of rigor from our proofs. A proof carried out or replayed by a machine somehow gets more credibility than one that requires human intellect to understand.

Keywords

AI logics JML Java Java Card OCL deductive verification formal methods formal reasoning logic reasoning natural language generation object-oriented software program verification proof obligations software security specification languages systems modeling theorem proving

Bibliographic information

  • DOI https://doi.org/10.1007/978-3-540-69061-0
  • Copyright Information Springer-Verlag Berlin Heidelberg 2007
  • Publisher Name Springer, Berlin, Heidelberg
  • eBook Packages Computer Science
  • Print ISBN 978-3-540-68977-5
  • Online ISBN 978-3-540-69061-0
  • Series Print ISSN 0302-9743
  • Series Online ISSN 1611-3349
  • About this book