On Specification of Reusable Software Components

For widespread reuse in a component-based software industry, a component must be designed and developed to be reused. Benefits of reuse are maximized when a component is reused “as is” (possibly with provisions for expected customization, such as through parameters), based only on its specification. The expression of the specification of a component is crucial in this setting. The specification must be formal, yet understandable, as well as abstract and implementation-independent. The specification also must make it possible to demonstrate correctness of an implementation of the specification and permit formal reasoning about its behavior in a client program. This paper explains how it is possible to write specifications with these properties in RESOLVE, a conceptual framework that we have developed for constructing reusable software components.