Friday, October 23, 2009

3.3. Problem-Definition Prerequisite










 < Free Open Study > 







3.3. Problem-Definition Prerequisite



The first prerequisite you need to fulfill before beginning construction is a clear statement of the problem that the system is supposed to solve. This is sometimes called "product vision," "vision statement," "mission statement," or "product definition." Here it's called "problem definition." Since this book is about construction, this section doesn't tell you how to write a problem definition; it tells you how to recognize whether one has been written at all and whether the one that's written will form a good foundation for construction.







If the "box" is the boundary of constraints and conditions, then the trick is to find the box…. Don't think outside the box�find the box.

�Andy Hunt and Dave Thomas



A problem definition defines what the problem is without any reference to possible solutions. It's a simple statement, maybe one or two pages, and it should sound like a problem. The statement "We can't keep up with orders for the Gigatron" sounds like a problem and is a good problem definition. The statement "We need to optimize our automated data-entry system to keep up with orders for the Gigatron" is a poor problem definition. It doesn't sound like a problem; it sounds like a solution.



As shown in Figure 3-4, problem definition comes before detailed requirements work, which is a more in-depth investigation of the problem.





Figure 3-4. The problem definition lays the foundation for the rest of the programming process


[View full size image]




The problem definition should be in user language, and the problem should be described from a user's point of view. It usually should not be stated in technical computer terms. The best solution might not be a computer program. Suppose you need a report that shows your annual profit. You already have computerized reports that show quarterly profits. If you're locked into the programmer mindset, you'll reason that adding an annual report to a system that already does quarterly reports should be easy. Then you'll pay a programmer to write and debug a time-consuming program that calculates annual profits. If you're not locked into the programmer mindset, you'll pay your secretary to create the annual figures by taking one minute to add up the quarterly figures on a pocket calculator.



The exception to this rule applies when the problem is with the computer: compile times are too slow or the programming tools are buggy. Then it's appropriate to state the problem in computer or programmer terms.



As Figure 3-5 suggests, without a good problem definition, you might put effort into solving the wrong problem.





Figure 3-5. Be sure you know what you're aiming at before you shoot


[View full size image]




The penalty for failing to define the problem is that you can waste a lot of time solving the wrong problem. This is a double-barreled penalty because you also don't solve the right problem.













     < Free Open Study > 



    No comments: