Highly inefficient “throw it over the wall,” “waterfall”-style software development is still common practice at many IT departments – especially those that are under tremendous pressure to quickly deliver high-quality software in an era of tight budgets.
But during the ebizQ Open-Source Application Development and Optimization Through Eclipse webinar, part of the Candle Corp.-sponsored Best Practices for IBM WebSphere Software series, two industry experts shared strategies and tools for more efficient and extensible, iterative software development.
META Group Analyst Thomas Murphy pointed out that the traditional, “waterfall” way of dividing application development among business analysts, architects, coders and testers can lead to costly defects.
“What happens in this kind of a life cycle is that you really have this ‘throw it over the wall’ mentality. Architects build models, they post them up on the wall or they pitch out initial code generation, and then that's passed on to the development organization, which throws it over the wall to testing when they're done. There isn't as much collaboration as is really effective to produce quality software,” he observed.
Then, “Rapidly changing business needs usually make the projects obsolete by the time the common 18-24 month development cycles are finished.”
As a remedy, Murphy described project-focused, iterative development based on common repository access and tooling facilities, with testing throughout the project’s life cycle and smooth communications among team members to keep “the key metric of user satisfaction” squarely in sight.
“Traditional tooling environments work well with waterfall life cycles but they break down as you move into this iterative life cycle. Without the right tools, you can end up with a chaotic process, and have no way to track ‘where the process is’,” he noted.
Developers themselves will have to evolve as traditional methods and tooling break down. Murphy advocates turning “opportunistic developers” devoted to rapid application development (and less devoted to documentation) into “pragmatic developers” who build well-architected, reusable applications “that will flex and adjust as your needs or capacities or requirements change.”
-1-