2014 · 151 citations · 27 references
ComputingComputer ScienceComputer SystemsFormal MethodsOperating SystemsSystems ArchitectureKernel ArchitectureLayered ArchitectureNetwork ProtocolsSoftware ArchitectureSoftware DesignSpecification LanguagesAbstractionAbstraction MechanismsLayer AbstractionLayered SystemOperating System Abstraction LayersPlatform AbstractionProgram VerificationSystem-level Verification
Modern computer systems consist of a multitude of abstraction layers (e.g., OS kernels, hypervisors, device drivers, network protocols), each of which defines an interface that hides the implementation details of a particular set of functionality. Client programs built on top of each layer can be understood solely based on the interface, independent of the layer implementation. Despite their obvious importance, abstraction layers have mostly been treated as a system concept; they have almost never been formally specified or verified. This makes it difficult to establish strong correctness properties, and to scale program verification across multiple layers.
27
An axiomatic basis for computer programming
C. A. R. Hoare · Communications of the ACM · 1969 · 3.9K citations · Full text
Separation logic: a logic for shared mutable data structures
John Reynolds · 2003 · 2.2K citations
Gerwin Klein, Kevin Elphinstone, Gernot Heiser et al. · 2009 · 1.6K citations
Software abstractions: logic, language and analysis
Choice Reviews Online · 2007 · 1.5K citations
Extensibility safety and performance in the SPIN operating system
Brian N. Bershad, Stefan Savage, Przemysław Pardyak et al. · 1995 · 955 citations