0% found this document useful (0 votes)
143 views29 pages

Extreme Programming Overview

This document provides an overview of Extreme Programming (XP), an agile software development methodology. It describes the overall XP lifecycle and its key principles and practices, including pair programming, small releases, testing, refactoring, simplicity, and an on-site customer. The advantages of XP are listed as built-in quality, simplicity, empowering programmers and customers, and synergy between practices. Scalability and lack of documentation are cited as potential disadvantages. The document concludes that XP works best for small teams developing systems over 4-12 months and that it represents one end of the agile methodology spectrum.

Uploaded by

Mazino Amuno
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
143 views29 pages

Extreme Programming Overview

This document provides an overview of Extreme Programming (XP), an agile software development methodology. It describes the overall XP lifecycle and its key principles and practices, including pair programming, small releases, testing, refactoring, simplicity, and an on-site customer. The advantages of XP are listed as built-in quality, simplicity, empowering programmers and customers, and synergy between practices. Scalability and lack of documentation are cited as potential disadvantages. The document concludes that XP works best for small teams developing systems over 4-12 months and that it represents one end of the agile methodology spectrum.

Uploaded by

Mazino Amuno
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd

Extreme Programming

By: Amuno Mazino Student No.:20101126

Agenda
Whats eXtreme Programing

The Overall XP Lifecycle


XP Development XP 4 Principles XP 12 Practices XP Ground rules! Advantages and Disadvantages Conclusion

What is Extreme Programming?


An agile development methodology

Created by Kent Beck in mid 1996


Based on 4 Principles A set of 12 key Practices taken to their extremes A mindset for developers and customers

Agile 4 Principles
1.

Communication
XP encourages extreme communication between

the customer and programmer Put the customer on the development team and release working versions every 2 to 4 weeks
Programmers work in pairs:

Two people to

every one machine.


Pair members rotate regularly. All code is

owned by the team, not by individuals Pair programming also is excellent in matching up programmers of differing abilities e.g mentor inexperienced programmers Pair Programming provides constant code

Agile 4 Principles
2.

Feedback The faster change is identified, the faster it can be dealt with. When customers write new user stories, programmers estimate time required to deliver changes Unit Tests are written for most every piece of production code. Unit tests must run at 100% before any code is checked in Acceptance Tests are written with the customer to verify the application is doing what the customer needs it to do.

Agile 4 Principles
3.

Simplicity The customer is the ultimate driving force in XP Do what the customer needs, as simply as possible, and nothing else. All code should be refactored as often as possible Refactoring is a process of improving a code's structure without changing its functionality Refactoring produces highly decoupled objects which makes them easy to test, easy to use, more flexible, and therefore, more changeable.

Agile 4 Principles
4.

Courage

No more fragile code! The courage to communicate and accept feedback The courage to throw code away (prototypes) The courage to refactor the architecture of a system

The Overall XP Lifecycle

XP Development

XP 12 Practices
The XP practices we will emphasize are: Planning Game Testing Refactoring Simple Design Collective Ownership Metaphor Continuous Integration On-Site Customer Pair Programming Small Releases Coding Standards 40-Hour week 11

Planning Game
Each iteration begins with the Planning Game, an

12

informal process that sets the agenda for the iteration. The game starts with the customer defining requirements, or 'user stories'. Technical members work with the customer to normalize these stories into manageable chunks and break them down into specific tasks. Based on the time estimates given combined with the team's velocity (average number of stories/tasks the team has completed in past iterations), the user stories are prioritized by the

Testing
Testing is a crucial practice on an XP project XP succeeds by making a project resilient.

Resilience means accurate and frequent feedback In XP, there are two categories of tests: unit tests and acceptance tests.
A unit test is a piece of code that exercises one

aspect of a piece of production code. Unit tests should be small and fast
Acceptance tests are distinguished from unit tests

in a couple of ways.
First, they should test the system end-to-end
13

Second, the customer is involved in creating the

Refactoring
Refactoring is the process of improving the

design of code without changing the functionality. The code should be clean and readable. Any duplication should be consolidated. Refactorings should be done on an ongoing basis throughout development of the code. As soon as structure improvements make themselves known, they should be done. Unit tests provide the quick feedback required to steer a programmer back on track during a refactoring.

