Waterfall model, also referred to as a linear-sequential life cycle model, is very simple to understand and use. It is a Plan-driven model with separate and distinct phases of specification and development involving a lot of processes: Problem definition, feasibility study, requirement analysis, design, programming & module testing, integration & system testing, delivery, and maintenance. Waterfall model is just one of the four software process models that will be discussed this week. But before we get to that, here is a recap of what you learned last week.
Recap: last week‘s material
Last week, we covered the main zest of software engineering: what it is about and how we should utilize it to produce generic products and custom ones. Evolution of design techniques along with the core principles of software practice were covered as well.
SOFTWARE DEVELOPMENT LIFE CYCLE (SDLC)
SDLC is a process followed for a software project that is made of a detailed plan describing how to develop, maintain, replace, and alter or enhance specific software. Simply put, it is a methodology for improving software quality and overall development process. It involves six stages:
- Stage 1: Planning and Requirement Analysis
This is the fundamental stage as it involves gathering requirements from clients and includes market surveys and feasibility studies. Once the requirements are set, a basic project approach is done in terms of economical, operational, and technical aspects. Planning for the quality assurance requirements and identification of the risks associated is also done in this stage.
- Stage 2: Defining Requirements
In this stage, the Software Requirement Specification (SRS) document is used to clearly define and document all the product requirements to be designed and developed during the project life cycle as approved by certain stakeholders.
- Stage 3: Design
SRS is the reference for developers to come out with the best architecture for the product. Through the requirements in SRS, design approaches are proposed and documented in a (DDS – Design Document Specification). After the DDS is approved by important stakeholders and the best design approach is selected, development starts. A design approach should clearly define all the architectural modules of the product along with its communication and data flow representation with the external and third party modules (if applicable).
- Stage 4: Development
Here, the actual development starts and the programming activities are done as per the DDS. If the design is detailed and organized, code generation is done without much hassle.
- Stage 5: Testing
Generally, testing activities are involved in all the stages of SDLC. However, this stage refers to the testing of the product where defects are reported, tracked, fixed, and retested, until the product reaches the quality standards defined in the SRS.
- Stage 6: Deployment and Maintenance
This is the final stage in which the fully developed product is released. Sometimes, the product may released in a limited segment to test the waters and see how it is adapting in the market following the concept of (UAT- User acceptance testing). Then, after feedback, the product may be released in full as it is or with the suggested modifications to select markets. Later, maintenance will be done for the existing customer base.
LIFE CYCLE MODELS
Life cycle models aka process models come in handy when developing a software product. Generally, a life cycle model represents all the activities needed to make a software product transit through its life cycle phases and defines entry and exit criteria for every phase. Software project managers use life cycle models to monitor the progress of a particular project, assign roles to reflect upon the responsibilities of the people involved, set pre- and post-conditions, which are similar to before & after statements for a process activity. It is also important to keep in mind that in practice, most practical processes involve elements of both plan-driven (planning is done in advance and change is not possible) and agile approaches (planning is incremental and change is possible).
Classical Waterfall Model
This model is considered as the basic blocks for all which other life cycle models were built upon. However, the classical waterfall model is no longer used in practical development projects, since it doesn’t support change to handle errors committed during any of the phases (as seen in the image on the right). Today, this model is regarded as the “an anti-pattern” that shouldn’t be followed.
Iterative Waterfall Model
The basic idea behind this method is to develop a system through repeated cycles (iterative) and in smaller portions at a time (incremental). The iterative waterfall model is probably the most widely used software development model so far since corrective measures can be taken through feedback loops at most stages. Generally, rigorous validation of requirements and verification & testing of each version of the software is needed for best results. However, this model is only suitable for well-understood problems that aren’t subject to many risks. From the image on the left, you will notice that several iterations are needed to enhance evolving versions until the full system is implemented. At each iteration, design modifications are introduced along with added functional capabilities.
The prototyping model is used when either the user requirements or the underlying technical aspects are not well understood. It is popular for the development of the user-interface part of projects.
A prototype is usually low in reliability with limited functional capabilities and inefficient performance compared to the actual software since it is built using several shortcuts and dummy functions. It only looks like the actual system but doesn’t function like it as the actual computations aren’t performed. As seen from the image on the right, this model follows a similar structure as that of classical waterfall model.
This model is also called a meta model as it includes all other life cycle models, like Risk handling. The spiral model is used for developing technically challenging software products that are prone to several kinds of risks. It combines the idea of iterative development with the systematic. In other words, it is like the iterative waterfall model but with very high emphasis on risk analysis.
The diagrammatic representation can be seen on the left; it appears like a spiral with many loops. The exact number of loops is not fixed as each loop represents a phase of the software process. To most people, this model is much more complex than the other models, which is why it isn’t used for ordinary projects.
Checklist aka Things you should [kinda] know after reading this post:
- What is SDLC?
- Difference between the discussed life cycle models
- The use of life cycle models
ITT KHARAGPUR. Software Engineering. Retrieved from nptel.ac.in.
Sommerville, Ian. Software Engineering. Retrieved from SlideShare.
Tutorials Point. SDLC. Retrieved from tutorialspoint.com/sdlc.
Background Story: Hey, I’m Yasmin, a soon-to-be junior CS Major at UoPeople with 80 credit hours down. I will be using my blog as a platform to help me study and share what I learn on a weekly basis with my fellow classmates and readers. Follow the Studying CS at UoPeople section for weekly blog posts published every
Friday Sunday. Please note, this series will not interfer with the weekly Monday posts. Thanks for reading. Cheers!