Tuesday, September 14, 2010

Waterfall Model... another convenient way to develop your software...


The waterfall model is a popular version of the systems development life cycle model for software engineering. Often considered the classic approach to the systems development life cycle, the waterfall model describes a development method that is linear and sequential.

Waterfall approach was first Process Model to be introduced and followed widely in Software Engineering to ensure success of the project. In "The Waterfall" approach, the whole process of software development is divided into separate process phases.

The purpose of this model is to introduce modus operandi into the system design process; as a skeleton for system development it advances consecutively through a succession of phases, preliminarily with system feasibility analysis and concluding up to system release and maintenance.

The name "waterfall" portrays system progress flows from the top to the bottom, like water falling down steps in a waterfall panorama, one phase at a time towards the bottom in a cascading effect.

In comparison to iterative models, the Waterfall model is seen as inflexible and linear—though it's preferred by many who feel iterative software development methodologies lack discipline. Although there are variations, in the true Waterfall model, the project only moves from one phase to the next when a phase is completed in its entirety. Therefore, no work will begin on the design phase until requirements analysis is complete. Also, there is no room for backtracking, so when a phase is complete it has to be right.

The phases in Waterfall model are: Requirement Specifications phase, Software Design, Implementation and Testing & Maintenance.
    

Requirements analysis: This first step is also the most important, because it involves gathering information about what the customer needs and defining, in the clearest possible terms, the problem that the product is expected to solve. Requirements are set of functionalities and constraints that the end-user (who will be using the system) expects from the system.
System & Software Design: Before a starting for actual coding, it is highly important to understand what we are going to create and what it should look like? It involves defining the hardware and software architecture, specifying performance and security parameters, designing data storage containers and constraints, choosing the IDE and programming language, and indicating strategies to deal with issues such as exception handling, resource management and interface connectivity.

Implementation & Unit Testing:  This step consists of actually constructing the product as per the design specification(s) developed in the previous step.  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.

Testing: In this stage, both individual components and the integrated whole are methodically verified to ensure that they are error-free and fully meet the requirements outlined in the first step.

Installation: The installation phase represents the steady state of the software on the computer. This step occurs once the product has been tested and certified as fit for use, and involves preparing the system or product for installation and use at the customer site.

Maintenance: The maintenance phase is the longest phase of the SDLC. In this phase the software is updated to:

-fulfill the changing customer need
-adapt to accommodate change in the external environment
-correct errors and oversights previously undetected in the testing phase.
-enhance the efficiency of the software.

Advantages: The waterfall model, as described above, offers numerous advantages for software developers. It allows for departmentalization and managerial control. A schedule can be set with deadlines for each stage of development and a product can proceed through the development process. Each phase of development proceeds in strict order, without any overlapping or iterative steps.

Disadvantages: Those who argue against it are usually opposed that it does not allow for much reflection or revision.  It also isn't very client-focused as it makes any requests to change the software during the development process almost impossible to agree to. And while each phase of development should be 100% perfect before it is completed, it can become very complicated if they are not.

8 comments:

  1. Hello,
    The Article on Waterfall Model.. another convenient way to develop your software is nice, gives detailed information about it. Thanks for Sharing the information about the Waterfall Model For More information check the detail on the Waterfall testing here Software Testing Services

    ReplyDelete
  2. Thanks for taking time to share this post. It is really useful. Continue sharing more like this.
    Regards,
    Software Testing Training in Bangalore

    ReplyDelete
  3. Very useful and informative article, thanks for sharing your knowledge through this...

    Software Testing Training in Chennai

    ReplyDelete