SlideShare ist ein Scribd-Unternehmen logo
1 von 26
What is
XP
What is XP?
● XP is a philosophy of software development
based on well laid out values, principles and
practices.
● Goal of XP is outstanding software
development at lower cost, with fewer defects,
high productivity and much higher return on
investment.
Activities
XP describes four basic activities that are performed within the software
development process.
● Coding
● The customer is always available, Code the Unit test first, Only one pair integrates
code at a time, Leave Optimization till last, No Overtime
● Testing
● Unit Test
● Acceptance Test
● Listening
● Programmers must listen to what the customers need the system to do, what
"business logic" is needed.
● Designing
● Good design will avoid lots of dependencies within a system.
History
●
Short history: KentBeck found himself dictating practice on a project for which he had assumed some
personal risk. Unsure of which to emphasize more, he chose to "turn all the knobs to ten."
●
More history: Kent drew on the experiences of many when he chose which knobs to turn. And the knobs
alone only set the course, many more made it work. Finally the technology, or at least the ideas motivating
the technology, played an important role too. At risk of writing myself too firmly into XP's history, I begin this
page with a summary of events. -- WardCunningham
● Extreme Programming was created by Kent Beck during his work on the Chrysler Comprehensive
Compensation System (C3) payroll project.[6] Beck became the C3 project leader in March 1996 and
began to refine the development method used in the project and wrote a book on the method (in October
1999, Extreme Programming Explained was published).[6] Chrysler cancelled the C3 project in February
2000, after the company was acquired by Daimler-Benz.[7]
● Although extreme programming itself is relatively new, many of its practices have been around for some
time; the methodology, after all, takes "best practices" to extreme levels. For example, the "practice of test-
first development, planning and writing tests before each micro-increment" was used as early as NASA's
Project Mercury, in the early 1960s (Larman 2003). Refactoring, modularity, bottom-up and incremental
design were described by Leo Brodie in his book published in 1984.[8]
Core
● Values
bring purpose to practices.
● Practices
are evidence of values.
● Principles
are domain specific guidelines for life.
Five Core Values
● Communication
● Customer – Developer, Developer – Developer
● Simplicity
● Start with the simplest solution. Extra functionality can then be added
later.
● Feedback
● From the system, the customer and the team
● Courage
● Refactoring
● Persistence
● Respect
● Respect other team members' work
Principles
● Humanity
People, What do people need to become good
developers?
● Economics
Every action should have business value.
● Mutual Benefit
Most important and most difficult to adhere to.
Extensive internal documentation.
● Self Similarity
You can copy structure of one solution to a new
context. Theme, story, tests.
Principles
● Improvement
In software development “perfect” is a verb not
adjective.
● Diversity
Teams need diversity.
● Reflection
How and Why of working.
● Flow
Steady flow of valuable software.
● Opportunities
Problems are opportunities.
Principles
● Redundancy
Do not remove redundancy that serves a valid purpose.
● Failure
Is failure a waste?
● Quality
Cost of quality? Quality ~ Productivity
● Baby Steps
Rapid small steps = leap.
● Accepted Responsibility
Responsibility cannot be assigned.
Activities and Practices
● Planning
● Planning Game
● Small Release
● Stories
● Designing
● Simple Design
● Refactoring
● System Metaphor
● Coding
● Pair Programming
● Continuous Integration
● Onsite Customer
● Testing
● Test First
● Acceptance Test
● Automation
● Team
● Informative workspace
● Collective Ownership
● Coding Standards
● Sustainable Pace
Primary Practices
●
Sit Together
●
Whole Team
●
Informative workspace
●
Sustainable Pace
●
Energized work
●
40-Hours Work Week
●
Pair Programming
●
Stories
●
Weekly Cycle
●
Quarterly Cycle
●
Slack
● 10 minute build
● Continuous Integration
● Test First Programming
● Incremental Design
● Planning Game
● Small Release
● System Metaphor
● Simple Design
● Refactoring
● Coding Standards
40-hour week
● Kent Beck says that he wants to be "...fresh and
eager every morning, and tired and satisfied every
night."
● The exact number of hours isn't important - the
principle is. Burning the oil for long periods kills
performance.
● Tired developers make more mistakes, which will
slow you down more in the long run than keeping a
"normal" schedule will.
● Even if developers could function well for longer
periods.
On-site customer
● An XP team needs to have a customer available on site to
clarify stories and to make critical business decisions.
● Developers aren't allowed to do that alone. It eliminates wait
for decisions.
● The idea is that communicating face to face minimizes the
chances of misunderstanding, unlike writing all the
requirements down in a static document.
● We have found that having the customer on site is the best
possible situation. Atleast the customer must be available
whenever needed to answer questions and to provide.
System metaphor (Imagine)
● A sort of map that lets developers see where
new pieces will fit.
● The metaphor gives the team a consistent
picture they can use to describe the way the
existing system works, where new parts fit, and
what form they should take.
● It is important to remember that having
everyone understand how the system fits
together.
The planning game
The main idea behind this practice is to make a rough plan quickly and refine it
as things become clearer.
● The development team determines:
● Estimates of how long it will take to develop a module
● Cost implications of using various technology options
● Team organization
●
The "risk" of each module
● Order of module development within an iteration (doing risky items first can ease risk)
● The customer determines:
● Scope
●
Release dates
● Priority (which features get developed first, based on business value)
Planning happens often. This provides frequent opportunity for either the
customer or the developers to adjust the plan as they learn new things.
Small releases
● Releases should be as small as possible while
still delivering enough business value to make
them worthwhile.
● This provides value to the customer as early as
possible.
● Small releases also will provide concrete
feedback to developers on what meets
customer needs and what doesn't. The team
then can include these lessons in its planning
for the next release.
Pair programming
● In XP, pairs of developers write all production code. This approach may sound
inefficient.
● As Martin Fowler says, "When people say that pair programming reduces
productivity, I answer, ‘that would be true if the most time-consuming part of
programming was typing.’ "
● Many benefits:
● All design decisions involve at least two brains.
● At least two people are familiar with every part of the system.
● There is less chance of both people neglecting tests.
● Changing pairs spreads knowledge throughout the team.
● Code is always being reviewed by at least one person.
Research also is showing that programming in pairs is actually more efficient
than programming alone
Collective code ownership
● Any person on the team should have the authority to
make changes to the code to improve it.
● Everybody owns all the code, meaning everybody is
responsible for it.
● Saying that everybody owns all the code isn't the
same as saying that nobody owns it.
● XP says, "You break it, you fix it." We have unit tests
that must run before and after each integration. If you
break something, it's your responsibility to fix it.
Simple design
XP says design should not be done all at once. We always try
to use the simplest design that could possibly work at any point,
changing it as we go to reflect emerging reality.
● What is the simplest design that could possibly work?
● Runs all the tests
● Contains no duplicate code
● States the programmers' intent for all code clearly
● Contains the fewest possible classes and methods
● Don't include extra features that aren't being used. We call such
things YAGNI, which stands for "You Aren't Going to Need It."
Refactoring
● Refactoring is the technique of improving code
without changing functionality.
● Developers try to make easier, if changing
existing code would make implementing the
new feature.
● Refactoring lets you incorporate that learning
into your code without breaking the tests. That
means it will survive longer.
Coding standard
● Without coding standards, it is harder to
refactor code, harder to switch pairs as often as
you should, and harder to go fast.
● The goal should be that no one on the team
can recognize who wrote which piece of code.
Make sure your code communicates clearly.
● Don't spend too much time. Create the simplest
standard that could possibly work.
Testing
a. Unit testing
● Developers write the unit tests as they write code.
● Unit tests tell developers whether the system "works" at any
point in time.
● Developers write unit tests for every method that could possibly
break, before they write the code for those methods. Then they
write just enough code to get the test to pass.
● A developer cannot check code into the source code repository
until all the unit tests pass. Unit tests give developers
confidence that their code works. It leaves a trail for other
developers to understand the original developer's intent.
● Unit tests also give developers courage to refactor the code,
because a test failure tells the developer immediately if
something's broken.
● Unit tests should be automated and give a clear pass/fail result.
Testing
b. Acceptance testing
● The customer writes acceptance tests after they define module.
● Acceptance tests tell the team whether the system does what
users want it to do.
● Customers are responsible for making sure each story has
acceptance tests to validate it. The customer can write the tests
himself or recruit other members of his organization to write
them, or combine the two approaches.
● Acceptance tests should ensure developers are not breaking
any existing features as they implement new ones.
● Customers will need some help from the development team to
write acceptance tests. Developed a reusable automated
acceptance test framework. The framework converts the input
to an XML file, runs the tests in the file, and spits out "pass" or
"fail" for each.
Continuous integration
● Frequent code integration helps you to avoid
integration nightmares.
● XP teams integrate their code several times a day, after
they get all the unit tests for the system to run.
● Traditional approaches tend to work like this: code a
lot, do a big-bang integration, then spend a significant
amount of time fixing the problems.
● When you integrate frequently, the cause of failure for
any particular integration is more obvious.
● Fixing is easier, takes less time, and keeps the team
moving at maximum speed.
Corollary Practices
● Real Customer Involvement
No customer or proxy customer are not as
effective
● Incremental Deployment
Build little pieces and deploy it!
● Team Continuity
Do not shuffle the team too often.
● Shrinking Teams
● Root Cause Analysis
5 Why's
Corollary Practices
● Shared Code
Collective Code Ownership
● Code and Tests
The only artifacts
● Single code base
Avoid multiple streams
● Daily Deployment
● Negotiated Scope Contract
Ongoing negotiation on precise scope.

