Key Design Concepts
Good design depends on understanding a handful of key concepts. This section discusses the role of complexity, desirable characteristics of designs, and levels of design.
Software's Primary Technical Imperative: Managing Complexity
To understand the importance of managing complexity, it's useful to refer to Fred Brooks's landmark paper, "No Silver Bullets: Essence and Accidents of Software Engineering" (1987).
Cross-Reference
For discussion of the way complexity affects programming issues other than design, see Conquer Complexity.
Accidental and Essential Difficulties
Brooks argues that software development is made difficult because of two different classes of problems—the essential and the accidental. In referring to these two terms, ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access