Agile Software Development vs. Waterfall Software Development
There isn’t a single methodology that you can apply across all projects. However, many teams are moving toward an adaptive methodology, such as Agile, 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. 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
There are a variety of Agile software development (or system development) methodologies, including, but not limited to:
- Disciplined Agile Delivery (DAD)
- Adaptive Software Development
- Agile Modeling
- Extreme Programming (XP)
- Dynamic Systems Development (DSDM)
- Feature Driven Development
- Lean Software Development
The overall goal of each Agile method is to adapt to change and deliver working software as quickly as possible. However, each methodology has slight variations in the way it defines the phases of software development. Furthermore, even though the goal is the same, each team’s process flow may vary depending on the 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
- Concept - Projects are envisioned and prioritized
- Inception - Team members are identified, funding is put in place, and initial environments and requirements are discussed
- Iteration/Construction - The development team works to deliver working software based on iteration requirements and feedback
- Release - QA (Quality Assurance) testing, internal and external training, documentation development, and final release of the iteration into production
- Production - Ongoing support of the software
- Retirement - End-of-life activities, including customer notification and migration
This view presents the full Agile lifecycle model within the enterprise. In any enterprise there may be projects operating simultaneously, multiple sprints/iterations being logged on different product lines, and a variety of customers, both external and internal, with a range of business needs.
Agile Software Development Lifecycle
The Agile Iteration Workflow
The Agile software development lifecycle is dominated by the iterative process. Each iteration results in the next piece of the software development puzzle - working software and supporting elements, such as 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. Due to its time-bound nature, 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, it is important that the 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, customer and stakeholder feedback
- Development - Design and develop software based on defined requirements
- Testing - QA (Quality Assurance) testing, internal and external training, documentation development
- Delivery - Integrate and deliver the working iteration into production
- Feedback - Accept customer and stakeholder feedback and work it into the requirements of the next iteration
For the duration of the project, while additional features may be fed into the product backlog, the rest of the process is a matter of repeating the steps over and over until all of the items in the product backlog have been fulfilled. As a result, the process flow is more of a loop and not a linear process.
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 effectively collaborate. As with any change, integrating Agile processes into your business can be overwhelming. Below 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
Using Smartsheet to Manage the Agile Lifecycle
Smartsheet is a powerful collaboration and project management tool. It’s ideal for prioritizing user stories and managing product and iteration backlogs. Easily switch between Grid, Gantt, and Calendar views to manage project details and track deadlines. Use the Card View to focus attention with rich cards, provide perspective with flexible views, and prioritize and adjust work more visually. Display information on cards including custom fields, images, and color-coding to better focus your team’s attention. Agile project managers can categorize cards into lanes to help organize what needs to happen in sprints and iterations.
Use one of Smartsheet’s pre-made Agile templates and make it easy to track requirements, store documents, establish timelines, and organize backlog items. With in-app discussions, reminders, and attachments, you can store all Agile documentation in one place and create a repository of important project information. Try Smartsheet for free for 30 days.