Waterfall
The Waterfall approach to software development describes a sequential process for building software—i.e., one step has to be completed before the next can begin.
In the Waterfall methodology, the project scope, outcome, and requirements are documented fully before any development begins. The documents, among many other aspects, include functional specifics, user interfaces, architecture, data structure.
The traditional Waterfall project structure is split into six phases:
- Requirements and analysis. Collect client requirements pertaining to the product. The information collected during this phase should be enough to validate the product idea and let developers grasp the client’s intended vision of the product. The following is established: budget, risks, completion date, dependencies, and success metrics.
- Design. Agree on a programming language, specific design elements, system design. Documents produced during this phase will be the framework for the implementation (coding) phase.
- Implementation. Turn client requirements and design documents into the software.
- Testing. Test the software for bugs and check if the goals from the requirements document are met.
- Deployment. Release the software to the client.
- Maintenance. Fix any problems found once the software has been released to the customers.
Benefits
- Better manageability. Because each step is documented and deliverables outlined upfront, it’s easier to manage the project.
- Fixed price and deadline. The cost and delivery date can be determined with a high degree of accuracy.
- Clear instructions. Developers and designers involved in the project know exactly what to do and when to do it. With detailed documentation available, the project can be completed by different teams.
Drawbacks
- Once the development begins, it’s difficult to adapt the project to any changes in requirements or new market insights. Whenever significant changes are needed, the project has to go through the requirement and design phases.
- Requirements don’t always reflect real user needs.
- Because users receive the software only once it’s finished, it’s difficult to gather any actionable feedback beforehand and adjust the product to better align with user needs. This increases the risk of project failure caused by a potential lack of market need or low satisfaction.
- Projects relying on technologies that have frequent release-cycles need to be updated often to reflect the changes. As a result, the estimations in documentation will be less accurate.
Use Cases for Waterfall
Taking into consideration the principles of Waterfall and its resulting pros and cons, this methodology is best for building projects with clear specifications and client requirements. We can think of using Waterfall with projects that are simple, predictable, and well-defined.
For example, the Waterfall approach can be used when adjusting an application to meet specific regulations (e.g., when developing medical systems), or when integrating software with existing infrastructure—e.g., banking systems. In both cases, clear and detailed documentation and specifications are critical to successful project completion.
Here are specific project features that determine if the Waterfall approach is a good fit:
- Product definition is stable.
- Technology is understood.
- There are no ambiguous requirements.
- Ample resources with required expertise are available freely.
- The project is short.
The Need for Different Software Development Methods
The Waterfall methodology has been around for decades, initially serving as an essential and structured approach to software development. In the 1990s, however, the Internet technology began evolving rapidly — the Waterfall approach proved inefficient in the increasingly dynamic and complex environment.
There was a pressing need for software development methods that could address the inefficiencies of Waterfall’s linear approach to building software. As a result of that need and through years of refinement, a combined approach for the entire product development life cycle was created.
The combined approach includes methods and processes that come from different backgrounds to together form a mindset for the adaptive building of products, as opposed to following a rigid project plan.
- Industrial design -> Design Thinking
- Manufacturing -> Lean Startup
- Software development -> Agile
Below is a brief description of each and a summary of how they complement one another in the software development paradigm.
Design Thinking
Design Thinking is a human-centered approach to ideating products that address and solve real user problems. Design Thinking can be used as a first step in developing products using the combined approach with Design Thinking, Lean Startup, and Agile.
Design Thinking allows for a better and deeper understanding of human needs and problems. The approach helps find out solutions to a variety of customer pain points through qualitative research.
The key objectives of Design Thinking are:
- Understand the user
- Challenge your assumptions about user problems
- Rehash the problems for an innovative approach to learn more about the users and how to solve their problems
Design Thinking process is based on five stages that can either be followed sequentially or randomly. The goal is to gain a deep understanding of the target audience and all possible solutions to its problems.
The five core assumptions of Design Thinking:
- Empathize: Explore user problems through an in-depth analysis. When identifying problems, it’s important to assume the user’s perspective.
- Define: Define the problems using insight from the first stage. The result should be a human-centered problem statement.
- Ideate: Develop solution ideas based on the information from the two previous stages. This is when the problems are analyzed from alternative angles to yield innovative solutions.
- Prototype: Create low-fidelity prototypes based on problems and solution ideas from all the previous stages.
- Test: Test the prototype extensively to refine the solutions.
You can consider Design Thinking as an initial step in software development (either in the Waterfall methodology or the combined approach) where you identify and understand user problems, and only then come up with solutions. Understanding user problems and delivering solutions that address these problems is key to building meaningful and sustainable businesses.
Lean Startup
Lean Startup is a data-based approach to validating product ideas. The Lean Startup methodology is rooted in startup development and aims to decrease risks inherent in creating innovative ventures. The approach can be applied in many different contexts, including software development.
As per the Lean Startup approach, releasing the product as fast as possible is the best way to obtain insight necessary to improve it. The methodology helps validate core assumptions through user feedback loops. In the combined approach, it’s where the solutions from Design Thinking are put to test.
The goal of Lean Startup is to collect user data and iteratively refine the product. Based on the insight, the product and business strategy should be adjusted accordingly and continuously.
The key assumptions of the Lean Startup methodology:
- Understand the target audience and their problems
- Build a series of meaningful product releases
- Focus on metrics
- Adapt, change, and iterate the product to better address user needs
The Lean Startup methodology lets business owners learn where to go with the product or service based on real user data and feedback. In the combined approach, you can think of this phase as the time where you sift out the working elements of your product and abandon features that don’t yield results and can potentially incur costs and increase risk.
Agile Software Development
Agile development describes the process of producing software. The Agile methodology was created to make software development more efficient and flexible compared to the traditional Waterfall methodology.
In the Agile approach, software is built in parts (fully working pieces with a database, user interface, business logic). Testing and development happen concurrently as opposed to the linear approach in Waterfall. The core assumption is to release new products faster and introduce modifications depending on user feedback.
The assumptions of Agile development:
- Communication. Agile teams discuss daily to align on goals and reflect on past tasks to seek improvement.
- Adaptive approach. Unexpected changes in the project are introduced swiftly, helping gear the product toward end users.
- Collaboration. Frequent collaboration with customers to find areas for improvement in the product.
- Software is a priority. Deliver a working version of the software early and continuously.
- Self-organizing teams. Developers work out their own Agile-based methodology that takes into account project context, time, and their own skillset to establish the most efficient way of developing software.
- Cross-functional developers. Teams have all the necessary skills to build software products that deliver customer value.
- Inspect and adapt. Continuous improvement of workflows and processes within a team.
Benefits
- Faster time-to-market.
- Quick implementation of new project requirements.
- High-quality software. Bugs and errors are caught early on because applications are built iteratively and every iteration is tested.
- Increased productivity through emphasis on collaboration and communication.
- Smaller documentation. The focus is on building working software. Note: depending on the project, this can also be a drawback.
Drawbacks
- Risk of poor documentation. Project documentation isn’t often a high-priority item in Agile development and can be neglected, making it difficult for new team members to get up to speed with a project.
- Projects can become chaotic if teams and project managers aren’t skilled in Agile development.
- It can be difficult to estimate delivery dates because the project can change during development.
In the combined approach, the Agile methodology is used to create a minimum viable product (MVP)—a fully working version of an application with minimum features built to collect insight and refine future iterations.
Why Choose the Combined Approach?
The combined approach with Design Thinking, Lean Startup, and Agile has numerous benefits. By putting users and their problems as the centerpiece around which you develop software, and more important, by actually measuring how users find the software, you can maximize the business value in a time- and money-saving manner.
Every software iteration (i.e., working piece of software or application) in the combined approach is a chance to learn more about the user and implement feedback-based modifications that further refine the software.
When used together, the three methodologies help businesses get closer to their customers and figure out early on what works and what doesn’t in the software they create. If the software doesn’t meet objectives, it’s easier to pivot and rethink the idea behind the solution before significant resources and time are wasted.
Project Context Determines the Development Methodology
While the combined approach to software development is a modern way to build software that is based heavily on user feedback, the Waterfall methodology is still a valid approach for certain projects.
The Waterfall methodology is a good pick for projects with clear requirements, a defined structure, and a predictable outcome.
The combined approach is a good choice for innovative endeavors where the risk is greater. The iterative process decreases the chances of project failure and helps validate the idea early on during project ideation and prototyping.
Related articles
Supporting companies in becoming category leaders. We deliver full-cycle solutions for businesses of all sizes.