Cargando…

Holistic Specifications for Robust Programs

Functional specifications describe what program components can do: the sufficient conditions to invoke components’ operations. They allow us to reason about the use of components in a closed world setting, where components interact with known client code, and where the client code must establish the...

Descripción completa

Detalles Bibliográficos
Autores principales: Drossopoulou, Sophia, Noble, James, Mackay, Julian, Eisenbach, Susan
Formato: Online Artículo Texto
Lenguaje:English
Publicado: 2020
Materias:
Acceso en línea:https://www.ncbi.nlm.nih.gov/pmc/articles/PMC7418133/
http://dx.doi.org/10.1007/978-3-030-45234-6_21
Descripción
Sumario:Functional specifications describe what program components can do: the sufficient conditions to invoke components’ operations. They allow us to reason about the use of components in a closed world setting, where components interact with known client code, and where the client code must establish the appropriate pre-conditions before calling into a component. Sufficient conditions are not enough to reason about the use of components in an open world setting, where components interact with external code, possibly of unknown provenance, and where components may evolve over time. In this open world setting, we must also consider the necessary conditions, i. e. what are the conditions without which an effect will not happen. In this paper we propose the [Formula: see text]hainmail specification language for writing holistic specifications that focus on necessary conditions (as well as sufficient conditions). We give a formal semantics for [Formula: see text]hainmail, and discuss several examples. The core of [Formula: see text]hainmail has been mechanised in the Coq proof assistant.