Professional Documents
Culture Documents
Lecture14 XP
Lecture14 XP
Lecture14 XP
Omkarendra Tiwari
Introduction
An iterative approach for software development
Emphasizes on
Testing (via TDD)
Simple Design (via Refactoring)
Real time code review (via pair programming)
Customer collaboration (via XP role, the customer)
Frequent integrations (via continuous integration)
Communication
It is important for creating a sense of team and effective cooperation
Face-to-face communication daily
Team work: work together from requirements to implementation
Simplicity
“What is the simplest thing that could work”
Do only what is needed, no more
This way value is maximized against the investment
Simple steps towards a complete/general solutions
Feedback
Opinions about an idea, yours or your teammates
How the code looks when you implement the idea
How the idea works when it is deployed
Aim for delivering working software; maximizes the chance for useful feedbacks
Demonstrate software early; listen to changes required; and incorporate them
Discuss the project; identify improvements in the process and implement them
Courage
Everyone gives and feels the value they deserve
Respect is shown by developer/customer to customer/developer for expertise
Management respects the authority of developers in regard of their work
Respect
Five Rules
Planning
User stories are written
Release planning creates the release schedule
Make frequent releases
Decide Iterations and Iteration planning
Managing
Give the team a dedicated open-workspace: Open area, center table, and
white board
Set a sustainable pace: Accept the velocity and take iterations seriously
Stand up meetings: Done, to be done and causes for delay
Project velocity: Sum of estimates of user stories
Move people around: Prevent knowledge loss
Fix XP: Have retrospective meetings to identify what is working and what is
not
Designing
Simplicity
System metaphor: Naming various elements of the programming process that
helps others (customer and developer) understand and contribute to design
quickly
CRC cards: For each object
spike solutions: Answers to tough technical or design problems
No functionality is added early
Refactor
Coding
Customer always available
Code must be written to agreed standards
Code the unit test first
Integrate often
Set up a dedicated Integration Server: For colocated teams; gives feeling of
sharing
Testing
All code must have unit tests
All code must pass unit tests before the release
A new test is created when bug is found
Acceptance test are run often and score is published
Four Activities
Designing
Coding
Testing
Listening
Four Roles
The customer
The Developer
The Tracker
The Coach
Key terminologies
The customer A business representative who is an integral part of the XP
team and would be working close with the team developing the software.
Key terminologies
Release Planning The customer presents desired features and developers
estimate their completion. Once the estimation is done and features are
identified based on their urgency, the customer lays out a project plan. Since,
such plans can be imprecise in early estimation, XP consistently revise them.
Iteration Planning Iteration is of two weeks. At the end of the Iteration the
team is required to produce a working version of software that is usable.
Features to be developed within the Iteration are provided by the customer
and cost is estimated by the developers. Based on work accomplished in
previous iterations, tasks for next iteration are selected.
Highly Recommended
Extreme Programming: A gentle introduction by Don Wells
http://www.extremeprogramming.org/
What is Extreme Programming by Ron Jeffries
https://ronjeffries.com/xprog/what-is-extreme-programming/
Essential XP: Card, Conversation, Confirmation
https://ronjeffries.com/xprog/articles/expcardconversationconfirmation/