Tuesday, April 17, 2012

Agile Development-Extreme Programming

Agile Development

Introduction

Agile software development is a group of software development methodologies based on iterative and incremental development, where requirements and solutions evolve through collaboration between self-organizing, cross-functional teams. The Agile Manifesto introduced the term in 2001.


Advantages & Disadvantages

As far as agile development is concert as every methodology it has some pros and cons. Major advantages of agile development covers time, teamwork, accurate set of requirements, and client interactive to get a robust desired product.

  • Agile methodology has an adaptive team which is able to respond to the changing requirements.
  • The team does not have to invest time and effort and finally find that by the time they delivered the product, the requirement of the customer has changed.
  • Face to face communication and continuous inputs from customer representative leaves no space for guesswork.
  • The documentation is crisp and to the point to save time.
  • The end result is the high quality software in least possible time duration and satisfied customer.

As nothing is perfect in this world created by us, Humans so, it also has some imperfections i.e. Unsuitable for larger products or projects, lack of documentation, Senior and expensive resources required.

  • In case of some software deliverables, especially the large ones, it is difficult to assess the effort required at the beginning of the software development life cycle.
  • There is lack of emphasis on necessary designing and documentation.
  • The project can easily get taken off track if the customer representative is not clear what final outcome that they want.
  • Only senior programmers are capable of taking the kind of decisions required during the development process. Hence it has no place for newbie programmers, unless combined with experienced resources.

Methodologies of Agile

Agile is not a single methodology but agile is a set of different methodologies which can be considered under agile process modeling. The methodologies are mentioned as:

  • Scrum
  • Extreme Programming
  • Crystal
  • Dynamic System Development Method
  • Feature Driven Development
  • Lean Software Development

Here we want to narrow down our report towards extreme programming so that we can give the best concentrated material on single topic from agile development rather than precise set of notes about each topic.

Extreme Programming

Extreme Programming (XP) is the most widely used agile methodology. XP shares the values espoused by the manifesto but goes further to specify simple set of practices. Where as many popular methodologies try to answer the question

“What are all of the practices I might ever need on a software project?” XP simply asks, “What is the simplest set of practices I could possibly need and what do I need to do to limit my needs to those practices?”

The significance of this difference cannot be understated. The most frequent critique of XP is that it is too simple to work beyond a narrow set of project criteria. Yet, the set of known successes with XP continues to stretch the breadth of projects applicable for XP. It would seem that the parameters that we use to determine what methods are appropriate for what project are still inadequate.

To many, XP is a set of twelve interdependent software development practices. Used together, these practices have had much success, initially with small teams, working on projects with high degrees of change. However, the more one works with XP, the more it is apparent that the practices don’t capture the essence of XP. As with the heavier methods, some teams have great success with the XP practices, some less so. Some larger teams have greater success than smaller ones.

Some teams with legacy code have success; others do not. There is something more than just the practices that enable teams to succeed with XP. This extra attribute of XP is the XP Values.

XP, originally described by Kent Beck, has emerged as one of the most popular and controversial agile methods. It’s a disciplined approach to delivering high-quality software quickly and continuously. It promotes high customer involvement, rapid feedback loops, continuous testing, continuous planning, and close teamwork to deliver working software at very frequent intervals, typically every 1-3 weeks.

The original XP recipe is based on four simple values – simplicity, communication, feedback, and courage – and twelve supporting practices:

  • Planning Game
  • Small Releases
  • Customer Acceptance Tests
  • Simple Design
  • Pair Programming
  • Test-Driven Development
  • Refactoring
  • Continuous Integration
  • Collective Code Ownership
  • Coding Standards
  • Metaphor
  • Sustainable Pace

In XP, the “Customer” works very closely with the development team to define and prioritize granular units of functionality referred to as "User Stories". The development team estimates, plans, and delivers the highest priority user stories in the form of working, tested software on an iteration by iteration basis.


References

http://www.oobeyagroup.com/images/ExtremeProgrammingAgileSoftwareDevelopmentLindstromJeffries.pdf

http://en.wikipedia.org/wiki/Agile_software_development

http://www.my-project-management-expert.com/the-advantages-and-disadvantages-of-agile-software-development.html


No comments:

Post a Comment