Waterfall, Agile/scrum and RUP in one frame


Here we are comparing the similarities and introducing the methodologies abstractly as simple as possible.

Categorizing the phases of SDLC into phases of Waterfall and Agile methodologies.
So here, we categorize the SDLC phases into 5 phases for more precisely defining the waterfall methodology.
1) Idea and requirement analysis - we consider Initiation, System concept development, planning, requirement analysis of SDLC into this phase.
2)Design - we consider design phase to be same as SDLC.
3)Implementation/Development - we consider development, integration and implementation phases of SDLC to this phase.
4)Testing - Testing, operations and maintenance comes to this phase
5)Deploy Final product - Releasing of final product(Disposition) comes to this phase.

Initializing the phases in Rational Unified Process (RUP):



RUP is a iterative software project development process framework, a division of IBM.
Describing the four distinct phases of RUP:
1) Inception: Here we identify all entities like actors, use cases, risk assessment, resources needed, a success criteria and a phase plan of milestones which outcomes a vision document.
2) Elaboration: Here we analyze the problem domain. It is most critical phase as we establish architectural foundation, identify scope along with functional and non-functional requirements and develop project plan.
3) Construction: Here remaining application feature and components are developed and integrated. They are thoroughly tested. A well documented manual with running project is the outcome.
4) Transition: After delivered to the customers, there is a need to develop new releases, correct some problems, or finish the features that were postponed.

For more info: 

Now, let's begin with Waterfall.

Waterfall?  Water falling from fountain? What exactly is it?
Yes, that is it. An ancient approach which is compared to "Final product (water falling) obtained from Initial state (fountain) to final state (Freely flowing in the fountain)" i.e, the progress flows steadily toward conclusion(like a waterfall).

For instance, lets assume a project where a building is constructed.
Here we initially, get and idea of how big it should be and how many people it is accommodating. This is where the "Requirement analysis" comes into place. Once it is done, Focus is on Design to develop a flawless and accurate design including all safety precautions. Now, the project is being implemented/developing based on the strict policies in design. Later tested and finally completed for general public.
But the "heart of the Waterfall" is not just the flow of this process, it is actually focusing majorly on "Requirement analysis" and "Design" as this approach is in such a way that once we start Development/Implementation of the design, it is a flaw to come back to design to change it in the midterm. Waterfall best practices is only suitable to large projects but with clear analysis and design.

Quick Summary:

  • It is a static and sequential software development process.
  • It majorly focus on requirement analysis and design of the project
  • Suitable for structured large projects but not complex projects.
  • Outcome is crystal clear as what you plan(design phase) is what you get. 
  • Lack of flexibility because difficult to define and make changes
So, if the design takes longer time, so does the release date is extended. Resulting in not completing the project in-time as planned.

To overcome the static method, to make project work more flexible adapting to changes intermediate and to possibly pre-start the other phases of early to complete project early, we require a dynamic project framework so we consider the "Agile/scrum Methodology".



Consider the following image:(ONE SHOT IMAGE)
For Larger image:


What is Agile? What is Agile/scrum?
Agile is a Software development methodology that overcomes the static design issues from that of waterfall. This is basically an iterative and rapid delivery approach which increases flexibility of changes.

Agile is often implemented using "Scrum" concepts. Here, we consider phases of time frames rather than tasks and schedules. This time frame phase is called as a "Sprint". Each sprint/iteration is a collection with running list of tasks and process. The obtained information for lists and tasks completed/not is used in the future sprints for quick approach in completing the project.

As shown in the image above, Sprint-0 is initialized in inception phase and depending on the information collected in sprint-0, more sprints are designed and even the phases are pre-started (prepone) well in advance to the start date when compared to waterfall methodology.
As a proof, we can say this methodology is the best approach to projects involving lot of changes (dynamic) in intermediate stage working closely with client to obtain desired outcome.

Quick Summary:

  • More customer friendly.
  • Flexibility of changes at any point of time.
  • Predictable costs and changes.
  • Focus on business value and improves quality.

Hope this post helps you understanding the concepts of Waterfall and Agile/scrum in an abstract view.




No comments:

Post a Comment