Introduction to Agile Model (Agile vs Waterfall vs Spiral model)
Agile methodology is a software development model that encourages the continuous iteration of development and testing in the entire software development lifecycle of the project. Here we will discuss more on the software Development models and approaches, how Agile overcomes the issues of other approaches and Practical implementation of the Agile model into the project. In this article, we will have a comprehensive debate over Agile vs Waterfall vs Spiral model.
Agile Fundamentals: Including Scrum and Kanban
Master Agile principles, values, approaches, & mindset to help organizations make changes faster and with less expense
Limited time 97% offer on Udemy.
Older Software Development Models
So, how this Software Development model varies from the older software development models? In the previous Software Development Model like the waterfall or the Spiral model, Testing will run after the development process. But in Agile, both development and testing activities are running together in the single span of development time.
Let us discuss more on the older software development model and how Agile outsmart those.
Earlier Software Development Models were developing code at once, testing at once, and deploying at once. We call that as Big Bang software Development. From this approach, we end up a huge volume of bugs, errors, and downfall during the deployment. So, we are in need of a better approach to developing the software. So, we got Water Fall and Spiral Model one after other.
1. Waterfall Model.
So, the Waterfall Model is the software development approach that has specific stages of the development process.
As the diagram illustrates, Software Development process starts with Requirement Gathering when stakeholders collect the requirement for the software before the hand. Then the Design phase comes it. Where, Stakeholders design the system and architecture of the software and the development process.
Then, Stakeholders will start with Developing the code and implementing the software along with unit tests. Post that the developed code will be integrated and tested with full system for the release. Finally, the developed and tested software product will be released by deploying the code into the appropriate target systems.
This entire process may take months to year to finish as so, it has following problems.
Disadvantages of the Waterfall model
- Near Zero flexibility – As every phase of this development process starts one after other, change or modification in between any of the phases is highly impossible.
- Less Customer Engagement – Customer interaction and involvement in the development process is very less in the waterfall model. Because of this, Customer’s Ideas and suggestion are almost meaningless at the time of the Development process. Customer will know of their product only after the release.
- High Risk at Release – when we do waterfall, we get uncertain result as we develop big and release at a time.
1. The Spiral Model
After the waterfall model, we got another incremental and iterative based Software Development Model called the Spiral model. Ideally, Incremental model gives us an approach to split the work into chunks and Iterative model allows us to get feedback of every iteration of development.
So, in the Spiral model, Both Incremental and Iterative approach are used to build and deliver the software product.
We have different phases in the spiral model. They are,
- Objectives determination and identify alternative solutions – In this phase, Requirement gathering and alternate solution for the next iteration will take place.
- Identify and Resolve Risks – Risk identification and resolution on the iteration will take place.
- Develop the next version of the product – Current iteration feature will be developed and verified with the various testing process
- Review and plan the next Phase – In this phase, all the developed feature so far will take in front of the customer for the evolution. In case of correction or change, that will be taken for the next iteration.
This Development model has some good advantage over the waterfall model. Like,
Advantages of the Spiral Model over the Waterfall model
- More Flexible – Compare to the Waterfall model. the Spiral model has more flexible in terms of new requirements and changes in the middle of the process
- More Customer Interaction – In the Spiral model, Customer can interact with the development team and can propose changes at any iteration.
- Low Risk at Release – As we are developing in incremental and every iteration we have Risk identification phase, Spiral model has very less risk at the time of final release. This makes the spiral model better for large-scale projects.
Though the Spiral model has more advantages than the Waterfall model, it has some disadvantages and limitations. They are,
Disadvantages of the Spiral Model
- Time Management – Time management in the Spiral Model is very complex which makes delay in delivery and pressure on developer.
- Complex Model – Spiral model is very complex compared to other software development models.
- Costly process – This model is very expansive and cost-effective as we have multiple phases and iterations in this model.
- Risk analysis dependency – Risk Analysis is another important phase in this model and this phase needs really good expertise to analyze the previous iteration. Which is very complex and predicting the risk is not easy.
So, how can we overcome these drawbacks and how will we overcome these disadvantages? In early 2001, a lightweight software development model was discovered which is called Agile Methods. So, as part of the debate over Agile vs Waterfall vs Spiral model, we will now discuss the Agile model. The Agile model follows the principles called Agile Manifesto. This Agile Manifesto enforces the following values.
Manifesto for Agile Software Development
We are uncovering better ways of developing
software by doing it and helping others do it.
Through this work we have come to value:
Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan
That is, while there is value in the items on
the right, we value the items on the left more.
© 2001, Kent Beck, Mike Beedle, Arie van Bennekum, Alistair Cockburn, Ward Cunningham, Martin Fowler, James Grenning, Jim Highsmith, Andrew Hunt, Ron Jeffries, Jon Kern, Brian Marick, Robert C. Martin, Steve Mellor, Ken Schwaber, Jeff Sutherland, Dave Thomas
this declaration may be freely copied in any form,
but only in its entirety through this notice.
This Agile manifesto is very lightweight and simple to follow and understand. Let us discuss more on the four values of Agile Manifesto.
Values of The Agile Manifesto
Individuals and interactions over processes and tools – People, Process and Tools and the key players of the Software development process. Agile enforces people and their collaboration during the development process as communication gives a faster solution.
Working software over comprehensive documentation – In waterfall and spiral model of software development encourages the comprehensive documentation. But in Agile, Priority if more on working software but not to the documentation. Because the documentation is useless without the quality, working software.
Customer collaboration over contract negotiation – Customer collaboration and communication over the software development process is a priority in Agile as only collaboration and communication over the period of software development will give the result of what customer is expecting and only satisfying the customer will make the better business.
Responding to change over following a plan – The meaning of the collaboration with the customer is that we need to get feedback and suggestion over time. This will obviously open the new changes over the time of development. So, The Agile enforces the adaptation and effort to add the changes at any time or phase of the software development process.
Along with these values, Agile follows the following 12 principles.
12 Principles of Agile.
Principles behind the Agile Manifesto
We follow these principles:
“Our highest priority is to satisfy the customer
through early and continuous delivery
of valuable software.”
“Welcome changing requirements, even late in
development. Agile processes harness change for
the customer’s competitive advantage.”
“Deliver working software frequently, from a
couple of weeks to a couple of months, with a
preference to the shorter timescale.”
“Business people and developers must work
together daily throughout the project.”
“Build projects around motivated individuals.
Give them the environment and support they need,
and trust them to get the job done.”
“The most efficient and effective method of
conveying information to and within a development
team is face-to-face conversation.”
“Working software is the primary measure of progress.”
“Agile processes promote sustainable development.
The sponsors, developers, and users should be able
to maintain a constant pace indefinitely.”
“Continuous attention to technical excellence
and good design enhances agility.”
“Simplicity–the art of maximizing the amount
of work not done–is essential.”
“The best architectures, requirements, and designs
emerge from self-organizing teams.”
– Agile Manifesto (https://agilemanifesto.org/principles.html)
“At regular intervals, the team reflects on how
to become more effective, then tunes and adjusts
its behavior accordingly.”
So, by following this and manifesto and principles, we have following advantages compared to the previous software development models. They are.
Advantages of Agile Model
- Change Dynamically to The Customers – this is one of the main benefits of the Agile over the older software development models. Because when we change the process or the features regardless of the plans and terms, Customer will be happy and the end product will be delivered as expected.
- Distribution of Work – Agile enables collaboration between the teams and which results equal distribution of work as per the skills and availability of the stakeholders. Which will make faster and quality delivery of software product.
- Cost and Delivery prediction – As the agile process enforces people to interact with each other, entire team and customer will get to know how much time and effort they are going to spend in the development process. Which makes easy for analyzing the Cost and effort for delivery
By Comparing the Advantages and Disadvantages of various software development models and after the comprehensive debate over Agile vs Waterfall vs Spiral model, we can easily say that Agile is better among them. So, What is the next step? Implementation of Agile Model is our next step. To implement Agile methods, we have following frameworks that are available ready for Agile project management.
- Agile Scrum Methodology
- Lean and Kanban Software Development
- Extreme Programming (XP)
- Dynamic Systems Development Method (DSDM)
- Feature Driven Development (FDD)
We will discuss in detail about these frameworks in upcoming article. Stay tuned!.
Experienced DevSecOps Practitioner, Tech Blogger, Expertise in Designing Solutions in Public and Private Cloud. Opensource Community Contributor.