51
Extreme Programming C Sc 335 November, 28 2005

Extreme Programming C Sc 335 November, 28 2005. 2 Overview Essence of Extreme Programming (XP) –Variables –Values –Principles –Practices

  • View
    215

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Extreme Programming C Sc 335 November, 28 2005. 2 Overview Essence of Extreme Programming (XP) –Variables –Values –Principles –Practices

Extreme Programming

C Sc 335November, 28 2005

Page 2: Extreme Programming C Sc 335 November, 28 2005. 2 Overview Essence of Extreme Programming (XP) –Variables –Values –Principles –Practices

2

Overview

Essence of Extreme Programming (XP)– Variables– Values– Principles– Practices

Page 3: Extreme Programming C Sc 335 November, 28 2005. 2 Overview Essence of Extreme Programming (XP) –Variables –Values –Principles –Practices

3

Waterfall Model

Waterfall was described by 1970 by W. W. RoyceUnderstood as– finish each phase– don’t proceed till done

Royce criticized this– proposed an iterative approach

Page 4: Extreme Programming C Sc 335 November, 28 2005. 2 Overview Essence of Extreme Programming (XP) –Variables –Values –Principles –Practices

4

Became Popular

Management liked phases to easily set deadlinesCustomers provide all requirements Analysts translate requirements into specificationCoders implement the specification Reviews ensure the specification is met Testing is performed by others (QA)Maintenance means modifying as little as possible – old code is good code

Change is hard (and costly)

Page 5: Extreme Programming C Sc 335 November, 28 2005. 2 Overview Essence of Extreme Programming (XP) –Variables –Values –Principles –Practices

5

Cost of change

Costof

change

time

Waterfall

XP

Page 6: Extreme Programming C Sc 335 November, 28 2005. 2 Overview Essence of Extreme Programming (XP) –Variables –Values –Principles –Practices

6

Sprial

Dr Barry Boehm proposed a spiral approach

Page 7: Extreme Programming C Sc 335 November, 28 2005. 2 Overview Essence of Extreme Programming (XP) –Variables –Values –Principles –Practices

7

Waterfall

It became popular– This process is still is used a lot

Craig Larman's book [1] provides proof that waterfall has proved to be a terrible way to develop software. – In his study, 87% of all projects failed. – The waterfall process was the "single largest contributing factor

for failure, being cited in 82% of the projects as the number one problem."

[1] Agile and Iterative Development: a Manager's Guide, Addison-Wesley Professional, 2003

Page 8: Extreme Programming C Sc 335 November, 28 2005. 2 Overview Essence of Extreme Programming (XP) –Variables –Values –Principles –Practices

8

Extreme Programming (XP)

Almost ten years of growthSet of SE practices that produce high-quality

software with limited effortMany books, first by Kent Beck:

Extreme Programming–Embrace Change, Addison-Wesley, 2000, ISBN 0-201-61641-6

http://www.extremeprogramming.org/

Page 9: Extreme Programming C Sc 335 November, 28 2005. 2 Overview Essence of Extreme Programming (XP) –Variables –Values –Principles –Practices

9

Extreme Programming

XP is – a disciplined approach to software development– code centric: no reckless coding, test-first– successful because it emphasizes customer

involvement and promotes team work– not a solution looking for a problem– One of several "agile" (can adapt to change)

software development processeshttp://www.agilealliance.org/

Page 10: Extreme Programming C Sc 335 November, 28 2005. 2 Overview Essence of Extreme Programming (XP) –Variables –Values –Principles –Practices

10

Fundamentals of XP

Distinguishes between decisions made by business stakeholders and developers– Both are good at their own thing things

Simplistic – keep design as simple as possible“design for today not for tomorrow”

Write automated test code before writing production code and keep all tests running (continually integrate)Pair programmingShort iterations with fast delivery

