快速学习COSMIC方法之十五:如何度量需求变更的规模

  合理的度量需求变更的规模是COSMIC方法比第一代的功能点估算方法更科学的亮点。在度量需求的变更时,首先需要明确我们的度量目的,即我们要度量的是本次变更的规模,而不是变更之后的规模。明确目的后,要将变更的需求按照功能处理拆分,在一个需求变更中,可能存在几种情况:

  1 新增的功能处理,此时按照前面讲的度量方法识别功能点即可;

  2 删除的功能处理,被删除的功能处理的功能点个数即是本次变更的规模;

  3 对已有的功能处理进行了变更,

  这种情况又可以细分为三种情况:

    新增了某些数据移动;

    删除了某些数据移动;

    修改了某些数据移动;

  把修改的、删除的、新增的功能点累加起来即得到本次变更的规模。

  新增与删除数据移动是很容易识别的,稍微复杂一点的是修改。什么是修改呢?

  1)某数据移动的数据组做了变更:

       新增了属性,减少属性,属性的含义或格式改变了。

  数据移动、数据组、属性三者的关系再回顾一下,一个数据移动移动了一个数据组,而一个数据组包含多个属性,即:1个数据移动→1个数据组(属性1,属性2…属性n)。

2)某数据移动对应的数据运算改变了:

     处理逻辑的修改。

 

    我们通过一个简单的例子来解释上述的规则:

    在一个人力资源管理系统中,有一个简单的功能性用户需求是录入员工的个人信息:

    需求版本1:

   1)录入员工的个人信息,包括录入员工的姓名、身份证号、第一学历;

   2)人员不可以重名。

   这是变更之前的需求,其规模为:

子处理(数据移动)

类型

兴趣对象与数据组及其属性

功能点

输入人员信息

输入

人员(姓名、身份证号、第一学历)

1

校对是否重名

人员(姓名)

1

提示不能重名

输出

错误提示

1

保存人员信息

人员(姓名、身份证号、第一学历)

1

  现在需求发生了改变,要求人员可以重名了。新需求为:

  需求版本2:

  1)录入员工的个人信息,包括员工姓名、身份证号、第一学历;

  2)人员可以重名。

   则本次需求变更的规模为多少呢?

子处理(数据移动)

类型

兴趣对象与数据组及其属性

功能点

输入人员信息

输入

人员(姓名、身份证号、第一学历)

1

校对是否重名

人员(姓名)

1

提示不能重名

输出

错误提示

1

保存人员信息

人员(姓名、身份证号、第一学历)

1

  当发生变更时,不需要校对是否重名了,就是删除了读这个功能点。原来需要提示不能重名,现在也不需要了,所以这个错误提示功能点也没有了,那么本次变更的规模就是2个功能点。

  变更前的功能点数是4CFP,变更后的功能点数是2CFP,本次变更的规模是2CFP。

  假如说需求又发生了变更,要求按照身份证的生成规则,校对身份证号的正确性,则就有了第3个版本的需求:

  需求版本3:

  1)录入员工的个人信息,包括员工姓名、身份证号、第一学历;

  2)人员可以重名;

  3) 需要按照身份证号的规则简单校验身份证号的正确性,如果错误,则要提示重新录入。

  校验规则如下:18位公民身份号码是特征组合码,由十七位数字本体码和一位数字校验码组成。排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码。

  此时,对于身份证号的校验是一个算法,根据校验结果生成了错误提示,这个错误提示是以前的需求没有的,因此是新增了一个功能点:输出错误提示。

  这里不需要对校验身份证正确性识别一个读操作,因为读写的对象是持久性存储介质,身份证的校验规则写在程序中,没有向持久性存储介质读取规则的动作。

子处理(数据移动)

类型

兴趣对象与数据组及其属性

功能点

输入人员信息

输入

人员(姓名、身份证号、第一学历)

1

提示身份证号不正确

输出

错误提示

1

保存人员信息

人员(姓名、身份证号、第一学历)

1

  变更前的功能点数是2CFP,变更后的功能点数是3CFP,本次变更的规模是1CFP。

  假如需求又发生了改变,要求检查身份证号是否重复,因此,就有了第4个版本的需求:

  需求版本4:

  1) 录入员工的个人信息,包括员工姓名、身份证号、第一学历;

  2)  人员可以重名;

  3)  身份证号不能重复;

  4)  需要按照身份证号的规则简单校验身份证号的正确性,如果错误,则要提示重新录入。

  规则如下:18位公民身份号码是特征组合码,由十七位数字本体码和一位数字校验码组成。排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码。

  此时对于输出错误提示的内容做了修改,会根据错误情况提示是身份证号重复还是位数有误,相当于该数据组的一个属性被修改了。同时,因为需要去持久性存储介质中读取已有的身份证号码,确认是否重复,因此也增加了一个读的数据移动。

子处理(数据移动)

类型

兴趣对象与数据组及其属性

功能点

输入人员信息

输入

人员(姓名、身份证号、第一学历)

1

校对身份证号是否重复

人员(身份证号)

1

提示录入出错或身份证号重复

输出

错误提示

1

保存人员信息

人员(姓名、身份证号、第一学历)

1



  因此,变更前的功能点数是3CFP, 变更后的功能点数是4CFP,本次变更的规模是2CFP。      

  对于变更后的功能点数,虽然有两个错误提示消息,但在一个功能处理内所有不包含用户感兴趣的其他信息的错误/确认消息,都要合并为一个输出。

猜你喜欢

转载自blog.csdn.net/dylanren/article/details/79759966