eXtreme Programming In Action Radoslav Nemchev Nemetschek OOD - PowerPoint PPT Presentation

About This Presentation
Title:

eXtreme Programming In Action Radoslav Nemchev Nemetschek OOD

Description:

eXtreme Programming In Action Radoslav Nemchev Nemetschek OOD XP in action Choose the project Involve the customer Involve the team Apply the practices Automate ... – PowerPoint PPT presentation

Number of Views:137
Avg rating:3.0/5.0
Slides: 30
Provided by: B313
Category:

less

Transcript and Presenter's Notes

Title: eXtreme Programming In Action Radoslav Nemchev Nemetschek OOD


1
eXtreme Programming In ActionRadoslav
NemchevNemetschek OOD
2
XP in action
  • Choose the project
  • Involve the customer
  • Involve the team
  • Apply the practices
  • Automate

3
Choose the project
  • Not too big
  • Not too small
  • Not too important
  • Not too unimportant

4
Involve the Customer
How to make him work the XP way?
Who is the customer?
5
Involve the team
  • Guarantee them immunity
  • Give them time
  • Strictly control the practices application
  • Let them see the benefits by themselves
  • Provide communication stand-up meetings, open
    workspace,
  • Shared understanding and responsibility for the
    system System Metaphor

6
Apply the practices
  • Introducing all practices at once, or just one
    practice at a time?
  • Answer Adopt one practice at a time.
  • What the order should be?
  • Answer Follow the natural order from CR
    oriented through design to testing and coding.

7
Customer on-site
  • Customer or Developer on-site?
  • Get the user stories
  • Make him determine priorities high business
    value first
  • Get him to give you immediate and frequent
    feedback
  • Involve him into specification of functional
    acceptance tests

8
Planning game
  • How to plan?
  • Create and prioritize user stories - customer
  • Estimate difficulties - developers
  • Select stories for next release - customer
  • Split stories into tasks - developers
  • Plan the tasks for the next iteration -
    customer/developers

9
Small Releases
  • My program is all or nothing! Wrong! Inside every
    large program there are lots of little programs
    trying to get out. Make them into small releases.
  • Make as many iterations as possible per release
  • Keep good track of progress
  • Deliver business value to the customer fast
  • Gives sense of accomplishment to the team
  • Keep the team focused

10
Test First
  • Test-Driven development
  • Design a test that will fail
  • Compile it and check that it fails
  • Write just enough code to make the test run
  • Design evolves from tests
  • The benefit must be higher than the cost
  • Testing slows you down?
  • Apply same quality standards for test and code
  • Tests ARE documentation
  • Automate

11
Isolation Testing
  • Collaborators of the unit under test are
  • Trustworthy
  • Implicit usage
  • Object Mother Pattern
  • Substituted in the test
  • Stubs
  • Self-shunt pattern
  • Mock objects

12
NUnit
  • Unit tests framework
  • Write tests
  • Execute tests
  • Assert results
  • Show tests failure/success
  • Keep the bar green
  • http//nunit.org/default.htm

13
NUnit test example
14
Write test that will fail
15
Write just the code that makes the test pass
16
Refactoring
  • Why refactor?
  • Nobody does it quite right the first time
  • To improve design
  • To simplify code
  • To ease future changes in the code
  • When do we refactor?
  • Continuously
  • When code or test smells
  • Automation

17
C Refactory
  • Integrated tool for Visual Studio
  • Simplifies code refactoring
  • Performs automatic code metrics collection
  • http//www.xtreme-simplicity.net/

18
Integration into MS Visual Studio
19
Code metrics collection
20
Refactoring with C Refactory
21
Member reference finder
22
Simple design
  • How to achieve this?
  • Evolutionary design design evolves while coding
    and refactoring
  • If you dont need it now, you wont need it ever
    -develop only functionality that is required
  • Satisfy tests in the simplest possible way
  • Refactoring as soon as the tests run
  • And again keep it as simple as possible!

23
System Metaphor
  • What?
  • Everybody is involved, everybody is interested
  • Everybody understands and is responsible for
  • Base architecture
  • Whole system
  • How?
  • Dont separate the team into designers and coders
  • Change pairs often

24
Pair programming
  • Why?
  • 2 gt 1
  • Two programmers will understand the code
  • Keeps programmers focused
  • When do it?
  • XP says always
  • Is it possible in real life? Is it really
    necessary all the time?

25
Continuous Integration
  • You cant put it off forever. Better do it all
    the time
  • Spare yourself the Big Bang disaster
  • Keep the tests working 100 during the
    integration
  • Use a dedicated integrated machine
  • Keep the build time low
  • Automate through scripts, tools, etc

26
Collective Code Ownership
  • This is not my object! WRONG!
  • Use version control system CVS, VSS,
  • You brake it, you fix it

27
MS Visual Source Safe
  • Automates Continuous Integration and Collective
    Code Ownership
  • Provides version tracking
  • Integrates with MS Visual Studio

28
Coding Standards
  • I can always read my own code. Wait, its all my
    code!
  • Let the team setup coding standards prior to
    coding and agree on them
  • Force coding standards application, no exceptions
  • Keep it simple

29
40 hour week
  • Tired people make mistakes
  • Tired people tend to overlook things like
    testing, refactoring, etc.
  • Work at maximum concentration 8 hours per day
  • 6 PM you are tired, go home
  • Dont work more than 1 consecutive week of
    overtime
Write a Comment
User Comments (0)
About PowerShow.com