Architectural based approaches to designing software are motivating changes in the way software is developed for safety-critical systems. These new approaches allow developers to divide system requirements between components and their subcomponents. To allow systems to be designed in this way a component’s obligations to other components and interfaces with the rest of the system must be captured. This can be done using contracts. Other work has shown how contracts can be used to develop systems. In this paper we explore how to generate design and safety contracts, and then how to use them to support change and reuse.
Iain Bate, Richard Hawkin, John A. McDermid