What is “eXtreme Programming” ?
eXtreme Programming (XP) is a software development process as well as
A (software development) process defines who is doing what when and how.
This means, it provides principles,techniques and practices for the efficient,
predictable and repeatable production of software systems. Therefore, the process
serves as a template for creating projects.
XP is also a process framework because it can be (and most likely will be)
tailored to the specific needs of teams, projects, companies etc.
XP is also a lightweight methodology or what Alistair Cockburn calls a “Crystal
Methodology”. In short, methodologies of this family have high productivity and high tolerance.
Communication is usually strong with short paths, especially informal (not documented).
There the is only a small range of deliverables (artefacts), but these are delivered
frequently (releases). Processes of the Crystal family identify only a few roles and activities.
To date, XP has been applied to business problems only, e.g. projects with a
external customer that wants a specific product. The projects usually ranged from
6 to 15 months. XP was used by small teams ranging from two to twelve members
(and it is likely to be limited to teams of this size).
The four variables
XP regards a software development project as a system of four control “variables”:
Cost, Time, Quality and Scope.
Note that these are only the names of the variables which XP identifies, not the general
terms used Software Engineering.
- Cost: the amount of money to be spent. The resources (how many developers, equipment etc.)
available for the project are directly related to this variable.
- Time: determines when the system (release) should be done.
- Quality: the correctness of the system (as defined by the customer) and how well tested it will be.
- Scope: describes what and how much will be done (functionality).
Time is the central variable in XP. The fundamental dependencies between it and the other variables are
- Increasing quality can increase the time that is needed because of more testing.
Decreasing quality can reduce time to a certain degree (via reduction of the number of functional tests).
- Increasing cost (hiring more developers or providing better equipment) can mean less time but also the
opposite effect is possible – for instance hiring more developers late in the project can increase time because
of the overhead of communication. Decreasing cost increases time dramatically.
- Increasing scope means more time is needed because there is more work to do. Decreasing scope reduces
This is the core control relationship in XP.!!!!