Many decisions are required throughout the software development process.
These decisions, and to some extent the decision-making process itself,
can best be documented as the rationale for the system, which will
reveal not only what was done during development but the reasons behind
the choices made and alternatives considered and rejected. This
information becomes increasingly critical as software development
becomes more distributed and encompasses the corporate knowledge both
used and refined during the development process. The capture of
rationale helps to ensure that decisions are well thought out and
justified and the use of rationale can help avoid the mistakes of the
past during both the development of the current system and when software
products (architecture and design, as well as code) are reused in future
systems.
Burge, Carroll, McCall, and Mistrík describe in detail the capture and
use of design rationale in software engineering to improve the quality
of software. Their book is the first comprehensive and unified treatment
of rationale usage in software engineering. It provides a consistent
conceptual framework and a unified terminology for comparing,
contrasting and combining the myriad approaches to rationale in software
engineering. It is both an excellent introductory text for those new to
the field and a uniquely valuable reference for experienced rationale
researchers. The book covers the use of rationale for decision making
throughout the software lifecycle, starting from the first decisions in
a project and continuing through requirements definition, design,
implementation, testing, maintenance, redesign and reuse.