Weitere ähnliche Inhalte

Was ist angesagt?

Introduction To Extreme Programming
Introduction To Extreme ProgrammingIntroduction To Extreme Programming
Introduction To Extreme ProgrammingJoe Drumgoole
 
Xp exterme-programming-model
Xp exterme-programming-modelXp exterme-programming-model
Xp exterme-programming-modelAli MasudianPour
 
Audrys Kažukauskas - Introduction into Extreme Programming
Audrys Kažukauskas - Introduction into Extreme ProgrammingAudrys Kažukauskas - Introduction into Extreme Programming
Audrys Kažukauskas - Introduction into Extreme ProgrammingAgile Lietuva
 
Agile Software Development with XP
Agile Software Development with XPAgile Software Development with XP
Agile Software Development with XPVashira Ravipanich
 
Test Driven Development by Denis Lutz
Test Driven Development by Denis LutzTest Driven Development by Denis Lutz
Test Driven Development by Denis Lutzjazzman1980
 
eXtreme programming (XP) - An Overview
eXtreme programming (XP) - An OvervieweXtreme programming (XP) - An Overview
eXtreme programming (XP) - An OverviewGurtej Pal Singh
 
Extreme Programming (XP) for Dummies
Extreme Programming (XP) for DummiesExtreme Programming (XP) for Dummies
Extreme Programming (XP) for DummiesJon McNestrie
 
XP Explained
XP ExplainedXP Explained
XP Explainedvineet
 
