SlideShare a Scribd company logo
1 of 3
Download to read offline
+XP vs Lean vs FDD


Topic: Over the years often I have noticed people getting confused between XP, Lean and FDD. So I have tried to put
together the differences here.

Extreme Programming (XP)
XP, originally described by Kent Beck, has emerged as one of the most popular and controversial agile methods. XP is a
disciplined approach to delivering high-quality software quickly and continuously. It promotes high customer involvement,
rapid feedback loops, continuous testing, continuous planning, and close teamwork to deliver working software at very
frequent intervals, typically every 1-3 weeks.

The original XP recipe is based on four simple values – simplicity, communication, feedback, and courage – and twelve
supporting practices:

    1.    Planning Game
    2.    Small Releases
    3.    Customer Acceptance Tests
    4.    Simple Design
    5.    Pair Programming
    6.    Test-Driven Development
    7.    Refactoring
    8.    Continuous Integration
    9.    Collective Code Ownership
    10.   Coding Standards
    11.   Metaphor
    12.   Sustainable Pace




                                        Figure 2.0 [1]

In XP, the “Customer” works very closely with the development team to define and prioritize granular units of functionality
referred to as "User Stories". The development team estimates, plans, and delivers the highest priority user stories in the
form of working, tested software on an iteration by iteration basis.
2
In order to maximize productivity, the practices provide a supportive, lightweight framework to guide a team and ensure
high-quality software.

The main aim of XP is to reduce the cost of change. In traditional system development methods the requirements for the
system are determined at the beginning of the development project and often fixed from that point on. This means that the
cost of changing the requirements at a later stage will be high. XP sets out to reduce the cost of change by introducing
basic values, principles and practices. However, for applying XP, a system development project should be more flexible
with respect to changes. Because of its nature as Becks suggests as maximum of 10 programmers can ideally work in an
XP project this framework unlikely to work in slightly bigger projects.

Feature-Driven Development (FDD)
FDD was originally developed and articulated by Jeff De Luca, with contributions “by M.A. Rajashima, Lim Bak Wee, Paul
                                       [2]
Szego, Jon Kern and Stephen Palmer.”
The first incarnations of FDD occured as a result of collaboration between De Luca and OOD thought leader Peter Coad.

Feature-driven development is a process for helping teams produce frequent, tangible working results. It uses very small
blocks of client valued functionality, called features. The features are small, "useful in the eyes of the client" results. FDD
organizes those little blocks into business-related feature sets. FDD focuses developers on producing working results
every two weeks. FDD includes planning strategies and tracks progress with precision.

FDD designs the rest of the development process around feature delivery using the following eight practices:

    1.   Domain Object Modeling
    2.   Developing by Feature
    3.   Component/Class Ownership
    4.   Feature Teams
    5.   Inspections
    6.   Configuration Management
    7.   Regular Builds
    8.   Visibility of progress and results

FDD recommends specific programmer practices such as "Regular Builds" and "Component/Class Ownership". FDD's
proponents claim that it scales more straightforwardly than other approaches, and is better suited to larger teams. Unlike
other agile approaches, FDD describes specific, very short phases of work which are to be accomplished separately per
feature. These include Domain Walkthrough, Design, Design Inspection, Code, Code Inspection, and Promote to Build.
Because of its nature it perfectly works in large projects.



Lean Software Development
Lean Software Development is an iterative methodology originally developed by Mary and Tom Poppendieck. Lean
Software Development owes much of its principles and practices to the Lean Enterprise movement, and the practices of
companies like Toyota.

Lean Software Development focuses the team on delivering Value to the customer, and on the efficiency of the "Value
Stream," the mechanisms that deliver that Value. The main principles of Lean include:

    1.   Eliminating Waste
    2.   Amplifying Learning
    3.   Deciding as Late as Possible
    4.   Delivering as Fast as Possible
    5.   Empowering the Team
    6.   Building Integrity In
    7.   Seeing the Whole
