Download
slide1 n.
Skip this Video
Loading SlideShow in 5 Seconds..
Pair Programming and Extreme Programming Technology SungKyunKwan University PowerPoint Presentation
Download Presentation
Pair Programming and Extreme Programming Technology SungKyunKwan University

Pair Programming and Extreme Programming Technology SungKyunKwan University

177 Vues Download Presentation
Télécharger la présentation

Pair Programming and Extreme Programming Technology SungKyunKwan University

- - - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

  1. Pair Programming and Extreme Programming Technology SungKyunKwan University Software Engineering Laboratory PhD Candidate Jin Hong Kim ziromirado@ece.skku.ac.kr

  2. Index • What is Pair Programming ? • What is eXtreme Programming?

  3. Part I Pair Programming

  4. What is Pair Programming ? • Two programmers working • side-by-side, • collaborating on the same design, • algorithm, • code or test.

  5. What is Pair Programming ? One 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.

  6. Pair Programming "Pair programming is a simple, straightforward concept. Two programmers work side-by-side at one computer, continuously collaborating on the same design, algorithm, code, and test. It allows two people to produce a higher quality of code than that produced by the summation of their solitary efforts."

  7. PP or Not vs. Pair Programming Not

  8. What is Pair Programming ? Does Pair Programming Really Work? Empirical study by Laurie Williams at the university of Utah • Practice: Summer 1999 • 20 students (sophomore/junior) • All worked collaboratively • Generated more anecdotal/qualitative evidence • Solo vs. pair: Fall 1999 • 41 students (junior/senior) • 28 worked collaboratively • 13 worked individually • Software development process was controlled • The only experimental variable: pair-programming • Quantitative: time, quality, enjoyment, confidence

  9. What is Pair Programming ? Quality

  10. What is Pair Programming ? Time

  11. What is Pair Programming ? Enjoyment

  12. What is Pair Programming ? Confidence

  13. 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-Think • Distributed 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-Relaying • Each, in turn, contributes to the best of their knowledge and ability • Then, sit back and think while their partner fights on

  14. What is Pair Programming ? • Pair-Reviews • Continuous design and code reviews • Ultimate in defect removal efficiency • Removes programmers distaste for reviews • 80% of all (solo) programmers don’t do them regularly or at all • Debug by describing • Tell it to the Furby • Pair-Learning • Continuous reviews  learn from partners techniques, knowledge of language, domain, etc. • “Between the two of us, we knew it or could figure it out” • Apprenticeship • Defect prevention always more efficient than defect removal

  15. What is Pair Programming ? Pair Rotation

  16. Expected Benefits of Pair Programming • Higher product quality • Improved cycle time • Enhanced learning • Pair rotation • Ease staff training and transition • Knowledge management/reduced product risk • Enhanced team building • Increased programmer satisfaction

  17. Part II eXtreme Programming

  18. 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)

  19. What is eXtreme Programming ? • Agile methodology • Working in small development groups • Two roles: • Customer • Developer • Everybody participate in design, programming and test • Iterative development • Iterations not more than 2 – 3 weeks • Create executable code every night

  20. What is eXtreme Programming ? • Key Process Areas • Communication • Simplicity • Reduce risk • Feedback • Continuous system improvement • Accept Changes • Low threshold to changes • Continuously specify, design, code and test

  21. What is eXtreme Programming ? • 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

  22. eXtreme Programming Communication Teams Democratic Teams Chief Programmer Teams Modified Chief Programmer Teams Synchronize and Stabilize Teams Extreme Programming Teams

  23. eXtreme Programming

  24. eXtreme Programming

  25. eXtreme Programming Researched by New York Times

  26. eXtreme Programming XP is based upon 4 core values Communication Simplicity Feedback Courage

  27. eXtreme Programming 12 Practices • Planning Game • Small Releases • Metaphor • Simple Design • Testing • Refactoring • Pair Programming • Collective Code Ownership • Continuous Integration • Sustainable Pace • Onsite Customer • Coding Standards

  28. Thank You