Test driven development
Test driven developmentTest driven development
Test driven developmentShalabh Saxena
 
Extreme programming
Extreme programmingExtreme programming
Extreme programmingaaina_katyal
 
Extreme & pair programming Slides ppt
Extreme & pair programming Slides pptExtreme & pair programming Slides ppt
Extreme & pair programming Slides pptMr SMAK
 
Agile and test driven development
Agile and test driven developmentAgile and test driven development
Agile and test driven developmentAhmed El-Deeb
 
Introduction to Extreme Programming
Introduction to Extreme ProgrammingIntroduction to Extreme Programming
Introduction to Extreme ProgrammingNaresh Jain
 
optimizing code in compilers using parallel genetic algorithm
optimizing code in compilers using parallel genetic algorithm optimizing code in compilers using parallel genetic algorithm
optimizing code in compilers using parallel genetic algorithm Fatemeh Karimi
 

Was ist angesagt? (20)

Introduction To Extreme Programming
Introduction To Extreme ProgrammingIntroduction To Extreme Programming
Introduction To Extreme Programming
 
Xp exterme-programming-model
Xp exterme-programming-modelXp exterme-programming-model
Xp exterme-programming-model
 
Audrys Kažukauskas - Introduction into Extreme Programming
Audrys Kažukauskas - Introduction into Extreme ProgrammingAudrys Kažukauskas - Introduction into Extreme Programming
Audrys Kažukauskas - Introduction into Extreme Programming
 
Extreme programming
Extreme programmingExtreme programming
Extreme programming
 
Agile Software Development with XP
Agile Software Development with XPAgile Software Development with XP
Agile Software Development with XP
 
XP In 10 slides
XP In 10 slidesXP In 10 slides
XP In 10 slides
 
extreme programming
extreme programmingextreme programming
extreme programming
 
Test Driven Development by Denis Lutz
Test Driven Development by Denis LutzTest Driven Development by Denis Lutz
Test Driven Development by Denis Lutz
 
eXtreme programming (XP) - An Overview
eXtreme programming (XP) - An OvervieweXtreme programming (XP) - An Overview
eXtreme programming (XP) - An Overview
 
Extreme Programming (XP) for Dummies
Extreme Programming (XP) for DummiesExtreme Programming (XP) for Dummies
Extreme Programming (XP) for Dummies
 
XP Explained
XP ExplainedXP Explained
XP Explained
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven Development
 
Test driven development
Test driven developmentTest driven development
Test driven development
 
Xtreme Programming
Xtreme ProgrammingXtreme Programming
Xtreme Programming
 
Extreme programming
Extreme programmingExtreme programming
Extreme programming
 
Introduction to Software Engineering
Introduction to Software EngineeringIntroduction to Software Engineering
Introduction to Software Engineering
 
Extreme & pair programming Slides ppt
Extreme & pair programming Slides pptExtreme & pair programming Slides ppt
Extreme & pair programming Slides ppt
 
Agile and test driven development
Agile and test driven developmentAgile and test driven development
Agile and test driven development
 
Introduction to Extreme Programming
Introduction to Extreme ProgrammingIntroduction to Extreme Programming
Introduction to Extreme Programming
 
optimizing code in compilers using parallel genetic algorithm
optimizing code in compilers using parallel genetic algorithm optimizing code in compilers using parallel genetic algorithm
optimizing code in compilers using parallel genetic algorithm
 

Andere mochten auch

Andere mochten auch (20)

Simplifying effort estimation based on use case points
Simplifying effort estimation based on use case pointsSimplifying effort estimation based on use case points
Simplifying effort estimation based on use case points
 
Extreme Programming
Extreme ProgrammingExtreme Programming
Extreme Programming
 
use case point estimation
use case point estimationuse case point estimation
use case point estimation
 
Cmm
CmmCmm
Cmm
 
Guide to Software Estimation
Guide to Software EstimationGuide to Software Estimation
Guide to Software Estimation
 
Case tools
Case toolsCase tools
Case tools
 
The art of project estimation
The art of project estimationThe art of project estimation
The art of project estimation
 
eXtreme Programming (XP)
eXtreme Programming (XP)eXtreme Programming (XP)
eXtreme Programming (XP)
 
Agile Methodologies
Agile MethodologiesAgile Methodologies
Agile Methodologies
 
Unified process,agile process,process assesment ppt
Unified process,agile process,process assesment pptUnified process,agile process,process assesment ppt
Unified process,agile process,process assesment ppt
 
Extreme programming
Extreme programmingExtreme programming
Extreme programming
 
Extreme programming (xp) | David Tzemach
Extreme programming (xp) | David TzemachExtreme programming (xp) | David Tzemach
Extreme programming (xp) | David Tzemach
 
Line of Code (LOC) Matric and Function Point Matric
Line of Code (LOC) Matric and Function Point MatricLine of Code (LOC) Matric and Function Point Matric
Line of Code (LOC) Matric and Function Point Matric
 
Staffing in management
Staffing in managementStaffing in management
Staffing in management
 
Unified process
Unified processUnified process
Unified process
 
Case tools
Case toolsCase tools
Case tools
 
Software configuration management
Software configuration managementSoftware configuration management
Software configuration management
 
Case tools
Case toolsCase tools
Case tools
 
Capability maturity model
Capability maturity modelCapability maturity model
Capability maturity model
 
Agile methodology
Agile methodologyAgile methodology
Agile methodology
 

Ähnlich wie What is xp

Extreme Programming 1st.pdf
Extreme Programming 1st.pdfExtreme Programming 1st.pdf
Extreme Programming 1st.pdfBassam Kanber
 
