MacIlroy's vision of a marketplace of software components requires enforceable contracts. Such a contract describes the expectations and obligations of a contract; its enforcement system decides whose fault it is when a program breaks a contract.
The first goal of this project is to investigate the nature of behavioral contracts and mechanisms for monitoring contracts for all kinds of component mechanisms, including classes, mixins, aspects, modules, and related constructs. The second goal is to study how contracts can help improve static analyses and how static analyses can partially verify contracts. Finally, the project team will conduct an experiment with a component marketplace to test their software contracts and contract monitoring systems.
In the long term, this research may help establish a truly competitive marketplace of software components. In this marketplace, components will come with open-source contracts. Alternate suppliers can then produce components with near-equivalent contracts, and consumers can choose from an array of interchangeable components.