3.1. Start with the Big Picture

The big picture refers to the broad perspective of a system in development. The big picture includes the system's overall architecture and business purpose.

Most successful systems have a single vision of the architecture. The vision can come from group consensus or from a single respected individual. Design decisions within a system should be consistent with that architecture.[*]

[*] For more information, see "The Third Principle: Maintain the Vision" by David Hooker at http://c2.com/cgi/wiki?SevenPrinciplesOfSoftwareDevelopment.

As Tim and I develop Sam's system, we will keep in mind that its ultimate goal is to function as a multistore system. As the individual pieces of the initial system are developed, the choice between the various design approaches will be affected by that business purpose.

Sam's system is being created in an entirely new environment. Any components that we create (classes, display widgets, etc.) are going to be used in that context. If we attempt to develop components in a vacuum (e.g., without reference to their use), we might have a lot of vacuuming to do when we are finished.

For example, we are developing a new Customer class. Its purpose and interface are driven by its representation as someone to whom Sam rents a CD. An attempt to make the class more general (e.g., so that it can represent a purchaser of CDDiscs) not only would be unnecessary, but also would complicate its required purpose.

On the other hand, much software ...

Get Prefactoring 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.