Way back when humans started thinking on methodology of doing business in software engineering, undertaking projects and customer satisfaction, new ideas for developmental work emerged and various paradigms evolved.
There was a time when undertaking projects and creating
products was a linear process, which means once you start doing it; you just must
continue till it ends without looking back. It suited the need of hour due to
relatively lesser complexity of projects. But then the industry transformed and
gave birth to big tech giants like Google, IBM, Facebook, and the list never
ends. These companies had a massive thirst for delivering best product/ services
to the customer and tried to get optimum customer satisfaction. For this, they
required a consistent contact with customer. A continuous estimation and review
of the customer’s need became essential which naturally made linear model like the
waterfall model almost outdated and Iterative frameworks gained unprecedented importance.
Here, we will discuss what exactly waterfall model for
software development is; and is it relevant today?
Why we need a well defined a process for software development?
Every corporate project has a vision and mission. When a
company decides to procure a software, they have some objectives and goals. In
simple words they have a documented answer to the question “Why we need a
software and which features/functionalities we need in it.”
But to explain this to the service provider IT firm, the
company needs to be very specific about its needs because 100s of IT employees would
work for its project. To get a clarified and specific vision and contract, IT professionals
and the company officials hold some formal meetings and decide a statement of
work. This statement of work contains the roadmap of the project. Now they need
a predefined workflow to execute.
What is waterfall model?
It is a software developed process pioneered by Dr Winston W. Royce and became widely popular at the time of release and used by many companies in 1970s and 80s. It is linear model, which means we can not go backwards while executing its steps.
- Requirement Gathering and analysis − In this phase ,all possible requirements of the system to be developed are captured and documented in a requirement specification document. So here in this phase you are giving specific ideas to the team people. Whatever the user requirement and customer requirement is firstly documented in this phase.
- System Design − The requirement specifications from first phase are studied in this phase and the system design is prepared. This system design helps in specifying hardware and system requirements and it helps in defining the overall system architecture.
- Implementation − With inputs from the system design, the system is first developed in small programs called units, which are integrated in the next phase. Each unit is developed and tested for its functionality, which is referred to as Unit Testing.
- Integration and Testing − All the units developed in the implementation phase are integrated into a system after testing of each unit. Post integration the entire system is tested for any faults and failures.
- Deployment of system − Once the functional and non-functional testing is done; the product is deployed in the customer environment or released into the market.
- Maintenance − There are some issues which come up in the client environment. To fix those issues, patches are released. Also, to enhance the product some better versions are released. Maintenance is done to deliver these changes in the customer environment.
Now let us think upon its relevance. Think for 2 minutes,
will the requirements specified in the statement of work (step 1) be always
constant during the development time span? Let us get it through an imaginary example…
In 2016, HDFC bank decides to have a mobile application for
its customers which will serve for net-banking. It gives contract to TCS, and they
prepare a statement of work. TCS employees start working on this project. But
meanwhile Government of India launches revolutionary UPI payment system. Being
a visionary bank, HDFC now wants to add UPI feature to its app along with net
banking. In this case, the requirements are getting changed. Can you imagine
the condition of TCS developers who have completed almost 50% of the work for
previous statement of work? They might feel ridiculously gloomy. It means
linear model will not work for such scenarios.
Problems with waterfall model:
- Non robustness :If statement of work varies even by a small feature, entire workflow collapses in waterfall model as we have seen in HDFC example. But even if we assume that statement of work will not change ever, then also there might be some cases where there is a mismatch of understandings, scarcity of funds, or any human error. In that case, it is hard to recover.
- No system of feedback: Every customer loves to be heard, recognized, and acknowledged. It is obvious for a customer to seek for a demo or speculation of progress for his/her project. In waterfall model, it is not possible in early stages.
But does it mean waterfall model is useless today? Let us
discuss some benefits of it.
Perks of waterfall model
- Perfect match for small projects:Unlike the one that we discussed above; most projects are not of such big scale. They rarely require complex modifications and long duration of work. Following a linear framework is preferable for such projects.
- Useful for start-ups: Small IT start-ups do not have a huge and dedicated manpower to implement. Simple process like waterfall model suits them as it is cheaper to implement than conducting sprints of other models.
0 Comments