Название: Guide to Software Verification with Frama-C: Core Components, Usages, and Applications
Автор: Nikolai Kosmatov, Virgile Prevosto, Julien Signoles
Издательство: Springer
Серия: Computer Science Foundations and Applied Logic
Год: 2024
Страниц: 708
Язык: английский
Формат: pdf (true), epub
Размер: 64.7 MB
Frama-C is a popular open-source toolset for analysis and verification of C programs, largely used for teaching, experimental research, and industrial applications. With the growing complexity and ubiquity of modern software, there is increasing interest in code analysis tools at various levels of formalization to ensure safety and security of software products. Acknowledging the fact that no single technique will ever be able to fit all software verification needs, the Frama-C platform features a wide set of plug-ins that can be used or combined for solving specific verification tasks. This guidebook presents a large panorama of basic usages, research results, and concrete applications of Frama-C since the very first open-source release of the platform in 2008. It covers the ACSL specification language, core verification plug-ins, advanced analyses and their combinations, key ingredients for developing new plug-ins, as well as successful industrial case studies in which Frama-C has helped engineers verify crucial safety or security properties. The C programming language continues to be used in foundational software such as device drivers, networking software, operating systems, and controllers, and such software is of growing importance as computers are used in more and more products and cyber-physical systems. C is an attractive programming language for such systems because it provides low-level access to machine capabilities, explicit storage allocation, and pointer arithmetic. However, these same features make it difficult to use C safely and reliably. Programming safely and reliably in language such as C benefits greatly from tool support, which can record a programmer’s decisions and check that they are carried out consistently and without running into any semantic problems.