Twelve practices of XP_Se lect5 btech
Twelve practices of XP_Se lect5 btechTwelve practices of XP_Se lect5 btech
Twelve practices of XP_Se lect5 btechIIITA
 
Chap 3 - Agile - XP.ppt
Chap 3 - Agile - XP.pptChap 3 - Agile - XP.ppt
Chap 3 - Agile - XP.pptDurga Prasad
 
Extreme programming
Extreme programmingExtreme programming
Extreme programmingAYUSH JAIN
 
Services, tools & practices for a software house
Services, tools & practices for a software houseServices, tools & practices for a software house
Services, tools & practices for a software houseParis Apostolopoulos
 
Agile_SDLC_Node.js@Paypal_ppt
Agile_SDLC_Node.js@Paypal_pptAgile_SDLC_Node.js@Paypal_ppt
Agile_SDLC_Node.js@Paypal_pptHitesh Kumar
 
Flavours of agile software engineering
Flavours of agile software engineeringFlavours of agile software engineering
Flavours of agile software engineeringZeeshan Masood S
 
Flavours of agile software engineering
Flavours of agile software engineeringFlavours of agile software engineering
Flavours of agile software engineeringZeeshan Masood S
 
Agile Methodologies And Extreme Programming
Agile Methodologies And Extreme ProgrammingAgile Methodologies And Extreme Programming
Agile Methodologies And Extreme ProgrammingUtkarsh Khare
 
Agile Values, Principles and Practices
Agile Values, Principles and PracticesAgile Values, Principles and Practices
Agile Values, Principles and Practicesjackcrews
 
Agile Methodologies And Extreme Programming - Svetlin Nakov
Agile Methodologies And Extreme Programming - Svetlin NakovAgile Methodologies And Extreme Programming - Svetlin Nakov
Agile Methodologies And Extreme Programming - Svetlin NakovSvetlin Nakov
 
Extreme Programming (XP): Revisted
Extreme Programming (XP): RevistedExtreme Programming (XP): Revisted
Extreme Programming (XP): RevistedMike Harris
 
Software Project management
Software Project managementSoftware Project management
Software Project managementsameer farooq
 
Scrum and-xp-from-the-trenches 05 release planning & scrum with xp
Scrum and-xp-from-the-trenches 05 release planning & scrum with xpScrum and-xp-from-the-trenches 05 release planning & scrum with xp
Scrum and-xp-from-the-trenches 05 release planning & scrum with xpHossam Hassan
 
The Extreme Programming (XP) Model
The Extreme Programming (XP) ModelThe Extreme Programming (XP) Model
The Extreme Programming (XP) ModelDamian T. Gordon
 
unit-1 agile development.pptx
unit-1 agile development.pptxunit-1 agile development.pptx
unit-1 agile development.pptxDhruvSuthar24
 

Ähnlich wie What is xp (20)

Extreme Programming 1st.pdf
Extreme Programming 1st.pdfExtreme Programming 1st.pdf
Extreme Programming 1st.pdf
 
Twelve practices of XP_Se lect5 btech
Twelve practices of XP_Se lect5 btechTwelve practices of XP_Se lect5 btech
Twelve practices of XP_Se lect5 btech
 
Extreme programming
Extreme programmingExtreme programming
Extreme programming
 
Chap 3 - Agile - XP.ppt
Chap 3 - Agile - XP.pptChap 3 - Agile - XP.ppt
Chap 3 - Agile - XP.ppt
 
Agile
AgileAgile
Agile
 
Extreme programming
Extreme programmingExtreme programming
Extreme programming
 
Introduction to Agile
Introduction to AgileIntroduction to Agile
Introduction to Agile
 
Services, tools & practices for a software house
Services, tools & practices for a software houseServices, tools & practices for a software house
Services, tools & practices for a software house
 
Agile_SDLC_Node.js@Paypal_ppt
Agile_SDLC_Node.js@Paypal_pptAgile_SDLC_Node.js@Paypal_ppt
Agile_SDLC_Node.js@Paypal_ppt
 
Usable Software Design
Usable Software DesignUsable Software Design
Usable Software Design
 
Flavours of agile software engineering
Flavours of agile software engineeringFlavours of agile software engineering
Flavours of agile software engineering
 
Flavours of agile software engineering
Flavours of agile software engineeringFlavours of agile software engineering
Flavours of agile software engineering
 
Agile Methodologies And Extreme Programming
Agile Methodologies And Extreme ProgrammingAgile Methodologies And Extreme Programming
Agile Methodologies And Extreme Programming
 
Agile Values, Principles and Practices
Agile Values, Principles and PracticesAgile Values, Principles and Practices
Agile Values, Principles and Practices
 
Agile Methodologies And Extreme Programming - Svetlin Nakov
Agile Methodologies And Extreme Programming - Svetlin NakovAgile Methodologies And Extreme Programming - Svetlin Nakov
Agile Methodologies And Extreme Programming - Svetlin Nakov
 
Extreme Programming (XP): Revisted
Extreme Programming (XP): RevistedExtreme Programming (XP): Revisted
Extreme Programming (XP): Revisted
 
Software Project management
Software Project managementSoftware Project management
Software Project management
 
Scrum and-xp-from-the-trenches 05 release planning & scrum with xp
Scrum and-xp-from-the-trenches 05 release planning & scrum with xpScrum and-xp-from-the-trenches 05 release planning & scrum with xp
Scrum and-xp-from-the-trenches 05 release planning & scrum with xp
 
The Extreme Programming (XP) Model
The Extreme Programming (XP) ModelThe Extreme Programming (XP) Model
The Extreme Programming (XP) Model
 
