Chapter 1

Motivation

Existing means for representing design decisions are deeply flawed. These flaws are at the root of many of the common problems in software development and maintenance. Understanding these essential difficulties will motivate our presentation.

The history of software engineering is often told as the history of monumental failures. The very name of the discipline has been intimately tied with the “software crisis” [Naur & Randell 1969]: a syndrome associated with the abundance of ambitious software development projects which end up as “a monster of missed schedules, blown budgets, and flawed products” [Brooks 1987]. With time, pundits came to describe this on-going state of affairs as “software's chronic crisis” [Gibbs 1994] and even “software hell” [Carr 2004]. Indeed, even laymen have come to accept the fact that software used in daily life suffers from a higher rate of errors that any other commodity.1 What explanations can be offered for this situation?

In “No Silver Bullet”, Frederick Brooks [1987] attributes the difficulties that software development projects face to four inherent properties of their products: complexity, conformity, invisibility, and changeability:2

  1. Complexity. By any measure, software systems are the most complex manufactured artefacts ever built by humankind—nuclear power stations, transatlantic jets and space stations notwithstanding. Many software systems are constituted of hundreds and thousands of components, each potentially manufactured ...

Get Codecharts: Roadmaps and blueprints for object-oriented programs now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.