Once the project is awarded or product concept is approved, the first thing we need to decide is the project development methodology. Based on project scope, time to delivery and involvement of customer, Project team try to identify development methodology (i.e. Scrum vs Waterfall) which is a perfect fit for the project/product development. Let’s dig deeper to understand the concept behind each software development approach.
Traditional Approach (Waterfall)
Waterfall is a linear approach where stages are completed in succession. In general, we have the following stages
- Requirement Analysis
- Software Design
- Code development and unit test
- Integration
- User acceptance testing (UAT) & Bug Fix (If any)
- Deployment & Support
There is also typically a stage gate between each stage. For example, requirements must be reviewed (verified and validated) and approved by the customer before the design stage starts. So each stage has specific delivery which is verified and validated by stage owner or customer i.e. Acceptance testing is done customer .
Advantages of Waterfall Model
There are many advantages of the Waterfall approach.
- Requirements are discussed, finalized and documented in the initial stage of software development cycle. This makes software architecture, design and development more straight forward and complete ,considering the deliverables of all waterfall stages.
- Project planning and control is easy as scope is known in advance.
- Calculation of project cost is easy as scope is known in advance.
- Customer presence is not strictly required after the requirements stage except for project reviews, approvals, status meetings etc.
- Project test plan and critical test cases are prepared during requirement stage with help of customer. This process helps during Acceptance testing phase.
- Process oriented approach with less dependency on individual team members.
Limitations of Waterfall Model
However, Waterfall model has some basic issues such as:
- Most of the time, it is really difficult for a customer to conceptualize all the software project requirements in the beginning of the project. Its progressive elaboration. Wire-frame or Product mock-up are helpful to conceptualize but most of the time requirements are not well or fully understood/documented. Due to unclear requirements, Risk and uncertainty may exist at each stage in waterfall methodology. Hence its not suitable when requirements are at a moderate to high risk of change.
- Customer sees the product during UAT (i.e. fifth or sixth stage of waterfall process) and dissatisfaction at that stage increases the software change cost.
- Waterfall development approach is process oriented so it becomes difficult to accommodate change request (may require rework in each previous stage) at later stage of development cycle.
Agile Approach (Scrum)
Scrum is an Agile (ability to move quickly and easily) development approach which follow incremental, iterative and team-based approach. It provides set of guidelines defined to build and deliver the project.
Scrum emphasizes the rapid delivery of an application with complete features. All known features(i.e. requirements) are analysed and documented in product backlog. All features are completed in quick development cycles, in the form of potentially shippable product, in a small time frame like 2 to 4 weeks called sprints. The team always work on the highest priority item defined by the customer/product owner. As work is completed during each sprint, it is continuously reviewed and evaluated by the customer/ product owner, who may be considered the most critical member of the scrum team. As a result, scrum relies heavily on customer involvement throughout the project.
The first product increment will have a few basic features. With subsequent iterations, the product gets refined and more features are added from the product backlog.
Advantages of the Scrum Model
Some advantages of the Agile approach are easy to see:
- Realistic approach of software development with high collaboration among team members.
- The customer has frequent and early opportunities to see the software product. This helps them to make decisions and changes throughout the software development cycle.
- If the time to market for a specific application is a concern, Agile can more quickly produce a basic version (MVP) of working product.
- Development is often more end user-focused.
- Projects are easy to manage due to short delivery cycle.
- People oriented approach so development provide high flexibility to team members i.e. Team member can play various roles in development process.
Limitations of Scrum Model
And, of course, there are some limitations of Agile Model as well:
- Scrum need high degree of customer involvement. This may present problems for some customers who simply may not have the time or interest for this type of active participation.
- Scrum works best in projectized organization i.e. Skilled and Dedicated team allocation for the project.
- Scrum require close and frequent interaction among team members. This kind of interaction in scrum is easy to manage when team members are located in same physical space. However, there are a variety of ways to handle multi-located team such as webcams, collaboration tools, etc.
- Team size is small and minimal documentation is done so project has high dependency on individuals. Hence knowledge transfer to new team members is challenging.
- Scrum project works well on T&M model.
Which is the Right Development Methodology (Scrum vs Waterfall) for Your Project?
Both approaches have their own advantages and disadvantages. Requirement changes are evident due to changes in market conditions, availability of new technologies or competition.
Waterfall model show project mindset and focus on completion of development project on time within defined scope & budget. While Scrum exhibits product mindset and focus on product which satisfies end customer expectations with scope of improvement.
In addition to requirements, the following factors also affect the selection
- Size of the project
- Duration
- Complexity
- Organisational factors
- Clients or stakeholders, external and internal.
When to Choose Scrum Approach?
Scrum approach is more suitable when the project meets the following basic requirements.
- A complex project where the output is not predictable, high team collaboration and experiments are required. Typically, new development projects, with uncertain requirements, fall into this category.
- The agile approach requires a lot of interaction between team members with frequent meetings. So a dedicated project team is allocated.
- Customer/sponsors should be willing to spend time as an agile approach needs frequent interactions (i.e. Review and feedback at each sprint)
- Customer willing to jump direct to development stage and see the software product as soon as possible.
- Products with short Time to market
- Skilled and high performing team is available
- Project scope is not fixed and cost model is T&M.
When to Choose Waterfall Approach?
Traditional approach is more suitable when the project meets the following basic requirements.
- Projects, where output is predictable and many experiments are not required. Typically, Automation of a department, Improvement of an existing product or projects related to internal process improvement fall into this category.
- A team is distributed and join the project when their development stage is effective i.e. Architects are required during design stage while Programmers are required during coding stage.
- Customer/sponsors are not willing to spend time from beginning to end of the project.
- Time to market is not critical
- Projects with a fixed scope, time and budget
Many times, Mixed development approach i.e. Hybrid is considered. In this approach, Requirements and Design are completed with deep involvement of customer while Coding, Testing, and Review follow an iterative approach. This helps customer to see the project output at the end of each iteration and help them to improve it further.
Need more discussion, get in touch with our team. We will help in selection of right development approach for your project.
References : scrum.org, waterfall model