14

Simple Design
The main reason for this is to eliminate

15

unnecessary development time It's easy for the technical members of a team to overdo aspects of the project because we might need it. Here we come to a couple of XP's acronyms: YAGNI and DTSTTCPW. YAGNI stands for "You Aren't Going To Need It." Too often, the team attempts to build in functionality they might need in the future DTSTTCPW stands for "Do The Simplest Thing That Could Possibly Work."

Collective Ownership
Collective ownership refers to the code

Collective ownership allows anyone on the team

16

at any time to work with any piece of code. In an XP project, however, every piece of code is developed test- first, ensuring each piece of functionality is unit tested XP aims to avoid hang- ups caused by individual ownership by focusing ownership of the team on the whole One concern about collective ownership is ensuring each programmer is a positive contributor to the team and not riding on others'

Metaphor-(Imagine it!)
The project metaphor is, more or less, an informal

architecture of the system. The concepts can be literal or figurative, depending on the clarity of the actual system. A good metaphor can sometimes inspire improvements to the application itself. Since an XP project has little to no formal architecture documentation, the metaphor can be a useful tool to aid in communication among team members, especially between programmers and customer
17

Continuous Integration
To stay resilient, after writing new code that

passes all tests locally, programmers must then integrate their changes with the latest code base and ensure all the tests still pass It's recommended this task be done many times a day, usually on a dedicated integration machine

18

On-Site Customer
Every XP project has one or more individuals to

19

fulfill the customer role on the team. The customer's job is to write and prioritize stories (tasks from a user's perspective that the software must perform), assist with acceptance testing Be on hand to answer questions from the development team as they arise The project starts and ends with the customer! Having the customer be an active member of the team provides for frequent and cheap communication

Pair Programming
All programming on an XP team is done in pairs,

20

two people at one machine. One takes a turn 'driving' while the other actively participates verbally As ideas flow between the two, the keyboard can be swapped off as often as necessary to get the best code on the screen. Pair assignments are fluid and change throughout the course of a day. Loads of benefits in pair programming!

Small Releases
Small releases are a key part of generating

feedback and making a project resilient An XP project is a series of iterations, each lasting 2 to 4 weeks Each release may or may not be a production release, especially in the early days of a project. Small releases also help the technical members of the team give accurate estimates. Any time estimate beyond 2 to 4 weeks tend to be very imprecise
21

Coding standards
Coding standards make it simpler for your teammates (or yourself, weeks later) to read your code Java has some very well defined conventions you should learn Some conventions are strictly mechanical, such as formatting (spacing and indentation)
Eclipse can, upon request, correct your formatting for you

Some conventions require human intelligence Use meaningful names, with the correct part of speech Use adequate comments, written for the correct audience Prefer clearly written code to clever code

22

40-Hour week
XP promotes a well rested team

Its founders do not believe in the extended

overtimes, which creates fatigue and defeats concentration Tired workers make mistakes and their desire to work decreases. Getting the best from your worker does not need overtime!

23

Successful XP Projects
Very rapid development

Exceptional responsiveness to user and customer

change requests High customer satisfaction Amazingly low error rates System begins returning value to customers very early in the process

XP Ground rules!
Extreme Programming (XP) is a lightweight process
Small team (2 to 12) Continuous access to customers OO design and code (Smalltalk, Java) Change management system (code and tests) The system is always working (growing functionality over time) Overall development cycle between 4 and 12 months New release to customer every 2-3 months Internal iterations every two weeks Not for life-critical systems (heart monitor, nuclear power plant,

avionics systems, etc.)

XP Advantages
Built-In Quality

Overall Simplicity
Programmer Power Customer Power Synergy Between Practices

26

XP Disadvantages
Informal, little, or no documentation

Scalability
Contract Issues Misconception on the cost of change Tailoring

27

Conclusion
People tend to love XP or ridicule it
If you dont have a specification, your program

cant be wrong!

In reality, its not a binary choice. XP is at one

extreme end of the process spectrum. There is much interest these days in so-called agile methodologies which generally are much closer to XP than to traditional heavyweight approaches.

28

Q&A

You might also like