3
Lean eliminates waste through such practices as selecting only the truly valuable features for a system, prioritizing those
selected, and delivering them in small batches. It emphasizes the speed and efficiency of development workflow, and
relies on rapid and reliable feedback between programmers and customers. Lean uses the idea of work product being
"pulled" via customer request. It focuses decision-making authority and ability on individuals and small teams, since
research shows this to be faster and more efficient than hierarchical flow of control. Lean also concentrates on the
efficiency of the use of team resources, trying to ensure that everyone is productive as much of the time as possible. So it
concentrates on concurrent work, and the fewest possible intra-team workflow dependencies. Lean also strongly
recommends that automated unit tests be written at the same time the code is written.

Bibliography:
    1. http://www. extremeprogramming.org

    2. http://en.wikipedia.org/wiki/Feature_Driven_Development

    3. http://sphereofinfluence.com/soiblogs/tscheer/archive/2005/09/19/159.aspx

    4. An Introduction to Agile Methods
       Steve Hayes (Khatovar Technology), Martin Andrews (Object Consulting)

    5. http://en.wikipedia.org/wiki/Lean_software_development

    6. http://en.wikipedia.org/wiki/Extreme_Programming

More Related Content

What's hot

Project management methodologies
Project management methodologiesProject management methodologies
Project management methodologiesRosu Gabi
 
extreme Programming
extreme Programmingextreme Programming
extreme ProgrammingBilal Shah
 
Agile software development
Agile software developmentAgile software development
Agile software developmentMat Siems
 
Agile - Scrum Presentation
Agile - Scrum PresentationAgile - Scrum Presentation
Agile - Scrum Presentationgihanlsw
 
Introducing Agile Scrum XP and Kanban
Introducing Agile Scrum XP and KanbanIntroducing Agile Scrum XP and Kanban
Introducing Agile Scrum XP and KanbanDimitri Ponomareff
 
Agile software development process
Agile software development processAgile software development process
Agile software development processMir karam khan
 
Programación Extrema (Extream Programming XP)
Programación Extrema (Extream Programming XP)Programación Extrema (Extream Programming XP)
Programación Extrema (Extream Programming XP)Cesar Acosta
 
Agile presentation
Agile presentationAgile presentation
Agile presentationinfolock
 
Scrum - Agile Methodology
Scrum - Agile MethodologyScrum - Agile Methodology
Scrum - Agile MethodologyNiel Deckx
 
Introduction agile scrum methodology
Introduction agile scrum methodologyIntroduction agile scrum methodology
Introduction agile scrum methodologyAmit Verma
 
Agile methodology
Agile methodologyAgile methodology
Agile methodologyDhruv Kumar
 
Introduction to Kanban (June 2015)
Introduction to Kanban (June 2015)Introduction to Kanban (June 2015)
Introduction to Kanban (June 2015)Scrum & Kanban
 
Standard For Program Management Changes
Standard For Program Management ChangesStandard For Program Management Changes
Standard For Program Management Changesgryasam
 
Capability Maturity Model Integration (CMMI)
Capability Maturity Model Integration (CMMI)Capability Maturity Model Integration (CMMI)
Capability Maturity Model Integration (CMMI)MariamKhan120
 

What's hot (20)

Project management methodologies
Project management methodologiesProject management methodologies
Project management methodologies
 
extreme Programming
extreme Programmingextreme Programming
extreme Programming
 
Scrum vs Kanban
Scrum vs KanbanScrum vs Kanban
Scrum vs Kanban
 
Agile software development
Agile software developmentAgile software development
Agile software development
 
Agile - Scrum Presentation
Agile - Scrum PresentationAgile - Scrum Presentation
Agile - Scrum Presentation
 
Introducing Agile Scrum XP and Kanban
Introducing Agile Scrum XP and KanbanIntroducing Agile Scrum XP and Kanban
Introducing Agile Scrum XP and Kanban
 
Agile software development process
Agile software development processAgile software development process
Agile software development process
 
Scrum Training
Scrum TrainingScrum Training
Scrum Training
 
Spiral model of SDLC
Spiral model of SDLCSpiral model of SDLC
Spiral model of SDLC
 
