Feature-Driven
Development
Teacher : Nguyen Van Vu
--------------------------------------
Students :
❏ #1112448 - Nguyen Duy Khanh
❏ #1112452 - Nguyen Ba Dang Khoa
I don’t care about how you deal
with it, I just need the features
work fine.
-- Almost Clients --
(do) Action
(to get) Result
(of) Object
---------------
Feature
So, what is the feature ?
- Calculate the total of cart.
- Display the sliders of promotion.
- Get logged in Dashboard.
- Compare 2 products in wishlist.
- Detect fraud-transactions of users.
So, what is the feature ?
So, what is the feature ?
Features
TheGioiDiDong.com Homepage
What is Feature-Driven Development ?
Final Release
Start Point
Feature 1
Feature 2
Feature 3
Feature 4
Feature ...
Feature ...
Feature ...
Feature n-1
Feature n
YOUR
TEAM
What is Feature-Driven Development ?
❏ Invented by Jeff De Luca in 1997
❏ An (lightweight || Agile) methods
❏ An (iterative && incremental)
software development process
❏ All driven from a client-valued
functionality perspective
OMG ! Features are everywhere !
How to deal with them ?
----- It takes about 5 steps -----
How to deal with the whole features ?
Step
1
Step
2
Step
3
Step
4
Step
5
Already aware scope, context and
requirements of system :
▪ Domain discovery
▪ Modeling work
▪ Modeling review
▪ Document study
Note : more Shape than Content
Step 1 - Develop an Overall Model
Develop
an
Overall Model
Step
2
Step
3
Step
4
Step
5
Domain > Subject Areas > Business
Activities > Categorized Feature List > Feature :
▪ (do) Action (to get) Result (of) Object
▪ if (feature->estimated_time > 2 * WEEK) {
feature->break_down_to_small_pieces();
}
Step 2 - Build feature list
Develop
an
Overall Model
Step
3
Step
4
Step
5
Build
Feature
List
Produce the development plan
▪ if (feature->estimated_time > 2 * WEEK) {
feature->break_down_to_small_pieces();
} else {
foreach (class in feature->classes) {
class->assign_for(programmer);
}
}
Step 3 - Plan by feature
Develop
an
Overall Model
Step
4
Step
5
Build
Feature
List
Plan
by
Feature
Produce a design package for each
feature
1. Select small group of features
2. Make detailed sequence diagrams
3. Refine overall model
4. Write class & method prologues
5. Hold design inspection
Step 4 - Design by feature
Develop
an
Overall Model
Step
5
Build
Feature
List
Plan
by
Feature
Design
by
Feature
Produce real-feature
if (feature->inspect_design() == SUCCESS) {
foreach (class in feature->classes) {
class->owner->develop_code().then(function() {
if (class->unit_test()&& class->inspec_code())
continue;
});
}
feature->promote_to_main_build();
}
Step 5 - Build by feature
Develop
an
Overall Model
Build
Feature
List
Plan
by
Feature
Design
by
Feature
Build
by
Feature
FDD Project Lifecycle
To keep tracking and report
accurately state, FDD defines
6 milestones
Milestones
Design by Feature Build by Feature
Domain
Walkthrough
Design Design
Inspection
Code
Code
Inspection
Promote to
Build
1% 40% 3% 45% 10% 1%
Roles and Responsibility
Key Roles:
1. Project
Manager
2. Chief
Architect
3. Development
Manager
4. Chief
Programmer
5. Class Owner
6. Domain Expert
Supporting Roles:
1. Release
Manager
2. Language Guru
3. Build Engineer
4. Toolsmith
5. System
Administrator
Additional Roles:
1. Tester
2. Deployer
3. Technical
Writer
One team member can play many roles
and one role can be shared to many members.
Best Practices
Mechanism of FDD is almost likely
mechanism of GIT branch. So FDD is
the best way to combine with
decentralized version control like
GIT.
Git Feature Branches
Workflow
Pros :
★ Good to large projects
★ Progress
tracking/reporting
★ Frequent tangible
results
★ Flexible, strong with
GIT
★ Class, feature ownership
★ Concise processes
★ Emphasizes quality
★ Just enough design
initially
Pros & Cons of FDD
Cons :
➢ Not suitable with small
projects
➢ High reliance to chief
programmers
➢ Less written
documentations
Question & Answer
THANK YOU ! :)
Made with ♥ by Google Slides
CREDITS
Special thanks to all the people who made and released
these awesome resources for free:
▪ Presentation template by SlidesCarnival
▪ Photographs by Unsplash
References :
1. Feature Driven Development on Wikipedia
2. Feature Driven Development by Christophe Marchal
3. A successful Git Branching model on Nvie.com
4. Lecture 5 presentation by Ahmed Alageed
5. Feature Driven Development by John Bonjean

