0% found this document useful (0 votes)
2 views23 pages

Extreme Programming

Extreme Programming (XP) is a software development methodology aimed at enhancing software quality and adaptability to changing customer needs through short development cycles and continuous customer feedback. It emphasizes core values such as communication, simplicity, feedback, courage, and respect, along with specific practices like frequent releases, unit testing, and pair programming. XP effectively addresses common software development challenges, including slipped schedules and production defects, by fostering team collaboration and maintaining a focus on customer involvement.

Uploaded by

Siddharth Manna
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
2 views23 pages

Extreme Programming

Extreme Programming (XP) is a software development methodology aimed at enhancing software quality and adaptability to changing customer needs through short development cycles and continuous customer feedback. It emphasizes core values such as communication, simplicity, feedback, courage, and respect, along with specific practices like frequent releases, unit testing, and pair programming. XP effectively addresses common software development challenges, including slipped schedules and production defects, by fostering team collaboration and maintaining a focus on customer involvement.

Uploaded by

Siddharth Manna
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

Extreme Programming (XP)

• Extreme programming (XP) is a software


development methodology.

• XP is intended to improve software quality and


responsiveness to changing customer requirements.

• It advocates frequent "releases" in short


development cycles, to improve productivity.

• Introduce checkpoints at which new customer


requirements can be adopted.
✓ XP is a lightweight, efficient, low-risk, flexible,
predictable, scientific, and fun way to develop a
software.

✓ eXtreme Programming (XP) was conceived and


developed to address the specific needs of
software development by small teams in the face
of vague and changing requirements.

✓ Extreme Programming provides specific core


practices where- 1. Each practice is simple and self-
complete. 2. Combination of practices produces
more complex and emergent behavior.
Embrace Change
✓ Emphasis on continuous feedback from the
customer
✓ Short iterations
✓ Design and redesign
✓ Coding and testing frequently
✓ Eliminating defects early, thus reducing costs
✓ Keeping the customer involved throughout the
development
✓ Delivering working product to the customer
Why is it called “Extreme?”
• Extreme Programming takes the effective
principles and practices to extreme levels.
• Code reviews are effective as the code is
reviewed all the time.
• Testing is effective as there is continuous
regression and testing.
• Design is effective as everybody needs to do
refactoring daily.
• Integration testing is important as integrate
and test several times a day.
Extreme Programming is successful due
to:
• Rapid development.
• Immediate responsiveness to the customer’s
changing requirements.
• Focus on low defect rates.
• System returning constant and consistent value to
the customer.
• High customer satisfaction.
• Reduced costs.
• Team cohesion and employee satisfaction.
Extreme Programming solves the following problems often faced in the
software development projects-

✓ Slipped schedules: Short and achievable development cycles ensure timely


deliveries.
✓ Cancelled projects: Focus on continuous customer involvement ensures
transparency with the customer and immediate resolution of any issues.
✓ Costs incurred in changes: Extensive and ongoing testing makes sure the
changes do not break the existing functionality. A running working system
always ensures sufficient time for accommodating changes such that the
current operations are not affected.
✓ Production and post-delivery defects: Emphasis is on the unit tests to detect
and fix the defects early.
✓ Misunderstanding the business and/or domain: Making the customer a part
of the team ensures constant communication and clarifications.
✓ Business changes: Changes are considered to be inevitable and are
accommodated at any point of time.
✓ Staff turnover: Intensive team collaboration ensures enthusiasm and good
will. Cohesion of multi-disciplines fosters the team spirit.
Extreme Programming – Values and Principles

Extreme Programming (XP) based on the five values:

• Communication
• Simplicity
• Feedback
• Courage
• Respect
Communication
• Communication plays a major role in the success of a project.
Problems with projects often arise due to lack of communication.
• Extreme Programming emphasizes continuous and constant
communication among the team members, managers and the
customer.
• The Extreme Programming practices, such as unit testing, pair
programming, simple designs, common metaphors, collective
ownership and customer feedback focus on the value of
communication.
• Face-to-Face communication is preferred and is achieved with pair
programming and a customer representative is always onsite.
Simplicity
• Extreme Programming believes in ‘it is better to do
a simple thing today and pay a little more
tomorrow to change it’ than ‘to do a more
complicated thing today that may never be used
anyway’.

• The simpler your system is, the less you have to


communicate about the fewer developers that you
require. This leads to better communication.
Feedback
• Every iteration commitment is taken seriously by delivering a working
software. The software is delivered early to the customer and a
feedback is taken so that necessary changes can be made if needed.
Concrete feedback about the current state of the system is priceless.
The value of the feedback is a continuously running system that
delivers information about itself in a reliable way.

• Extreme Programming the feedback-


Works as a catalyst for change
Indicates progress
Gives confidence to the developers that they are on the right track
Courage
• Extreme Programming provides courage to the developers in
the following way-

To focus on only what is required


To communicate and accept feedback
To tell the truth about progress and estimates
To refactor the code
To adapt to changes whenever they happen
To throw the code away (prototypes)

• This is possible as no one is working alone and the coach


guides the team continuously.
Respect
Respect is a deep value, In Extreme Programming,

• Everyone respects each other as a valued team member.


• Everyone contributes value such as enthusiasm.

• Developers respect the expertise of the customers and vice


versa.

• Management respects the right of the developers to accept


the responsibility and receive authority over their own work.
Principles

The basic principles are derived from the values so


that the development practices follows these
principles.
The fundamental principles of Extreme Programming
are-
• Rapid feedback
• Assume simplicity
• Incremental change
• Embracing change
• Quality work
Concept of XP
Unfinished Features

Most important features

Iterative Planning

Working software Honest Plans

Team empowerment

Daily communication
RULES
The 29 rules of Extreme Programming are quite
simple. The are published on XP website
([Link])

• Planning
• Managing
• Designing
• Coding
• Testing
Planning
• User stories are written by the customer to represent
their requirements and used by developers to estimate
their work.
• Release planning involves turning the user stories and
the associated work estimates into the release scheme.
• Make frequent small release by producing working
software every iteration; the customer decides which
will be released.
• Divide the project into equal sized iterations; this assists
velocity tracking and control.
• Each iteration begins with iteration planning which turns
the user stories into a list of tasks for the developers.
Managing
• Give the team a dedicated, open work space; this will aid
communication and encourage people to work together.
• Set a sustainable pace by using the project velocity to make
future estimates and schedule more accurate.
• Start each day with a sand up meeting; this gives every team
member the chance of communication.
• Measure the project velocity at the end of each iteration by
adding up the amount of work in the completed user stories.
• Move people around within the team to spread knowledge
and provide cross training skills.
• When XP breaks, fix it; follow the rules to start with but be
prepared to change the process if the team decide to do so.
Designing
• Simplicity: a simple design is always faster and easier to
implement than a complex one.
• Choose a system metaphor, it is much easier to explain the
project using a metaphor than to produce a vast document.
• Use CRC (Class, Responsibilities and Collaboration) cards for
design sessions; these represent the objects in the system.
• Create spike solutions to reduce risks in dealing with problem.
• No functionality is added early; never build anything into the
system before it is needed.
• Refactor whenever and where ever possible by removing
unwanted code.
Coding
• The customer is always available; they are not only
there to help the development team but to be part
of it.
• Code must be written to agreed standards, this will
improve quality and aid refactoring.
• Code the unit test first; this will help the
programmer understand the requirement and
develop the code.
• All production code is pair programmed.
• integrate often

You might also like