The CONTRACT project promotes the notion of publicly declared commitments in the form of contracts between actors in an application. In other words, seeking to model the functioning of a system by modelling the obligations and undertakings made between components (which is liable to be orders of magnitude simpler). The advantages of this approach are:
- Contracts abstract away detailed implementation information of individual actors to specifically model only dependencies between the actors, thereby dramatically reducing the size of the model to be verified.
- Contracts are by definition publicly observable, whereas internal system functionality and system state in a distributed application generally are not, thereby improving the possibilities of complete run-time monitoring of the system as a whole.
- Contracts can model non-functional as well as functional properties of an interaction rather than providing only information about the process executed by method calls (for example, the quality of service for a process versus the return type), thereby in principle providing a more flexible modelling language.
- Contracts also naturally correspond to the types of relationships established among humans and their organisations when commitments and obligations are recorded, thereby allowing for a more intuitive analysis from software engineers.
- Contracts can be linked to more general social structures such as social laws, rules, norms and institutions which have been shown to provide useful metaphors for electronic system design.
The use of dynamic contractual agreements as a leading metaphor for business system specification, design and management is therefore a significant breakthrough in the formal specification and verification of business software systems (and potentially more generally) since it raises the level of abstraction at which verification methods can work from detailed execution code to obligations, commitments and rights. While systems may still fail internally, a paradigm which allows analysis and verification at higher levels
- bypasses the problem of not receiving access to all source code (contractual commitments must be public or known to third parties and cannot be side stepped), and
- puts the responsibility on service providers to ensure their own components/services are robust against failure before engaging in collaborative business.
|
Copyright 2006 - 2009, IST Contract Project. All rights reserved.