From the course: Software Development Life Cycle (SDLC)
Waterfall model: Brief overview
From the course: Software Development Life Cycle (SDLC)
Waterfall model: Brief overview
- [Instructor] The waterfall approach appears most intuitive to us at the first sight. You gather requirements for a project. Once the requirements are complete, you complete the designs. When the design is complete, you write the code and complete development and so on. The waterfall model owes its origin to manufacturing. When we think of the manufacturing industry, we often think about a production plant that produces identical products in a consistent manner. All planning is done upfront with detailed planning and documentation, and the scope of work is fixed. The process to manufacture products is largely automated and includes well-defined checklists, processes, and tools. The general pattern here is that output of a phase becomes the input of the next phase. If you introduce an error in one phase, that error will propagate to all the other phases. For example, if you have an incorrect or incomplete requirement, that requirement will lead to incorrect design, and that design will make it to incorrectly developed or missing software feature. Most traditional waterfall projects have fixed scope because you tend to freeze the scope of one phase before starting the next. The processes and the final product are very well-documented. This is how the waterfall lifecycle looks like. You start with what is called the requirements analysis phase, where you capture requirements. This is followed by the analysis and design phase, where you produce high-level design and test specifications. This is followed by the development phase where you build the software system. The next phase is the test phase, where you match the output of the system with the expected outputs defined in test specifications. The last phase in the waterfall model is the deployment and maintenance phase, where the application is deployed to production, and the ongoing maintenance continues. In each phase, the output from the previous phase is the input for the next. The input to analysis and design phase is the output of the requirements phase. Just like the previous phases, the input to the development phase is the output of the previous analysis and design phase. What's wrong with the waterfall model? The first problem is that the customer does not get to see the product before the early testing phase, which is usually 2/3 of the way through the product timeline. You could be in the deployment and maintenance phase when you would realize that the product you were building was no longer viable due to changed market conditions, or organizational direction, or changed competitor landscape. Or you could realize that the product had a major architectural flaw that prevented it from being deployed. In other words, your product development initiative could completely fail after a lot of money and time had been spent on it. In software development, everything changes: requirements, skills, people, environment, business rules, et cetera. As time progresses, you learn better techniques of doing things. Your stakeholders need to change requirements to match change in organizational strategy or change market conditions, et cetera. In other words, the only guaranteed things are change and the churn process to refine our work. Software development is inherently an iterative process and does not work like a waterfall cycle. Overemphasis on checklists and controls does not help because software development is human-centric approach and is heavily dependent on judgment and creativity. Software is not a product designed to be built by assembly lines.
Practice while you learn with exercise files
Download the files the instructor uses to teach the course. Follow along and learn by watching, listening and practicing.