Checklist for Quality Assurance Regarding Reuse

Because of the critical importance of the correctness of reusable software, even greater emphasis should be placed on the scrutiny of reusable components by quality assurance.

  1. Stress portability and adaptability for reusable componenets. Construct code for portability and adaptability (rather than attempting to isolate inadequacies by testing).

  2. Emphasize enforcement of standrads and practices by the quality assurance group.

  3. Establish and operate an effective configuration management program for the reuse library.

  4. State environment compatibility explicitely in the requirements specification.

  5. Specify constraints on the use of reusable components as assertions; include assertions within the component specification and (if practical) within the executable code.

  6. Parameterize specifications that are dependent on the machine environment so that the behaviour of the component is expressed relative to a part of the machine environment.

  7. Classify reusable componenets along each of the dimensions of concurrency, space utilization, space reclamation and iterator availability; make the classification as part of the component specification.

  8. Use classification of reuse errors to recognize or to detect errors automatically; remove errors if possible, or adequately document their existence for location and modification when necessary.

  9. Employ a comprehensive testing method, consisting of a combination of approaches, to detect reuse errors (including simulation of the execution environment, static analysis, mutation analysis and constraint-based analysis).

  10. Include adequacy criteria that reduce the amount of testing needed and provide a measure of a test suite's effectiveness.


Hooper, J.W. and Chester, R.O.: Software Reuse - Guidelines and Methods. Plenum Press, New York, 1991.