What is Agile Software Development
The traditional software development approach is one in which each phase in the product life cycle takes place in sequence. Commonly referred to as the Waterfall model, development flows sequentially through phases - like a waterfall - through Requirements, Design, Code, Test, and Implementation stages. The Waterfall model was adapted from the management process used in manufacturing and construction industries: placing emphasis on documentation, providing structure to code migration and change cycles, and formalizing of hand-off processes between stages in the product development life cycle. Waterfall work packages begin with formalized requirements documents initiating development, with any desired changes or updates from the initial requirements addressed in a subsequent release cycle, based upon a new requirements document.
Agile Software Development is a revolutionary change to the Waterfall model. Rather than a sequential, horizontal migration of source code between environments - Agile is a vertical approach, eschewing linear progression for incremental, iterative development. Hand-off processes between environments are exchanged for cross-functional teams. The emphasis in the Agile model is on communication within self-organizing teams formed of representatives from each of responsible area - including business product owner, planning, design, development, test and implementation representation.
Tasks for developing a product release are broken down into modules, prioritized into a development backlog, and then addressed in a short iterative cycles with quick daily meetings to ensure communication and focus. Work on the successive iterations for product release occurs for fixed time periods (usually termed "sprints"). Each sprint begins against the prioritized backlog.
Through empirical feedback within the cross-functional team during each sprint - the Agile model strives to build prioritized product feature fixes/releases, developed and properly tested and released as product increments, repeatedly occurring with each sprint based iteration. Change, updates, feedback (from business representatives or based upon support and customer use) is incorporated into each sprint - and prioritized into the current action or into the product backlog.
Each iterative cycle is to produce a working product which can be demonstrated to stakeholders and/or released. As with the feedback loop occurring within each sprint, any emergent desired new functionality or feature sets are similarly managed by priority, and incorporated into the backlog and thus into future iterations.
As there are "many ways to skin a cat", there are of course variations to each of the models, including hybrid-style approaches blending the two, and debates on which is the "best" model can be heated in some circles.
Given the characteristics of the models, a pure Waterfall method may be best suited where there are fixed requirements and scope, operating against a stable and well-defined product, and with a clearly understood technology. Agile software development has become increasingly popular due to the greater speed of iterative releases for responding to an ever-changing broader environment: one with new technologies regularly being introduced, along with faster-occurring platform and delivery evolutions.
As the means of delivering software based products must adapt quickly to a highly connected customer community and a constantly evolving technology world - the Agile model, being more adaptive than predictive in nature, should continue expanding as the software development model of choice.
Interested in discussing this more? We are passionate about software products and services at Folio1, with customised online solutions in strategy, design and technology. Contact us to discuss thoughts on software development methods further, or to be a partner in your success.