The authors describe in detail the capture and use of design rationale in software engineering to improve the quality of software. It provides a consistent conceptual framework and a unified terminology for comparing, contrasting and combining the myriad approaches to rationale in software engineering.