13.07.2015 Views

Java™ Application Development on Linux - Dator

Java™ Application Development on Linux - Dator

Java™ Application Development on Linux - Dator

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

11.4 What Makes a Good Requirement267users and other stakeholders either. Requirements are still key to delivering asoluti<strong>on</strong>.So with either approach, you’ll start with requirements. Let’s look at theart of requirements.11.4WHAT MAKES A GOOD REQUIREMENTA good requirement is <strong>on</strong>e that states a need but not a soluti<strong>on</strong>. Sounds simple,but it’s easier said than d<strong>on</strong>e—especially with soluti<strong>on</strong>-oriented technical types.A typical first cut at a requirement might be something like “Our budgetapplicati<strong>on</strong> should store its data in the database.” While it sounds reas<strong>on</strong>able,it is really a soluti<strong>on</strong> posing as a requirement.The first step in refining such a requirement is to ask the simple questi<strong>on</strong>:“Why?” The answer we’re looking for is not “Because we’ve paid so much forour database software,” nor is it “Because we all know SQL.” Rather, it shouldbe something dealing with reliability, fault tolerance, the need for transacti<strong>on</strong>alintegrity, and so <strong>on</strong>.Sometimes you may have to ask the “why” questi<strong>on</strong> more than <strong>on</strong>ce, torefine the requirement(s). “Transacti<strong>on</strong>al integrity” is, in a way, a soluti<strong>on</strong>. Youcould ask, “Why do we need that?” For some projects it may be appropriate toask this, because there may not be a real need for it after all.But d<strong>on</strong>’t overdo it. Push any requirement in a business setting far enough,and you could get something like “To make m<strong>on</strong>ey.” That’s not a helpful requirement.You’ve g<strong>on</strong>e too far. Part of the art of requirements is recognizingwhen to stop asking why.A more detailed descripti<strong>on</strong> of a requirement is that it should beSMART—Specific, Measurable, Attainable,Repeatable, and Testable. C<strong>on</strong>siderthe following.A comm<strong>on</strong> c<strong>on</strong>cern am<strong>on</strong>g users of almost any applicati<strong>on</strong> is that it be“fast” or “resp<strong>on</strong>sive.” While we can sympathize with the c<strong>on</strong>cern, it will needsome refinement before it can be c<strong>on</strong>sidered a (good) requirement. Applyingthe “Specific” and the “Measurable” aspects of SMART, we need to specifywhat c<strong>on</strong>stitutes “fast enough.”We can try “No butt<strong>on</strong> press in the GUI will delay more than .1 sec<strong>on</strong>dbefore providing some evidence of activity to the user, or more than .5 sec<strong>on</strong>dbefore completing its operati<strong>on</strong>.”

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!