SlideShare ist ein Scribd-Unternehmen logo
1 von 55
Downloaden Sie, um offline zu lesen
Agile Softwareentwicklung
                          Lars Jankowfsky, swoodoo.com



Dienstag, 21. Juli 2009
Lars Jankowfsky

       • CTO and (Co-)Founder swoodoo AG
       • (Co-)Founder OXID eSales AG
       • XP, agile development fanatic
       • developing since 15+ years
       • php since php/fi
       • Software Architect > 10 years




Lars Jankowfsky, swoodoo.com
Dienstag, 21. Juli 2009
lessons learned




                COST           QUALITY   TIME   SCOPE
Lars Jankowfsky, swoodoo.com
Dienstag, 21. Juli 2009
Get Ready
                                FIRE!
                                Aim...
                                Aim...
                                Aim...

Lars Jankowfsky, swoodoo.com
Dienstag, 21. Juli 2009
Agile methods are based on:

          +
                 Communication

          +
                Simplicity

          +
                Feedback

          +
                Courage




Lars Jankowfsky, swoodoo.com
Dienstag, 21. Juli 2009
http://agilemanifesto.org/
                Individuals and interactions over processes
                and tools



                Working software over comprehensive
                documentation




                Customer collaboration over contract negotiation




                Responding to change over following a plan



Lars Jankowfsky, swoodoo.com
Dienstag, 21. Juli 2009
Agile ?       THINK !




Lars Jankowfsky, swoodoo.com
Dienstag, 21. Juli 2009
popular Agile methods
           ✓ Adaptive Software Development
           ✓ Feature Driven Development
           ✓ DSDM - Dynamic Systems Development Method
           ✓ Scrum
           ✓ crystal clear
           ✓ XP
           ✓....


Lars Jankowfsky, swoodoo.com
Dienstag, 21. Juli 2009
Scrum                                        !
                                                     Pigs, Chicken, User and
                                                     Stakeholder...

             ✓    Plan ( product backlog )           Very good process, used often.

             ✓    Sprint planning session
             ✓    Sprint ( == Iteration )
             ✓    Daily meetings
             ✓    Sprint review
             ✓    Closure
             ✓    http://www.controlchaos.com/




Lars Jankowfsky, swoodoo.com
Dienstag, 21. Juli 2009
eXtreme Programming
                      !
                                                   Besides crystal clear the only
                                                   process which focuses on
                                                   integration, testing and
             ✓    for smaller teams ( 2 - 12 )     developing.

             ✓    needs test-driven-development
             ✓    focuses on automatic testing
             ✓    a change in the way we program
             ✓    includes continuous integration
             ✓    http://www.extremeprogramming.org/




Lars Jankowfsky, swoodoo.com
Dienstag, 21. Juli 2009
eXtreme Programming

                  “Software development is too hard to spend time on
                  things that don't matter. So, what really matters?
                  Listening, Testing, Coding, and Designing.”

                  (Kent Beck, “father” of Extreme Programming)




Lars Jankowfsky, swoodoo.com
Dienstag, 21. Juli 2009
eXtreme Programming
                                                !
                                                           embrace changes!


                               +
                                   people vs. hardware



                               +
                                   automated tests



                               +
                                   continous integration




Lars Jankowfsky, swoodoo.com
Dienstag, 21. Juli 2009
eXtreme Programming

          +
                 Planning

          +
                Designing

          +
                Coding

          +
                Testing




Lars Jankowfsky, swoodoo.com
Dienstag, 21. Juli 2009
Planning XP

          +
                 The Customer




Lars Jankowfsky, swoodoo.com
Dienstag, 21. Juli 2009
Planning XP - the Customer

          Is always available
          Writes User Stories and specifies Functional Tests
          Sets priorities, explains stories
          May or may not be an end-user
          Has authority to decide questions about the stories
          Create/Defines acceptance tests




Lars Jankowfsky, swoodoo.com
Dienstag, 21. Juli 2009
Balancing Power




Lars Jankowfsky, swoodoo.com
Dienstag, 21. Juli 2009
Customer bill of rights
                          As the customer, you have the right to:


          An overall plan, to know what can be accomplished, when,
          and at what cost;
          Get the most possible value out of every programming week;
          See progress in a running system, proven to work by passing
          repeatable tests that you specify;
          Change your mind, to substitute functionality, and to change
          priorities without paying exorbitant costs;
          Be informed of schedule changes, in time to choose how to
          reduce scope to restore the original date, even cancel at any
          time and be left with a useful working system reflecting
          investment to date.




Lars Jankowfsky, swoodoo.com
Dienstag, 21. Juli 2009
Programmer bill of rights
                          As the Developer, you have the right to:


          Know what is needed, with clear declarations of priority;
          Produce quality work at all times;
          Ask for and receive help from peers, superiors, and
          customers;
          Make and update your own estimates;
          Accept your responsibilities instead of having them assigned
          to you.




Lars Jankowfsky, swoodoo.com
Dienstag, 21. Juli 2009
Planning XP

                 The Customer

          +
                Stories




