In the April 2006 issue of CrossTalk, The Journal of Defense Software
Engineering (USA), there is an interesting article called
Army Simulation Program Balances Agile and Traditional Methods With Success.
The authors note that traditional methods are driven by the need for
predictability and control, whereas the agile methods focus on flexibility and
innovation. And their experience tells them that:
"The new art of software development is finding the appropriate balance
point among the available practices."
It is a balancing act for software development teams to be as flexible as
possible while still meeting stakeholder concerns regarding documentation,
project plans, and up-front analysis.
"Interestingly enough, the customer base for [the software program] was more comfortable
with traditional pedantic software-development methods, even though
they contributed to an environment with ill-defined and often-changing
requirements." (authors' emphasis)
The answer to the customer's objections was, of course, education:
"The program spent a great deal of time educating the user
representatives on XP and other agile methods."
The program used the following agile methods:
Continuous Integration - a home-grown continuous integration server
called BuildBoy automatically runs 3000+ tests every time code is checked in
Collocation - everyone on the project was collocated in a single
building from 10-12 companies at any given time
Iterative development - iterations 8-10 weeks in length (compared to
normal government times of 1 year+, this was FAST)
On-site customers - representatives from all customer stakeholder groups
were present all the time
The program has not quite implemented Test-Driven Development, although unit
tests are part of the deliverables. Also the program does extensive
documentation that is compiled into a user's manual and online help at the same
time, plus extensive code notes and diagrams. At least they make it all
available on a web site, and parts of the process are automated.