Extreme Programming is a software engineering methodology,
the most prominent of several agile
software
development methodologies, prescribing a set of daily
stakeholder practices that embody and encourage particular XP
values. Proponents believe that exercising these
practicestraditional software engineering practices taken to
so-called "extreme" levelsleads to a development process that
is more responsive to customer needs ("agile") than
traditional methods, while creating software of better
quality.
Proponents of XP and agile methodologies in general regard
ongoing changes to requirements as a natural, inescapable and
desirable aspect of software
development projects; they believe that adaptability to
changing requirements at any point during the project life is
a more realistic and better approach than attempting to
define all requirements at the beginning of a project and
then expending effort to control changes to the
requirements.
Extreme Programming is
described as being:
The main aim of XP is to
reduce the cost of change. In traditional system development
methods (like SSADM) 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 (a common feature
of software engineering projects) 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.