Archive

Posts Tagged ‘Software Development Approaches’

Extreme Programming (XP) – A software Engineering approach

July 19, 2009 2 comments

XP by Kent Beck

Hi guys today we are going to talk about XP.
Oh Sorry, this is not another Microsoft documentation on how Windows XP works.

By XP I mean Xtreme Programming. This terminology was introduced by Kent Beck a software engineer by profession and creator of Extreme Programming. XP is test driven Software Engineering approach.

Before getting into details of the Xtreme Programming let us understand what is the usual methodology used in most software projects:

1) Software Requirements and Specification

2) Creating a Design of Project

3) Coding (this is the where developers come into play)

4) Testing of project

5) Deployment

6) Maintenance and Rework

This 6 step process looks very cool but as we go on with this article i will tell you what are the pros and cons of this approach.

The above approach is called WaterFall Model in the world of Software Engineering. This is a very closed model. By closed I mean it does not have  space for flexibility.

I will demonstrate this by a real life scenario:

Suppose a very renowned Hotel like, Mariott  approaches an IT Company for developing a system for managing its Reservations for guest. The IT guys strictly follow the aforementioned steps. So after developing the design they start coding. The coding is done exactly as mentioned in the specifications and as per the design created by the team leads.

The developers are very happy with their work. Even the team leads are planning for a party. Everybody in the project team are happy with the way the project is progressing. So after having few sleepless nights and a few night outs at weekends, the developers finally finish their coding and the project is submitted to testers for testing.

The testers also sincerely perform the tests, trying to find out bugs in the project. All of sudden manager at  Mariott  calls the team lead and tells  him that he has come up with a new idea and would like to discuss about it.

There is a meeting between the manager and team lead and he tells him how excited he is about the new idea and that he wants to implement it in the Reservation System. The team lead does not want to discourage his client. But since the project is almost accomplished based on the previous specification he is now in a big trouble to adjust this new requirement in the project.

In this scenario, the project has reached testing phase which is the 4th Step and now there is a change in the requirement. All of sudden everybody in the company are shattered by this change.

They start cursing client and the team lead. But this situation would not have arisen if these people had used Iterative Development approach/ Xtreme Programming.

There were many projects failing because of continuously changing requirements of clients. Thanks to people like Kent Beck who gifted the idea of Xtreme Programming to the software Engineering world. So what is special about it. Hmm lets analyse it:

1) Use Stories (Specification by Client)

2) Testing

3) Coding

4) Design (Rework)

These are the steps followed in XP.

Hmm i know the immediate question would be how is this possible? How can Testing be done before coding? How can Design be at the end of SDLC (Software Development Life Cycle)? This is ridiculous.

I know the questions are quite obvious but I will elaborate more on how these technique is implemented in my next post. Hope you guys enjoyed this post. Please give your feedback and comments.

Bye for now and thank you for reading. Happy Coding.