Extreme Programming (and Pair Programming)

Slides:



Advertisements
Similar presentations
Extreme Programming Alexander Kanavin Lappeenranta University of Technology.
Advertisements

9th October, 2001Confidential to Ian Mitchell1 XP – All the Rest Ian Mitchell, FNZCS.
NAUG NAUG Knowledge Evening – th February 2007.
March 25, 2002R McFadyen a lightweight approach to software development. about 5 years old has been used at: Bayerische Landesbank, Credit Swiss.
Agile Requirements Methods CSSE 371 Software Requirements and Specification Mark Ardis, Rose-Hulman Institute October 26, 2004.
EXtreme Programming By: Aaron Flocke, Leena Paulose, Geetha Krishna (Team 6)
Software Engineering Process Models
EXtreme Programming Quick Introduction Daniel Arraes Pereira Eduardo Lourenço Apolinário Ricardo de Oliveira Cavalcanti.
Extreme Programming Mark Steverson. What Is Extreme Programming? ● Extreme Programming (XP) is a lightweight, agile methodology developed by Kent Beck.
Computer Engineering 203 R Smith Agile Development 1/ Agile Methods What are Agile Methods? – Extreme Programming is the best known example – SCRUM.
Extreme Programming--a “New” Process Model Extreme Programming-- a “New” Process Model.
Agile Software Development
Xtreme Programming. Software Life Cycle The activities that take place between the time software program is first conceived and the time it is finally.
1 Software Engineering Process Models In this course we will have a project with: Product requirements A defined development process A team of 4-5 developers.
Sofia Bulgaria Summer School IST eXPERT: Best Practice on e-Project Development 30 June - 2 July 2003 eXtreme programming.
Software Engineering SW Processes: Extreme Programming Slide 1 Software Engineering Software Process: Agile/Extreme Programming.
Extreme Programming(XP)
Agile and XP Development Dan Fleck 2008 Dan Fleck 2008.
Embracing change with Extreme Programming Method Engineering Erik ten Brinke
1 e X treme P rogramming D. Dranidis September 2000 CITY College.
Coming up: What is Agile? XP Development Dan Fleck 2010 Dan Fleck 2010.
Extreme Programming (XP). Agile Software Development Paradigm Values individuals and interactions over processes and tools. Values working software over.
XP – Extreme Programming
EXtreme Programming Development Adrian Williamson People, Technology and People and Technology Consultant.
Extreme Programming David Li CTO, DigitalSesame. Problem in Developing Software The Basic Problem - Risk –Schedule slips –Project canceled –System goes.
1 김 수 동 Dept. of Computer Science Soongsil University Tel Fax
XP Overview Short Life cycle Risky / Dynamic Requirements Increase developer productivity.
DAVID STOTTS DEPT. OF COMPUTER SCIENCE UNIV. OF NORTH CAROLINA AT CHAPEL HILL Extreme Programming.
Extreme Programming (XP) XP is an agile methodology: –aims to be responsive to change Theme running through XP is the importance of communication –amongst.
AP-1 4. Agile Processes. AP-2 Agile Processes Focus on creating a working system Different attitude on measuring progress XP Scrum.
Extreme Programming Based on and
Lecture 4 – XP and Agile 17/9/15. Plan-driven and agile development Plan-driven development A plan-driven approach to software engineering is based around.
Extreme programming (XP) Variant of agile Takes commonsense practices to extreme levels © 2012 by Václav Rajlich1.
Copyright © 2009 Pearson Education, Inc. Publishing as Prentice Hall Appendix B Agile Methodologies B.1.
AGILE XP AND SCRUM © University of LiverpoolCOMP 319slide 1.
Extreme Programming. Extreme Programming (XP) Formulated in 1999 by Kent Beck, Ward Cunningham and Ron Jeffries Agile software development methodology.
SoberIT Software Business and Engineering Institute HELSINKI UNIVERSITY OF TECHNOLOGY 1 eXtreme Programming – one of the Agile Software Development Methodologies.
CS223: Software Engineering Lecture 18: The XP. Recap Introduction to Agile Methodology Customer centric approach Issues of Agile methodology Where to.
1 Introduction to eXtreme Programming Remko Popma Azzurri Ltd.
Extreme programming (XP) Advanced Software Engineering Dr Nuha El-Khalili.
Software Development. The Software Life Cycle Encompasses all activities from initial analysis until obsolescence Analysis of problem or request Analysis.
Coming up: What is Agile? XP Development Dan Fleck 2010 Dan Fleck 2010.
Software Development Life Cycle. The Software Life Cycle  Encompasses all activities from initial analysis until end of work  Formal process for software.
AGILE METHODS Curtis Cook CS 569 Spring 2003.
Embedded Systems Software Engineering
Agile Project Management and the yin & yang of
Software Development.
Requirements Engineering Lecture 4
Appendix B Agile Methodologies
Extreme Programming.
Software Engineering Process Models
Planning User stories are written.
Extreme Programming.
Waterfall and Agile Quality Techniques
What do you need to know about XP?
The Extreme Programming Model
Agile and XP Development
eXtreme Programming (XP) and eXtreme Modeling (XM)
Extreme Programming Iterative programming Agile programming
Agile and XP Development
Chapter 3 – Agile Software Development
Agile and XP Development
Extreme Programming Extreme programming is "a lightweight methodology for small-to-medium-sized teams developing software in the face of vague or rapidly.
Chapter 3: Agile Software Processes
Coming up: What is Agile?
Sylvain Giroux October 3rd, 2000
Appendix B Agile Methodologies
Extreme Programming.
Agile software development
Presentation transcript:

Extreme Programming (and Pair Programming) Laurie Williams North Carolina State University

Agenda: The 12 Practices of XP Metaphor Release Planning Testing Pair Programming Refactoring Simple Design Collective Code Ownership Continuous Integration On-site Customer Small Releases 40-Hour Work Week Coding Standards

1. Metaphor The closest XP comes to architecture Gives the team a consistent picture of describing the system, where new parts fit, etc. Words used to identify technical entities should be chosen from the metaphor C3 payroll . . . The paycheck goes down the assembly line and pieces of information are added. Sometimes, you just can’t come up with one

2. Release Planning Requirements via User Stories Short (index-card length) natural language description of what a customer wants Prioritized by customer Resource and risk estimated by developers Via “The Planning Game” Highest priority, highest risk user stories included in early “time boxed” increments Play the Planning Game after each increment

3. Testing Test-Driven Development (TDD) Acceptance Tests Write tests before code Tests are automated Often use xUnit framework Must run at 100% before proceeding Acceptance Tests Written with the customer Acts as “contract” Measure of progress

4. Pair Programming Pair-programming has been popularized by the eXtreme Programming (XP) methodology With pair-programming: Two software engineers work on one task at one computer One engineer, the driver, has control of the keyboard and mouse and creates the implementation The other engineer, the navigator, watches the driver’s implementation to identify defects and participates in on-demand brainstorming The roles of driver and observer are periodically rotated between the two software engineers

Research Findings to Date Strong anecdotal evidence from industry “We can produce near defect-free code in less than half the time.” Empirical Study Pairs produced higher quality code 15% less defects (difference statistically significant) Pairs completed their tasks in about half the time 58% of elapsed time (difference not statistically significant) Most programmers reluctantly embark on pair programming Pairs enjoy their work more (92%) Pairs feel more confident in their work products (96%) India Technology Company 24% increase in productivity (KLOC/Person-Month) 10-fold reduction in defects

5. Refactoring Improve the design of existing code without changing functionality Simplify code Opportunity for abstraction Remove duplicate code Relies on testing to ensure nothing breaks in the process of refactoring.

6. Simple Design No Big Design Up Front (BDUF) “Do The Simplest Thing That Could Possibly Work” Including documentation “You Aren’t Gonna Need It” (YAGNI) CRC cards (optional)

7. Collective Code Ownership Code to belongs to the project, not to an individual engineer Any engineer has the power to modify any code Cleaner code Engineers are not required to work around deficiencies in objects they do not own Faster progress No need to wait for someone else to fix something

8. Continuous Integration Pair writes up unit test cases and code for a task (part of a user story) Pair unit tests code to 100% Pair integrates Pair runs ALL unit test cases to 100% Pair moves on to next task with clean slate and clear mind Should happen once or twice a day.

9. On-Site Customer Customer available on site to clarify stories and to make critical business decisions. Developers don’t make assumptions Developers don’t have to wait for decisions Face to face communication minimizes the chances of misunderstanding

10. Small Releases Timeboxed As small as possible, but still delivering business value No releases to ‘implement the database’ Get customer feedback early and often Do the planning game after each iteration Do they want something different? Have their priorities changed?

11. 40-Hour Work Week Kent Beck says, “ . . . fresh and eager every morning, and tired and satisfied every night” Burning the midnight oil kills performance Tired developers make more mistakes, which slows you down more in the long run If you mess with people’s personal lives (by taking it over), in the long run the project will pay the consequences

12. Coding Use Coding Conventions Method Commenting Considering Pair Programming, Refactor Mercilessly, and Collective Code Ownership . . . need to easily find your way around (other people’s) code Method Commenting Priority placed on intention-revealing code If your code needs a comment to explain it, rewrite it. If you can't explain your code with a comment, rewrite it.

The 13th Practice? The Stand Up Meeting Start day with 15-minute meeting Everyone stands up (so the meeting stays short) in circle Going around the room everyone says specifically: What they did the day before What they plan to do today Any obstacles they are experiencing Can be the way pairs are formed

Summary There are 12 practices of XP; some of these are very inter-related and dependent on each other. The focus is on getting value to the customer as quickly as possible and on embracing to change throughout the development cycle.

More Information Laurie Williams 919-513-4151 williams@csc.ncsu.edu http://collaboration.csc.ncsu.edu/laurie Agile Bibliography http://collaboration.csc.ncsu.edu/agile/Bibliography.htm XP Universe/Agile Universe http://agileuniverse.com