unit-1 agile development.pptx
unit-1 agile development.pptxunit-1 agile development.pptx
unit-1 agile development.pptx
 

Mehr von Simone Federici

Mehr von Simone Federici (17)

Fabric Python Lib
Fabric Python LibFabric Python Lib
Fabric Python Lib
 
DevOps with Fabric
DevOps with FabricDevOps with Fabric
DevOps with Fabric
 
What is kanban
What is kanbanWhat is kanban
What is kanban
 
Django productivity tips and tricks
Django productivity tips and tricksDjango productivity tips and tricks
Django productivity tips and tricks
 
Python enterprise vento di liberta
Python enterprise vento di libertaPython enterprise vento di liberta
Python enterprise vento di liberta
 
Java o non java
Java o non javaJava o non java
Java o non java
 
Django in enterprise world
Django in enterprise worldDjango in enterprise world
Django in enterprise world
 
Anti pattern se lo conosci lo eviti
Anti pattern se lo conosci lo evitiAnti pattern se lo conosci lo eviti
Anti pattern se lo conosci lo eviti
 
Java VS Python
Java VS PythonJava VS Python
Java VS Python
 
Django per non credenti
Django per non credentiDjango per non credenti
Django per non credenti
 
Opensource Aziende
Opensource AziendeOpensource Aziende
Opensource Aziende
 
Maven Eclipse
Maven EclipseMaven Eclipse
Maven Eclipse
 
Terracotta Torino Javaday
Terracotta Torino JavadayTerracotta Torino Javaday
Terracotta Torino Javaday
 
Jipday Portletjsr168
Jipday Portletjsr168Jipday Portletjsr168
Jipday Portletjsr168
 
Spring20 Javaday
Spring20 JavadaySpring20 Javaday
Spring20 Javaday
 
Terracotta Springmeeting
Terracotta SpringmeetingTerracotta Springmeeting
Terracotta Springmeeting
 
Javaday Performance 2009
Javaday Performance 2009Javaday Performance 2009
Javaday Performance 2009
 

Kürzlich hochgeladen

chapter 5.pptx: drainage and irrigation engineering
chapter 5.pptx: drainage and irrigation engineeringchapter 5.pptx: drainage and irrigation engineering
chapter 5.pptx: drainage and irrigation engineeringmulugeta48
 
Intze Overhead Water Tank Design by Working Stress - IS Method.pdf
Intze Overhead Water Tank  Design by Working Stress - IS Method.pdfIntze Overhead Water Tank  Design by Working Stress - IS Method.pdf
Intze Overhead Water Tank Design by Working Stress - IS Method.pdfSuman Jyoti
 
Thermal Engineering -unit - III & IV.ppt
Thermal Engineering -unit - III & IV.pptThermal Engineering -unit - III & IV.ppt
Thermal Engineering -unit - III & IV.pptDineshKumar4165
 
KubeKraft presentation @CloudNativeHooghly
KubeKraft presentation @CloudNativeHooghlyKubeKraft presentation @CloudNativeHooghly
KubeKraft presentation @CloudNativeHooghlysanyuktamishra911
 
VIP Call Girls Ankleshwar 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Ankleshwar 7001035870 Whatsapp Number, 24/07 BookingVIP Call Girls Ankleshwar 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Ankleshwar 7001035870 Whatsapp Number, 24/07 Bookingdharasingh5698
 
Call Girls In Bangalore ☎ 7737669865 🥵 Book Your One night Stand
Call Girls In Bangalore ☎ 7737669865 🥵 Book Your One night StandCall Girls In Bangalore ☎ 7737669865 🥵 Book Your One night Stand
Call Girls In Bangalore ☎ 7737669865 🥵 Book Your One night Standamitlee9823
 
Top Rated Call Girls In chittoor 📱 {7001035870} VIP Escorts chittoor
Top Rated Call Girls In chittoor 📱 {7001035870} VIP Escorts chittoorTop Rated Call Girls In chittoor 📱 {7001035870} VIP Escorts chittoor
Top Rated Call Girls In chittoor 📱 {7001035870} VIP Escorts chittoordharasingh5698
 
UNIT - IV - Air Compressors and its Performance
UNIT - IV - Air Compressors and its PerformanceUNIT - IV - Air Compressors and its Performance
UNIT - IV - Air Compressors and its Performancesivaprakash250
 
Unit 1 - Soil Classification and Compaction.pdf
Unit 1 - Soil Classification and Compaction.pdfUnit 1 - Soil Classification and Compaction.pdf
Unit 1 - Soil Classification and Compaction.pdfRagavanV2
 
Double Revolving field theory-how the rotor develops torque
Double Revolving field theory-how the rotor develops torqueDouble Revolving field theory-how the rotor develops torque
Double Revolving field theory-how the rotor develops torqueBhangaleSonal
 
VIP Call Girls Palanpur 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Palanpur 7001035870 Whatsapp Number, 24/07 BookingVIP Call Girls Palanpur 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Palanpur 7001035870 Whatsapp Number, 24/07 Bookingdharasingh5698
 
Double rodded leveling 1 pdf activity 01
Double rodded leveling 1 pdf activity 01Double rodded leveling 1 pdf activity 01
Double rodded leveling 1 pdf activity 01KreezheaRecto
 
Call Girls Pimpri Chinchwad Call Me 7737669865 Budget Friendly No Advance Boo...
Call Girls Pimpri Chinchwad Call Me 7737669865 Budget Friendly No Advance Boo...Call Girls Pimpri Chinchwad Call Me 7737669865 Budget Friendly No Advance Boo...
Call Girls Pimpri Chinchwad Call Me 7737669865 Budget Friendly No Advance Boo...roncy bisnoi
 
