ABSTRACT

The task of design involves a complex set of processes. Starting from a global statement of a problem, a designer must develop a precise plan for a solution that will be realized in some concrete way (e.g., as a building or as a computer program). Potential solutions are constrained by the need to eventually map this plan into a real-world instantiation. For anything more than the most artificial examples, design tasks are too complex to be solved directly. Thus, an important facet of designing is decomposing a problem into more manageable subunits. Design of computer systems, software design, is the particular design task to be focused on in this chapter.