Agile Software Development vs. Waterfall Software Development
Agile software development is a more flexible approach than the Waterfall model’s strictly set phases. As a result, many teams are moving toward Agile’s adaptive methodology and moving away from the predictive Waterfall methodology when developing software.
The conventional Waterfall development method follows strict phases, sticking to the original requirements and design plan created at the beginning of the project. A project manager spends time negotiating milestones, features, resources, working at length in the planning stages of a project, usually developing a full-blown project plan that details how the work will be moved through many gates to completion.
Customers finalize requirements before development begins and then a lengthy development process occurs, with the project manager tracking every movement of the project through each handoff and finally on to delivery. If everything goes well, this process produces an on-time, on-budget release.
But the chief drawbacks to this approach are well-documented: it is not responsive to change and it takes a long time to deliver working software. When technology forms the field of play and drives every change, a six month (or longer) release cycle, with requirements chiseled in stone, does not meet the business need.
The history behind Agile software development is one of frustration with the traditional waterfall methodology. Agile is designed to accommodate change and the need for faster software development (as discussed in the Agile Manifesto's Values and Principles). The project leader typically facilitates the work of the development team, eliminates bottlenecks, and helps the team stay focused in order to deliver software iterations on a regular basis. It is less about milestones than it is about hours, feature selection, prioritization, and meetings.
Unlike the Waterfall model, the development team ultimately decides at the beginning of a sprint (or iteration) what can be accomplished in the timeframe and sets out to build a series of features, delivering working software that can be installed in a production environment at the end of the sprint. Since Agile software development methods (such as Dynamic Systems Development Method- DSDM) are flexible, most are suitable for method tailoring – where development teams can adapt the flow to meet the needs of the product.
The Agile Lifecycle and Its Methodologies
Agile software development (or system development) methodologies include Scrum, Kanban, Scrumban, Disciplined Agile 2.0, adaptive software development, Agile modeling, extreme programming (XP), feature driven development (FDD), and Lean software development.
The goal of each Agile method is to adapt to change and deliver working software as quickly as possible. Each methodology has slight variations in the phases of software development. Furthermore, even though the goal is the same, each team’s process flow may vary depending on each specific project or situation. As an example, the full Agile software development lifecycle includes the concept, inception, construction, release, production, and retirement phases.
The Agile Process Flow
The Agile process flow includes concept, initiation, iteration or construction, release, production, and retirement, as described below:
- Concept: Envision and prioritize projects.
- Inception: Identify team members, appointment of funds, and discussion of initial environments and requirements.
- Iteration or Construction: The development team works to deliver working software based on iteration requirements and feedback.
- Release: Quality assurance (QA) testing, internal and external training, documentation development, and the iteration is put into production.
- Production: Ongoing software support.
- Retirement: End-of-life activities, including customer notification and migration.
There may be many projects operating simultaneously, multiple sprints/iterations running on different product lines, and a variety of customers, both external and internal, with a range of business needs.
Agile Software Development Workflow
The Agile software development lifecycle is dominated by the iterative process. Each iteration delivers the next piece of the development puzzle: software and supporting elements (e.g. documentation) available for use by customers, until the final product is complete. Each iteration is usually two to four weeks in length and has a fixed completion time. The iteration process is methodical and the scope of each iteration is only as broad as the allotted time allows.
Multiple iterations will take place during the Agile software development lifecycle and each follows its own workflow. During an iteration, customers and business stakeholders provide feedback to ensure that the features meet their needs.
A typical iteration process flow can be visualized as follows:
- Requirements: Define the requirements for the iteration based on the product backlog, sprint backlog, and customer and stakeholder feedback.
- Development: Design and develop software based on defined requirements.
- Testing: Quality assurance (QA) testing, internal and external training, documentation development.
- Delivery: Integrate and deliver the working iteration into production.
- Feedback: Review customer and stakeholder feedback and work it into the requirements of the next iteration.
Agile Software Development Workflow Diagram
While you may feed additional features into the product backlog throughout the project, the rest of the process repeats until the product backlog has been cleared. As a result, the Agile software development process flow is a loop rather than a linear process.
Agile Scrum Workflow
The flow of work in Scrum is directed via a series of meetings, as described below:
Sprint planning is used to choose the work that will be incorporated into an upcoming Sprint based on the product backlog.
A daily Scrum is a short meeting where each participant answers the following questions:
- What work did you do yesterday?
- What work will you do today?
- What obstacles are in your way?
The Scrum master, who manages the meetings, uses the data gathered to update the burndown chart and look for ways to remove the obstacles that were identified.
A sprint review is a meeting at the end of each Sprint to evaluate what was completed and to review the product backlog and determine what still needs to be done. Reviews focus on the product.
Finally, the sprint retrospective meeting at the end of each Sprint which covers what worked well and what can be improved. Retrospectives focus on the process.
You can read more about Scrum in our comprehensive guide.
Making the Agile Process Work for You
As with any methodology, there are advantages and disadvantages (Read about the advantages and disadvantages of Agile). The Agile method is more suitable in situations where customers and project stakeholders are available to provide input, functional portions of software are needed quickly, flexibility is desired to accommodate changing requirements, and the team is co-located and able to collaborate effectively.
As with any change, integrating Agile processes into your business can be overwhelming. Here are four activities that will help support the adoption of Agile workflow:
- Daily Meetings: Host consistent or daily stand-up meetings to maintain open communication, hold workers accountable, and keep each iteration moving forward.
- Live Demonstrations: Deliver live demonstrations of each iteration’s final product to show progress.
- Share Feedback: Receive feedback from stakeholders and customers and share it with the entire team before the next iteration begins.
- Remain Agile: Make changes to your process based on feedback to ensure each iteration improves the last.
Streamline the Agile Software Lifecycle with Smartsheet for Project Management
From simple task management and project planning to complex resource and portfolio management, Smartsheet helps you improve collaboration and increase work velocity -- empowering you to get more done.
The Smartsheet platform makes it easy to plan, capture, manage, and report on work from anywhere, helping your team be more effective and get more done. Report on key metrics and get real-time visibility into work as it happens with roll-up reports, dashboards, and automated workflows built to keep your team connected and informed.
When teams have clarity into the work getting done, there’s no telling how much more they can accomplish in the same amount of time. Try Smartsheet for free, today.