Lars Jankowfsky, swoodoo.com
Dienstag, 21. Juli 2009
Planning XP - the Stories
      A short story about the functionality from the point
       of view of the Customer
      No technical jargon
      One for each major feature in the system
      Must be written by the customer
      Are used to create time estimates for release
       planning
      Replace a large Requirements Document
      The stories are the base for acceptance tests
      Only enough detail to make a low risk estimate of
       how long the story will take to implement.


Lars Jankowfsky, swoodoo.com
Dienstag, 21. Juli 2009
Planning XP - the Stories
      Use simple technics ( postit )
      Find a place where all developer can see the
       stories

               User Story Example:

                    User should be able to register
                    himself to get access to the
                    system.


                                                      3 SP



Lars Jankowfsky, swoodoo.com
Dienstag, 21. Juli 2009
Planning XP

                 The Customer


                Stories

          +
                Estimation




Lars Jankowfsky, swoodoo.com
Dienstag, 21. Juli 2009
Planning XP - Estimation
      Yesterdays Weather
      use your experience
      ask other teams which may have done similar
       things
      Estimate using „Story Points“ == ideal Person
       Days




Lars Jankowfsky, swoodoo.com
Dienstag, 21. Juli 2009
Planning XP

                 The Customer


                Stories


                Estimation

          +
                Release Plan




Lars Jankowfsky, swoodoo.com
Dienstag, 21. Juli 2009
Planning XP - Release Plan
      Customer defines the business value of desired
       stories ( priority )
      Stories which are too large need to be split into
       smaller chunks
      Higher risks stories should come first
      Define release dates - these are fixed, scope not




Lars Jankowfsky, swoodoo.com
Dienstag, 21. Juli 2009
The Release plan




Lars Jankowfsky, swoodoo.com
Dienstag, 21. Juli 2009
Never slip a date!




               falling behind ?        Change the plan!




Lars Jankowfsky, swoodoo.com
Dienstag, 21. Juli 2009
Planning XP - Iterations
      From release backlog the stories with highest
       priorities are taken and assigned to the next
       iteration.
      An iteration can be 1-3 weeks usually
      Stories for Iteration are broken down into Tasks by
       Developers
      Tasks are estimated by all Developers as a group
      Developers “sign up” for Tasks, and estimate the
       time to complete




Lars Jankowfsky, swoodoo.com
Dienstag, 21. Juli 2009
Planning XP - Iterations...
      If a task has more than 2-3 Story points, then
       break it into smaller parts.
      If there are any questions ask the customer, he
       should attend Iteration planning meeting
      Can only sign up for as many points as were
       completed in the last Iteration
      Once development begins, Project Velocity
       measures progress




Lars Jankowfsky, swoodoo.com
Dienstag, 21. Juli 2009
Planning XP - Iterations...




Lars Jankowfsky, swoodoo.com
Dienstag, 21. Juli 2009
During Iteration: Stand Up Meeting
      Track status in daily Stand-Up Meeting
      Ask for Story Points left - not for SP done
      Every morning for 5 minutes
      STAND UP!
      What did you do yesterday ?
      What do you plan todo today ?
      Any „Showstoppers“ or important issues ? ( e.g.
       taking half day off... )
      Tell Team what you did, not some „Task number“




Lars Jankowfsky, swoodoo.com
Dienstag, 21. Juli 2009
During Iteration: Tracking speed




Lars Jankowfsky, swoodoo.com
Dienstag, 21. Juli 2009
Designing XP
          +
                 Simplicity

          +
                Choose a System Metaphor

          +
                CRC Cards

          +
                Spike Solutions

          +
                Never Add Functionality Early

          +
                Refactor Mercilessly


Lars Jankowfsky, swoodoo.com
Dienstag, 21. Juli 2009
Designing XP: Refactor Mercilessly


           “Refactoring is the process of changing a software system in
           such a way that it does not alter the external behavior of the
           code yet improves its internal structure.” (Martin Fowler)




Lars Jankowfsky, swoodoo.com
Dienstag, 21. Juli 2009
Coding XP
          +
                 Use coding standards.




Lars Jankowfsky, swoodoo.com
Dienstag, 21. Juli 2009
Coding XP: Use coding standards
      Agree on standards in team
      Coding standards keep the code consistent and
       easy for the entire team to read and refactor.
      Write them down somewhere ( wiki / trac )
      phpCodeSniffer (preCommit Hook)




Lars Jankowfsky, swoodoo.com
Dienstag, 21. Juli 2009
Coding XP
                 Use coding standards.

          +
                Integrate often. Check in daily.




Lars Jankowfsky, swoodoo.com
Dienstag, 21. Juli 2009
Coding XP: Check in daily
      Forces developer to write small functions
      Makes it impossible to create huge frameworks/
       functions
      This is the fundament for having good tests later




Lars Jankowfsky, swoodoo.com
Dienstag, 21. Juli 2009
Coding XP
                 Use coding standards.


                Integrate often. Check in daily.

          +
                Code the unit test first.




Lars Jankowfsky, swoodoo.com
Dienstag, 21. Juli 2009
Coding XP: Code the unit test first.
      Upon creation of a function write unit tests
      Write many tests for each function
        Success case
        Error case
        Stupid input case




