Monday, September 10, 2007

Extreme Programming:

Extreme Programming (or XP) is a software engineering methodology.

Extreme Programming is
 An attempt to reconcile humanity and productivity
 A mechanism for social change
 A path to improvement
 A style of development
 A software development discipline
The main aim of XP is to reduce the cost of change. In traditional system development methods the requirements for the system are determined at the beginning of the development project and often fixed from that point on. This means that the cost of changing the requirements at a later stage will be high.
XP sets out to reduce the cost of change by introducing basic values, principles and practices. By applying XP, a system development project should be more flexible with respect to changes.

XP values
Extreme Programming concentrates on five values.

 Communication
 Simplicity
 Feedback
 Courage
 Respect

XP gives all developers a shared view of the system which matches the view held by the users rather through documentation in the traditional method. To this end, Extreme Programming favors simple designs, common metaphors, collaboration of users and programmers, frequent verbal communication, and feedback.
XP encourages starting with the Simplest solution. XP focuses on designing and coding for the needs of today instead of those of future. XP is not investing in possible future requirements that might change before they become relevant. Coding and designing for uncertain future requirements implies the risk of spending resources on something that might not be needed.
Feedback is closely related to communication and simplicity. Flaws in the system are easily communicated by writing a unit test that proves a certain piece of code will break. The direct feedback from the system tells programmers to recode this part. Team can easily give the feedback to the user about new requirement due to simple system.
Several practices embody Courage. One is the commandment to always design and code for today and not for tomorrow. This is an effort to avoid getting bogged down in design and requiring a lot of effort to implement anything else. Courage enables developers to feel comfortable with refactoring their code when necessary.
The Respect Value manifests in several ways. In Extreme Programming, team members respect each other because programmers should never commit changes that break compilation, that make existing unit-tests fail, or that otherwise delay the work of their peers.
Adopting four earlier values led to respect gained from others in team. Nobody on the team should feel unappreciated or ignored. This ensures high level of motivation and encourages loyalty toward the team, and the goal of the project. This value is very dependent upon the other values, and is very much oriented toward people in a team.

No comments: