Agile Software Development


Software crisis and evolution of Agile methodology

The popularity of Agile methodology is gained when software crisis emerged where software teams are managed with the same methods used by manufacturing or construction projects.

Generally manufactured products are identical. In our example, if you think about manufacturing cars of the same make and model coming down on assembly line one after another, Design engineers and managers typically produce well defined checklists with well defined processes and tools that workers are expected to follow. Comprehensive system documentation is produced so defects can be tracked and fixed easily. And in construction projects, once you sign a contract to build a house or any building, the requirements are frozen and if you want something to be changed or added then there would be an additional cost.

All early software development projects tried to mimic the approach followed by construction and manufacturing projects which is known as the waterfall model. 

What is Waterfall model

Waterfall has five phases such as requirements, analysis and design, development, test, and deployment and maintenance. Each phase ends with a well defined frozen deliverables that act as inputs for the next phase. Requirements are captured early and are used as inputs for analysis and design. When the analysis and design phase is completed, we have a fully designed system that is ready for development. When development is done, the system is expected to be ready for testing and so on and so forth.

Pitfalls of waterfall approach


Customer could not see the product before the early testing phase, which is usually two thirds of the way through the product timeline. You could be in the deployment and maintenance phase before you would realize that the product you are building was no longer viable due to changed market conditions or organizational direction or you could realize that the product had a major architectural flaw that prevented it from being deployed. In other words your product development initiative could completely fail after a lot of money and time had been spent on it. 

The second problem with the waterfall approach is that it uses top down management. Development team members are expected to follow checklists and detailed controls, in other words this approach strategizes processes over people. Each phase is gated and has entry conditions before the development team can start working on the next phase.

The software industry started debating the manufacturing industry like approach which is a Waterfall approach used for developing software as early as the 90's. According to a 1994 Standish Group report, only around 16 percent of the projects surveyed were successfully finished within budget and on time with the features originally scoped. 53 percent of software projects went either over budget, lacked features, did not finish on time, or a combination of these. So clearly a new approach was required for software development which is Agile methodologies.

Agile Manifesto

"Individuals and interactions over processes and tools." The agile mindset values people and their interactions over detailed processes and the comprehensive use of tools.

Preference of working software over comprehensive documentation. Working software is the ultimate proof of the success of software development initiative.

Preference of customer collaboration over contract negotiation. Collaborating with customers to build something that delights them is more important than executing contracts with fixed requirements.

Preference of responsiveness to change over following a preordained plan. Agile teams embrace change.

It's important to note that the Agile Manifesto is not against processes, tools, documentation, contracts, or plans. It just places a higher priority on the four tenets it outlines.

Comments

Popular posts from this blog

Bash - Execute Pl/Sql script from Shell script

Gradle Fundamentals

Load Balancing using Spring Cloud Netflix Ribbon