Lars Jankowfsky, swoodoo.com
Dienstag, 21. Juli 2009
Coding XP: Unit tests
      PHPUnit - http://www.phpunit.de/
      SimpleTest - http://simpletest.sourceforge.net/




Lars Jankowfsky, swoodoo.com
Dienstag, 21. Juli 2009
Coding XP
                 Use coding standards.


                Integrate often. Check in daily.


                Code the unit test first.

          +
                Use collective code ownership.




Lars Jankowfsky, swoodoo.com
Dienstag, 21. Juli 2009
Coding XP: collective code ownership
      Collective Code Ownership encourages everyone to
       contribute new ideas to all segments of the
       project. (Don Wells)
      Have a look what your collegaues are doing
      Any developer can change any line of code to add
       functionality, fix bugs, or refactor.




Lars Jankowfsky, swoodoo.com
Dienstag, 21. Juli 2009
Coding XP
                 Use coding standards.


                Integrate often. Check in daily.


                Code the unit test first.


                Use collective code ownership.

          +
                Leave optimization till last.




Lars Jankowfsky, swoodoo.com
Dienstag, 21. Juli 2009
Coding XP: Optimize last
      Make it work, make it right, then make it fast.
      Never guess what performance will be - measure it!
      Create clear rules for performance and test it. ( „ab“
       or „siege“ can be used in unit tests )




Lars Jankowfsky, swoodoo.com
Dienstag, 21. Juli 2009
Coding XP
                 Use coding standards.


                Integrate often. Check in daily.


                Code the unit test first.


                Use collective code ownership.


                Leave optimization till last.

          +
                No overtime.



Lars Jankowfsky, swoodoo.com
Dienstag, 21. Juli 2009
Coding XP: No overtime
      Projects that require overtime to be finished on
       time will be late no matter what you do.
      Overtime sucks the spirit and motivation out of a
       team.
      Better play a game instead and build castles
       instead of creating bugs in the software




Lars Jankowfsky, swoodoo.com
Dienstag, 21. Juli 2009
Testing XP

          +
                 Create acceptance tests.

          +
                Use continuous integration!

          +
                Run tests automatically

          +
                Publish the results




Lars Jankowfsky, swoodoo.com
Dienstag, 21. Juli 2009
Hope vs. knowledge




Lars Jankowfsky, swoodoo.com
Dienstag, 21. Juli 2009
Testing XP: Acceptance Tests
      use Selenium
      Java solution which enables automatic „click“
       tests.
      http://www.openqa.org/selenium/




Lars Jankowfsky, swoodoo.com
Dienstag, 21. Juli 2009
Testing XP: continuous integration

           Continuous Integration is a software development practice
           where members of a team integrate their work frequently,
           usually each person integrates at least daily - leading to multiple
           integrations per day. Each integration is verified by an
           automated build (including test) to detect integration errors as
           quickly as possible. ( Martin Fowler )

           http://www.martinfowler.com/articles/
           continuousIntegration.html




