Composite Contract Enforcement in Hierarchical Component Systems
Résumé
Abadi and Lamport established a general theorem for composing specifications [1] . Based on an assume-guarantee principle, it enables one to prove the specification of a composite system from the ones of its components. But the general application of this theorem to software composition is not that straightforward because the resulting abstract specification of the composite depends upon the hidden guarantees of its subcomponents. In this paper, we investigate how this result can be exploited without blurring responsibilities between the different participants. Our contributions leverage an existing contracting framework for hierarchical software components [7] , in which contracts are first-class objects during configuration and run times. This framework already associates specifications and responsibilities to software components, within the traditional horizontal form of composition. We show here how the vertical one can be made operational using the theorem as a sound formal basis. The resulting composite contracts make possible not only to detect violations, but also to determine and exploit precisely responsibilities upon them, related to both forms of composition.