View: Structure and Behavior

Software is structure that has behavior.

By "structure" I mean the web of relationships that you see if you look inside the software—at the code and the running SoftwareProcess instantiated from it.

By "behavior", I mean what the software does, as far as anyone outside it can tell. Features are behavior we like; Bugs are behavior we don't. ExternalSoftwareQuality is a property of behavior.

Structure is what programmers create, but behavior is what software companies can sell. There seems, therefore, to be a Conflict between structure and behavior. Employers want the most valuable behavior they can get, and the most economical structure that will provide it.

And yet, structure and behavior are two sides of the same coin. We don't get one without the other. So we need to find a way to resolve the conflict: to make these two aspects of software harmonize with each other. That is what this book is about.