Archive

Posts Tagged ‘Agile’

Agile, XP, Scrum and Waterfall

I have been hearing these terms (Agile, XP, Scrum and Waterfall) so often that I thought of summing it up in a post. Recently, I attended a seminar at NASSCOM about Agile and XP. It was really interesting to understand these methodologies/principles.

Waterfall and Agile are “principles” whereas Scrum and XP are “practices” for project management. By definition “prinicple” is a rule or law concerning a natural phenomenon or the function of a complex system. It doesnt provide concrete steps, roles and responsibilities and parts of a system.

Waterfall – More correctly it is a software development “model” which talks about principle and flow of system. Waterfall is a sequential software development process where progress flows from top to bottom. Below is the flow in Waterfall:
     REQUIREMENTS –> DESIGN –> IMPLEMENTATION –> VERIFICATION –> MAINTAINENCE
 Only and only when the first step is complete and signed-off the project moves to next. The customer feedback appears very late in SDLC.

Agile – Waterfall talks about sequence whereas Agile favours iteration, quick results, incorporating changes early in the SDLC.
Some of the principles behind the Agile Manifesto are (reference http://en.wikipedia.org/wiki/Agile_software_development):

  • Customer satisfaction by rapid, continuous delivery of useful software
  • Working software is delivered frequently (weeks rather than months)
  • Working software is the principal measure of progress
  • Even late changes in requirements are welcomed
  • Close, daily cooperation between business people and developers
  • Face-to-face conversation is the best form of communication (co-location)
  • Projects are built around motivated individuals, who should be trusted
  • Continuous attention to technical excellence and good design
  • Simplicity
  • Self-organizing teams
  • Regular adaptation to changing circumstances

 To sum up Agile welcome “Changes”.

Scrum - Is “methodology” to implement Agile software development. It defines processes, roles and responsibilites to carry out Agile development. The three main roles are:

  • Scrum master
  • Product Owner
  • Team

Scrum master facilitates the process by monitoring it. Product owner is the one who priotizes the requirements and defines a sprint. Scrum Team do not have any heirarchy. Everone in the team has features to work on and owns it.  Scrum being agile believes in quickly showing the outcome. All requirements are not frozen before development and with an overall picture of software and initial requirements; the development starts. These requirements are then priotized and broken down in “sprints”. Each sprint is delivered (working software) in 2-3 weeks. This way customer feedback of each sprint is incorporated early in SDLC.

Extreme Programming (XP) – XP is another methodologies for agile development. It advocates frequent “releases” in short development cycles. XP can also be implemeted together wiith Scrum.
XP is more about how to program (code) in agile development. XP is about simplicity, discipline, ownership of your code and following best practices without fail. 
One of the key principle of XP is to always design and code for today and not for tomorrow. Since it talks of quick development. XP programmers need to ensure stable, reliable and faster code development.
Some key components are: Pair Programmng, Write test before code, collective code ownership, refactor often and continous integration.

Most of the in-house product develoment companies are adopting Agile while service companies still either works in Waterfall model or a mix of Agile and Waterfall. The main reason Agile adoption is difficult is that it requires a learning curve both for the vendor and customer. Agile is fluid cost model and if not properly controlled could overshoot time and cost.