Agile vs Waterfall Development Model

Development methodology is a framework that is used to structure, plan, and control the development of software systems. Agile and CMMI Waterfall methodologies are very similar and have enough differences to be named differently. Let’s consider the methodologies in detail.

Waterfall Methodology

The first formal description of the “Waterfall Model” was given in an article by Winston W. Royce in 1970. It is a good joke that Royce presented the waterfall model, but used the iterative one. Waterfall is an old and time-proven development model. There is a huge number of systems that were developed using the CMMI Waterfall methodology. Many IT companies continue to develop software using the waterfall model.

The life cycle of software from idea to realization looks like the following:

  1. Initiation phase: A sponsor identifies the need for new software that fits their own requirements. A concept is created.
  2. System Concept Development phase: Analysts investigate the problem and define the scope of the future project. Feasibility analysis is made, and relative risks are calculated.
  3. Planning phase: Project plan and other plan documents are created. The papers give a rough list of resources that are required to achieve the solution.
  4. Requirement Specification phase: Requirement Specification is created on the basis of user needs analysis.
  5. Design phase: System design documents are worked out on the basis of the detailed requirements. The priority is given to deliver the required functionality.
  6. Development phase: The system is developed according to its design. Features, environment, and testing procedures are coded and prepared for the next phase.
  7. Testing and Integration phase: The testing demonstrates that the system features fit all the requirements described in the respective documents. A test report is often written by a third party.
  8. Implementation phase: Problems discovered during the previous phase must be resolved, and the system is transferred to the production environment.
  9. Operation and Maintenance phase: The system is monitored to be sure it works as described in the requirements, and for possible improvements during In-Process Reviews.
  10. Disposition phase: System is archived to provide an opportunity to start development again if it’s required. The team can move to a new project.

Often, the uniform “Waterfall model” is shown in a short view:

  1. Analysis – combines Initiation/Concept/Planning phases.
  2. Requirement Specification
  3. Design
  4. Development
  5. Testing and Integration
  6. Implementation/Deployment – integrates Implementation, Maintenance, and Disposition phases.

There are potential difficulties that may occur during the development: the waterfall model presupposes execution of all steps if an error is discovered or the customer decides to change a part of the functionality.

Agile Methodology

Agile methodology combines software development methods that are based on iterative and incremental models. In February 2001, 17 developers met to discuss lightweight development methods, and there the Manifesto for Agile Software Development was created. Agile methods are guided by common principles to overcome the identified problems of the waterfall methodology.

The workflow of the Agile development process is as follows:

  1. The whole project is divided into parts using feature prioritization.
  2. The customer and development team choose the set of features that must be implemented during the sprint.
  3. The features are developed.
  4. The features are tested and integrated.
  5. The shippable features are released to the customer.
  6. The customer sends feedback, and the team reviews it.
  7. If the customer accepts the product, it can be released to the
    market.
  8. If the customer wants any modernization, the next iteration starts (from step 2: prioritization of the features).

The development team and customer representatives stay in touch throughout the development process. Such cooperation allows us to find problems in early development.

It is pretty clear that it is very difficult to calculate the time for development using the Agile methods. Agile methodology gives customers a great opportunity to change the product at any time, but requires more effort from the developers and consultant teams.

Agile and Waterfall Differences

The differences between Agile and Waterfall methodologies are:

Idea and Design

  • Agile: The most critical parts are designed first. Agile provides for adding new parts to existing ones. The customer can change the requirements anytime, which is why the parts are designed as separate elements, and the structure of one element does not influence the others much.
  • Waterfall: The project is planned from top to bottom at once. Developers have to take into account every detail of the working process. Inefficient information support may cause problems in the future.

Coordinated Actions

  • Agile: The customer or the representatives of the customer work closely with the development team during the entire development process. The problems can be avoided, and the inaccuracy of documents can be corrected in a short time.
  • Waterfall: All the responsibility lies with the development team. The customer is hardly involved in the development.

Project Execution

  • Agile: The development process is iterative. The project is executed in short (2-4 week) iterations. Every new version of the product is updated with ranked features. There is a little planning.
  • Waterfall: The development process is phased. The phase is much bigger than an iteration. Every phase ends with a detailed description of requirements for the next phase.

Testing

  • Agile: Every iteration has its own testing phase. That allows us to implement regression testing every time new logic or functions are released.
  • Waterfall: Testing phase is executed only after the development phase, because separate parts are not fully functional to be tested. Requirements verification can only be performed on the completed software.

Deliverables

  • Agile: The most important features are the first to be developed: when an iteration ends, potentially shippable features are delivered to the customer. New features are usable right after shipment.
  • Waterfall: All features are delivered at once, after the long implementation phase. The customer cannot make amendments to the project because it requires re-running all passed development phases.

Documentation

  • Agile: Priority is given to the working software. Project documentation is not formalized; it is simple and understandable.
  • Waterfall: Project is well documented with all sorts of documents (including user manual, etc.). The customer can use this documentation to train the staff and upgrade the software with another team.

Design Time

  • Agile: Small projects can be implemented very fast. It is hard to estimate the development time of large projects.
  • Waterfall: The project is well planned, and the shippable date can be estimated for all sorts of projects.

What Is Your Methodology?

There are some facts that may help you to choose the development methodology.

Use Agile if…

  • you need to ship the software in a very short term;
  • the details of the project are not fully defined or can change greatly during the development;
  • you want to use the basic functionality of the software before the project is finished;
  • you want to control or take part in the development process face-to-face;
  • you can ensure continual visibility of the ones who will use the software with the developers team;
  • you can save the high-rate development with your resources.

Use Waterfall if…

  • there are no tight time frames during development;
  • you can afford to receive the completed software after a long time;
  • project is well-defined and can be designed in details;
  • you need full documentation on the start of the project;
  • you need a safe software with a high reliability level;
  • you want to use the finished software;
  • you do not have resources for face-to-face everyday work.