The SPIN Verification System


Book Description

What is SPIN? SPIN is a general tool for the specification and formal verification of software for distributed systems. It has been used to detect design errors in a wide range of applications, such as abstract distributed algorithms, data communications protocols, operating systems code, and telephone switching code. The verifier can check for basic correctness properties, such as absence of deadlock and race conditions, logical completeness, or unwarranted assumptions about the relative speeds of processes. It can also check for more subtle, system dependent correctness properties expressed inthe syntax of Linear-time Temporal Logic (LTL). The tool translates LTL formulae automatically into automata representations, which can be used in an efficient on-th-fly verifications procedure. This DIMACS volume presents the papers contributed to the second international workshop that was held on the SPIN verification system at Rutgers University in August 1996. The work covers theoretical and foundational studies of formal verifications, empirical studies of the effectiveness of different types of algorithms, significant practical applications of the SPIN verifier, and discussions of extensions and revisions of the basic code. This text will be of interest to those working in applications.




Design and Validation of Computer Protocols


Book Description

This volume discusses the fundamental problems of designing logically consistent methods of communication between multiple computer processes. Standard protocol design problems, such as error control and flow control, are covered in detail, but also structured design methods and the construction of formal validation models. The book contains complete listings and explanations of new protocol validation and design tool called SPIN. Author is in charge of protocol design at Bell Labs. Professionals who bought Tanenbaum's COMPUTER NETWORKS, 2/E and Comer's TCP/IP will buy this. This is the first book to cover automated protocol design and validation tools extensively.




Principles of the Spin Model Checker


Book Description

This is the first introductory textbook on Spin, the only requirement is a background in programming. Spin models are written in the Promela language which is easily learned by students and programmers. Spin is easy to install and use. The Spin model checker is not only a widely used professional tool but it is also a superb tool for teaching important concepts of computer science such as verification, concurrency and nondeterminism. The book introduces Spin-based software that the author has developed for teaching. Complete programs demonstrate each construct and concept and these programs are available on a companion website.




SPIN Model Checking and Software Verification


Book Description

The SPIN workshop is a forum for researchers interested in the subject of automata-based, explicit-state model checking technologies for the analysis and veri?cation of asynchronous concurrent and distributed systems. The SPIN - del checker (http://netlib.bell-labs.com/netlib/spin/whatispin.html), developed by Gerard Holzmann, is one of the best known systems of this kind, and has attracted a large user community. This can likely be attributed to its e?cient state exploration algorithms. The fact that SPIN’s modeling language, Promela, resembles a programming language has probably also contributed to its success. Traditionally, the SPIN workshops present papers on extensions and uses of SPIN. As an experiment, this year’s workshop was broadened to have a slightly wider focus than previous workshops in that papers on software veri?cation were encouraged. Consequently, a small collection of papers describe attempts to analyze and verify programs written in conventional programming languages. Solutions include translations from source code to Promela, as well as specially designed model checkers that accept source code. We believe that this is an - teresting research direction for the formal methods community, and that it will result in a new set of challenges and solutions. Of course, abstraction becomes the key solution to deal with very large state spaces. However, we also see - tential for integrating model checking with techniques such as static program analysis and testing. Papers on these issues have therefore been included in the proceedings.




The Spin Model Checker


Book Description

The SPIN Model Checker is used for both teaching software verification techniques, and for validating large scale applications. The growing number of users has created a need for a more comprehensive user guide and a standard reference manual that describes the most recent version of the tool. This book fills that need. SPIN is used in over 40 countries. The offical SPIN web site, spinroot.com receives between 2500 and 3000 hits per day. It has been estimated that up to three-quarters of the $400 billion spent annually to hire programmers in the United States is ultimately spent on debugging




Model Checking Software


Book Description

This book constitutes the refereed proceedings of the 10th International SPIN workshop on Model Checking of Software, SPIN 2003, held in Portland, OR, USA in May 2003 as an ICSE 2003 satellite workshop. The 14 revised full papers and 3 revised tool papers presented were carefully reviewed and selected from 30 submissions. The book presents state-of-the-art results on the analysis and verification of distributed software systems using the SPIN model checker as one of the most powerful and widely applied systems.




Principles of Model Checking


Book Description

A comprehensive introduction to the foundations of model checking, a fully automated technique for finding flaws in hardware and software; with extensive examples and both practical and theoretical exercises. Our growing dependence on increasingly complex computer and software systems necessitates the development of formalisms, techniques, and tools for assessing functional properties of these systems. One such technique that has emerged in the last twenty years is model checking, which systematically (and automatically) checks whether a model of a given system satisfies a desired property such as deadlock freedom, invariants, and request-response properties. This automated technique for verification and debugging has developed into a mature and widely used approach with many applications. Principles of Model Checking offers a comprehensive introduction to model checking that is not only a text suitable for classroom use but also a valuable reference for researchers and practitioners in the field. The book begins with the basic principles for modeling concurrent and communicating systems, introduces different classes of properties (including safety and liveness), presents the notion of fairness, and provides automata-based algorithms for these properties. It introduces the temporal logics LTL and CTL, compares them, and covers algorithms for verifying these logics, discussing real-time systems as well as systems subject to random phenomena. Separate chapters treat such efficiency-improving techniques as abstraction and symbolic manipulation. The book includes an extensive set of examples (most of which run through several chapters) and a complete set of basic results accompanied by detailed proofs. Each chapter concludes with a summary, bibliographic notes, and an extensive list of exercises of both practical and theoretical nature.




Model Checking Software


Book Description

This book constitutes the refereed proceedings of the 15th International SPIN workshop on Model Checking Software, SPIN 2008, held in Los Angeles, CA, USA, in August 2008. The 17 revised full papers presented together with 1 tool paper and 4 invited talks were carefully reviewed and selected from 41 submissions. The main focus of the workshop series is software systems, including models and programs. The papers cover theoretical and algorithmic foundations as well as tools for software model checking and foster interactions and exchanges of ideas with related areas in software engineering, such as static analysis, dynamic analysis, and testing.




Embedded Systems and Software Validation


Book Description

Modern embedded systems require high performance, low cost and low power consumption. Such systems typically consist of a heterogeneous collection of processors, specialized memory subsystems, and partially programmable or fixed-function components. This heterogeneity, coupled with issues such as hardware/software partitioning, mapping, scheduling, etc., leads to a large number of design possibilities, making performance debugging and validation of such systems a difficult problem. Embedded systems are used to control safety critical applications such as flight control, automotive electronics and healthcare monitoring. Clearly, developing reliable software/systems for such applications is of utmost importance. This book describes a host of debugging and verification methods which can help to achieve this goal. - Covers the major abstraction levels of embedded systems design, starting from software analysis and micro-architectural modeling, to modeling of resource sharing and communication at the system level - Integrates formal techniques of validation for hardware/software with debugging and validation of embedded system design flows - Includes practical case studies to answer the questions: does a design meet its requirements, if not, then which parts of the system are responsible for the violation, and once they are identified, then how should the design be suitably modified?




Model Checking Software


Book Description

This book constitutes the refereed proceedings of the 11th International SPIN workshop on Model Checking Software, SPIN 2004, held in Barcelona, Spain, in April 2004. The 19 revised full papers presented together with the abstracts of an invited talk and 2 tutorials were carefully reviewed and selected from 48 submissions. The papers are organized in topical sections on heuristics and probabilities, improvements of SPIN, validation of timed systems, tool presentations, abstraction and symbolic methods, and applications.