Feature Driven Development

advertisement
Feature Driven Development
Jon Grommes
Overview
•
•
•
•
•
•
•
What is Feature Driven Development
History of FDD
Defining a Feature
FDD Roles
FDD Reporting
FDD Process
FDD Quality
What is Feature Driven Development(FDD)
• Feature Driven Development is a iterative and incremental
software development process
• FDD is a software process that was created to deliver
frequent, working deployable code repeatedly to the
customer.
• FDD is considered a straight forward approach
to developing software systems that is broken down into five
processes.
• FDD builds the correct system
The FDD Process
1. Develop an Overall Model
2. Build a Feature List
3. Plan by Feature
4. Design by Feature
5. Build by Feature
What is Feature Driven Development
Iterative development process
(modified for FDD)
History of FDD
• First created by Jeff De Luca for a 50 person 15 month
project
• Luca used the process again, with 250 people 18 month
project.
• FDD is heavily influenced by Peter Coad and his idea of
using a feature list to manage requirements
• Documented in 1999, by when Luca and Coad and Eric
Lefebvre wrote a book which was entitled “Java Modeling
in Color with UML.”
Defining a Feature
• A feature is a “customer-valued function that can be
implemented in two weeks or less,” according to
COA99.(Coad and colleagues)
• Features are suppose to be small enough so that the
customer can describe them exactly.
• Should be small enough to implement in one to three days.
But if the feature is estimated to take more than ten days to
implement then it should be broken down into smaller
features.
Naming a Feature
•
COA99 created a template for defining a
feature
•
<action> the <result> <by | for | of | to> a(n)
<object>
•
Examples
• Calculate the total of a Sale
• Add a student to the class list
Grouping Features
•
A feature set is a grouping of business
related features.
• <action><-ing> a(n) <object>
• Example :Making a product Sale
• A major feature set is groups of feature
sets
• <object> management
• Example: Product Sales Management
FDD Roles
• Project Manager
○
Responsible for progress reports, budget management, and maintains resources
• Chief Architect
○
•
Responsible for the creation of the overall design of the system
Chief Programmers
○
Responsible for managing programming teams, helping with design of the system
FDD Roles
• Development Managers
○
Responsible for day-to-day activities
• Class Owners
○
Responsible for creating and testing classes
• Domain Experts
○
Usually the customer, help the class owners build the correct system
Class Owners
•
Class give to individual developers or two
people
• Class owner responsible that happen in their
class
Opposite
•
Collective Ownership
• Any developer can change any line of code
Class Owner Advantages
•
Sole person is responsible for the class
• Expert on every class
• Can make changes faster on a class
• Owner has something to take pride in
• Bring consistency to a class
Disadvantages
•
Possible long waits times to edit other
classes
• Risk of Lack of knowledge about the
class
FDD Reporting
Parking Lot Report
FDD Reporting
Parking Lot Report
•
Milestone chart
Domain
Design
Walkthrough
1%
40%
Design
Inspection
Code
3%
45%
Code
Promote
Inspection to Build
10%
1%
The FDD Process
1. Develop an Overall Model
2. Build a Feature List
3. Plan by Feature
4. Design by Feature
5. Build by Feature
The FDD Process
•
Upfront Design Activities
• Develop an Overall Model
• Build a Features List
• Plan by Feature
•
Create systems by Features
• Design by Feature
• Build by Feature
The FDD Process
1. Develop an Overall Model
•
Create overall object model
•Domain walk through
•Manage scope
•Form Modeling Team
•Informal Feature List
•Model
•Only major class and important functions
•State relationships between major classes
•Sequence Diagram
•Displaying complex functional requirements
•Review
•Notes
2. Build a Feature List
•Features
List
•Feature List Team
•Prioritize the Features
•For
features: <action> the <result> <by | for | of | to> a(n)
<object>
•For features sets: <object> management
•For major feature sets: <action><-ing> a(n) <object>.
•Review
3. Plan by Feature
•
Create Project Milestones
•Form the Planning team
•Setting Initial Dates
•Assigning
•Review
Class Owners
4. Design by Feature
•
Feature Teams
•Class Owners
•Domain Walkthrough(optional)
•Study Notes(optional)
•Develop
•Refine
sequence diagrams
Object Model
•Review
5. Build by Feature
•
Implement Classes and Methods
•Code
Inspection
•Promote
to Build
FDD Process
FDD Process
FDD Quality
• Inspections
• Design
• Code
• Benefits
• Knowledge transfer
• Standards Conformance
• Unit Tests
Summary
• Feature Driven Development is a iterative and
incremental software development process
• FDD is a software process that was created to
deliver frequent, working deployable code
repeatedly to the customer.
• Overall FDD has a lot of good aspects to it that
will allow it to be used a lot in the futrue.
References
[1]
Stephen Palmer, John Felsing. (2002). A Practical Guide to Feature Driven
Development. Upper Saddle River: Prentice Hall.
[2]
Pressman, R. (2005). Software Engineering A Practitioner's Approach.
Crawfordsville: McGraw-Hill.
[3]
Unkown. (2007, 6 17). Feature Driven Development. Retrieved 3 25, 2011, from
SCMWise: http://www.scmwise.com/feature-driven-development.html
[4]
Palmer, S. (2009, 11 20). An Introduction to Feature-Driven Development.
Retrieved 3 25, 2011, from AgileZone: http://agile.dzone.com/articles/introduction-featuredriven
[5]
Bauer, M. (2004, 5 27). FDD and Project Managment. Retrieved 3 27, 2011, from
martinbauer: http://www.martinbauer.com/Articles/FDD-and-Project-Management
[6]
Cause, G. (n.d.). Delivering Real Business Value using FDD. Retrieved 3 26,
2011, from methodsandtools:
http://www.methodsandtools.com/archive/archive.php?id=19p3
http://www.featuredrivendevelopment.com/files/fddoverview.pdf
Questions?

http://www.step10.com/SoftwareDesign/ModellingInColo
ur/
Download