This textbook overviews the whole spectrum of formal methods and techniques that are aimed at verifying correctness of software, and how they can be used in practice. It focuses on techniques whereby the user has some control over the properties that are being checked. More specifically, it shows a wide range of techniques covering the whole spectrum: from abstract system design to implementation, from bug finding to full proofs, and from techniques that are push-button by design and give a yes/no answer to techniques that require the user to provide explicit guidance to steer the analysis process.
Topics and features:
- Covers a broad spectrum of software verification techniques, from model checking to annotation checking
- Provides numerous examples to demonstrate the techniques
- Focuses on how techniques can be used (and the main ideas behind how they work), as opposed to how they are implemented
- Explains strengths and weaknesses of the techniques, providing insight into when to use which technique in practice
This unique textbook has been written primarily for master’s level students in computer science studying embedded systems and specializing in software technology. The book will also be of interest for students studying cyber security and data science technology, as well as for system or software developers interested in techniques that offer formal guarantees about software.