components, objects, and contracts
Being a composite part of a larger system, a crucial feature of a component is its interface , as it describes the component's interaction with the rest of the system in an abstract manner. It is now commonly accepted that simple syntactic interfaces are not expressive enough for components, and the trend is towards behavioral interfaces. We propose to go a step further and enhance components with deontic contracts , i.e., agreements between two or more components on what they are obliged, permitted , and forbidden to do when interacting. This way, contracts are modeled after legal contracts from conventional business or judicial arenas. Indeed, our work aims at a framework for e-contracts , i.e., "electronic" versions of legal documents describing the parties' respective duties. We take the object-oriented, concurrent programming language Creol as starting point and extend it with a notion of components. We then discuss a framework where components are accompanied by contracts and we sketch some ideas on how analysis of compatibility and compositionality could be done in such a setting.
components contracts interfaces creol compositionality deontic logic object-orientation