What is Waterfall Methodology?
- Waterfall project management methodology was first introduced in 1970, in an article written by Winston W. Royce.
- It is a sequential development process that flows like a waterfall through all phases of the SDLC.
- The stages of the Waterfall model are:?
- Requirement Analysis and Definition
- System & Software Design
- Implementation & Unit Testing
- Integration & System Testing
- Operations & Maintenance?
Pros of Traditional/ Waterfall Methodology:
- Plan/ process driven (build around the paradigm of the process).
- A well-defined methodology that has been used in every business vertical.
- Provides a detailed definition of the deliverables, timelines, and milestones from the beginning.
- Reduces the amount of time developers spend interacting with stakeholders.
- Team deliverable is predictable.
- All works are understood before execution.
- Given a well-defined set of inputs, the same outputs are generated every time.
- Follow the predefined steps to get known results.
Cons of Traditional/ Waterfall Methodology:
- Any changes in the requirements are costly.
- Rigid requirements definitions inhibit creativity.
- Requirements can be misinterpreted because the developers interact less with stakeholders.
- Excessive documentation is required to create detailed definitions of the deliverables, timelines, and milestones prior to the beginning of the project.
By the mid-1990s, the Waterfall approach has shown itself to be complex and obligated to cause application delivery lag. On February 11-13, 2001 a group of 17 similar experts met at Snowbird Ski Resort in Utah. The aftereffect of the 3-day brainstorming session was the "Manifesto for Agile Software Development".
12 Principles of “Agile Manifesto”:
- Our highest priority is to satisfy the customer through the early and continuous delivery of valuable software.
- Welcome changing requirements, even late in development.?Agile processes harness change for the customer's competitive advantage.
- Deliver working software frequently, from a couple of weeks to a couple of months, with a preference for a shorter timescale.
- Business people and developers must work together daily throughout the project.
- Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.
- The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.
- Working software is the primary measure of progress.
- Agile processes promote sustainable development.?The sponsors, developers, and users should be able to maintain a constant pace indefinitely.
- Continuous attention to technical excellence and good design enhances agility.
- Simplicity--the art of maximizing the amount of work not done--is essential.
- The best architectures, requirements, and designs emerge from self-organizing teams.
- At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.????
(Quoted from the Manifesto for Agile Software Development, https://agilemanifesto.org)
What is Agile?
- Agile is an iterative software development methodology that delivers software frequently with faster feedback cycles and?the ability to create and respond to change swiftly.
- In short, it’s a framework for a product or project's iterative and incremental delivery.
- Agile is based on the values and principles expressed in the?Agile Manifesto and the?12 principles behind it.
- Agile is:
- Doing important things first – It respects urgency.
- About People, Values, Principles & Practices.
- Focused on Team Communication.
- Regularly delivering value through working software.
Pros of Agile Methodology:
- Iterative + Incremental + Adaptive.
- Change driven (build around the paradigm of change/ adaption).
- Priorities and requirements can be easily adjusted throughout the project.
- The team is empowered to make decisions, define deliverables and milestones, and take responsibility for the delivery.
- Time to market is significantly decreased.
- More opportunity for creativity.
Cons of Agile Methodology:
- Processes are imperfectly defined.
- Deliverables, timelines, and milestones are less predictable.
- Stakeholders need to invest a lot of time throughout the project.
- Documentation is not created, which could be a problem for regulated industries.
- Since the requirements change all the time, re-work will be inevitable.?