什么是Feature:
The unit of development and thus an increment in an FDD project - a feature - is tiny; … Features (tiny, granular pieces of client-valued function) are being completed every week in an FDD project。特性Feature作为一个开发单位,也是FDD项目中的一个增量,是指“用户眼中最小的有用的功能”, 可以在1周内实现。
特征驱动开发定义:
特征驱动开发(FDD-Feature Driven Development)方法是敏捷软件开发过程中的一种,是由Jeff de Luca 、Eric Lefebvre、Peter Coad共同开发的。 它强调特性驱动,快速迭代,即能保证快速开发,又能保证适当文档和质量,非常适合中小型团队开发管理。它提出的每个功能开发时间不超过两周,为每个用例 user case 限定了粒度,具有良好可执行性,也可以对项目的开发进程进行精确及时地监控。它抓住了软件开发的核心问题领域,即正确和及时地构造软件。 FDD 还打破了传统的将领域和业务专家 / 分析师与设计者和实现者隔离开来的壁垒。 分析师被从抽象的工作中解脱出来,直接参与到开发人员和用户所从事的系统构造工作中。
FDD过程:
FDD 是一个模型驱动 ( model-driven) 、短期迭代 (short-iteration) 的过程。 注意,FDD是一个开发过程,过程总是有起点和终点,FDD的起点是起源于创建一个全局的模型轮廓(不要求很精确,大概模样就可以),然后是周期低于两周的一系列的"design by feature, build by feature"的迭代,逐渐丰富模型功能内容。一个FDD开发过程如附件1图所示。
其由5个活动组成:
1. 开发一个全局的模型 (Develop an Overall Model)
四色原型
领域驱动设计
2. 建立特征列表(Build Feature List)
在此采用下述格式进行描述:
针对功能: thea(n)
针对功能集:<-ing>a(n)
针对主功能集:management
3. 依据特征规划(Plan by Feature)
4. 依据特征设计(Design By Feature)
5. 依据特征构建(Build By Feature)
FDD中的角色
1. Domain expert(s) :领域专家
2. Chief Architect(s) :首席架构师
3. Chief Programmer(s) :主程序员
Feature Team一般由Domain expert ,Chief Programmers,Class Owners组成,一个Chief Programmers可以带领多个Class Owners。
FDD相关的度量
采用FDD方式进行开发时,各阶段成本的分配大致如下所示:
1. 开发一个全局的模型 (Develop an Overall Model)10% Initial, 4% on-going
2. 建立特征列表(Build Feature List) 4% initial, 1% on-going
3. 依据特征规划(Plan by Feature) 2% initial, 2% on-going
4. 依据特征设计和依据特征构建 77%(2周迭代一次)
FDD的最佳实践
&bull