Agile Methodology In Software Development And Drawbacks Of The Waterfall Model

Introduction

In this article, we will learn why we need to use Agile methodology over the Waterfall model in the software development process.

Once you develop any product, the software development process is divided into multiple phases as described in the Waterfall model. On the other hand, the Agile methodology divides a project SDLC (Software Development Life Cycle) into multiple sprints. One of the major differences between Agile and Waterfall development methodologies is their individual approach towards application quality, accuracy, and application testing.

What we will learn
  • What is SDLC (Software development life cycle) ?
  • What is Waterfall model?
  • Drawbacks of Waterfall model.
  • What is Agile methodology?
  • What is Scrum in Agile?
  • Multiple user roles in Scrum.
  • Top 10 reasons to use Agile methodology in software development over Waterfall model.
Software development life cycle (SDLC)

SDLC is the acronym of Software Development Life Cycle. It is, likewise, called the Software development process. The SDLC is a system characterizing undertakings performed at every progression in the product development process. ISO/IEC 12207 is a worldwide standard for programming life-cycle forms.


Image source: http://www.slideshare.net/macjones25/system-development-life-cycle-sdlc-18888829

According to the above picture, we can understand easily that these are the necessary steps to develop any type of project. 

Waterfall Model

The Waterfall model is a step by step process or sequential (non-iterative) design pattern that is used for software development. In Waterfall model, the process is seen as going steadily downwards like a steep fall or waterfall, through the stages of conception, planning, analysis, design, development, testing, production/implementation, and maintenance.

 
Image source: https://www.itsmonkie.co.uk/basics-waterfall-agile-software-development-processes/

From the above image, we can easily understand the flow of software development process in the waterfall model. There are several drawbacks of the Waterfall model, as explained below.

Drawbacks of Waterfall model

Once an application is moved to the testing phase, it is very tough to go back and apply some unforeseen changes that were not planned properly in the planning phase. No working software is produced until late in the life cycle of the SDLC process. A huge amount of risk and uncertainty is attached to the Waterfall model approach. I have faced some new issues with the Waterfall model, as listed below.
  1. Unclear requirements
  2. Requirement changes
  3. Lack of involvement of the customers
  4. Doubtful accuracy of estimation
  5. Uneven loading of the resources
  6. Last minute correction is difficult
  7. Not much time for testing
  8. No time to fix test defects
  9. A lot of documentation
  10. Schedule and cost overruns
  11. Lots of midnight oil burning before final delivery
  12. Often the customers are not happy
To avoid these drawbacks of Waterfall model,  nowadays, most of the developers are using Agile methodology for software development.
Now, I am going to explain in detail why we should opt for Agile over Waterfall model.

What is Agile Methodology?

"Agile software Development" is an umbrella term for a few iterative and incremental programming development approaches. The most famous Agile methodologies incorporate Extreme Programming (XP), Scrum, Crystal, Dynamic Systems Development Method (DSDM), Lean Development, and Feature-Driven Development (FDD).

 
Image source http://agiledevelopment.ir/ebook/scrum/introduction-to-scrum/scrum-elements/

According to the above image, we can understand that Agile divides software development process in multiple sprints where each sprint has its own software development life cycle.

Sprint

In the Scrum technique for Agile programming development, work is limited to a standard, repeatable work cycle, known as a sprint for emphasis. Scrum sprints used to be 30 days in length, initially. However, today we use one-week or two-week sprints. We can say that basically, Sprint is a group or collection of tasks.

What is Scrum in Agile ?

Scrum is an Agile approach to manage a project, more often than not project development. Coordinated project development with Scrum is regularly seen as a strategy. The survey Scrum can function as procedure, or we can consider it a system for dealing with a procedure. 

 
Image source: http://www.aeronube.com/single-post/2016/1/25/Risk-Management-in-Agile-Environment 

Roles in Scrum

There are three specific roles in Scrum.
  • Product Owner

    Product Owner should be a person who can work with vision, authority, and availability. The Product Owner is always responsible for continuously interact the vision, priorities, and other things for the development team.

    It’s sometimes difficult for any Product Owner to strike the right balance of involvement in the project. Because Scrum values self-organization among teams, a Product Owner should fight the urge to micro-manage. At the same time, Product Owners must be always available to answer the questions from any team member.

  • Scrum Master

    The Scrum Master works as a facilitator for the Product Owner and the team. The Scrum Master does not deal with the team but attempts to expel any obstacles that are hindering the team from accomplishing its sprint objectives. This helps the team stay imaginative and beneficial while ensuring that its victories are obvious to the Product Owner. The Scrum Master likewise attempts to prompt the Product Owner how to amplify ROI for the team.

  • Team

    The team is always responsible for finding how it will accomplish the work to be completed on time. The team has autonomy and responsibility to meet the objectives from sprint. 
Top 10 reasons to use Agile methodology in software development.
  1. Ambiguous requirements
  2. Requirement changes are inevitable
  3. Big, Upfront Planning is not practical
  4. Reviewing the working software is better
  5. Iterative and incremental development
  6. Delivery through small baby steps
  7. Frequent reflections by the projects teams
  8. Reducing the chances of risk
  9. Visibility with customers
  10. Flexibility in work
I hope you have learned a lot of things about Agile methodology and the drawbacks of the Waterfall model. For more details, you can go through the following links.
  • http://www.allaboutagile.com/10-good-reasons-to-do-agile-development/
  • http://www.c-sharpcorner.com/uploadfile/84c85b/agile-methodology-for-net-development-teams/
  • http://www.c-sharpcorner.com/uploadfile/babu_2082/agile-methodologies-of-software-development/