A Transformation Story: From Waterfall to Agile Software Development

Introduction

There exist several software development life-cycle (SDLC) models giving different trade-offs between implementation complexity and speed, scalability, software quality, cost, and adaptability. Addressing controllability and predictability in large software products, the waterfall model was introduced [1]. Similar to the evolution of societies using bureaucratic models, software development’s evolution has been affected by the bureaucratic nature of the waterfall model since the 60’s.

In a waterfall SDLC, requirements gathering, analysis and planning are performed as an initial phase. Architectural design is then followed by software development and testing whilst deployment is the last phase. Large planning and documentation efforts are usually necessary upfront, in order that all deliverables achieve the expected quality at predefined milestones. Requirements are key to the success of waterfall software development. Clear requirements at an early stage should be available with little or no changes at a late stage. The problem is that there are customers that realize what software products suit their needs only after using several draft versions, making clear requirements at an early stage impossible. Even if the requirements are clearly defined, a customer’s major change request at the release phase may result in redesigning the software product from the beginning.