Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Feature Driven Development

Feature Driven Development

Feature Driven Development

KhanhIceTea

May 28, 2015
Tweet

Other Decks in Technology

Transcript

  1. Feature-Driven Development Teacher : Nguyen Van Vu -------------------------------------- Students :

    ❏ #1112448 - Nguyen Duy Khanh ❏ #1112452 - Nguyen Ba Dang Khoa
  2. I don’t care about how you deal with it, I

    just need the features work fine. -- Almost Clients --
  3. - 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 ?
  4. 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
  5. 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
  6. ----- It takes about 5 steps ----- How to deal

    with the whole features ? Step 1 Step 2 Step 3 Step 4 Step 5
  7. 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
  8. 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
  9. 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
  10. 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
  11. 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
  12. 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%
  13. 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.
  14. 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.
  15. 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
  16. 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