software development process
In software engineering, a software development process or software development life cycle (SDLC) is a process of planning and managing software development. It typically involves dividing software development work into smaller, parallel, or s ...
. It is a
lightweight
Lightweight is a weight class in combat sports and rowing (sport), rowing.
Boxing Professional boxing
The lightweight division is over 130 pounds (59 kilograms) and up to 135 pounds (61.2 kilograms) boxing weight classes, weight class in the spor ...
software
Software consists of computer programs that instruct the Execution (computing), execution of a computer. Software also includes design documents and specifications.
The history of software is closely tied to the development of digital comput ...
. FDD blends several
best practices
A best practice is a method or technique that has been generally accepted as superior to alternatives because it tends to produce superior results. Best practices are used to achieve quality as an alternative to mandatory standards. Best practice ...
into a cohesive whole. These practices are driven from the perspective of delivering functionality (
features
Feature may refer to:
Computing
* Feature recognition, could be a hole, pocket, or notch
* Feature (computer vision), could be an edge, corner or blob
* Feature (machine learning), in statistics: individual measurable properties of the phenome ...
) valued by the client. Its main purpose is to deliver tangible, working software repeatedly in a timely manner in accordance with the Principles behind the
agile manifesto
Agile software development is an umbrella term for approaches to developing software that reflect the values and principles agreed upon by ''The Agile Alliance'', a group of 17 software practitioners, in 2001. As documented in their ''Manifesto ...
.
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 an island country and city-state in Southeast Asia. The country's territory comprises one main island, 63 satellite islands and islets, and one outlying islet. It is about one degree ...
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 modeling
In computing, object model has two related but distinct meanings:
# The properties of objects in general in a specific computer programming language, technology, notation or methodology that uses them. Examples are the object models of ''Java'', ...
. 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 (:wiktionary:peer#Etymology 2, peers). It functions as a form of self-regulation by qualified members of a profession within the ...
. 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 "