特性驱动软件开发

什么是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)方法是敏捷软件开发过程中的一种,是由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)

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的最佳实践

•         持续集成Continuous Integration.

•         对领域(业务)对象建模Domain Object Modeling.

•         按特性开发Developing By Feature.

•         类的所有者Individual Class ownership.

•         按特性组织团队Feature Teams.

•         源代码控制Source Control.

•         汇报/结果可见性Reporting/Visibility of results

你可能感兴趣的:(工作,敏捷开发,项目管理,活动,领域模型)