技术开发 频道

功能驱动开发模式

【IT168 技术文章】

     FDD(Feature-Driven Development)是由Peter Coad、Jeff de Luca 、Eric Lefebvre共同开发的一套针对中小型软件开发项目的开发模式。

    FDD是一个模型驱动的快速迭代开发过程,它强调的是简化、实用、 易于被开发团队接受,适用于需求经常变动的项目。简单地说,FDD“是一个以Architecture为中心的,采用短迭代期,目期驱动的开发过程。它首先对整个项目建立起一个整体的模型,然后通过两周一次‘设计功能-实现功能’的迭代完成项目开发”。此处的“功能”是指“用户眼中最小的有用的功能”,它是可理解的、可度量的,并且可以在有限的时间内(两周)实现。在开发过程中,开发计划的制定、报告的生成、开发进度的跟踪均是以上述“功能”为单位进行的。在FDD中,它认为:只有良好定义的并且简单的过程才能被很好地执行。另外,由于在FDD中采用了短周期的迭代,最小化的功能划分法,所以可以对项目的开发进程进行精确及时地监控。

    FDD的使用需要有相应工具的支持,Peter Coad等人开发出了一套扩展的UML(FDD UML Extensions),并在Together中实现有关的功能,详细内容可参见后文。

    在FDD中,存在“主要功能集”、“功能集”、“功能”等概念,它们之间的关系及示例如下所示:

    主要功能集 = 功能集1 + 功能集2 + …

    功能集 = 功能1 + 功能2 + …

    其中,主要功能集是在初始阶段根据用户的需求所制定出来的比较粗的,有待于细化的对开发项目所需要功能的描述;功能是在开发过程细化的结果,在每个迭代期中需要实现若一干个功能,这些功能的集合被称之为功能集。

    在FDD中,它将开发过程划分为如下五个阶段:

    . 制定整体的模型

    . 根据优先级列出功能的详细列表

    . 依据功能制定计划

    . 依据功能进行设计

    . 实现功能

    每个阶段的定义又是通过被称之为:ETVX的方法从下面四个方面加以描述的:

    . Entry:Specify clear and well defined entry criteria for the process;

    . Task:列出所有要实现的任务列表,名称,是否需要实现,任务描述;

    . Verification:;制定对过程结果的评批标准;

    . eXit:过程结束时所需的结果;

     

FDD过程示意图

    在FDD中主要存在三类人员:主要开发人员、类的所有者、功能团队,它们各自的含义如下:

    . 主要开发人员:用于领导其它开发人员进行DBF/BBF的开发,对开发工作进行监督(例如对设计及代码进行审查)。主要开发人员的数量由项目整体的大小所决定,如果需要加快开发进度则可以再培养新的主要开发人员。与其它开发人员相比,主要开发人员具有更高的开发效率。Fred Brooks在几十年前就提出了:增加开发人员数量只会降低开发效率。但对于小型的,以用户功能驱动的轻量及的开发过程此原则并不适用。在此过程中采用增加人员的方法可以提高开发的并行效率。

    . 类的所有者:一个类有且只有一个所有者,即一个类只能由一名开发人员进行设计及编码。采用这种方式是十分有效的,因为开发人员会感觉他拥有了部分属于自已的代码,他会以此为荣;此外,它还可以保证相关代码的一致性。如果此类中包含有复杂的算法,那么可以再增加一名专门负责算法的开发人员。虽然FDD是面向用户功能的,而不是面向类的,但用户最终关心的是那些他们需的功能,而并不关心在开发时采用何种框架模式,所以在此以类为单位进行人员分配与开发的宗旨并不矛盾。

    . 功能团队:开发时功能会被分配给主要开发人员,再由主要开发人员根据实现此功能所需类的所有关系找到有关的开发人员从而构成一个临时的(最多两周)的团队。一名开发人员可以同时负责多个类的开发工作,即他可以在同一时刻处于多个功能团队中。因此在每个DBF/BBF中功能团队的人员均可能发生变化。在此团队中主要开发人员处于核心地位,团队内部的交流也是经及为中心的。采用这种方法可以加速开发进度,并且主要开发人员还可以对过程进行必要的监控,保证设计与实现的一致性。从更高的角度来看,主要的系统设计师又负责监控各功能团队中的主要开发人员。

    采用FDD方式进行开发时,各阶段时间的分配关系大致如下所示:

    . Develop an overall model                     10% initial, 4% on-going

    . Build a features list                             4% initial, 1% on-going

    . Plan by feature                                          2% initial, 2% on-going

    . Design by feature, build by feature              77%(两周一个迭代期)

 

0
相关文章