Session 4.4 - Designing for Reuse

Chapter 7: Designing with Teams | Duration: 1 hr

Learning Objectives

By the end of this session, you will be able to:

  • Define interface and calling standards that enable reuse
  • Apply cohesion/coupling to evaluate reusable designs
  • Specify documentation and quality expectations for reusable parts
  • Decide when reuse is worth it and how to support it

Introduction

Reuse boosts productivity, especially across cycles. Chapter 7 recommends defining reuse standards during high-level design: interfaces, documentation, quality, and support.

Interfaces & Cohesion/Coupling

Interface Standards
  • Self-contained, cleanly isolated functions
  • Standard call/return conventions; error handling and messages
  • Variable/parameter naming conventions
Evaluate Designs
  • Prefer lower coupling and higher cohesion (Appendix A definitions)
  • Align reuse interfaces with product standards to reduce confusion

Documentation Standards

Parts should be usable without reading source code. Provide:

  • Complete external behavior specs (inputs, outputs, errors, performance)
  • “How to use” comments at top of source
  • Reusable parts index with functions listed (support manager curates)

Quality & Selection for Reuse

Engineers abandon reusable parts after the first defect. Enforce quality:

  • Follow defined process with personal reviews and inspections (PSP2.1/PSP3.0)
  • Thorough unit tests: nominal, limits, outside limits
  • Clear error messages for bad inputs/conditions
Reuse Decision Questions Action If “No”
Correct functions? Suitable interface? Adequate performance? Expect adaptation time; reconsider reuse.
Are source, tests, data, and instructions available? Add missing assets or avoid reuse.
Produced to standards and high quality? Rework or reject; poor quality negates benefits.

Application Support

Make parts easy to find and use:

  • Index with specs for each part (support manager maintains)
  • Regular design/implementation check-ins to surface reusable functions
  • Standard error messages and help for reusable components

Summary

  • Define reuse standards early: interfaces, naming, errors, documentation.
  • Design for high cohesion/low coupling; align with product standards.
  • Demand high quality via inspections and thorough tests.
  • Support manager curates reusable parts and keeps reuse visible to the team.