Chapter 1. Design Concepts

Alan Kay’s favorite metaphor for software objects is a biological system. Like cells, software objects don’t know what goes on inside one another, but they communicate and work together to perform complex tasks. In contrast, monolithic software is like a mechanical clock containing innumerable gears. Each gear functions unintelligently and only in relation to other adjacent gears. That design is hopelessly flawed. “When you’re building gear clocks, eventually you reach a certain level of complexity and it falls in on itself,” says Kay.

A software object may be machinelike, but, crafted by a thoughtful designer, it can be very smart. It makes decisions; it does things and knows things. It collaborates with potentially ...

Get Object Design: Roles, Responsibilities, and Collaborations now with the O’Reilly learning platform.

O’Reilly members experience live online training, plus books, videos, and digital content from nearly 200 publishers.