Feature-driven development
Feature-driven development (FDD) is an iterative and incremental software development process. It is one of the agile methods designed to model and document a software development project in a short amount of time. FDD blends a number of industry-recognized best practices into a cohesive whole. These practices are driven from a client-valued functionality (feature) perspective. Its main purpose is to deliver tangible, working software repeatedly in a timely manner.
Overview[edit | edit source]
Feature-driven development is a model-driven, short-iteration process. It begins with establishing an overall model shape. Then, it continues with a series of two-week "design by feature, build by feature" iterations. The features are small, "useful in the eyes of the client" results. FDD advocates for modeling a project's domain in detail before recording and categorizing the project's specific features. These features are then planned into iterations that result in a demonstrable product.
Five Processes of FDD[edit | edit source]
FDD consists of five basic activities or processes:
- Develop an Overall Model: Initially, a domain object model is created for the scope of the project.
- Build a Feature List: After the overall model is established, a comprehensive list of features is created. Each feature is a small, client-valued function expressed in the form "action" "result" "object".
- Plan by Feature: With the feature list created, the next step is to plan the features' development. This involves assigning features to various teams.
- Design by Feature and Build by Feature: Each feature is designed and built within a two-week iteration cycle. This process involves creating detailed design documents for each feature before they are built.
- Deploy: The software is deployed to the user for feedback and acceptance.
Practices and Techniques[edit | edit source]
FDD incorporates several industry-recognized best practices, including domain object modeling, developing by feature, individual class (code) ownership, feature teams, inspections, configuration management, and regular builds. The emphasis on building by feature allows the development teams to remain focused on creating a product that satisfies client requirements within the constraints of the project timeline.
Benefits and Challenges[edit | edit source]
The benefits of FDD include providing frequent, tangible, working results to clients, which enhances trust and allows for better feedback and adjustments. It also encourages active and continuous involvement of the client throughout the development process. However, FDD requires thorough upfront planning and design, as well as a high level of discipline and coordination among team members to be successful. It may not be as effective for small projects due to the overhead of the initial modeling phases.
Comparison with Other Agile Methods[edit | edit source]
FDD differs from other agile methods like Scrum and Extreme Programming in that it has a more structured approach to design and development. While Scrum focuses on the management aspects of software development and Extreme Programming emphasizes technical practices for software quality, FDD combines elements of both but with a focus on modeling and feature-driven delivery.
Conclusion[edit | edit source]
Feature-driven development offers a unique approach to agile software development by combining the best practices of model-driven design and feature-based planning and delivery. It is particularly well-suited for larger teams and projects where a structured method is necessary to manage complexity and ensure delivery of client-valued functionality in a timely manner.
Search WikiMD
Ad.Tired of being Overweight? Try W8MD's physician weight loss program.
Semaglutide (Ozempic / Wegovy and Tirzepatide (Mounjaro / Zepbound) available.
Advertise on WikiMD
WikiMD's Wellness Encyclopedia |
Let Food Be Thy Medicine Medicine Thy Food - Hippocrates |
Translate this page: - East Asian
中文,
日本,
한국어,
South Asian
हिन्दी,
தமிழ்,
తెలుగు,
Urdu,
ಕನ್ನಡ,
Southeast Asian
Indonesian,
Vietnamese,
Thai,
မြန်မာဘာသာ,
বাংলা
European
español,
Deutsch,
français,
Greek,
português do Brasil,
polski,
română,
русский,
Nederlands,
norsk,
svenska,
suomi,
Italian
Middle Eastern & African
عربى,
Turkish,
Persian,
Hebrew,
Afrikaans,
isiZulu,
Kiswahili,
Other
Bulgarian,
Hungarian,
Czech,
Swedish,
മലയാളം,
मराठी,
ਪੰਜਾਬੀ,
ગુજરાતી,
Portuguese,
Ukrainian
Medical Disclaimer: WikiMD is not a substitute for professional medical advice. The information on WikiMD is provided as an information resource only, may be incorrect, outdated or misleading, and is not to be used or relied on for any diagnostic or treatment purposes. Please consult your health care provider before making any healthcare decisions or for guidance about a specific medical condition. WikiMD expressly disclaims responsibility, and shall have no liability, for any damages, loss, injury, or liability whatsoever suffered as a result of your reliance on the information contained in this site. By visiting this site you agree to the foregoing terms and conditions, which may from time to time be changed or supplemented by WikiMD. If you do not agree to the foregoing terms and conditions, you should not enter or use this site. See full disclaimer.
Credits:Most images are courtesy of Wikimedia commons, and templates Wikipedia, licensed under CC BY SA or similar.
Contributors: Prab R. Tumpati, MD