Thermal Engineering Unit - I & II . ppt
Thermal Engineering  Unit - I & II . pptThermal Engineering  Unit - I & II . ppt
Thermal Engineering Unit - I & II . pptDineshKumar4165
 
Intro To Electric Vehicles PDF Notes.pdf
Intro To Electric Vehicles PDF Notes.pdfIntro To Electric Vehicles PDF Notes.pdf
Intro To Electric Vehicles PDF Notes.pdfrs7054576148
 
Call Girls Wakad Call Me 7737669865 Budget Friendly No Advance Booking
Call Girls Wakad Call Me 7737669865 Budget Friendly No Advance BookingCall Girls Wakad Call Me 7737669865 Budget Friendly No Advance Booking
Call Girls Wakad Call Me 7737669865 Budget Friendly No Advance Bookingroncy bisnoi
 
FULL ENJOY Call Girls In Mahipalpur Delhi Contact Us 8377877756
FULL ENJOY Call Girls In Mahipalpur Delhi Contact Us 8377877756FULL ENJOY Call Girls In Mahipalpur Delhi Contact Us 8377877756
FULL ENJOY Call Girls In Mahipalpur Delhi Contact Us 8377877756dollysharma2066
 
Unleashing the Power of the SORA AI lastest leap
Unleashing the Power of the SORA AI lastest leapUnleashing the Power of the SORA AI lastest leap
Unleashing the Power of the SORA AI lastest leapRishantSharmaFr
 
notes on Evolution Of Analytic Scalability.ppt
notes on Evolution Of Analytic Scalability.pptnotes on Evolution Of Analytic Scalability.ppt
notes on Evolution Of Analytic Scalability.pptMsecMca
 

Kürzlich hochgeladen (20)

chapter 5.pptx: drainage and irrigation engineering
chapter 5.pptx: drainage and irrigation engineeringchapter 5.pptx: drainage and irrigation engineering
chapter 5.pptx: drainage and irrigation engineering
 
Intze Overhead Water Tank Design by Working Stress - IS Method.pdf
Intze Overhead Water Tank  Design by Working Stress - IS Method.pdfIntze Overhead Water Tank  Design by Working Stress - IS Method.pdf
Intze Overhead Water Tank Design by Working Stress - IS Method.pdf
 
Thermal Engineering -unit - III & IV.ppt
Thermal Engineering -unit - III & IV.pptThermal Engineering -unit - III & IV.ppt
Thermal Engineering -unit - III & IV.ppt
 
KubeKraft presentation @CloudNativeHooghly
KubeKraft presentation @CloudNativeHooghlyKubeKraft presentation @CloudNativeHooghly
KubeKraft presentation @CloudNativeHooghly
 
VIP Call Girls Ankleshwar 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Ankleshwar 7001035870 Whatsapp Number, 24/07 BookingVIP Call Girls Ankleshwar 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Ankleshwar 7001035870 Whatsapp Number, 24/07 Booking
 
Call Girls In Bangalore ☎ 7737669865 🥵 Book Your One night Stand
Call Girls In Bangalore ☎ 7737669865 🥵 Book Your One night StandCall Girls In Bangalore ☎ 7737669865 🥵 Book Your One night Stand
Call Girls In Bangalore ☎ 7737669865 🥵 Book Your One night Stand
 
Top Rated Call Girls In chittoor 📱 {7001035870} VIP Escorts chittoor
Top Rated Call Girls In chittoor 📱 {7001035870} VIP Escorts chittoorTop Rated Call Girls In chittoor 📱 {7001035870} VIP Escorts chittoor
Top Rated Call Girls In chittoor 📱 {7001035870} VIP Escorts chittoor
 
UNIT - IV - Air Compressors and its Performance
UNIT - IV - Air Compressors and its PerformanceUNIT - IV - Air Compressors and its Performance
UNIT - IV - Air Compressors and its Performance
 
Unit 1 - Soil Classification and Compaction.pdf
Unit 1 - Soil Classification and Compaction.pdfUnit 1 - Soil Classification and Compaction.pdf
Unit 1 - Soil Classification and Compaction.pdf
 
Double Revolving field theory-how the rotor develops torque
Double Revolving field theory-how the rotor develops torqueDouble Revolving field theory-how the rotor develops torque
Double Revolving field theory-how the rotor develops torque
 
VIP Call Girls Palanpur 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Palanpur 7001035870 Whatsapp Number, 24/07 BookingVIP Call Girls Palanpur 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Palanpur 7001035870 Whatsapp Number, 24/07 Booking
 
Double rodded leveling 1 pdf activity 01
Double rodded leveling 1 pdf activity 01Double rodded leveling 1 pdf activity 01
Double rodded leveling 1 pdf activity 01
 
Call Girls Pimpri Chinchwad Call Me 7737669865 Budget Friendly No Advance Boo...
Call Girls Pimpri Chinchwad Call Me 7737669865 Budget Friendly No Advance Boo...Call Girls Pimpri Chinchwad Call Me 7737669865 Budget Friendly No Advance Boo...
Call Girls Pimpri Chinchwad Call Me 7737669865 Budget Friendly No Advance Boo...
 
Thermal Engineering Unit - I & II . ppt
Thermal Engineering  Unit - I & II . pptThermal Engineering  Unit - I & II . ppt
Thermal Engineering Unit - I & II . ppt
 
Intro To Electric Vehicles PDF Notes.pdf
Intro To Electric Vehicles PDF Notes.pdfIntro To Electric Vehicles PDF Notes.pdf
Intro To Electric Vehicles PDF Notes.pdf
 
