Feature Driven Development (FDD)
A quick overview of Feature Driven Development (FDD)—an iterative software development methodology intended for use by large teams working on a project using object-oriented technology.
What is FDD?
Feature Driven Development (FDD) is an iterative software development methodology intended for use by large teams working on a project using object-oriented technology. The methodology description includes some prescription about what tasks should be done and what roles should be doing them, so many do not consider it a truly agile methodology.
Why is FDD useful?
FDD is useful because it demonstrates that you can focus on domain modeling on an iterative and incremental project, and because it demonstrates that agile-like methodologies can scale. FDD shows that teams can spend a short amount of time at the beginning of the project to establish a clear understanding of the domain in which they are working and use that understanding to formulate a rough plan without getting stuck in analysis and design paralysis.
How to use FDD?
- Develop an Overall Model: A team is formed of development team members and people familiar with the business domain to build an overall model of the domain, in order to establish the scope of the system and provide a common understanding the of the domain.
- Build a Features List: The team then develops a comprehensive list of features and groups these features into feature sets, and then major feature sets.
- Plan by Feature: The team establishes a development plan that includes the order in which feature sets will be realized, which Chief Programmers are responsible for which feature sets, and which Class Owners are responsible for each class.
- Design by Feature and Build by Feature: The team launches into a series of Design by Feature and Build by Feature iterations where they break into Feature Teams and design, build, and test features in two-week time boxes.
- Repeat step 4 until no more features exist.
The FDD project lifecycle.
FDD also defines a collection of supporting roles, including:
- Domain Manager
- Release Manager
- Language Guru
- Build Engineer
- Toolsmith
- System Administrator
- Tester
- Deployer
- Technical Writer
How would Agile Modeling (AM) be applied on an FDD project? The principles and practices can be clearly applied to FDD's two modeling-oriented steps - develop an overall model and design by feature. The only apparent mismatch between the two processes is FDD's practice of class ownership and AM's practice of collective ownership, but I would argue that this isn't the case. FDD's practice pertains to coding but does not to modeling, on a FDD project people work together in teams to model, along the lines of AM's model with others practice, and therefore several people will be working on your shared collection of modeling artifacts.
References:
Feature Driven Development (FDD)
A quick overview of a feature provides a concise yet comprehensive understanding. It condenses essential information, aiding users in grasping functionality swiftly. How Better Get This efficient approach enhances user.
ReplyDelete