Programación Extrema (Extream Programming XP)
Programación Extrema (Extream Programming XP)Programación Extrema (Extream Programming XP)
Programación Extrema (Extream Programming XP)
 
Agile presentation
Agile presentationAgile presentation
Agile presentation
 
No silver bullet
No silver bulletNo silver bullet
No silver bullet
 
Kanban
Kanban Kanban
Kanban
 
Scrum - Agile Methodology
Scrum - Agile MethodologyScrum - Agile Methodology
Scrum - Agile Methodology
 
Introduction agile scrum methodology
Introduction agile scrum methodologyIntroduction agile scrum methodology
Introduction agile scrum methodology
 
Agile Scrum Framework vs Kanban Method
Agile Scrum Framework  vs Kanban MethodAgile Scrum Framework  vs Kanban Method
Agile Scrum Framework vs Kanban Method
 
Agile methodology
Agile methodologyAgile methodology
Agile methodology
 
Introduction to Kanban (June 2015)
Introduction to Kanban (June 2015)Introduction to Kanban (June 2015)
Introduction to Kanban (June 2015)
 
Standard For Program Management Changes
Standard For Program Management ChangesStandard For Program Management Changes
Standard For Program Management Changes
 
Capability Maturity Model Integration (CMMI)
Capability Maturity Model Integration (CMMI)Capability Maturity Model Integration (CMMI)
Capability Maturity Model Integration (CMMI)
 

Viewers also liked

Fractional knapsack class 13
Fractional knapsack class 13Fractional knapsack class 13
Fractional knapsack class 13Kumar
 
Lean Software Development Principles
Lean Software Development PrinciplesLean Software Development Principles
Lean Software Development PrinciplesJohn Vajda
 

Viewers also liked (6)

Fractional knapsack class 13
Fractional knapsack class 13Fractional knapsack class 13
Fractional knapsack class 13
 
Knapsack problem
Knapsack problemKnapsack problem
Knapsack problem
 
Knapsack
KnapsackKnapsack
Knapsack
 
Lean vs scrum
Lean vs scrumLean vs scrum
Lean vs scrum
 
Knapsack Problem
Knapsack ProblemKnapsack Problem
Knapsack Problem
 
Lean Software Development Principles
Lean Software Development PrinciplesLean Software Development Principles
Lean Software Development Principles
 

Similar to XP vs Lean vs FDD

Extreme Programming (XP) as A Popular Agile methodology.
Extreme Programming (XP) as A Popular Agile methodology.Extreme Programming (XP) as A Popular Agile methodology.
Extreme Programming (XP) as A Popular Agile methodology.Ali Shaikh
 
Flavours of agile software engineering
Flavours of agile software engineeringFlavours of agile software engineering
Flavours of agile software engineeringZeeshan Masood S
 
Flavours of agile software engineering
Flavours of agile software engineeringFlavours of agile software engineering
Flavours of agile software engineeringZeeshan Masood S
 
Week_03-Agile Developmnet.ppt
Week_03-Agile Developmnet.pptWeek_03-Agile Developmnet.ppt
Week_03-Agile Developmnet.pptRedHeart11
 
A Systematic Study On Agile Software Development Methodlogies And Practices
A Systematic Study On Agile Software Development Methodlogies And PracticesA Systematic Study On Agile Software Development Methodlogies And Practices
A Systematic Study On Agile Software Development Methodlogies And PracticesSean Flores
 
Agile Values, Principles and Practices
Agile Values, Principles and PracticesAgile Values, Principles and Practices
Agile Values, Principles and Practicesjackcrews
 
Introduction to DevSecOps. An intuitiv approach
Introduction to DevSecOps. An intuitiv approachIntroduction to DevSecOps. An intuitiv approach
Introduction to DevSecOps. An intuitiv approachFrancisXavierInyanga
 
SE18_Lec 05_Agile Software Development
SE18_Lec 05_Agile Software DevelopmentSE18_Lec 05_Agile Software Development
SE18_Lec 05_Agile Software DevelopmentAmr E. Mohamed
 
Agile development
Agile developmentAgile development
Agile developmentJoshuaU1
 
