Extreme Programming Programming Practices Object Mentor, Inc. Copyright  1998-2000 by Object Mentor, Inc All Rights Reserved Portions of this material.

Slides:



Advertisements
Similar presentations
Extreme Programming Copyright, 1999 © Jerzy R. Nawrocki Personal Software Process Lecture.
Advertisements

Extreme Programming Patrick Mattis Alana Trafford Akarsh Sakalaspur.
Extreme Programming Alexander Kanavin Lappeenranta University of Technology.
An Introduction to eXtreme Programming Michael L. Collard, Ph.D. Department of Computer Science Kent State University.
NAUG NAUG Knowledge Evening – th February 2007.
 User assignments (product owner)  ‘circle’  1 st sprint: ◦ Scrum Boards (informative workspace)  Product -, release -, sprint -, defect backlog 
March 25, 2002R McFadyen a lightweight approach to software development. about 5 years old has been used at: Bayerische Landesbank, Credit Swiss.
1 JASS 2006, Sergey Konovalov, Stefan Misslinger XP Extreme Programming Joint Advanced Student School (JASS) XP EXTREME PROGRAMMING.
Pair Programming Two Programmers sit at one workstation Two Programmers sit at one workstation.
Extreme Programming Collaboration in Software Development Process.
EXtreme Programming By: Aaron Flocke, Leena Paulose, Geetha Krishna (Team 6)
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.
COMP4710 Senior Design Software Development Process.
Xtreme Programming. Software Life Cycle The activities that take place between the time software program is first conceived and the time it is finally.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 17 Slide 1 Extreme Programming.
Chapter 3 – Agile Software Development 1Chapter 3 Agile software development.
Sofia Bulgaria Summer School IST eXPERT: Best Practice on e-Project Development 30 June - 2 July 2003 eXtreme programming.
Agile Awareness Workshop 2008 Flavours of Agile II eXtreme Programming V I K A S H A Z R A T I June 14' 2008.
Agile and XP Development Dan Fleck 2008 Dan Fleck 2008.
Embracing change with Extreme Programming Method Engineering Erik ten Brinke
Chapter 3 – Agile Software Development Pepper modification of Sommerville presentation & Colm O’hEocha – AgileInnovation Ltd presentation 1Chapter 3 Agile.
Testing in Extreme Programming
EXtreme Programming: An Introduction Presentation by: Jon Banta.
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/Agile Programming Prabhaker Mateti. ACK These slides are collected from many authors along with a few of mine. Many thanks to all these authors.
Rapid software development 1. Topics covered Agile methods Extreme programming Rapid application development Software prototyping 2.
Extreme Programming (XP). Agile Software Development Paradigm Values individuals and interactions over processes and tools. Values working software over.
XP (not Microsoft) e X treme P rogramming Can KOMAR
Extreme Programming.
XP – Extreme Programming
Sofia Bulgaria Summer School IST eXPERT: Best Practice on e-Project Development 30 June - 2 July 2003 eXtreme programming.
Sofia Bulgaria Summer School IST eXPERT: Best Practice on e-Project Development 30 June - 2 July 2003 eXtreme programming.
XP Overview Short Life cycle Risky / Dynamic Requirements Increase developer productivity.
Copyright © 2015 Curt Hill Software Development Paradigms What do you need to know?
CS3100 Software Project Management Agile Approaches.
Chapter 7 The Practices: dX. 2 Outline Iterative Development Iterative Development Planning Planning Organizing the Iterations into Management Phases.
Extreme Programming (XP) XP is an agile methodology: –aims to be responsive to change Theme running through XP is the importance of communication –amongst.
Copyright 2002 by RoleModel Software, Inc. Agile Methods: So What? This talk by Ed Gehringer based on notes by Roy W. Miller RoleModel Software, Inc.
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 2002 by RoleModel Software, Inc. Extreme Programming: So What? Roy W. Miller RoleModel Software, Inc.
Agile Methods Presentation By: Jason Abbett. Definition A process to rapidly develop software Many kinds of agile methods but few are practiced.
Extreme Programming. Extreme Programming (XP) Formulated in 1999 by Kent Beck, Ward Cunningham and Ron Jeffries Agile software development methodology.
Agenda: Overview of Agile testing Difference between Agile and traditional Methodology Agile Development Methodologies Extreme Programming Test Driven.
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 Software Engineering A Hands-On Approach From Extreme Software Engineering: A Hands-On Approach Daniel H. Steinberg Daniel W. Palmer.
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.
Lecture #9 Processes to Develop Software in the Cloud.
AGILE METHODS Curtis Cook CS 569 Spring 2003.
Software Development.
Planning User stories are written.
Alexander Kanavin Lappeenranta University of Technology
Extreme Programming.
What do you need to know about XP?
eXtreme Programming (XP) and eXtreme Modeling (XM)
Extreme Programming Iterative programming Agile programming
Chapter 3 – Agile Software Development
Extreme Programming Extreme programming is "a lightweight methodology for small-to-medium-sized teams developing software in the face of vague or rapidly.
Coming up: What is Agile?
Refactoring.
Extreme Programming.
Agile software development
Extreme Programming (and Pair Programming)
Presentation transcript:

