|
Feature Driven development
is designed to provide an end to end (UI to DB) set of features providing a higher
rate of success for the stakeholders. A feature set is composed of a set of requested
features.
Development Process
The Feature Driven Development Process focuses on the user experience at first.
By conducting Joint Application Development sessions with the stakeholders and end
users the development team can determine the functionality the end user requires.
First- Develop Use Cases:
Defining
the use cases for the system to precisely understand the way people will use the
system. These use cases will act as the foundation of Test by Feature (Test Driven
Development).
The system must mirror
the way people work or they will not use the system or begrudgingly. By determining
the business processes that must be preformed and in what order they are preformed
by the end user a higher level of customer satisfaction and the easier the software
is to use.
Determine the way people do business; this derives the functionality the system
is to exhibit and how it is to be exhibited.
Second – Develop the User Interface:
The user
interface is often the most problematic as it is the window to the system and the
information it gathers. The user interface must be defined with the business processes
in mind. Develop the user interface with the end user and the stakeholders. Remember,
they are the ones that will be using it every day, colors and fonts are important
to the end user, they have to stare at it the most.
Third – Develop Sequence Diagrams:
By analyzing
the Use Case and the User Interface the development team then creates Sequence Diagrams
to map out the internal flow of information. These drive the creation of objects
necessary to complete these processes. The objects themselves are then decomposed
into sequence diagrams of their own that drive finer granular object models. This
helps keep down the number of object needlessly created and that are never used.
Forth – Develop Object Models:
If your sequence diagrams were properly, they were derived from the outmost objects with
the objects responsibilities well defined (Craig Larman’s desert
Island
skill “assign Object Responsibility” http://www.craiglarman.com/ ).
Next, analyze these
objects and derive more sequence diagrams and define finer granular sets objects
to support the required functionality digging deeper to each layer.
Sixth- Determine Feature Set:
Now review
the Use Cases, the User Interface and Sequence Diagrams. Create a Feature set of
closely related Features. Identify all the underlying objects to support this feature.
A completed feature shall complete the flow of data, whether it is from the database
or into the database.
Seventh- Plan By Feature:
Determine
the time and money required to complete each Feature Set. Conduct a JAD session
with the stakeholders and end-user to prioritize the feature sets.
Remember, at the beginning
of the development of the feature sets, the underlying architecture is being built
also (Security, Data Access and Error Handling). As more and more of the Architecture
is built and reused for all the rest of the features, each feature will develop quicker.
• Design By Feature
• Plan By Feature
• Budget by Feature
• Test by Feature
• Release by Feature
Feature Set Example: A typical web site includes the user login. All these features are required before the simplest login is fully functional
For the by the administrator it must include the functionality to:
• add
• update
• remove users
The end users must be able to:
• login
• submit a request to the system
• retrieve a password
• reset the password
Feature Driven Development is a trademarked process, this is only as I understand it and make no guarantees or imply any trademark infringments. This is for the sole purpose of academic research only.
Thank You,
Will Weaver
BizTalk Solutions Architect
Jacksonville, FL
|