Tuesday, December 23, 2014

Agile Overview

Challenges in Traditional Software Development Model

The Traditional software development model follows a sequential life cycle called "the waterfall". The Waterfall model has different distinct phases like Requirements, Analysis, Design, Coding, Testing and maintenance.



In this sequential flow the duration of a project is very long ranging from few months to few years. The end user is not able to test the product till the end of project and at the time of user acceptance testing the end user finds that the product is not delivering the functionality what he was expecting.
There is a famous Swing Cartoon which shows comically what the customer is expecting and finally what the development team delivers.


Some of the limitations of the Traditional Waterfall Model are:
  • Sequential flow: The model implies that you should complete the current project stage before you move on to the next stage. It neglects the fact that the requirements are continuously changing. 
  • Delayed feedback: The Customer cannot test the system until the entire system is complete. Because of this, the team gets the feedback at the end of the project. After customer feedback, if there are any changes, the cost of change is very high.
  • Learning not used for the same project: On completion of projects, many a times, the team feels that if it does the same project at another time, it can be done in a better way. The learning of the project might be used for the next project but the waterfall model does not have an ability to use the learnings for the same project.

Agile Landscape

To overcome the challenges of the traditional software development methods, by late 1990, many people around the world started developing software by using alternative methods which were not rigid and had  the ability to “review-act” fast to the changes in the requirements and technologies. The results of these new methodologies were very successful as compared to the traditional software development methods.

In February 2001, seventeen people met at Snowbird, Utah to discuss and try to find a common ground on these alternative methods. In this gathering, these people came up with the "Agile Software Development Manifesto".



The term "Agile Software Development" emerged from this meeting. This term was used as an umbrella referring to a family of emerging lightweight software development methods such as Scrum, Extreme Programming, DSDM (Dynamic Systems Development Methodology), FDD (Feature Driven Development), Crystal, and Adaptive Software Development.  Instead of emphasizing up-front planning and detailed requirements, these methods placed significant emphasis on continual planning, empowered teams, collaboration, emergent design, a test-early, and, most importantly, the frequent delivery of working software in short and rapid iterations.


Traditional Vs Agile Software Development

If we compare Traditional Development Projects Vs Agile Development Projects

Traditional Projects

  • It assumes that full scope is known at the start of the project
  • The Project length is over an extended period
  • All tasks can be put in defined WBS
  • The Process is sequential
  • Stable requirements
  • Detailed documents
  • Rigid change control

Agile Projects

  • Scope is partially known at the start of project
  • The Project length is over a short period of time
  • The Process is iterative 
  • Emergent requirements
  • Just enough documentation
  • Effective change control

Driving Through a Traffic

The differences in these two approaches can be better explained with an example of a person driving through the city traffic. If a person makes a very rigid plan of his travel like the Traditional Software Development method, it might take a lot of time for him to reach his destination. There could be difficulties in his travel which may require a change in his route but if he decides to stay with his earlier plan then he may not reach his destination. Normally, while driving, we don't make a rigid plan. As we drive, we analyze the situation and make minor changes in our driving plan. The Development Team should adopt similar approach for a development project. The Software Development Method should be flexible enough to make changes in our plan as the situation demands.


Scrum

Scrum is an Agile framework for developing complex projects. Scrum originally was formalized for software development projects, but it works well for any complex scope of work.

When Jeff Sutherland created the scrum process in 1993, he borrowed the term "Scrum" from an analogy put forth in a 1986 study by Takeuchi and Nonaka, published in the Harvard Business Review. In that study, Takeuchi and Nonaka compare the high-performing, cross-functional teams to the scrum formation used by the Rugby teams. In rugby football, a scrum refers to the manner of restarting the game after a minor infraction..



Deming Cycle

The Deming Cycle is the core of Scrum. In Scrum, the team follows a “Plan-Do-Check-Act” cycle in small iterations



2 comments:

  1. Waterfall method is the traditional approach to software development. Scrum methodology takes feedback from the product owner and stakeholders.


    Scrum methodology

    ReplyDelete