Lars Jankowfsky, swoodoo.com
Dienstag, 21. Juli 2009
Testing XP: continuous integration
      Various tools:
        phing
        XINC ( http://sourceforge.net/projects/xinc )
      We use cruisecontrol
      check out http://buildix.thoughtworks.com/
      phpUnderControl




Lars Jankowfsky, swoodoo.com
Dienstag, 21. Juli 2009
Testing XP: cruisecontrol GUI




Lars Jankowfsky, swoodoo.com
Dienstag, 21. Juli 2009
Questions ?




Lars Jankowfsky, swoodoo.com
Dienstag, 21. Juli 2009
Resources used:
           ✓ Extreme Programming: A gentle introduction.
           ✓ http://www.extremeprogramming.org/

           ✓ Extreme Programming - Introduction
           ✓ Mayford Technologies Inc.

           ✓ Wikipedia

           ✓ Extreme Programming Explained: Embrace Change.
           ✓ Kent Beck

           ✓ Refactoring Improving the Design of Existing Code.

Lars Jankowfsky, swoodoo.com
Dienstag, 21. Juli 2009

Weitere ähnliche Inhalte

Andere mochten auch

Layered Architecture 03 Format
Layered Architecture 03 FormatLayered Architecture 03 Format
Layered Architecture 03 Formatanishgoel
 
Soa Overview
Soa OverviewSoa Overview
Soa OverviewTerry Cho
 
N-Tier, Layered Design, SOA
N-Tier, Layered Design, SOAN-Tier, Layered Design, SOA
N-Tier, Layered Design, SOASperasoft
 
Software engineering : Layered Architecture
Software engineering : Layered ArchitectureSoftware engineering : Layered Architecture
Software engineering : Layered ArchitectureMuhammed Afsal Villan
 
Software Engineering - Ch11
Software Engineering - Ch11Software Engineering - Ch11
Software Engineering - Ch11Siddharth Ayer
 
Software Architecture Patterns
Software Architecture PatternsSoftware Architecture Patterns
Software Architecture PatternsAssaf Gannon
 
Layered architecture style
Layered architecture styleLayered architecture style
Layered architecture styleBegench Suhanov
 
Software Architecture and Design - An Overview
Software Architecture and Design - An OverviewSoftware Architecture and Design - An Overview
Software Architecture and Design - An OverviewOliver Stadie
 
Architectural Patterns and Software Architectures: Client-Server, Multi-Tier,...
Architectural Patterns and Software Architectures: Client-Server, Multi-Tier,...Architectural Patterns and Software Architectures: Client-Server, Multi-Tier,...
Architectural Patterns and Software Architectures: Client-Server, Multi-Tier,...Svetlin Nakov
 
Three Software Architecture Styles
Three Software Architecture StylesThree Software Architecture Styles
Three Software Architecture StylesJorgen Thelin
 

Andere mochten auch (14)

Layered Architecture 03 Format
Layered Architecture 03 FormatLayered Architecture 03 Format
Layered Architecture 03 Format
 
Soa Overview
Soa OverviewSoa Overview
Soa Overview
 
Osi Model
Osi ModelOsi Model
Osi Model
 
N-Tier, Layered Design, SOA
N-Tier, Layered Design, SOAN-Tier, Layered Design, SOA
N-Tier, Layered Design, SOA
 
Software engineering : Layered Architecture
Software engineering : Layered ArchitectureSoftware engineering : Layered Architecture
Software engineering : Layered Architecture
 
Software Engineering - Ch11
Software Engineering - Ch11Software Engineering - Ch11
Software Engineering - Ch11
 
Software Architecture Patterns
Software Architecture PatternsSoftware Architecture Patterns
Software Architecture Patterns
 
Layered architecture style
Layered architecture styleLayered architecture style
Layered architecture style
 
Ch6 architectural design
Ch6 architectural designCh6 architectural design
Ch6 architectural design
 
Layered Architecture
Layered ArchitectureLayered Architecture
Layered Architecture
 
Software Architecture and Design - An Overview
Software Architecture and Design - An OverviewSoftware Architecture and Design - An Overview
Software Architecture and Design - An Overview
 
Architectural Patterns and Software Architectures: Client-Server, Multi-Tier,...
Architectural Patterns and Software Architectures: Client-Server, Multi-Tier,...Architectural Patterns and Software Architectures: Client-Server, Multi-Tier,...
Architectural Patterns and Software Architectures: Client-Server, Multi-Tier,...
 
Three Software Architecture Styles
Three Software Architecture StylesThree Software Architecture Styles
Three Software Architecture Styles
 
Layered Software Architecture
Layered Software ArchitectureLayered Software Architecture
Layered Software Architecture
 

Ähnlich wie Agile Entwicklung OXID Commons

Agile Development with PHP in Practice
Agile Development with PHP in PracticeAgile Development with PHP in Practice
Agile Development with PHP in PracticeLars Jankowfsky
 
Basic Scrum Framework
Basic Scrum FrameworkBasic Scrum Framework
Basic Scrum FrameworkNaresh Jain
 
An agile approach to iPhone design: Paper prototyping + user testing
An agile approach to iPhone design:  Paper prototyping + user testingAn agile approach to iPhone design:  Paper prototyping + user testing
An agile approach to iPhone design: Paper prototyping + user testingGinsburg Design
 
iPhone Development Overview
iPhone Development OverviewiPhone Development Overview
iPhone Development OverviewTom Adams
 
UXPA2019 Building Your Benchmark: How to Measure UX for Product Impact Over Time
UXPA2019 Building Your Benchmark: How to Measure UX for Product Impact Over TimeUXPA2019 Building Your Benchmark: How to Measure UX for Product Impact Over Time
UXPA2019 Building Your Benchmark: How to Measure UX for Product Impact Over TimeUXPA International
 
Chad Udell - Developers are from Mars, Designers are from Venus
Chad Udell - Developers are from Mars, Designers are from VenusChad Udell - Developers are from Mars, Designers are from Venus
Chad Udell - Developers are from Mars, Designers are from Venus360|Conferences
 
eXtreme programming (XP) - An Overview
eXtreme programming (XP) - An OvervieweXtreme programming (XP) - An Overview
eXtreme programming (XP) - An OverviewGurtej Pal Singh
 
Introduction To Extreme Programming
Introduction To Extreme ProgrammingIntroduction To Extreme Programming
Introduction To Extreme ProgrammingJoe Drumgoole
 
Agile Product Development Workshop
Agile Product Development WorkshopAgile Product Development Workshop
Agile Product Development WorkshopSean Ammirati
 
Agile2008 Jdemo Slides
Agile2008 Jdemo SlidesAgile2008 Jdemo Slides
Agile2008 Jdemo SlidesIlja Preuß
 
Introduction to Extreme Programming
Introduction to Extreme ProgrammingIntroduction to Extreme Programming
Introduction to Extreme ProgrammingNaresh Jain
 
When to Code / Config / Config + Code in Salesforce - Nikunj Doshi
When to Code / Config / Config + Code in Salesforce - Nikunj DoshiWhen to Code / Config / Config + Code in Salesforce - Nikunj Doshi
When to Code / Config / Config + Code in Salesforce - Nikunj DoshiSakthivel Madesh
 
March 2009 Azrug Everything Old
March 2009 Azrug   Everything OldMarch 2009 Azrug   Everything Old
March 2009 Azrug Everything OldTom Weinberger
 
Scrum Out Of The Nutshell
Scrum Out Of The NutshellScrum Out Of The Nutshell
Scrum Out Of The NutshellDougShimp
 
Scrum Out Of The Nutshell V3
Scrum Out Of The Nutshell V3Scrum Out Of The Nutshell V3
Scrum Out Of The Nutshell V3Doug Shimp
 

Ähnlich wie Agile Entwicklung OXID Commons (20)

Agile Development with PHP in Practice
Agile Development with PHP in PracticeAgile Development with PHP in Practice
Agile Development with PHP in Practice
 
Mastering scrum
Mastering scrumMastering scrum
Mastering scrum
 
Basic Scrum Framework
Basic Scrum FrameworkBasic Scrum Framework
Basic Scrum Framework
 
An agile approach to iPhone design: Paper prototyping + user testing
An agile approach to iPhone design:  Paper prototyping + user testingAn agile approach to iPhone design:  Paper prototyping + user testing
An agile approach to iPhone design: Paper prototyping + user testing
 
Commercial Open Source
Commercial Open SourceCommercial Open Source
Commercial Open Source
 
iPhone Development Overview
iPhone Development OverviewiPhone Development Overview
iPhone Development Overview
 
UXPA2019 Building Your Benchmark: How to Measure UX for Product Impact Over Time
UXPA2019 Building Your Benchmark: How to Measure UX for Product Impact Over TimeUXPA2019 Building Your Benchmark: How to Measure UX for Product Impact Over Time
UXPA2019 Building Your Benchmark: How to Measure UX for Product Impact Over Time
 
Xp
XpXp
Xp
 
Chad Udell - Developers are from Mars, Designers are from Venus
Chad Udell - Developers are from Mars, Designers are from VenusChad Udell - Developers are from Mars, Designers are from Venus
Chad Udell - Developers are from Mars, Designers are from Venus
 
eXtreme programming (XP) - An Overview
eXtreme programming (XP) - An OvervieweXtreme programming (XP) - An Overview
eXtreme programming (XP) - An Overview
 
Why Agile
Why AgileWhy Agile
Why Agile
 
Introduction To Extreme Programming
Introduction To Extreme ProgrammingIntroduction To Extreme Programming
Introduction To Extreme Programming
 
Agile Product Development Workshop
Agile Product Development WorkshopAgile Product Development Workshop
Agile Product Development Workshop
 
Agile2008 Jdemo Slides
Agile2008 Jdemo SlidesAgile2008 Jdemo Slides
Agile2008 Jdemo Slides
 
Introduction to Extreme Programming
Introduction to Extreme ProgrammingIntroduction to Extreme Programming
Introduction to Extreme Programming
 
Graph everything
Graph everythingGraph everything
Graph everything
 
When to Code / Config / Config + Code in Salesforce - Nikunj Doshi
When to Code / Config / Config + Code in Salesforce - Nikunj DoshiWhen to Code / Config / Config + Code in Salesforce - Nikunj Doshi
When to Code / Config / Config + Code in Salesforce - Nikunj Doshi
 
March 2009 Azrug Everything Old
March 2009 Azrug   Everything OldMarch 2009 Azrug   Everything Old
March 2009 Azrug Everything Old
 
Scrum Out Of The Nutshell
Scrum Out Of The NutshellScrum Out Of The Nutshell
Scrum Out Of The Nutshell
 
Scrum Out Of The Nutshell V3
Scrum Out Of The Nutshell V3Scrum Out Of The Nutshell V3
Scrum Out Of The Nutshell V3
 

Mehr von Lars Jankowfsky

Caching, sharding, distributing - Scaling best practices
Caching, sharding, distributing - Scaling best practicesCaching, sharding, distributing - Scaling best practices
Caching, sharding, distributing - Scaling best practicesLars Jankowfsky
 
Why Architecture Matters
Why Architecture MattersWhy Architecture Matters
Why Architecture MattersLars Jankowfsky
 
Monitor Your Business V2
Monitor Your Business V2Monitor Your Business V2
Monitor Your Business V2Lars Jankowfsky
 
So gelingt der Umstieg von PHP4 auf PHP5: Erneuerung von Geschäftsanwendung...
So gelingt der Umstieg von PHP4 auf  PHP5: Erneuerung von  Geschäftsanwendung...So gelingt der Umstieg von PHP4 auf  PHP5: Erneuerung von  Geschäftsanwendung...
So gelingt der Umstieg von PHP4 auf PHP5: Erneuerung von Geschäftsanwendung...Lars Jankowfsky
 
Agile Softwareentwicklung Bei Geschäftsanwendungen
Agile Softwareentwicklung Bei GeschäftsanwendungenAgile Softwareentwicklung Bei Geschäftsanwendungen
Agile Softwareentwicklung Bei GeschäftsanwendungenLars Jankowfsky
 
Theory and practice – migrating your legacy code into our modern test drive...
Theory and practice – migrating your  legacy code into our modern test  drive...Theory and practice – migrating your  legacy code into our modern test  drive...
Theory and practice – migrating your legacy code into our modern test drive...Lars Jankowfsky
 

Mehr von Lars Jankowfsky (8)

Caching, sharding, distributing - Scaling best practices
Caching, sharding, distributing - Scaling best practicesCaching, sharding, distributing - Scaling best practices
Caching, sharding, distributing - Scaling best practices
 
Unittests für Dummies
Unittests für DummiesUnittests für Dummies
Unittests für Dummies
 
Why Architecture Matters
Why Architecture MattersWhy Architecture Matters
Why Architecture Matters
 
Monitor Your Business V2
Monitor Your Business V2Monitor Your Business V2
Monitor Your Business V2
 
So gelingt der Umstieg von PHP4 auf PHP5: Erneuerung von Geschäftsanwendung...
So gelingt der Umstieg von PHP4 auf  PHP5: Erneuerung von  Geschäftsanwendung...So gelingt der Umstieg von PHP4 auf  PHP5: Erneuerung von  Geschäftsanwendung...
So gelingt der Umstieg von PHP4 auf PHP5: Erneuerung von Geschäftsanwendung...
 
Monitor Your Business
Monitor Your BusinessMonitor Your Business
Monitor Your Business
 
Agile Softwareentwicklung Bei Geschäftsanwendungen
Agile Softwareentwicklung Bei GeschäftsanwendungenAgile Softwareentwicklung Bei Geschäftsanwendungen
Agile Softwareentwicklung Bei Geschäftsanwendungen
 
Theory and practice – migrating your legacy code into our modern test drive...
Theory and practice – migrating your  legacy code into our modern test  drive...Theory and practice – migrating your  legacy code into our modern test  drive...
Theory and practice – migrating your legacy code into our modern test drive...
 

Kürzlich hochgeladen

The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...Wes McKinney
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsNathaniel Shimoni
 
Manual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditManual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditSkynet Technologies
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersNicole Novielli
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Hiroshi SHIBATA
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityIES VE
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...AliaaTarek5
 
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Scott Andery
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterMydbops
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch TuesdayIvanti
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesThousandEyes
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationKnoldus Inc.
 

Kürzlich hochgeladen (20)

The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directions
 
Manual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditManual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance Audit
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a reality
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
 
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL Router
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch Tuesday
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog Presentation
 

Agile Entwicklung OXID Commons

  • 1. Agile Softwareentwicklung Lars Jankowfsky, swoodoo.com Dienstag, 21. Juli 2009
  • 2. Lars Jankowfsky • CTO and (Co-)Founder swoodoo AG • (Co-)Founder OXID eSales AG • XP, agile development fanatic • developing since 15+ years • php since php/fi • Software Architect > 10 years Lars Jankowfsky, swoodoo.com Dienstag, 21. Juli 2009
  • 3. lessons learned COST QUALITY TIME SCOPE Lars Jankowfsky, swoodoo.com Dienstag, 21. Juli 2009
  • 4. Get Ready FIRE! Aim... Aim... Aim... Lars Jankowfsky, swoodoo.com Dienstag, 21. Juli 2009
  • 5. Agile methods are based on: + Communication + Simplicity + Feedback + Courage Lars Jankowfsky, swoodoo.com Dienstag, 21. Juli 2009
  • 6. http://agilemanifesto.org/ Individuals and interactions over processes and tools Working software over comprehensive documentation Customer collaboration over contract negotiation Responding to change over following a plan Lars Jankowfsky, swoodoo.com Dienstag, 21. Juli 2009
  • 7. Agile ? THINK ! Lars Jankowfsky, swoodoo.com Dienstag, 21. Juli 2009
  • 8. popular Agile methods ✓ Adaptive Software Development ✓ Feature Driven Development ✓ DSDM - Dynamic Systems Development Method ✓ Scrum ✓ crystal clear ✓ XP ✓.... Lars Jankowfsky, swoodoo.com Dienstag, 21. Juli 2009
  • 9. Scrum ! Pigs, Chicken, User and Stakeholder... ✓ Plan ( product backlog ) Very good process, used often. ✓ Sprint planning session ✓ Sprint ( == Iteration ) ✓ Daily meetings ✓ Sprint review ✓ Closure ✓ http://www.controlchaos.com/ Lars Jankowfsky, swoodoo.com Dienstag, 21. Juli 2009
  • 10. eXtreme Programming ! Besides crystal clear the only process which focuses on integration, testing and ✓ for smaller teams ( 2 - 12 ) developing. ✓ needs test-driven-development ✓ focuses on automatic testing ✓ a change in the way we program ✓ includes continuous integration ✓ http://www.extremeprogramming.org/ Lars Jankowfsky, swoodoo.com Dienstag, 21. Juli 2009
  • 11. eXtreme Programming “Software development is too hard to spend time on things that don't matter. So, what really matters? Listening, Testing, Coding, and Designing.” (Kent Beck, “father” of Extreme Programming) Lars Jankowfsky, swoodoo.com Dienstag, 21. Juli 2009
  • 12. eXtreme Programming ! embrace changes! + people vs. hardware + automated tests + continous integration Lars Jankowfsky, swoodoo.com Dienstag, 21. Juli 2009
  • 13. eXtreme Programming + Planning + Designing + Coding + Testing Lars Jankowfsky, swoodoo.com Dienstag, 21. Juli 2009
  • 14. Planning XP + The Customer Lars Jankowfsky, swoodoo.com Dienstag, 21. Juli 2009
  • 15. Planning XP - the Customer  Is always available  Writes User Stories and specifies Functional Tests  Sets priorities, explains stories  May or may not be an end-user  Has authority to decide questions about the stories  Create/Defines acceptance tests Lars Jankowfsky, swoodoo.com Dienstag, 21. Juli 2009
  • 16. Balancing Power Lars Jankowfsky, swoodoo.com Dienstag, 21. Juli 2009
  • 17. Customer bill of rights As the customer, you have the right to: An overall plan, to know what can be accomplished, when, and at what cost; Get the most possible value out of every programming week; See progress in a running system, proven to work by passing repeatable tests that you specify; Change your mind, to substitute functionality, and to change priorities without paying exorbitant costs; Be informed of schedule changes, in time to choose how to reduce scope to restore the original date, even cancel at any time and be left with a useful working system reflecting investment to date. Lars Jankowfsky, swoodoo.com Dienstag, 21. Juli 2009
  • 18. Programmer bill of rights As the Developer, you have the right to: Know what is needed, with clear declarations of priority; Produce quality work at all times; Ask for and receive help from peers, superiors, and customers; Make and update your own estimates; Accept your responsibilities instead of having them assigned to you. Lars Jankowfsky, swoodoo.com Dienstag, 21. Juli 2009
  • 19. Planning XP The Customer + Stories Lars Jankowfsky, swoodoo.com Dienstag, 21. Juli 2009
  • 20. Planning XP - the Stories  A short story about the functionality from the point of view of the Customer  No technical jargon  One for each major feature in the system  Must be written by the customer  Are used to create time estimates for release planning  Replace a large Requirements Document  The stories are the base for acceptance tests  Only enough detail to make a low risk estimate of how long the story will take to implement. Lars Jankowfsky, swoodoo.com Dienstag, 21. Juli 2009
  • 21. Planning XP - the Stories  Use simple technics ( postit )  Find a place where all developer can see the stories User Story Example: User should be able to register himself to get access to the system. 3 SP Lars Jankowfsky, swoodoo.com Dienstag, 21. Juli 2009
  • 22. Planning XP The Customer Stories + Estimation Lars Jankowfsky, swoodoo.com Dienstag, 21. Juli 2009
  • 23. Planning XP - Estimation  Yesterdays Weather  use your experience  ask other teams which may have done similar things  Estimate using „Story Points“ == ideal Person Days Lars Jankowfsky, swoodoo.com Dienstag, 21. Juli 2009
  • 24. Planning XP The Customer Stories Estimation + Release Plan Lars Jankowfsky, swoodoo.com Dienstag, 21. Juli 2009
  • 25. Planning XP - Release Plan  Customer defines the business value of desired stories ( priority )  Stories which are too large need to be split into smaller chunks  Higher risks stories should come first  Define release dates - these are fixed, scope not Lars Jankowfsky, swoodoo.com Dienstag, 21. Juli 2009
  • 26. The Release plan Lars Jankowfsky, swoodoo.com Dienstag, 21. Juli 2009
  • 27. Never slip a date! falling behind ? Change the plan! Lars Jankowfsky, swoodoo.com Dienstag, 21. Juli 2009
  • 28. Planning XP - Iterations  From release backlog the stories with highest priorities are taken and assigned to the next iteration.  An iteration can be 1-3 weeks usually  Stories for Iteration are broken down into Tasks by Developers  Tasks are estimated by all Developers as a group  Developers “sign up” for Tasks, and estimate the time to complete Lars Jankowfsky, swoodoo.com Dienstag, 21. Juli 2009
  • 29. Planning XP - Iterations...  If a task has more than 2-3 Story points, then break it into smaller parts.  If there are any questions ask the customer, he should attend Iteration planning meeting  Can only sign up for as many points as were completed in the last Iteration  Once development begins, Project Velocity measures progress Lars Jankowfsky, swoodoo.com Dienstag, 21. Juli 2009
  • 30. Planning XP - Iterations... Lars Jankowfsky, swoodoo.com Dienstag, 21. Juli 2009
  • 31. During Iteration: Stand Up Meeting  Track status in daily Stand-Up Meeting  Ask for Story Points left - not for SP done  Every morning for 5 minutes  STAND UP!  What did you do yesterday ?  What do you plan todo today ?  Any „Showstoppers“ or important issues ? ( e.g. taking half day off... )  Tell Team what you did, not some „Task number“ Lars Jankowfsky, swoodoo.com Dienstag, 21. Juli 2009
  • 32. During Iteration: Tracking speed Lars Jankowfsky, swoodoo.com Dienstag, 21. Juli 2009
  • 33. Designing XP + Simplicity + Choose a System Metaphor + CRC Cards + Spike Solutions + Never Add Functionality Early + Refactor Mercilessly Lars Jankowfsky, swoodoo.com Dienstag, 21. Juli 2009
  • 34. Designing XP: Refactor Mercilessly “Refactoring is the process of changing a software system in such a way that it does not alter the external behavior of the code yet improves its internal structure.” (Martin Fowler) Lars Jankowfsky, swoodoo.com Dienstag, 21. Juli 2009
  • 35. Coding XP + Use coding standards. Lars Jankowfsky, swoodoo.com Dienstag, 21. Juli 2009
  • 36. Coding XP: Use coding standards  Agree on standards in team  Coding standards keep the code consistent and easy for the entire team to read and refactor.  Write them down somewhere ( wiki / trac )  phpCodeSniffer (preCommit Hook) Lars Jankowfsky, swoodoo.com Dienstag, 21. Juli 2009
  • 37. Coding XP Use coding standards. + Integrate often. Check in daily. Lars Jankowfsky, swoodoo.com Dienstag, 21. Juli 2009
  • 38. Coding XP: Check in daily  Forces developer to write small functions  Makes it impossible to create huge frameworks/ functions  This is the fundament for having good tests later Lars Jankowfsky, swoodoo.com Dienstag, 21. Juli 2009
  • 39. Coding XP Use coding standards. Integrate often. Check in daily. + Code the unit test first. Lars Jankowfsky, swoodoo.com Dienstag, 21. Juli 2009
  • 40. Coding XP: Code the unit test first.  Upon creation of a function write unit tests  Write many tests for each function  Success case  Error case  Stupid input case Lars Jankowfsky, swoodoo.com Dienstag, 21. Juli 2009
  • 41. Coding XP: Unit tests  PHPUnit - http://www.phpunit.de/  SimpleTest - http://simpletest.sourceforge.net/ Lars Jankowfsky, swoodoo.com Dienstag, 21. Juli 2009
  • 42. Coding XP Use coding standards. Integrate often. Check in daily. Code the unit test first. + Use collective code ownership. Lars Jankowfsky, swoodoo.com Dienstag, 21. Juli 2009
  • 43. Coding XP: collective code ownership  Collective Code Ownership encourages everyone to contribute new ideas to all segments of the project. (Don Wells)  Have a look what your collegaues are doing  Any developer can change any line of code to add functionality, fix bugs, or refactor. Lars Jankowfsky, swoodoo.com Dienstag, 21. Juli 2009
  • 44. Coding XP Use coding standards. Integrate often. Check in daily. Code the unit test first. Use collective code ownership. + Leave optimization till last. Lars Jankowfsky, swoodoo.com Dienstag, 21. Juli 2009
  • 45. Coding XP: Optimize last  Make it work, make it right, then make it fast.  Never guess what performance will be - measure it!  Create clear rules for performance and test it. ( „ab“ or „siege“ can be used in unit tests ) Lars Jankowfsky, swoodoo.com Dienstag, 21. Juli 2009
  • 46. Coding XP Use coding standards. Integrate often. Check in daily. Code the unit test first. Use collective code ownership. Leave optimization till last. + No overtime. Lars Jankowfsky, swoodoo.com Dienstag, 21. Juli 2009
  • 47. Coding XP: No overtime  Projects that require overtime to be finished on time will be late no matter what you do.  Overtime sucks the spirit and motivation out of a team.  Better play a game instead and build castles instead of creating bugs in the software Lars Jankowfsky, swoodoo.com Dienstag, 21. Juli 2009
  • 48. Testing XP + Create acceptance tests. + Use continuous integration! + Run tests automatically + Publish the results Lars Jankowfsky, swoodoo.com Dienstag, 21. Juli 2009
  • 49. Hope vs. knowledge Lars Jankowfsky, swoodoo.com Dienstag, 21. Juli 2009
  • 50. Testing XP: Acceptance Tests  use Selenium  Java solution which enables automatic „click“ tests.  http://www.openqa.org/selenium/ Lars Jankowfsky, swoodoo.com Dienstag, 21. Juli 2009
  • 51. Testing XP: continuous integration Continuous Integration is a software development practice where members of a team integrate their work frequently, usually each person integrates at least daily - leading to multiple integrations per day. Each integration is verified by an automated build (including test) to detect integration errors as quickly as possible. ( Martin Fowler ) http://www.martinfowler.com/articles/ continuousIntegration.html Lars Jankowfsky, swoodoo.com Dienstag, 21. Juli 2009
  • 52. Testing XP: continuous integration  Various tools:  phing  XINC ( http://sourceforge.net/projects/xinc )  We use cruisecontrol  check out http://buildix.thoughtworks.com/  phpUnderControl Lars Jankowfsky, swoodoo.com Dienstag, 21. Juli 2009
  • 53. Testing XP: cruisecontrol GUI Lars Jankowfsky, swoodoo.com Dienstag, 21. Juli 2009
  • 54. Questions ? Lars Jankowfsky, swoodoo.com Dienstag, 21. Juli 2009
  • 55. Resources used: ✓ Extreme Programming: A gentle introduction. ✓ http://www.extremeprogramming.org/ ✓ Extreme Programming - Introduction ✓ Mayford Technologies Inc. ✓ Wikipedia ✓ Extreme Programming Explained: Embrace Change. ✓ Kent Beck ✓ Refactoring Improving the Design of Existing Code. Lars Jankowfsky, swoodoo.com Dienstag, 21. Juli 2009