Page 11: Extreme Programming C Sc 335 November, 28 2005. 2 Overview Essence of Extreme Programming (XP) –Variables –Values –Principles –Practices

11

Management summary

Light-weight software development process– Replaces documentation with communication– Focuses on source code and testing

Controversial – “Hacking”?– 30-70% productivity improvement

Developed by industry practitioners– “..proven at cost conscious companies like Bayerische

Landesbank, Credit Swiss Life, DaimlerChrysler, First Union National Bank, Ford Motor Company and UBS.” XP Web Site

Page 12: Extreme Programming C Sc 335 November, 28 2005. 2 Overview Essence of Extreme Programming (XP) –Variables –Values –Principles –Practices

12

Essence of XP

Four variables in software development: – Cost, Time, Quality, Scope (# features)

Four Values– Communication, Simplicity, Feedback, and Courage

Five Principles– Provide feedback, assume simplicity, make incremental

changes, embrace change, quality work12 Practices (or fewer)– Planning game, small releases, simple designs, automated testing,

continuous integration, refactoring, pair programming, collective ownership, 40-hour week, on-site customer, coding standard, metaphor

Page 13: Extreme Programming C Sc 335 November, 28 2005. 2 Overview Essence of Extreme Programming (XP) –Variables –Values –Principles –Practices

13

Overview

Essence of Extreme Programming (XP)– Variables– Values– Principles– Practices

Page 14: Extreme Programming C Sc 335 November, 28 2005. 2 Overview Essence of Extreme Programming (XP) –Variables –Values –Principles –Practices

14

Managing Variables

Managers: "You are going to get all of these requirements done by THE DATE"When this is the only consideration– "… quality goes out the window … Also likely to go

out of control is time. You get crappy software late.", from Extreme Programming Explained, Kent Beck

Page 15: Extreme Programming C Sc 335 November, 28 2005. 2 Overview Essence of Extreme Programming (XP) –Variables –Values –Principles –Practices

15

Four Variables: Cost

Increase cost and you can do a bit morePouring money into a project won't solve the problem– "I've been on two infinitely funded projects and both

were utter disasters. Money does corrupt."

Reduce the budget for the project– won't be able to solve the customer's problem

Page 16: Extreme Programming C Sc 335 November, 28 2005. 2 Overview Essence of Extreme Programming (XP) –Variables –Values –Principles –Practices

16

Four Variables: Time

Increase time and you improve quality and scope (more features)Too much time can hurt With too little time, quality suffers– and scope, time, and cost not far behind

Page 17: Extreme Programming C Sc 335 November, 28 2005. 2 Overview Essence of Extreme Programming (XP) –Variables –Values –Principles –Practices

17

Four Variables: Quality

Quality is a terrible control variable– Can make progress by sacrificing quality (write code

solo or without tests) – But to cost--human, business, and technical-- can be

enormous

Page 18: Extreme Programming C Sc 335 November, 28 2005. 2 Overview Essence of Extreme Programming (XP) –Variables –Values –Principles –Practices

18

Four Variables: Scope

Scope is the primary control – If you reduce scope (fewer features), you can

increase quality, reduce time and cost– You can deliver the most important features

sooner and cheaper

Page 19: Extreme Programming C Sc 335 November, 28 2005. 2 Overview Essence of Extreme Programming (XP) –Variables –Values –Principles –Practices

19

The Values

Essence of Extreme Programming (XP)– Variables– Values– Principles– Practices

Page 20: Extreme Programming C Sc 335 November, 28 2005. 2 Overview Essence of Extreme Programming (XP) –Variables –Values –Principles –Practices

20

Four Values: Communication

Communication– Customer centric

• Write "Stories", always available– Pair programming– Task estimation– Iteration planning– Design sessions

The Agile Manifesto

Page 21: Extreme Programming C Sc 335 November, 28 2005. 2 Overview Essence of Extreme Programming (XP) –Variables –Values –Principles –Practices

21

Four Values: Simplicity

Simplicity– Choose the simplest thing that will work– Choose the simplest design, technology,

algorithm, technique

Page 22: Extreme Programming C Sc 335 November, 28 2005. 2 Overview Essence of Extreme Programming (XP) –Variables –Values –Principles –Practices

22

Four Values: Feedback

Feedback very important

– Small Iterations– Frequent deliveries– Pair programming– Constant code review – Continuous integration (add often to the build)– automated unit tests (JUnit, for example)

Page 23: Extreme Programming C Sc 335 November, 28 2005. 2 Overview Essence of Extreme Programming (XP) –Variables –Values –Principles –Practices

23

The Principles

Essence of Extreme Programming (XP)– Variables– Values– Principles– Practices

Page 24: Extreme Programming C Sc 335 November, 28 2005. 2 Overview Essence of Extreme Programming (XP) –Variables –Values –Principles –Practices

24

Five Principles: Rapid Feedback

Rapid Feedback– (From psychology) The time between an action and

its feedback is critical to learning– In an XP project, developers provide and get

feedback as soon as possible, interpret it, and put what is learned into the system

Page 25: Extreme Programming C Sc 335 November, 28 2005. 2 Overview Essence of Extreme Programming (XP) –Variables –Values –Principles –Practices

25

Feedback

Compiler feedback: secondsPair programming feedback: half minutesUnit test feedback: few minutesAcceptance testing: half hours– Customer write these system level tests

• The developers need adapters (test fixtures) to make these pass

Customer feedback: dailyIteration feedback: weekly– Feedback: Priceless

Page 26: Extreme Programming C Sc 335 November, 28 2005. 2 Overview Essence of Extreme Programming (XP) –Variables –Values –Principles –Practices

26

Four Values: Courage

Courage– Courage to refactor– Estimate: On a scale of 1 to 5, we can do that in 2– Throw away bad code – Iteration planning– Automated testing breeds courage to change code

Page 27: Extreme Programming C Sc 335 November, 28 2005. 2 Overview Essence of Extreme Programming (XP) –Variables –Values –Principles –Practices

27

Five Principles: Assume Simplicity

Assume Simplicity– Only design for current iteration

• this is not the same as skipping design• this is counterintuitive to most developers

– Can save time on 98% of the problem and devote that time to the really difficult 2%, Beck

– Plan for changes and design the system to handle change

– Do a quality job (tests, refactoring, communication) and trust you can add complexity later

Page 28: Extreme Programming C Sc 335 November, 28 2005. 2 Overview Essence of Extreme Programming (XP) –Variables –Values –Principles –Practices

28

Five Principles: Incremental Change

Incremental Change– Problems are solved with a series of the smallest

changes that make a difference– In XP, design changes a little at a time, the plan

changes a little at a time, the team changes a little at a time

– and adoption of XP must be taken in little steps

Page 29: Extreme Programming C Sc 335 November, 28 2005. 2 Overview Essence of Extreme Programming (XP) –Variables –Values –Principles –Practices

29

Five Principles: Embracing Change

Embracing Change– Preserve the most options while solving the most

pressing problems

Page 30: Extreme Programming C Sc 335 November, 28 2005. 2 Overview Essence of Extreme Programming (XP) –Variables –Values –Principles –Practices

30

Five Principles: Quality Work

Quality work– People like to do a good job– Quality should be either excellent or extremely

excellent (lives at stake)– Without quality

• you don't enjoy work• you don't work well• the project goes down the drain

Page 31: Extreme Programming C Sc 335 November, 28 2005. 2 Overview Essence of Extreme Programming (XP) –Variables –Values –Principles –Practices

31

12 Practices: On-site customer

Many software projects fail because they do not deliver software that meets business needsReal customer has to be part of the team– Defines business needs– Answers questions and resolves issues– Prioritizes features

Page 32: Extreme Programming C Sc 335 November, 28 2005. 2 Overview Essence of Extreme Programming (XP) –Variables –Values –Principles –Practices

32

The Practices

Essence of Extreme Programming (XP)– Variables– Values– Principles– Practices

Page 33: Extreme Programming C Sc 335 November, 28 2005. 2 Overview Essence of Extreme Programming (XP) –Variables –Values –Principles –Practices

33

12 Practices: Planning Game

The planning game involves story cards, which are short descriptions of a feature– Provide value to customer– Independent of each other– Testable

Customer writes story cards and prioritizes themDevelopers estimate how long a story takes

Page 34: Extreme Programming C Sc 335 November, 28 2005. 2 Overview Essence of Extreme Programming (XP) –Variables –Values –Principles –Practices

34

12 Practices: The planning game

Business decisions (customer)– Scope: which “stories” should be developed– Priority of stories (features)– Release dates

Technical decisions (developers)– Time estimates for features/stories– Elaborate consequences of business decisions– Team organization and process– Scheduling

Page 35: Extreme Programming C Sc 335 November, 28 2005. 2 Overview Essence of Extreme Programming (XP) –Variables –Values –Principles –Practices

35

12 Practices: Estimation

Based on similar stories from the past (“yesterday’s weather”)Team effortGet good at estimation simply by doing itIdeal Engineering Time (IET)– could be points

Velocity = IET/Calendar Time– we can do 20 points each week– "Customer, which 20 points do you want next week?"

Page 36: Extreme Programming C Sc 335 November, 28 2005. 2 Overview Essence of Extreme Programming (XP) –Variables –Values –Principles –Practices

36

12 Practices: Small Releases

Releases should be as small as possibleShould make sense as a wholePut system into production ASAP– Fast feedback

Deliver valuable features firstShort cycle time– Planning 1-2 months rather than 6-12 months

Page 37: Extreme Programming C Sc 335 November, 28 2005. 2 Overview Essence of Extreme Programming (XP) –Variables –Values –Principles –Practices

37

12 Practices: Simple design

The “right” design– Runs all tests– No code duplication, No code duplication– Fewest possible classes – Short methods– Fulfills all current business requirements

Design for today not the future– But design so the system can change

Page 38: Extreme Programming C Sc 335 November, 28 2005. 2 Overview Essence of Extreme Programming (XP) –Variables –Values –Principles –Practices

38

12 Practices: Metaphor

How does the whole system work?What is the overall idea of the system?This is the least favorite or least misunderstood practice

Page 39: Extreme Programming C Sc 335 November, 28 2005. 2 Overview Essence of Extreme Programming (XP) –Variables –Values –Principles –Practices

39

12 Practices: Testing

Software should be tested, but it is often spotty or overlookedAutomatic testing (JUnit, for example) help us know that a feature works and it will work after refactoring, additional code, and other changesProvides confidence in the program

Page 40: Extreme Programming C Sc 335 November, 28 2005. 2 Overview Essence of Extreme Programming (XP) –Variables –Values –Principles –Practices

40

Testing

Write tests at the same time as production code– Unit tests developer– Feature/acceptance tests customer

Don't need a test for every methodTesting can be used to drive development and design of codeAllows for regression testing– Do changes break previously working code

Page 41: Extreme Programming C Sc 335 November, 28 2005. 2 Overview Essence of Extreme Programming (XP) –Variables –Values –Principles –Practices

41

SIM/SQS http://www.simgroup.com/Consultancy/regression.html

Regression Testing – re-testing of a previously tested program following

modification to ensure that faults have not been introduced or uncovered as a result of changes.

– Regression tests are designed for repeatability, and are often used when testing a second or later version of the system under test.

– Regression testing can be carried out on all applications, including e-Commerce and web-based systems .

Page 42: Extreme Programming C Sc 335 November, 28 2005. 2 Overview Essence of Extreme Programming (XP) –Variables –Values –Principles –Practices

42

Testing

Strong emphasis on regression testing– Unit tests need to execute all the time– Tests for completed features need to execute all the time

Unit tests pass 100%Acceptance tests (we haven't seen these) show progress on which user stories are workingOther testing frameworks include– JMeter, HttpUnit, JProbe, OptimizeIt, CPPUnit

Page 43: Extreme Programming C Sc 335 November, 28 2005. 2 Overview Essence of Extreme Programming (XP) –Variables –Values –Principles –Practices

43

12 Practices: Refactoring

Restructure code without changing the functionalityGoal: Keep design simple– Change bad design when you find it– Remove dead code

Examples at Martin Fowler's Web site: http://www.refactoring.com/ see online catalog

Page 44: Extreme Programming C Sc 335 November, 28 2005. 2 Overview Essence of Extreme Programming (XP) –Variables –Values –Principles –Practices

44

12 Practices: Pair programming

Write production code with 2 people on one machine– Person 1: Implements the method– Person 2: Thinks strategically about potential improvements, test

cases, issuesPairs change all the time. Has advantages such as– No single expert on any part of the system– Continuous code reviews, fewer defects– Cheaper in the long run, and more fun

Problems:– Not all people like it – Pairs need to be able to work together

Page 45: Extreme Programming C Sc 335 November, 28 2005. 2 Overview Essence of Extreme Programming (XP) –Variables –Values –Principles –Practices

45

12 Practices: Collective ownership

All code can be changed by anybody on the teamEverybody is required to improve any portion of bad code s/he seesEveryone has responsibility for the systemIndividual code ownership tends to create experts

Page 46: Extreme Programming C Sc 335 November, 28 2005. 2 Overview Essence of Extreme Programming (XP) –Variables –Values –Principles –Practices

46

12 Practices: Continuous integration formerly known as the 40 hour work week

Integration happens after a few hours of development

1. Checkout build with your changes, 2. Make sure all tests pass (green bar)3. In case of errors:

• Do not put changes into the build• Fix problems

4. Checkin the system to the integration machine5. Go to 1

Page 47: Extreme Programming C Sc 335 November, 28 2005. 2 Overview Essence of Extreme Programming (XP) –Variables –Values –Principles –Practices

47

Continuous Integration

Find problems earlyCan see if a change breaks the system more quickly -- while you remember the detailsSmall increments

Page 48: Extreme Programming C Sc 335 November, 28 2005. 2 Overview Essence of Extreme Programming (XP) –Variables –Values –Principles –Practices

48

Continuous Integration

Developing full speed only works with fresh peopleWorking overtime for two weeks in a row indicates problemWorking overtime can help the first week, and hurt the next weekAn XP day can be more exhausting, but you can get more done in 40 hours than 60

Page 49: Extreme Programming C Sc 335 November, 28 2005. 2 Overview Essence of Extreme Programming (XP) –Variables –Values –Principles –Practices

49

12 Practices: Coding standards

Coding Standard– Naming conventions and style– Least amount of work possible: Code should exist

once and only once

Team has to adopt a coding standard– Makes it easier to understand other people’s code– Avoids code changes because of syntactic

preferences

Page 50: Extreme Programming C Sc 335 November, 28 2005. 2 Overview Essence of Extreme Programming (XP) –Variables –Values –Principles –Practices

50

Project Size

XP was designed for small teams: 2-20Case studies show it can scalePractical advice and modifications are presented in Jutta Eckstein's new book– Agile Software Development in the Large http://jeckstein.com/agilebook/index.html

Page 51: Extreme Programming C Sc 335 November, 28 2005. 2 Overview Essence of Extreme Programming (XP) –Variables –Values –Principles –Practices

51

Become Agile

Become Part of the Agile movement– Rick is student volunteer chair for Agile 2006– July 23-28 2005 in Minneapolis MN– http://www.agile2006.org/