Feature driven development
-
Upload
khanh-nguyen -
Category
Technology
-
view
63 -
download
5
Transcript of Feature driven development
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
YOURTEAM
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 ?
Step1
Step2
Step3
Step4
Step5
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
Developan
Overall ModelStep
2Step
3Step
4Step
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
Developan
Overall ModelStep
3Step
4Step
5Build
FeatureList
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
Developan
Overall ModelStep
4Step
5Build
FeatureList
Planby
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
Developan
Overall ModelStep
5Build
FeatureList
Planby
Feature
Designby
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
Developan
Overall Model
BuildFeature
List
Planby
Feature
Designby
Feature
Buildby
Feature
FDD Project Lifecycle
To keep tracking and report
accurately state, FDD defines
6 milestones
Milestones
Design by Feature Build by Feature
DomainWalkthrough
Design Design Inspection Code Code
InspectionPromote 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 rolesand 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