Call Girls Wakad Call Me 7737669865 Budget Friendly No Advance Booking
Call Girls Wakad Call Me 7737669865 Budget Friendly No Advance BookingCall Girls Wakad Call Me 7737669865 Budget Friendly No Advance Booking
Call Girls Wakad Call Me 7737669865 Budget Friendly No Advance Booking
 
(INDIRA) Call Girl Meerut Call Now 8617697112 Meerut Escorts 24x7
(INDIRA) Call Girl Meerut Call Now 8617697112 Meerut Escorts 24x7(INDIRA) Call Girl Meerut Call Now 8617697112 Meerut Escorts 24x7
(INDIRA) Call Girl Meerut Call Now 8617697112 Meerut Escorts 24x7
 
FULL ENJOY Call Girls In Mahipalpur Delhi Contact Us 8377877756
FULL ENJOY Call Girls In Mahipalpur Delhi Contact Us 8377877756FULL ENJOY Call Girls In Mahipalpur Delhi Contact Us 8377877756
FULL ENJOY Call Girls In Mahipalpur Delhi Contact Us 8377877756
 
Unleashing the Power of the SORA AI lastest leap
Unleashing the Power of the SORA AI lastest leapUnleashing the Power of the SORA AI lastest leap
Unleashing the Power of the SORA AI lastest leap
 
notes on Evolution Of Analytic Scalability.ppt
notes on Evolution Of Analytic Scalability.pptnotes on Evolution Of Analytic Scalability.ppt
notes on Evolution Of Analytic Scalability.ppt
 

