feature software development core activities processes requirements design engineering construction testing debugging deployment maintenance paradigms and models agile cleanroom incremental prototyping spiral v model waterfall methodologies and frameworks asd devops dad dsdm fdd iid kanban lean sd less mdd msf psp rad rup safe scrum semat tsp up xp supporting disciplines configuration management documentation software quality assurance sqa project management user experience practices atdd bdd cco ci cd ddd pp standup tdd tools compiler debugger profiler gui designer modeling ide build automation release automation infrastructure as code testing standards and bodies of knowledge babok cmmi ieee standards iso 9001 isoiec standards pmbok swebok itil glossaries artificial intelligence computer science electrical and electronics engineering vte featuredriven development fdd is an iterative and incremental software development process it is a lightweight or agile method for developing software fdd blends a number of industryrecognized best practices into a cohesive whole these practices are driven from a clientvalued functionality feature perspective its main purpose is to deliver tangible working software repeatedly in a timely manner history fdd was initially devised by jeff de luca to meet the specific needs of a 15month 50person software development project at a large singapore 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 coads approach to object modelling the second process incorporates coads ideas of using a feature list to manage functional requirements and development tasks the other processes are a result of jeff de lucas 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 published in 2002 a more general description of fdd was given decoupled from java modelling overview fdd is a modeldriven shortiteration process that consists of five basic activities for accurate state reporting and keeping track of the software development project milestones 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 metaprocess 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 process model for fdd develop overall model the fdd project starts with a highlevel 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 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 modelling 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 clientvalued functions expressed in the form action result object 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 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 testing 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 table 1 milestones domain walkthrough design design inspection code code inspection promote to build 1 40 3 45 10 1 best practices featuredriven development is built on a core set of software engineering best practices aimed at a clientvalued feature perspective domain object modelling domain object modelling 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 subproblem 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 are carried out to ensure good quality design and code primarily by 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 uptodate 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 processdata model for fddmetamodelling helps visualize both the processes and the data of a method this allows methods to be compared and method fragments in the method engineering process can easily be reused usage of this technique is consistent with uml 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 subactivities that corresponding to subactivities 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 tools used case spec case spec is a commercial enterprise tool for featuredriven development techexcel devsuite techexcel devsuite is a commercial suite of applications to enable featuredriven development fdd tools the fdd tools project aims to produce an open source crossplatform toolkit supporting the feature driven development methodology fdd viewer fdd viewer is a utility to display and print parking lots agile software development behaviordriven development project lifecycle software architecture software development process software engineering 1 coad p lefebvre e de luca j 1999 java modelling in color with uml enterprise components and process prentice hall international isbn013011510x 2 palmer sr felsing jm 2002 a practical guide to featuredriven development prentice hall isbn0130676152 feature driven development community featuredriven development at curlie nebulon fdd page 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 fdd and agile modelling better software faster another book in the coad series referencing feature driven development authors andy carmichael and dan haywood isbn0130087521 interview with fddcreator jeff deluca podcast vtesoftware engineeringfields computer programming requirements engineering software deployment software design software maintenance software testing systems analysis formal methods concepts data modeling enterprise architecture functional specification modeling language orthogonality programming paradigm software software archaeology software architecture software configuration management software development methodology software development process software quality software quality assurance software verification and validation structured analysis orientations agile aspectoriented object orientation ontology service orientation sdlc modelsdevelopmental agile eup executable uml incremental model iterative model prototype model rad up scrum spiral model vmodel waterfall model xp other spice cmmi data model er model function model information model metamodeling object model systems model view model languages idef uml usl sysml softwareengineers victor basili kent beck grady booch fred brooks barry boehm peter chen danese cooper ward cunningham tom demarco edsger w dijkstra delores m etter martin fowler adele goldstine margaret hamilton c a r hoare lois haibt mary jean harrold grace hopper watts humphrey michael a jackson ivar jacobson alan kay nancy leveson stephen j mellor bertrand meyer david parnas trygve reenskaug winston w royce james rumbaugh mary shaw peri tarr elaine weyuker niklaus wirth edward yourdon related fields computer science computer engineering project management risk management systems engineering category commons 