Xp(Xtreme Programming) presentation
Xp(Xtreme Programming) presentationXp(Xtreme Programming) presentation
Xp(Xtreme Programming) presentationMuaazZubairi
 
chapter-03-Agile view of process.ppt
chapter-03-Agile view of process.pptchapter-03-Agile view of process.ppt
chapter-03-Agile view of process.pptNakulP3
 
Project Requriement Management Vs Agile software development
Project Requriement Management Vs  Agile software developmentProject Requriement Management Vs  Agile software development
Project Requriement Management Vs Agile software developmentbizpresenter
 

Similar to XP vs Lean vs FDD (20)

SE Lecture 3.ppt
SE Lecture 3.pptSE Lecture 3.ppt
SE Lecture 3.ppt
 
Unit2
Unit2Unit2
Unit2
 
Lect7
Lect7Lect7
Lect7
 
Lect7
Lect7Lect7
Lect7
 
Extreme Programming (XP) as A Popular Agile methodology.
Extreme Programming (XP) as A Popular Agile methodology.Extreme Programming (XP) as A Popular Agile methodology.
Extreme Programming (XP) as A Popular Agile methodology.
 
Agile management.pptx
Agile management.pptxAgile management.pptx
Agile management.pptx
 
Chapter 5
Chapter 5Chapter 5
Chapter 5
 
Flavours of agile software engineering
Flavours of agile software engineeringFlavours of agile software engineering
Flavours of agile software engineering
 
Flavours of agile software engineering
Flavours of agile software engineeringFlavours of agile software engineering
Flavours of agile software engineering
 
A littlebook about agile
A littlebook about agileA littlebook about agile
A littlebook about agile
 
Week_03-Agile Developmnet.ppt
Week_03-Agile Developmnet.pptWeek_03-Agile Developmnet.ppt
Week_03-Agile Developmnet.ppt
 
4. ch 3-agile process
4. ch 3-agile process4. ch 3-agile process
4. ch 3-agile process
 
A Systematic Study On Agile Software Development Methodlogies And Practices
A Systematic Study On Agile Software Development Methodlogies And PracticesA Systematic Study On Agile Software Development Methodlogies And Practices
A Systematic Study On Agile Software Development Methodlogies And Practices
 
Agile Values, Principles and Practices
Agile Values, Principles and PracticesAgile Values, Principles and Practices
Agile Values, Principles and Practices
 
Introduction to DevSecOps. An intuitiv approach
Introduction to DevSecOps. An intuitiv approachIntroduction to DevSecOps. An intuitiv approach
Introduction to DevSecOps. An intuitiv approach
 
SE18_Lec 05_Agile Software Development
SE18_Lec 05_Agile Software DevelopmentSE18_Lec 05_Agile Software Development
SE18_Lec 05_Agile Software Development
 
Agile development
Agile developmentAgile development
Agile development
 
Xp(Xtreme Programming) presentation
Xp(Xtreme Programming) presentationXp(Xtreme Programming) presentation
Xp(Xtreme Programming) presentation
 
chapter-03-Agile view of process.ppt
chapter-03-Agile view of process.pptchapter-03-Agile view of process.ppt
chapter-03-Agile view of process.ppt
 
Project Requriement Management Vs Agile software development
Project Requriement Management Vs  Agile software developmentProject Requriement Management Vs  Agile software development
Project Requriement Management Vs Agile software development
 

