@InProceedings{Boosten03, title = "{F}ormal {C}ontracts: {E}nabling {C}omponent {C}omposition", author= "Boosten, Marcel", editor= "Broenink, Jan F. and Hilderink, Gerald H.", pages = "185--197", booktitle= "{C}ommunicating {P}rocess {A}rchitectures 2003", isbn= "1 58603 381 6", year= "2003", month= "sep", abstract= "Traditional component interaction is based on interface calls and callbacks. Such interaction can introduce integration faults, i.e., side effects at the moment of component integration. Solutions to such problems can be hard to apply, and may require drastic changes in the design of the involved components. This paper introduces Formal Contracts, a software construct that allows side-effect free component interaction, and thereby avoids the introduction of integration faults. Furthermore, via a state machine representing the inter-component contract, Formal Contracts, in addition to the static aspects, formally specify the dynamic aspects of component interaction. Formal Contracts are a pragmatic software mechanism that supports the full development cycle: from the specification and decomposition until the debugging, composition, and test of a system." }