Feature driven development

  • 1.
    Feature-Driven Development Teacher : NguyenVan Vu -------------------------------------- Students : ❏ #1112448 - Nguyen Duy Khanh ❏ #1112452 - Nguyen Ba Dang Khoa
  • 2.
    I don’t careabout how you deal with it, I just need the features work fine. -- Almost Clients --
  • 3.
    (do) Action (to get)Result (of) Object --------------- Feature So, what is the feature ?
  • 4.
    - Calculate thetotal of cart. - Display the sliders of promotion. - Get logged in Dashboard. - Compare 2 products in wishlist. - Detect fraud-transactions of users. So, what is the feature ?
  • 5.
    So, what isthe feature ? Features TheGioiDiDong.com Homepage
  • 6.
    What is Feature-DrivenDevelopment ? Final Release Start Point Feature 1 Feature 2 Feature 3 Feature 4 Feature ... Feature ... Feature ... Feature n-1 Feature n YOUR TEAM
  • 7.
    What is Feature-DrivenDevelopment ? ❏ Invented by Jeff De Luca in 1997 ❏ An (lightweight || Agile) methods ❏ An (iterative && incremental) software development process ❏ All driven from a client-valued functionality perspective
  • 8.
    OMG ! Featuresare everywhere ! How to deal with them ?
  • 9.
    ----- It takesabout 5 steps ----- How to deal with the whole features ? Step 1 Step 2 Step 3 Step 4 Step 5
  • 10.
    Already aware scope,context and requirements of system : ▪ Domain discovery ▪ Modeling work ▪ Modeling review ▪ Document study Note : more Shape than Content Step 1 - Develop an Overall Model Develop an Overall Model Step 2 Step 3 Step 4 Step 5
  • 11.
    Domain > SubjectAreas > Business Activities > Categorized Feature List > Feature : ▪ (do) Action (to get) Result (of) Object ▪ if (feature->estimated_time > 2 * WEEK) { feature->break_down_to_small_pieces(); } Step 2 - Build feature list Develop an Overall Model Step 3 Step 4 Step 5 Build Feature List
  • 12.
    Produce the developmentplan ▪ if (feature->estimated_time > 2 * WEEK) { feature->break_down_to_small_pieces(); } else { foreach (class in feature->classes) { class->assign_for(programmer); } } Step 3 - Plan by feature Develop an Overall Model Step 4 Step 5 Build Feature List Plan by Feature
  • 13.
    Produce a designpackage for each feature 1. Select small group of features 2. Make detailed sequence diagrams 3. Refine overall model 4. Write class & method prologues 5. Hold design inspection Step 4 - Design by feature Develop an Overall Model Step 5 Build Feature List Plan by Feature Design by Feature
  • 14.
    Produce real-feature if (feature->inspect_design()== SUCCESS) { foreach (class in feature->classes) { class->owner->develop_code().then(function() { if (class->unit_test()&& class->inspec_code()) continue; }); } feature->promote_to_main_build(); } Step 5 - Build by feature Develop an Overall Model Build Feature List Plan by Feature Design by Feature Build by Feature
  • 15.
  • 16.
    To keep trackingand report accurately state, FDD defines 6 milestones Milestones Design by Feature Build by Feature Domain Walkthrough Design Design Inspection Code Code Inspection Promote to Build 1% 40% 3% 45% 10% 1%
  • 17.
    Roles and Responsibility KeyRoles: 1. Project Manager 2. Chief Architect 3. Development Manager 4. Chief Programmer 5. Class Owner 6. Domain Expert Supporting Roles: 1. Release Manager 2. Language Guru 3. Build Engineer 4. Toolsmith 5. System Administrator Additional Roles: 1. Tester 2. Deployer 3. Technical Writer One team member can play many roles and one role can be shared to many members.
  • 18.
    Best Practices Mechanism ofFDD is almost likely mechanism of GIT branch. So FDD is the best way to combine with decentralized version control like GIT.
  • 19.
  • 20.
    Pros : ★ Goodto large projects ★ Progress tracking/reporting ★ Frequent tangible results ★ Flexible, strong with GIT ★ Class, feature ownership ★ Concise processes ★ Emphasizes quality ★ Just enough design initially Pros & Cons of FDD Cons : ➢ Not suitable with small projects ➢ High reliance to chief programmers ➢ Less written documentations
  • 21.
  • 22.
    THANK YOU !:) Made with ♥ by Google Slides
  • 23.
    CREDITS Special thanks toall the people who made and released these awesome resources for free: ▪ Presentation template by SlidesCarnival ▪ Photographs by Unsplash References : 1. Feature Driven Development on Wikipedia 2. Feature Driven Development by Christophe Marchal 3. A successful Git Branching model on Nvie.com 4. Lecture 5 presentation by Ahmed Alageed 5. Feature Driven Development by John Bonjean