XP vs Lean vs FDD

  • 1. +XP vs Lean vs FDD Topic: Over the years often I have noticed people getting confused between XP, Lean and FDD. So I have tried to put together the differences here. Extreme Programming (XP) XP, originally described by Kent Beck, has emerged as one of the most popular and controversial agile methods. XP is a disciplined approach to delivering high-quality software quickly and continuously. It promotes high customer involvement, rapid feedback loops, continuous testing, continuous planning, and close teamwork to deliver working software at very frequent intervals, typically every 1-3 weeks. The original XP recipe is based on four simple values – simplicity, communication, feedback, and courage – and twelve supporting practices: 1. Planning Game 2. Small Releases 3. Customer Acceptance Tests 4. Simple Design 5. Pair Programming 6. Test-Driven Development 7. Refactoring 8. Continuous Integration 9. Collective Code Ownership 10. Coding Standards 11. Metaphor 12. Sustainable Pace Figure 2.0 [1] In XP, the “Customer” works very closely with the development team to define and prioritize granular units of functionality referred to as "User Stories". The development team estimates, plans, and delivers the highest priority user stories in the form of working, tested software on an iteration by iteration basis.
  • 2. 2 In order to maximize productivity, the practices provide a supportive, lightweight framework to guide a team and ensure high-quality software. The main aim of XP is to reduce the cost of change. In traditional system development methods the requirements for the system are determined at the beginning of the development project and often fixed from that point on. This means that the cost of changing the requirements at a later stage will be high. XP sets out to reduce the cost of change by introducing basic values, principles and practices. However, for applying XP, a system development project should be more flexible with respect to changes. Because of its nature as Becks suggests as maximum of 10 programmers can ideally work in an XP project this framework unlikely to work in slightly bigger projects. Feature-Driven Development (FDD) FDD was originally developed and articulated by Jeff De Luca, with contributions “by M.A. Rajashima, Lim Bak Wee, Paul [2] Szego, Jon Kern and Stephen Palmer.” The first incarnations of FDD occured as a result of collaboration between De Luca and OOD thought leader Peter Coad. Feature-driven development is a process for helping teams produce frequent, tangible working results. It uses very small blocks of client valued functionality, called features. The features are small, "useful in the eyes of the client" results. FDD organizes those little blocks into business-related feature sets. FDD focuses developers on producing working results every two weeks. FDD includes planning strategies and tracks progress with precision. FDD designs the rest of the development process around feature delivery using the following eight practices: 1. Domain Object Modeling 2. Developing by Feature 3. Component/Class Ownership 4. Feature Teams 5. Inspections 6. Configuration Management 7. Regular Builds 8. Visibility of progress and results FDD recommends specific programmer practices such as "Regular Builds" and "Component/Class Ownership". FDD's proponents claim that it scales more straightforwardly than other approaches, and is better suited to larger teams. Unlike other agile approaches, FDD describes specific, very short phases of work which are to be accomplished separately per feature. These include Domain Walkthrough, Design, Design Inspection, Code, Code Inspection, and Promote to Build. Because of its nature it perfectly works in large projects. Lean Software Development Lean Software Development is an iterative methodology originally developed by Mary and Tom Poppendieck. Lean Software Development owes much of its principles and practices to the Lean Enterprise movement, and the practices of companies like Toyota. Lean Software Development focuses the team on delivering Value to the customer, and on the efficiency of the "Value Stream," the mechanisms that deliver that Value. The main principles of Lean include: 1. Eliminating Waste 2. Amplifying Learning 3. Deciding as Late as Possible 4. Delivering as Fast as Possible 5. Empowering the Team 6. Building Integrity In 7. Seeing the Whole
  • 3. 3 Lean eliminates waste through such practices as selecting only the truly valuable features for a system, prioritizing those selected, and delivering them in small batches. It emphasizes the speed and efficiency of development workflow, and relies on rapid and reliable feedback between programmers and customers. Lean uses the idea of work product being "pulled" via customer request. It focuses decision-making authority and ability on individuals and small teams, since research shows this to be faster and more efficient than hierarchical flow of control. Lean also concentrates on the efficiency of the use of team resources, trying to ensure that everyone is productive as much of the time as possible. So it concentrates on concurrent work, and the fewest possible intra-team workflow dependencies. Lean also strongly recommends that automated unit tests be written at the same time the code is written. Bibliography: 1. http://www. extremeprogramming.org 2. http://en.wikipedia.org/wiki/Feature_Driven_Development 3. http://sphereofinfluence.com/soiblogs/tscheer/archive/2005/09/19/159.aspx 4. An Introduction to Agile Methods Steve Hayes (Khatovar Technology), Martin Andrews (Object Consulting) 5. http://en.wikipedia.org/wiki/Lean_software_development 6. http://en.wikipedia.org/wiki/Extreme_Programming