Modular Construction and Object-Oriented Technologies

Many different visions of markets of software components have been proposed, based on a wide variety of abstraction mechanisms and resulting definitions of components. Our own investigation is taking a rather inclusive view of the possible scale and nature of these components, but we see object-oriented methods as an indispensable part of the move to reuse. The more modular methods of software development that result from the adoption of object-oriented technologies promise to provide a dramatic increase in the reuse of components and frameworks.

A key aspect of object-oriented programming in encouraging reuse is the support of encapsulation. Encapsulation of domain abstractions allows for greater reuse of others' experience. Information hiding through encapsulation also eases the task of integrating different components. Mark S. Miller and K. Eric Drexler have liked encapsulation in object-oriented programming to the discovery by programmers of property rights over data [Mill 88]. They write, ``encapsulation in software serves the same crucial function as property rights in human affairs: it establishes protected spheres in which entities can plan the use of their resources free of interference from unpredictable external influences.'' This modularization of data and action helps provide greater flexibility in the reuse of software components.

One great virtue of property rights in markets is the ability to rearrange them in response to changing circumstances and in order to meet new demands. Similarly, object-oriented methods promise better maintainability and evolvability through encapsulation and information hiding. The modular nature of object-oriented development encourages reuse by facilitating alternative packaging of functionality across different applications, allowing a wider variety of user requirements to be met. In addition, modular construction allows greater scope for reuse in sequential versions of an application by facilitating quicker response to changing user requirements through time.