pair programming and extreme programming technology sungkyunkwan university
DESCRIPTION
Pair Programming and Extreme Programming Technology SungKyunKwan University Software Engineering Laboratory PhD Candidate Jin Hong Kim [email protected]. Index. What is Pair Programming ? What is eXtreme Programming ?. Part I Pair Programming. What is Pair Programming ?. - PowerPoint PPT PresentationTRANSCRIPT
SungKyunKwan University PhD Candidate [email protected]
Pair Programming and Extreme Programming
Technology
SungKyunKwan University
Software Engineering Laboratory
PhD Candidate Jin Hong [email protected]
SungKyunKwan University PhD Candidate [email protected]
Index
What is Pair Programming ?
What is eXtreme Programming?
SungKyunKwan University PhD Candidate [email protected]
What is Pair Programming ?
Two programmers working
side-by-side,
collaborating on the same design,
algorithm,
code or test.
SungKyunKwan University PhD Candidate [email protected]
One programmer :: = the driverOne programmer :: = the driver
has control of the keyboard/mouse and actively implements the program.
The other programmer :: = the observer
continuously observes the work of the driver to identify tactical (syntactic, spelling, etc.) defects and also thinks strategically about the direction of the work.
On demand, the two programmers can brainstorm any challenging problem.
Because the two programmers periodically switch roles, they work together as equals to develop software.
What is Pair Programming ?
SungKyunKwan University PhD Candidate [email protected]
"Pair programming is a simple, straightforward "Pair programming is a simple, straightforward concept.concept.
Two programmers work side-by-side at one computer,Two programmers work side-by-side at one computer,
continuously collaborating on the same continuously collaborating on the same design, design, algorithm,algorithm,
code, and testcode, and test. .
It allows two people to produce a higherIt allows two people to produce a higher
quality of code than that produced by the summation quality of code than that produced by the summation ofof
their solitary efforts."their solitary efforts."
Pair Programming
SungKyunKwan University PhD Candidate [email protected]
What is Pair Programming ?
Does Pair Programming Really Work?Does Pair Programming Really Work?
Empirical study by Laurie Williams at the university of Empirical study by Laurie Williams at the university of UtahUtah
Practice: Summer 1999Practice: Summer 1999– 20 students (sophomore/junior)20 students (sophomore/junior)
• All worked collaborativelyAll worked collaboratively– Generated more anecdotal/qualitative evidence Generated more anecdotal/qualitative evidence
Solo vs. pair: Fall 1999Solo vs. pair: Fall 1999– 41 students (junior/senior)41 students (junior/senior)
• 28 worked collaboratively28 worked collaboratively• 13 worked individually 13 worked individually
– Software development process was controlledSoftware development process was controlled• The only experimental variable: pair-programmingThe only experimental variable: pair-programming
– Quantitative: time, quality, enjoyment, confidenceQuantitative: time, quality, enjoyment, confidence
SungKyunKwan University PhD Candidate [email protected]
Post Development Test Cases Passed
0.0%10.0%20.0%30.0%40.0%50.0%60.0%70.0%80.0%90.0%
100.0%
Program 1 Program 2 Program 3 Program 4
Individuals
Collaborators
What is Pair Programming ?
Quality
SungKyunKwan University PhD Candidate [email protected]
What is Pair Programming ?
Elapsed Time
0.0%
20.0%
40.0%
60.0%
80.0%
100.0%
120.0%
Program 1 Program 2 Program 3
One Individual One Collaborator
Time
SungKyunKwan University PhD Candidate [email protected]
Enjoy the Work More Because of Pair Programming
0%
20%
40%
60%
80%
100%
PROF SUM1 SUM2 SUM3 FALL1 FALL2 FALL3
Agree Disagree
What is Pair Programming ?
Enjoyment
SungKyunKwan University PhD Candidate [email protected]
What is Pair Programming ?
More Confident in our Work When Pair-Programming
0%
20%
40%
60%
80%
100%
PROF SUM1 SUM2 SUM3 FALL1 FALL2 FALL3
Agree Disagree
Confidence
SungKyunKwan University PhD Candidate [email protected]
What is Pair Programming ?
How Does This Work?
Pair-Pressure Keep each other on task and focused Don’t want to let partner down “Embarrassed” to not follow the prescribed process Parkinson’s law “work expands to fill all available time.”
Pair-ThinkDistributed cognition: “searching through larger spaces of alternatives”
Have shared goals and plans Bring different prior experiences to the task Different access to task relevant information Must negotiate a common shared of action
Pair-RelayingEach, in turn, contributes to the best of their knowledge and abilityThen, sit back and think while their partner fights on
SungKyunKwan University PhD Candidate [email protected]
What is Pair Programming ?
Pair-ReviewsContinuous design and code reviewsUltimate in defect removal efficiencyRemoves programmers distaste for reviews
80% of all (solo) programmers don’t do them regularly or at all
Debug by describingTell it to the Furby
Pair-LearningContinuous reviews learn from partners techniques, knowledge of language, domain, etc.“Between the two of us, we knew it or could figure it out”ApprenticeshipDefect prevention always more efficient than defect removal
SungKyunKwan University PhD Candidate [email protected]
Expected Benefits of Pair Programming
Higher product quality
Improved cycle time
Enhanced learning
Pair rotation
Ease staff training and transitionKnowledge management/reduced product risk Enhanced team building
Increased programmer satisfaction
SungKyunKwan University PhD Candidate [email protected]
What is eXtreme Programming ?Key Features from my perspective:
Customer is an integral part of the development team (face-to-face)
Design based on stories developed with the customer
Small releases, many iterations, celebrate releases
Have a good coding standard
Simplicity, always do the simplest thing possible.
Pair Programming
Write tests first, test anything that can fail
Collective ownership of code base
Automate testing
Refactor the code (simplify)
Aggressiveness (Fearlessness)
SungKyunKwan University PhD Candidate [email protected]
Agile methodology
Working in small development groups
Two roles:
CustomerDeveloper
Everybody participate in design, programming and test
Iterative development
Iterations not more than 2 – 3 weeks
Create executable code every night
What is eXtreme Programming ?
SungKyunKwan University PhD Candidate [email protected]
Key Process Areas
Communication
Simplicity
Reduce risk
Feedback
Continuous system improvement
Accept Changes
Low threshold to changes
Continuously specify, design, code and test
What is eXtreme Programming ?
SungKyunKwan University PhD Candidate [email protected]
Testing
Automated testing
Create test before coding - Test Driven Design
The test will document requirements
Daily Build and Test - Unit Test, Integration Test and System Test
What is eXtreme Programming ?
SungKyunKwan University PhD Candidate [email protected]
eXtreme Programming
Communication Teams
Democratic Teams
Chief Programmer Teams
Modified Chief Programmer Teams
Synchronize and Stabilize Teams
Extreme Programming Teams
SungKyunKwan University PhD Candidate [email protected]
eXtreme Programming
SungKyunKwan University PhD Candidate [email protected]
eXtreme Programming
SungKyunKwan University PhD Candidate [email protected]
eXtreme Programming
Researched by New York Times
SungKyunKwan University PhD Candidate [email protected]
XP is based upon 4 core values
Communication
Simplicity
Feedback
Courage
eXtreme Programming
SungKyunKwan University PhD Candidate [email protected]
12 Practices
eXtreme Programming
Planning Game Small Releases Metaphor Simple Design Testing Refactoring Pair Programming Collective Code Ownership Continuous Integration Sustainable Pace Onsite Customer Coding Standards
SungKyunKwan University PhD Candidate [email protected]
Thank You