Code-level model checking in the software development workflow
Nathan Chong,Byron Cook,Konstantinos Kallas,Kareem Khazem,Felipe R. Monteiro,Daniel Schwartz-Narbonne,Serdar Tasiran,Michael Tautschnig,Mark R. Tuttle
DOI: https://doi.org/10.1145/3377813.3381347
2020-06-27
Abstract:This experience report describes a style of applying symbolic model checking developed over the course of four years at Amazon Web Services (AWS). Lessons learned are drawn from proving properties of numerous C-based systems, e.g., custom hypervisors, encryption code, boot loaders, and an IoT operating system. Using our methodology, we find that we can prove the correctness of industrial low-level C-based systems with reasonable effort and predictability. Furthermore, AWS developers are increasingly writing their own formal specifications. All proofs discussed in this paper are publicly available on GitHub.