Extreme Programming Programming Practices Object Mentor, Inc. Copyright  by Object Mentor, Inc All Rights Reserved Portions of this material are Copyright © 2000, by Addison Wesley Longman,Inc. and have been reproduced here with permission.

Extreme Programming (XP) At its core, XP is:

Extreme Programming (XP) At its core, XP is: Very Short Cycles

Extreme Programming (XP) At its core, XP is: Very Short Cycles Intense Feedback

Extreme Programming (XP) At its core, XP is: Very Short Cycles Intense Feedback Networked Communication

The XP Planning Practices User Stories

The XP Planning Practices User Stories Release Planning

The XP Planning Practices User Stories Release Planning Iteration Planning

The XP Planning Practices User Stories Release Planning Iteration Planning On Site Customer

XP Programming Practices Pair Programming Test-first Design Refactoring Continuous Integration Collective Ownership Coding Standard 40 hour week

XP Programming Practices Pair Programming Test-first Design Refactoring Continuous Integration Collective Ownership Coding Standard 40 hour week

Pair Programming Two Programmers sit at one workstation

Pair Programming Two Programmers sit at one workstation They take turns “driving”

Pair Programming Two Programmers sit at one workstation They take turns “driving” Pairs are short lived

Pair Programming Two Programmers sit at one workstation They take turns “driving” Pairs are short lived Pairing transmits knowledge to the team

Pair Programming Two Programmers sit at one workstation They take turns “driving” Pairs are short lived Pairing transmits knowledge to the team Pairing train newbies

Pairing keeps the pace When programming alone, you sometimes find yourself working at super speed.

Pairing keeps the pace When programming alone, you sometimes find yourself working at super speed. After awhile, you lose focus and drift away in the afterglow.

Pairing keeps the pace When programming alone, you sometimes find yourself working at super speed. After awhile, you lose focus and drift away in the afterglow. Your partner keeps both from happening.

Pair Programming Research Laurie Williams, Findings: Pairs use no more manhours than singles. Pairs create fewer defects. Pairs create fewer lines of code. Pairs enjoy their work more.

XP Programming Practices Pair Programming Test-first Design Refactoring Continuous Integration Collective Ownership Coding Standard 40 hour week

Test First Design In Tiny (5 min) cycles

Test First Design In Tiny (5 min) cycles Write a test case.

Test First Design In Tiny (5 min) cycles Write a test case. Write the code that passes it.

Test First Design In Tiny (5 min) cycles Write a test case. Write the code that passes it. Repeat until program does what you want.

