Creating Reusable Parts Libraries

The parts in a part library have been found to be more widely used when the parts form a collection, that is, they have common structures and purpose. Libraries of this type may be called ``architected'', which is defined as a set of related parts which (ideally) have the characteristics described below. [#!IBM92!#] Experience has shown that architected parts sets are more frequently reused than unrelated collections of parts. A contributing factor is that these characteristics also reflect the goals of good software engineering. And once the reuser becomes familiar with the structure of the library, it is easier to know how to use any part in the library and to guess whether a needed part is likely to exist within the library's domain.

The characteristics of these planned libraries show that they are successful because

  1. the parts individually meet the technical requirements for reuse in terms of:

  2. the parts are structured to work together in the following ways:

  3. and user considerations are met in the following ways:

These characteristics can be used for software (code) and information, although some of the terms are different than those typically used to measure ``goodness'' in information. When the list is read, terms such as, ``understandability'', ``usability'', and ``quality'' apply directly to information. However, a term such such as ``consistency'' might be used in place of ``predictability''.

The architected libraries which we have had for several years are ADTs, GUIs, graphics objects and proposal text segments. These libraries have sustained high usage and high acceptance. It is my belief that an understanding of the characteristics of architected libraries (and the domains) by the developers led to the positive reuse results of these libraries.