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.