Object-Oriented Analysis and Design 335
11
Step 1: The Conceptualization Phase: Starting with The Vision ........................
All great software starts with a vision. One individual has an insight into a product he
thinks would be good to build. In a business, someone envisions a product or service he
wants the business to create or offer. Rarely do committees create compelling visions.
The very first phase of object-oriented analysis and design is to capture this vision in a
single sentence (or at most, a short paragraph). The vision becomes the guiding principle
of development, and the team that comes together to implement the vision ought to refer
back to it—and update it if necessary—as it goes forward.
Even if the vision statement comes out of a committee in the marketing department, one
person should be designated as the “visionary.” It is her job to be the keeper of the sacred
light. As you progress, the requirements will evolve. Scheduling and time-to-market
demands might (and should) modify what you try to accomplish in the first iteration of
the program, but the visionary must keep an eye on the essential idea, to ensure that
whatever is produced reflects the core vision with high fidelity. It is this ruthless dedica-
tion—this passionate commitment—that sees the project through to completion. If you
lose sight of the vision, your product is doomed.
The conceptualization phase, in which the vision is articulated, is very brief. It might be
no longer than a flash of insight followed by the time it takes to write down what the
visionary has in mind. In other projects, the vision requires a complex and sometimes
Controversies
Endless controversies exist about what happens in each stage of the iterative design
process, and even about what you name those stages.
Here’s a secret: It doesn’t matter.
The essential steps are the same in just about every object-oriented process: Find out
what you need to build, design a solution, and implement that design.
Although the newsgroups and object-technology mailing lists thrive on splitting hairs,
the essentials of object-oriented analysis and design are fairly straightforward. This lesson
lays out a practical approach to the process as the bedrock on which you can build the
architecture of your application.
The goal of all this work is to produce code that meets the stated requirements and that
is reliable, extensible, and maintainable. Most important, the goal is to produce high-
quality code on time and on budget.