Page - 1 -
Agile Methods and Software Maintenance
by Dr. David F. Rico, PMP, CSM
Agile Methods only apply to the software "development" portion of the lifecycle and certainly
don't apply to the software maintenance portion of the lifecycle, right? Gosh, how many times
have we heard this cry? Every time a new software development paradigm emerges, software
maintainers immediately emerge from the woodwork to complain that they're being ignored
again. And, software maintainers have even gotten a little snobby too. A quick glance at the
proceedings from some of the latest international software maintenance conferences reveals not a
single paper on Agile Methods. Sort of a tit-for-tat, so to speak; you ignore me, I'll ignore you.
What's so special about software maintenance? Software maintainers even have their own
standards for software maintenance (Institute for Electrical and Electronics Engineers, 1998).
IEEE-STD-1219 is even replete with its own software lifecycle: (1) problem identification, (2)
analysis, (3) design, (4) implementation, (5) system test, (6) acceptance test, and (7) delivery.
Wait a minute, isn't that the waterfall lifecycle? Isn't, in fact, IEEE-STD-1219 just another
Traditional Method? IEEE-STD-1219 even recommends the use of 41 different IEEE standards
to document the software maintenance lifecycle! Huh?
Didn't other Traditional Methods like MIL-STD-1521B, DoD-STD-2167A, MIL-STD-498,
ISO/IEC 12207, SW-CMM, CMMI, ISO 9001, and PMBoK do the same thing? That is,
advocate a waterfall lifecycle and hundreds of software documents to promote software quality
and maintenance at a cost of millions of dollars in documentation costs alone? Isn't this why the
advocates of Agile Methods created a software development revolution in 2001 with the Agile
Manifesto? That is, Agile Methods asked for: (1) individuals and interactions over processes and
tools, (2) working software over comprehensive documentation, (3) customer collaboration over
contract negotiation, and (4) responding to change over following a plan. But, now we've come
full circle haven't we? That is, software maintainers say software developers don't address their
needs and Agile Methods say software maintainers don't address their needs. It sounds a little
like a chicken-and-egg thing going there, or a dog chasing its tail.
Furthermore, some people are attempting to superimpose a classical waterfall software lifecycle
upon software source code created by Agile Methods such as Open Source Software
Development (Koponen & Hotti, 2005). Their solution is to superimpose the waterfall lifecycle
on Open Source Software: (1) process implementation, (2) problem and modification analysis,
(3) modification implementation, (4) maintenance review/acceptance, (5) migration, and (6)
retirement (Institute for Electrical and Electronics Engineers, 2004). How soon we've forgotten
that Open Source Software is produced using: (1) individuals and interactions, (2) working
software, (3) customer collaboration, and (4) responding to change. And, Open Source Software
is replete "with user driven, just-in-time documentation" (Berglund & Priestley, 2001),
"documentation in the form of code comments preferable by software maintainers" (de Souza,
Anquetil, & de Oliveira, 2005, 2007), and "documentation that improves software quality"
(Prechelt, Unger-Lamprecht, Philippsen, & Tichy, 2002). So, why would we want to "ruin" Open
Source Software Development with waterfall-driven Traditional Methods?