
图二:功能点分析方法结构图
其中,数据功能需求区分为应用内部逻辑数据和应用外部的接口数据;事务功能区分为对数据的外部输入、输出和查询。数据功能的 复杂性由数据元素类型(DET )和记录元素类型(RET )决定 ;而事务功能的复杂性由数据元素类型(DET )和文件引用类型(FTR )决定 。将功能转换为对应的复杂程度,再根据复杂程度转换为对应的功能点数值[3],这样就将用户的业务功能需求表述为一个用数值表示的软件需求规模。完整的功能点计数过程如图三所示[3]。

图三:功能点计数过程
因为功能点分析方法是一个确定软件需求规模的标准方法,所以它可以界定需求的有效粒度。从而有助于约束需求的详细程度,并采用统一的尺度衡量软件需求规模。
3. 采用功能点方法管理软件需求变更
3.1. 基于功能点分析方法的需求变更分类
何谓软件需求变更?从功能点分析的角度就是需求发生了变化,而这种变化的判定依据可以参考功能点的识别规则。需求的变更相对于原有的需求而言无非就是三种类型:新增需求、修改需求和删除需求。新增需求和删除需求相对容易判断,而修改需求的判断就不是那么直接了。在实际的软件项目中,需求的变更通常存在下列的情形:
第一种是需求不明确的前提所提出的变更,即在需求定义时用户没有能力或时间定义需求,或定义的需求不够详细,因而在需求确认后提出变更,通常包括新增需求和变更需求;
第二种是在需求明确的前提下所提出的变更,通常是因为当前的业务与最初提出的需求已经发生了变化或者原有的功能已经不适用,通常包括新增需求、删除的需求和变更的需求。
我们将第一种需求称为遗漏性需求变更,而将第二种需求变更称为追加性需求变更。下面分析的结果对于遗漏性和追加性的需求变更都适用。
3.1.1. 数据功能的需求变更分类
对于新增和删除的数据功能容易识别,例如在原有需求的基础之增加或删除发票信息或价格规则信息,则易判断发票信息或价格规则信息为增加或删除的数据功能。对于修改的数据功能则比较困难。
判断修改的数据功能时应注意:如果修改仅包含逻辑文件中新纪录的增加或者已存在字段中新值的增加,那么不能认为数据功能被修改;如果数据功能中添加了新字段,而这个新字段却并没有被应用所使用,那么该数据功能也不能认为是被修改的数据功能。一个数据功能被算作被修改的功能,通常其结构要发生改变(如:增加或删除一个字段或者修改了字段特征)[3]。
所以对于数据功能的需求变更可以区分为增加、修改和删除。
3.1.2. 事务功能的需求变更分类
类似于数据功能的判断,对于新增和删除的事务功能也容易识别。例如在原有需求的基础之增加或删除价格规则维护功能,则易判断价格规则维护功能为增加或删除的事务功能。通常,当判断有新增或删除的数据功能时,事务功能也会有新增或删除。而当新增或删除事务功能时,数据功能却不一定发生变化。例如,增加或删除了价格规则这样的数据功能时,则对应的应该有新增或删除的事务功能。否则,如何维护对应的数据功能?反之,则不必然。
对于修改的事务功能判断相对困难。判断EI/EO/EQ类型的事务功能是否被修改,则可参考事务功能的唯一性判定原则。如果以下三个条件任一条件满足,则说明事务功能发生了变化,需求应被当作变更的需求处理。判断事务功能是否变更的三个条件如下:
事务功能的DET是否发生变化,例如增加、删除或修改DET
事务功能关联的FTR是否发生变化,例如FTR增加、减少或修改
事务功能对应的处理逻辑是否发生变化,
项目经理胜任力免费测评PMQ上线啦!快来测测你排多少名吧~
http://www.leadge.com/pmqhd/index.html