ABSTRACT

A key motive for developing ways to structure and preserve records of decision making in software development is the belief that the high cost of system maintenance could be reduced by providing access to these records. Development projects vary widely. Tools and methods can be appropriate for one development environment but not for another. In this chapter, I describe four kinds of software development environments and outline the opportunities and obstacles for using design rationale in each. Some development projects have good reason to avoid investing resources early in development, even when great benefits may accrue later. Many off-the-shelf product development efforts are arguably of this nature. In other projects, such as customized software development, the value of upstream investment seems more compelling. I reflect on the difficulty of learning from failed projects and on the need for researchers to distinguish carefully between the requirements of science and those of engineering.