Test First Example import junit.framework.*; public class TestAutoMileageLog extends TestCase { public TestAutoMileageLog(String name) { super(name); } public void testCreateFuelingStationVisit() { FuelingStationVisit v = new FuelingStationVisit(); }

Test First Example import junit.framework.*; public class TestAutoMileageLog extends TestCase { public TestAutoMileageLog(String name) { super(name); } public void testCreateFuelingStationVisit() { FuelingStationVisit v = new FuelingStationVisit(); } public class FuelingStationVisit { }

Test First Example import junit.framework.*; public class TestAutoMileageLog extends TestCase { public TestAutoMileageLog(String name) { super(name); } public void testCreateFuelingStationVisit() { FuelingStationVisit v = new FuelingStationVisit(); } public class FuelingStationVisit { }

This may seem useless.

But it shows me that the test framework is functioning properly.

This may seem useless. But it shows me that the test framework is functioning properly. It also gives me a working base to continue from.

This may seem useless. But it shows me that the test framework is functioning properly. It also gives me a working base to continue from. We move, in tiny steps, from working base, to working base.

Test First Example public void testCreateFuelingStationVisit() { Date date = new Date(); double fuel = 2.0; // 2 gallons. double cost = 1.87*2; // Price = $1.87 per gallon int mileage = 1000; // odometer reading. double delta = ; //fp tolerance FuelingStationVisit v = new FuelingStationVisit( date, fuel, cost, mileage); assertEquals(date, v.getDate()); assertEquals(1.87*2, v.getCost(), delta); assertEquals(2, v.getFuel(), delta); assertEquals(1000, v.getMileage()); assertEquals(1.87, v.getPrice(), delta); }

Test First Example public class FuelingStationVisit { public FuelingStationVisit(Date date, double fuel, double cost, int mileage) { itsDate = date; itsFuel = fuel; itsCost = cost; itsMileage = mileage; } public Date getDate() {return itsDate;} public double getFuel() {return itsFuel;} public double getCost() {return itsCost;} public double getPrice() {return itsCost/itsFuel;} public int getMileage() {return itsMileage;} }

Test First Example

XUNIT Lightweight Unit Testing Framework Junit Cppunit Pyunit Etc.

XP Programming Practices Pair Programming Test-first Design Refactoring Continuous Integration Collective Ownership Coding Standard 40 hour week

Refactoring After getting something to work we refactor.

Refactoring After getting something to work we refactor. Tiny (5 min) improvements

Refactoring After getting something to work we refactor. Tiny (5 min) improvements Followed by running all the tests.

Refactoring After getting something to work we refactor. Tiny (5 min) improvements Followed by running all the tests. Build and test time must be very very fast.

Refactoring We cannot check in our code until:

Refactoring We cannot check in our code until: All tests are green.

Refactoring We cannot check in our code until: All tests are green. All duplication has been removed

Refactoring We cannot check in our code until: All tests are green. All duplication has been removed The code is as expressive as we can make it.

Refactoring We cannot check in our code until: All tests are green. All duplication has been removed The code is as expressive as we can make it. The code is as simple as we can make it.

Refactoring Comments should be minimized

Refactoring Comments should be minimized They often lie.

Refactoring Comments should be minimized They often lie. They are an admission that we could not make our code express our ideas.

Refactoring Comments should be minimized They often lie. They are an admission that we could not make our code express our ideas. There are many things you can do to make software more expressive.

XP Programming Practices Pair Programming Test-first Design Refactoring Continuous Integration Collective Ownership Coding Standard 40 hour week

Continuous Integration Daily builds are for wimps.

Continuous Integration Daily builds are for wimps. Build, end to end, at every check in.

Continuous Integration Daily builds are for wimps. Build, end to end, at every check in. Check in frequently.

Continuous Integration Daily builds are for wimps. Build, end to end, at every check in. Check in frequently. Put resources on speeding build time.

Continuous Integration Daily builds are for wimps. Build, end to end, at every check in. Check in frequently. Put resources on speeding build time. Put resources on speeding test time.

XP Programming Practices Pair Programming Test-first Design Refactoring Continuous Integration Collective Ownership Coding Standard 40 hour week

Collective Ownership Anyone can improve any part of the code at any time.

Collective Ownership Anyone can improve any part of the code at any time. No one acts as the gatekeeper for any part of the code.

Collective Ownership Anyone can improve any part of the code at any time. No one acts as the gatekeeper for any part of the code. This includes schemas…

Collective Ownership Anyone can improve any part of the code at any time. No one acts as the gatekeeper for any part of the code. This includes schemas… And libraries…

Collective Ownership Anyone can improve any part of the code at any time. No one acts as the gatekeeper for any part of the code. This includes schemas… And libraries… And everything else that’s different

XP Programming Practices Pair Programming Test-first Design Refactoring Continuous Integration Collective Ownership Coding Standard 40 hour week

Coding Standard A group of conventions that everyone agrees to.

Coding Standard A group of conventions that everyone agrees to. Emerges over time.

Coding Standard A group of conventions that everyone agrees to. Emerges over time. Continuously evolves.

Coding Standard A group of conventions that everyone agrees to. Emerges over time. Continuously evolves. The team rules.

XP Programming Practices Pair Programming Test-first Design Refactoring Continuous Integration Collective Ownership Coding Standard 40 hour week

You can’t do your best when you are tired.

40 hour week You can’t do your best when you are tired. When you don’t do your best, you make messes.

40 hour week You can’t do your best when you are tired. When you don’t do your best, you make messes. Messes slow everyone down

40 hour week You can’t do your best when you are tired. When you don’t do your best, you make messes. Messes slow everyone down So you must be rested.

40 hour week You can’t do your best when you are tired. When you don’t do your best, you make messes. Messes slow everyone down So you must be rested Occasionally, you may work one week of moderate overtime.

XP Programming Practices Pair Programming Test-first Design Refactoring Continuous Integration Collective Ownership Coding Standard 40 hour week

The End.