Feature driven development

23
Feature-Driven Development Teacher : Nguyen Van Vu -------------------------------------- Students : #1112448 - Nguyen Duy Khanh #1112452 - Nguyen Ba Dang Khoa

Transcript of Feature driven development

Page 1: Feature driven development

Feature-Driven

Development

Teacher : Nguyen Van Vu

--------------------------------------

Students :

❏ #1112448 - Nguyen Duy Khanh

❏ #1112452 - Nguyen Ba Dang Khoa

Page 2: Feature driven development

I don’t care about how you deal

with it, I just need the features

work fine.

-- Almost Clients --

Page 3: Feature driven development

(do) Action

(to get) Result

(of) Object

---------------

Feature

So, what is the feature ?

Page 4: Feature driven development

- 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 ?

Page 5: Feature driven development

So, what is the feature ?

Features

TheGioiDiDong.com Homepage

Page 6: Feature driven development

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

Page 7: Feature driven development

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

Page 8: Feature driven development

OMG ! Features are everywhere !

How to deal with them ?

Page 9: Feature driven development

----- It takes about 5 steps -----

How to deal with the whole features ?

Step1

Step2

Step3

Step4

Step5

Page 10: Feature driven development

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

Page 11: Feature driven development

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

Page 12: Feature driven development

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

Page 13: Feature driven development

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

Page 14: Feature driven development

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

Page 15: Feature driven development

FDD Project Lifecycle

Page 16: Feature driven development

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%

Page 17: Feature driven development

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.

Page 18: Feature driven development

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.

Page 20: Feature driven development

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

Page 21: Feature driven development

Question & Answer

Page 22: Feature driven development

THANK YOU ! :)

Made with ♥ by Google Slides