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.

266Chapter 11Balancing Acts: An Imaginary ScenarioThis list, when d<strong>on</strong>e in that order, has been referred to as the classic“waterfall” model—each step is d<strong>on</strong>e in its entirety (or largely so) beforeproceeding <strong>on</strong> to the next step.Or at least that’s the ideal which programmers have often pursued.The problem is that the process involves people, and people, especiallythose resp<strong>on</strong>sible for the requirements, a) are sometimes unimaginative and 2)keep changing their minds. They start out with some requirements, based <strong>on</strong>what they think they’re going to need. But they just aren’t imaginative enoughto think of how terrible their system will be for the average user. They also keepchanging their minds as to what they want. 1The “iterative” approach has been tried as a way to address this problem.Rather than wait for all requirements to be spelled out perfectly, with the iterativeapproach you jump right in with what you do know, build that, but expectchanges to come. The so<strong>on</strong>er you get a working product or prototype into thehands of the users, the so<strong>on</strong>er you’ll get feedback <strong>on</strong> what works, what doesn’t,and what is really wanted (“what works” is used here not in the testing sense,but in the usability sense).Note, however, that in the iterative approach, <strong>on</strong>e still gathers requirements,develops designs for the code and the tests, develops them, tests (andfixes) the code, and releases it. It’s just that <strong>on</strong>e does that <strong>on</strong> a much smallerand more rapid basis. You get something runnable so<strong>on</strong>er, and c<strong>on</strong>tinue tomodify it.Some people will complain that this makes for more expensive rework,but we (and others) would disagree. You are refining the process. Your reworksare less expensive than if you went to the work of building the entire system<strong>on</strong>ly to have some key requirement(s) change—there can be a lot more“wasteage” there.Be aware, however, that the iterative approach is not just “whipping thehorses to run faster.” It is not just the waterfall model run at high speed. Rather,it is using the early iterati<strong>on</strong>s of the product as a sort of a “living” requirementsspecificati<strong>on</strong>, <strong>on</strong>e that you can show to people and that they can try out, in realworldscenarios, and <strong>on</strong> which they can give feedback. D<strong>on</strong>’t expect to be ableto compile complete requirements, but d<strong>on</strong>’t give up <strong>on</strong> talking to your end1. Did you notice that we tried to hint at that ever-enjoyable mid-project shifting of requirementsas we went from a) to 2), changing our numbering scheme midway? Minimal humor,admittedly, but if you’ve lived it, you understand.

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

Saved successfully!

Ooh no, something went wrong!