Next: 2 My Background
Up: Monotonicity and Lattices as
Previous: Monotonicity and Lattices as
Software composition is a very mathematical discipline. Nevertheless it appears that mathematicians and computer scientists have deviating goals. Whereas mathematicians formalize a problem to understand it, computer scientists specify a problem to solve it. A common interest is the formalization or specification aspects of languages. Composability definitely qualifies as a language aspect of common interest.
In the development of object-oriented programs in a team, every member has to distinguish between independent tasks and interfering activities. Software interfaces have to be communicated among the members in order to provide the basis for the distinction. Only by means of efficient communication, cooperate software development becomes possible.
I would like to propose the use of development contracts, which define the development tasks and assign them to the contract parties. A typical concrete situation is that software architects design abstract classes which are handed over to developers who implement the extended concrete classes. The mutual dependencies of the architect and the developer have to be identified and settled in a development contract.
A development contract is not limited to the behavioral description of the abstract class. It must also contain the requirements of the extension. Although practiced in object-oriented development, this major shift of paradigm is not reflected in formal specification methods, yet.
New trends in the software industry adds importance to development contracts. Company's boundaries squeeze in between architect and developer partners and informal interface descriptions gain a new status. There is a rising need for making the description more precise and standard. The benefit is a finer grained competition, which has the potential of destructing monolithic software firms to the advantage of the customer. In future a text processing system will be composed of components from different manufacturers and the user himself or a third party composer will even have the choice between components from different manufacturers for the same purpose.
Another expected application of development contracts is to facilitate cooperation between strong competitors. In Europe, for example, the railway industry is divided into competing groups of companies. In a sector of desirable cooperation, imprecision hampers the development of new technologies that could enable smooth transportation. Development contracts may facilitate the development of compatible software systems, which would strengthen the position of the railway in the transportation market. The existing railway system is a European asset in the world-wide competition.
Philipp Heuberger