What is xp

  • 2. What is XP? ● XP is a philosophy of software development based on well laid out values, principles and practices. ● Goal of XP is outstanding software development at lower cost, with fewer defects, high productivity and much higher return on investment.
  • 3. Activities XP describes four basic activities that are performed within the software development process. ● Coding ● The customer is always available, Code the Unit test first, Only one pair integrates code at a time, Leave Optimization till last, No Overtime ● Testing ● Unit Test ● Acceptance Test ● Listening ● Programmers must listen to what the customers need the system to do, what "business logic" is needed. ● Designing ● Good design will avoid lots of dependencies within a system.
  • 4. History ● Short history: KentBeck found himself dictating practice on a project for which he had assumed some personal risk. Unsure of which to emphasize more, he chose to "turn all the knobs to ten." ● More history: Kent drew on the experiences of many when he chose which knobs to turn. And the knobs alone only set the course, many more made it work. Finally the technology, or at least the ideas motivating the technology, played an important role too. At risk of writing myself too firmly into XP's history, I begin this page with a summary of events. -- WardCunningham ● Extreme Programming was created by Kent Beck during his work on the Chrysler Comprehensive Compensation System (C3) payroll project.[6] Beck became the C3 project leader in March 1996 and began to refine the development method used in the project and wrote a book on the method (in October 1999, Extreme Programming Explained was published).[6] Chrysler cancelled the C3 project in February 2000, after the company was acquired by Daimler-Benz.[7] ● Although extreme programming itself is relatively new, many of its practices have been around for some time; the methodology, after all, takes "best practices" to extreme levels. For example, the "practice of test- first development, planning and writing tests before each micro-increment" was used as early as NASA's Project Mercury, in the early 1960s (Larman 2003). Refactoring, modularity, bottom-up and incremental design were described by Leo Brodie in his book published in 1984.[8]
  • 5. Core ● Values bring purpose to practices. ● Practices are evidence of values. ● Principles are domain specific guidelines for life.
  • 6. Five Core Values ● Communication ● Customer – Developer, Developer – Developer ● Simplicity ● Start with the simplest solution. Extra functionality can then be added later. ● Feedback ● From the system, the customer and the team ● Courage ● Refactoring ● Persistence ● Respect ● Respect other team members' work
  • 7. Principles ● Humanity People, What do people need to become good developers? ● Economics Every action should have business value. ● Mutual Benefit Most important and most difficult to adhere to. Extensive internal documentation. ● Self Similarity You can copy structure of one solution to a new context. Theme, story, tests.
  • 8. Principles ● Improvement In software development “perfect” is a verb not adjective. ● Diversity Teams need diversity. ● Reflection How and Why of working. ● Flow Steady flow of valuable software. ● Opportunities Problems are opportunities.
  • 9. Principles ● Redundancy Do not remove redundancy that serves a valid purpose. ● Failure Is failure a waste? ● Quality Cost of quality? Quality ~ Productivity ● Baby Steps Rapid small steps = leap. ● Accepted Responsibility Responsibility cannot be assigned.
  • 10. Activities and Practices ● Planning ● Planning Game ● Small Release ● Stories ● Designing ● Simple Design ● Refactoring ● System Metaphor ● Coding ● Pair Programming ● Continuous Integration ● Onsite Customer ● Testing ● Test First ● Acceptance Test ● Automation ● Team ● Informative workspace ● Collective Ownership ● Coding Standards ● Sustainable Pace
  • 11. Primary Practices ● Sit Together ● Whole Team ● Informative workspace ● Sustainable Pace ● Energized work ● 40-Hours Work Week ● Pair Programming ● Stories ● Weekly Cycle ● Quarterly Cycle ● Slack ● 10 minute build ● Continuous Integration ● Test First Programming ● Incremental Design ● Planning Game ● Small Release ● System Metaphor ● Simple Design ● Refactoring ● Coding Standards
  • 12. 40-hour week ● Kent Beck says that he wants to be "...fresh and eager every morning, and tired and satisfied every night." ● The exact number of hours isn't important - the principle is. Burning the oil for long periods kills performance. ● Tired developers make more mistakes, which will slow you down more in the long run than keeping a "normal" schedule will. ● Even if developers could function well for longer periods.
  • 13. On-site customer ● An XP team needs to have a customer available on site to clarify stories and to make critical business decisions. ● Developers aren't allowed to do that alone. It eliminates wait for decisions. ● The idea is that communicating face to face minimizes the chances of misunderstanding, unlike writing all the requirements down in a static document. ● We have found that having the customer on site is the best possible situation. Atleast the customer must be available whenever needed to answer questions and to provide.
  • 14. System metaphor (Imagine) ● A sort of map that lets developers see where new pieces will fit. ● The metaphor gives the team a consistent picture they can use to describe the way the existing system works, where new parts fit, and what form they should take. ● It is important to remember that having everyone understand how the system fits together.
  • 15. The planning game The main idea behind this practice is to make a rough plan quickly and refine it as things become clearer. ● The development team determines: ● Estimates of how long it will take to develop a module ● Cost implications of using various technology options ● Team organization ● The "risk" of each module ● Order of module development within an iteration (doing risky items first can ease risk) ● The customer determines: ● Scope ● Release dates ● Priority (which features get developed first, based on business value) Planning happens often. This provides frequent opportunity for either the customer or the developers to adjust the plan as they learn new things.
  • 16. Small releases ● Releases should be as small as possible while still delivering enough business value to make them worthwhile. ● This provides value to the customer as early as possible. ● Small releases also will provide concrete feedback to developers on what meets customer needs and what doesn't. The team then can include these lessons in its planning for the next release.
  • 17. Pair programming ● In XP, pairs of developers write all production code. This approach may sound inefficient. ● As Martin Fowler says, "When people say that pair programming reduces productivity, I answer, ‘that would be true if the most time-consuming part of programming was typing.’ " ● Many benefits: ● All design decisions involve at least two brains. ● At least two people are familiar with every part of the system. ● There is less chance of both people neglecting tests. ● Changing pairs spreads knowledge throughout the team. ● Code is always being reviewed by at least one person. Research also is showing that programming in pairs is actually more efficient than programming alone
  • 18. Collective code ownership ● Any person on the team should have the authority to make changes to the code to improve it. ● Everybody owns all the code, meaning everybody is responsible for it. ● Saying that everybody owns all the code isn't the same as saying that nobody owns it. ● XP says, "You break it, you fix it." We have unit tests that must run before and after each integration. If you break something, it's your responsibility to fix it.
  • 19. Simple design XP says design should not be done all at once. We always try to use the simplest design that could possibly work at any point, changing it as we go to reflect emerging reality. ● What is the simplest design that could possibly work? ● Runs all the tests ● Contains no duplicate code ● States the programmers' intent for all code clearly ● Contains the fewest possible classes and methods ● Don't include extra features that aren't being used. We call such things YAGNI, which stands for "You Aren't Going to Need It."
  • 20. Refactoring ● Refactoring is the technique of improving code without changing functionality. ● Developers try to make easier, if changing existing code would make implementing the new feature. ● Refactoring lets you incorporate that learning into your code without breaking the tests. That means it will survive longer.
  • 21. Coding standard ● Without coding standards, it is harder to refactor code, harder to switch pairs as often as you should, and harder to go fast. ● The goal should be that no one on the team can recognize who wrote which piece of code. Make sure your code communicates clearly. ● Don't spend too much time. Create the simplest standard that could possibly work.
  • 22. Testing a. Unit testing ● Developers write the unit tests as they write code. ● Unit tests tell developers whether the system "works" at any point in time. ● Developers write unit tests for every method that could possibly break, before they write the code for those methods. Then they write just enough code to get the test to pass. ● A developer cannot check code into the source code repository until all the unit tests pass. Unit tests give developers confidence that their code works. It leaves a trail for other developers to understand the original developer's intent. ● Unit tests also give developers courage to refactor the code, because a test failure tells the developer immediately if something's broken. ● Unit tests should be automated and give a clear pass/fail result.
  • 23. Testing b. Acceptance testing ● The customer writes acceptance tests after they define module. ● Acceptance tests tell the team whether the system does what users want it to do. ● Customers are responsible for making sure each story has acceptance tests to validate it. The customer can write the tests himself or recruit other members of his organization to write them, or combine the two approaches. ● Acceptance tests should ensure developers are not breaking any existing features as they implement new ones. ● Customers will need some help from the development team to write acceptance tests. Developed a reusable automated acceptance test framework. The framework converts the input to an XML file, runs the tests in the file, and spits out "pass" or "fail" for each.
  • 24. Continuous integration ● Frequent code integration helps you to avoid integration nightmares. ● XP teams integrate their code several times a day, after they get all the unit tests for the system to run. ● Traditional approaches tend to work like this: code a lot, do a big-bang integration, then spend a significant amount of time fixing the problems. ● When you integrate frequently, the cause of failure for any particular integration is more obvious. ● Fixing is easier, takes less time, and keeps the team moving at maximum speed.
  • 25. Corollary Practices ● Real Customer Involvement No customer or proxy customer are not as effective ● Incremental Deployment Build little pieces and deploy it! ● Team Continuity Do not shuffle the team too often. ● Shrinking Teams ● Root Cause Analysis 5 Why's
  • 26. Corollary Practices ● Shared Code Collective Code Ownership ● Code and Tests The only artifacts ● Single code base Avoid multiple streams ● Daily Deployment ● Negotiated Scope Contract Ongoing negotiation on precise scope.