HOME

TheInfoList



OR:

Feature-driven development (FDD) is an iterative and incremental software development process. It is a
lightweight Lightweight is a weight class in combat sports and rowing. Boxing Professional boxing The lightweight division is over 130 pounds (59 kilograms) and up to 135 pounds (61.2 kilograms) weight class in the sport of boxing. Notable lightweight ...
or Agile method for developing
software Software is a set of computer programs and associated software documentation, documentation and data (computing), data. This is in contrast to Computer hardware, hardware, from which the system is built and which actually performs the work. ...
. FDD blends a number of industry-recognized
best practices A best practice is a method or technique that has been generally accepted as superior to other known alternatives because it often produces results that are superior to those achieved by other means or because it has become a standard way of doing ...
into a cohesive whole. These practices are driven from a client-valued functionality (
feature Feature may refer to: Computing * Feature (CAD), could be a hole, pocket, or notch * Feature (computer vision), could be an edge, corner or blob * Feature (software design) is an intentional distinguishing characteristic of a software item ...
) perspective. Its main purpose is to deliver tangible, working software repeatedly in a timely manner in accordance with the Principles behind the
Agile Manifesto In software development, agile (sometimes written Agile) practices include requirements discovery and solutions improvement through the collaborative effort of self-organizing and cross-functional teams with their customer(s)/ end user(s), a ...
.


History

FDD was initially devised by
Jeff De Luca Jeff De Luca is a global information technology strategist and an author in the field of software development methodology. He is considered the primary architect of ''Feature Driven Development'' (FDD) circa 1999 JDLBIO a lightweight methodol ...
to meet the specific needs of a 15-month, 50-person software development project at a large
Singapore Singapore (), officially the Republic of Singapore, is a sovereign island country and city-state in maritime Southeast Asia. It lies about one degree of latitude () north of the equator, off the southern tip of the Malay Peninsula, bor ...
bank in 1997. This resulted in a set of five processes that covered the development of an overall model and the listing, planning, design, and building of features. The first process is heavily influenced by
Peter Coad Peter Coad (born December 30, 1953) is a software entrepreneur and author of books on Computer programming, programming. He is notable for his role in defining what have come to be known as the UML colors, a color-coded Writing systems, notation c ...
's approach to object modelling. The second process incorporates Coad's ideas of using a feature list to manage functional requirements and development tasks. The other processes are a result of Jeff De Luca's experience. There have been several implementations of FDD since its successful use on the Singapore project. The description of FDD was first introduced to the world in Chapter 6 of the book ''Java modelling in Color with UML'' by Peter Coad, Eric Lefebvre, and Jeff De Luca in 1999. Later, in Stephen Palmer and Mac Felsing's book ''A Practical Guide to Feature-Driven Development'' (published in 2002), a more general description of FDD was given decoupled from Java modelling.


Overview

FDD is a model-driven short-iteration process that consists of five basic activities. For accurate state reporting and keeping track of the software development project,
milestones A milestone is a marker of distance along roads. Milestone may also refer to: Measurements *Milestone (project management), metaphorically, markers of reaching an identifiable stage in any task or the project *Software release life cycle state, s ...
that mark the progress made on each feature are defined. This section gives a high level overview of the activities. In the figure on the right, the meta-process model for these activities is displayed. During the first two sequential activities, an overall model shape is established. The final three activities are iterated for each feature.


Develop overall model

The FDD project starts with a high-level walkthrough of the scope of the system and its context. Next, detailed domain models are created for each modelling area by small groups and presented for
peer review Peer review is the evaluation of work by one or more people with similar competencies as the producers of the work ( peers). It functions as a form of self-regulation by qualified members of a profession within the relevant field. Peer revie ...
. One or more of the proposed models are selected to become the model for each domain area. Domain area models are progressively merged into an overall model.


Build feature list

Knowledge gathered during the initial modeling is used to identify a list of features by functionally decomposing the domain into subject areas. Subject areas each contain business activities, and the steps within each business activity form the basis for a categorized feature list. Features in this respect are small pieces of client-valued functions expressed in the form " ", for example: 'Calculate the total of a sale' or 'Validate the password of a user'. Features should not take more than two weeks to complete, else they should be broken down into smaller pieces.


Plan by feature

After the feature list is completed, the next step is to produce the development plan and assign ownership of features (or feature sets) as classes to programmers.


Design by feature

A design package is produced for each feature. A chief programmer selects a small group of features that are to be developed within two weeks. Together with the corresponding class owners, the chief programmer works out detailed
sequence diagrams A sequence diagram or system sequence diagram (SSD) shows process interactions arranged in time sequence in the field of software engineering. It depicts the processes involved and the sequence of messages exchanged between the processes needed ...
for each feature and refines the overall model. Next, the class and method prologues are written and finally a design inspection is held.


Build by feature

