For many decades, organizations have been trained to believe that the most effective way to develop software is to fully define requirements up front, thoroughly describing them in analysis documents and then carefully completing the design before building the system. Once the application is completely built, it is integrated and tested. Engineers have been taught that if they do not follow this phase-based approach and carefully design the system upfront to prevent mistakes it will increase enormously the costs of maintenance and bug fixing of the projects. Customers have also been led to believe that this phase-based approach is the only acceptable choice for building software. They embrace the concept of specifying everything they want in advance, then waiting for the architects and engineers to return many months later with the finished product. When a project does fail, the common explanation is (still…) that the team neglected to spend enough time up front in requirements definition or technical design.
This mindset has become even more reinforced by auditors who expect to see certain documents signed off at key points along the project lifecycle.
After years of failed projects being blamed on the same side, disruptive methodologies have appeared, to establish new approaches for creating applications. The Agile Methodologies are among these new approaches and their growing adoption has caught the attention of analysts and IT gurus worldwide.
But, what makes Agile Methodologies different from traditional engineering methods?
Why should organizations adopt agile development?
But, how frequently should iteration occur?
For further information on this topic, please also consult the Showcasing Agile Development whitepaper, from Digital Focus, and follow this link to learn more agile methodologies.
As you may know, the project development starts off with choosing an appropriate software development methodology.
Software development methodology, or system development methodology -- splitting software and building work into different stages with certain activities for the purpose of more effective planning and management.
There are numerous software development methodologies such as Waterfall, Cleanroom, Rapid Application Development (RAD), Team Software Process (TSP), Personal Software Process, Scrum, Kanban, Extreme Programming (XP), and dozens of other iterative and agile software development approaches.
Waterfall methodology for software development
To get more about software development methodology, I recommend this short article - A Fresh Take on 5 Software Development Methodologies