After a successful design inspection for each activity to produce a feature is planned, the class owners develop code for their classes. After
unit test In computer programming, unit testing is a software testing method by which individual units of source code—sets of one or more computer program modules together with associated control data, usage procedures, and operating procedures&md ...
ing and successful code inspection, the completed feature is promoted to the main build.


Milestones

Since features are small, completing a feature is a relatively small task. For accurate state reporting and keeping track of the software development project, it is important to mark the progress made on each feature. FDD therefore defines six milestones per feature that are to be completed sequentially. The first three milestones are completed during the Design By Feature activity, and the last three are completed during the Build By Feature activity. To track progress, a percentage complete is assigned to each milestone. In the table below the milestones and their completion percentage are shown. At the point that coding begins, a feature is already 44% complete (Domain Walkthrough 1%, Design 40% and Design Inspection 3% = 44%).


Best practices

Feature-driven development is built on a core set of
software engineering Software engineering is a systematic engineering approach to software development. A software engineer is a person who applies the principles of software engineering to design, develop, maintain, test, and evaluate computer software. The term '' ...
best practices A best practice is a method or technique that has been generally accepted as superior to other known alternatives because it often produces results that are superior to those achieved by other means or because it has become a standard way of doing ...
aimed at a client-valued feature perspective. * Domain Object modelling. Domain Object modeling consists of exploring and explaining the domain of the problem to be solved. The resulting domain object model provides an overall framework in which to add features. * Developing by Feature. Any function that is too complex to be implemented within two weeks is further decomposed into smaller functions until each sub-problem is small enough to be called a feature. This makes it easier to deliver correct functions and to extend or modify the system. * Individual Class (Code) Ownership. Individual class ownership means that distinct pieces or grouping of code are assigned to a single owner. The owner is responsible for the consistency, performance, and conceptual integrity of the class. * Feature Teams. A feature team is a small, dynamically formed team that develops a small activity. Multiple minds are always applied to each design decision, and multiple design options are evaluated before one is chosen. * Inspections.
Inspections An inspection is, most generally, an organized examination or formal evaluation exercise. In engineering activities inspection involves the measurements, tests, and gauges applied to certain characteristics in regard to an object or activity ...
are carried out to ensure good quality design and code primarily by the detection of defects. * Configuration Management. Configuration management helps with identifying the source code for all features that have been completed to date and maintaining a history of changes to classes as feature teams enhance them. * Regular Builds. Regular builds ensure there is always an up-to-date system that can be demonstrated to the client and helps highlight integration errors of source code for the features early. * Visibility of progress and results. Managers steer a project using frequent, appropriate, and accurate progress reporting from all levels inside and outside the project based on completed work.


Metamodel (Metamodelling)

Metamodelling helps visualize both the processes and the data of a
method Method ( grc, μέθοδος, methodos) literally means a pursuit of knowledge, investigation, mode of prosecuting such inquiry, or system. In recent centuries it more often means a prescribed process for completing a task. It may refer to: *Scien ...
. This allows methods to be compared, and method fragments in the
method engineering Method engineering in the "field of information systems is the discipline to construct new methods from existing methods".F. Harmsen & M. Saeki (1996). "Comparison of four method engineering languages". In: Sjaak Brinkkemper et al. (eds.) '' ...
process can easily be reused. Usage of this technique is consistent with
UML The Unified Modeling Language (UML) is a general-purpose, developmental modeling language in the field of software engineering that is intended to provide a standard way to visualize the design of a system. The creation of UML was originally m ...
standards. The left side of the metadata model shows the five basic activities involved in a software development project using FDD. The activities all contain sub-activities that corresponding to sub-activities in the FDD process description. The right side of the model shows the concepts involved. These concepts originate from the activities depicted in the left side of the diagram.


See also

* Agile software development * Behavior-driven development * Project lifecycle *
Software architecture Software architecture is the fundamental structure of a software system and the discipline of creating such structures and systems. Each structure comprises software elements, relations among them, and properties of both elements and relations. ...
* Software development process *
Software engineering Software engineering is a systematic engineering approach to software development. A software engineer is a person who applies the principles of software engineering to design, develop, maintain, test, and evaluate computer software. The term '' ...


References

* 1. Coad, P., Lefebvre, E. & De Luca, J. (1999). ''Java modelling In Color With UML: Enterprise Components and Process''. Prentice Hall International. () * 2. Palmer, S.R., & Felsing, J.M. (2002). ''A Practical Guide to Feature-Driven Development''. Prentice Hall. ()


External links


Feature Driven Development Community
*

- Nebulon is the consulting practice of Jeff De Luca
Successful Web Development Methodologies
- Use of FDD for Web Development projects
Delivering Real Business Value using Feature Driven Development
- Article gives basic overview of FDD



- Another book in the Coad Series referencing Feature Driven Development. Authors Andy Carmichael and Dan Haywood
Interview with FDD-Creator Jeff DeLuca
(Podcast) {{Software engineering Agile software development Software project management Software features