快速学习COSMIC方法之十五:如何度量需求变更的规模
合理的度量需求变更的规模是COSMIC方法比第一代的功能点估算方法更科学的亮点。在度量需求的变更时,首先需要明确我们的度量目的,即我们要度量的是本次变更的规模,而不是变更之后的规模。明确目的后,要将变更的需求按照功能处理拆分,在一个需求变更中,可能存在几种情况:
1 新增的功能处理,此时按照前面讲的度量方法识别功能点即可;
2 删除的功能处理,被删除的功能处理的功能点个数即是本次变更的规模;
3 对已有的功能处理进行了变更,
这种情况又可以细分为三种情况:
新增了某些数据移动;
删除了某些数据移动;
修改了某些数据移动;
把修改的、删除的、新增的功能点累加起来即得到本次变更的规模。
新增与删除数据移动是很容易识别的,稍微复杂一点的是修改。什么是修改呢?
1)某数据移动的数据组做了变更:
新增了属性,减少属性,属性的含义或格式改变了。
数据移动、数据组、属性三者的关系再回顾一下,一个数据移动移动了一个数据组,而一个数据组包含多个属性,即:1个数据移动→1个数据组(属性1,属性2…属性n)。
2)某数据移动对应的数据运算改变了:
处理逻辑的修改。
我们通过一个简单的例子来解释上述的规则:
在一个人力资源管理系统中,有一个简单的功能性用户需求是录入员工的个人信息:
需求版本1:
1)录入员工的个人信息,包括录入员工的姓名、身份证号、第一学历;
2)人员不可以重名。
这是变更之前的需求,其规模为:
子处理(数据移动) |
类型 |
兴趣对象与数据组及其属性 |
功能点 |
输入人员信息 |
输入 |
人员(姓名、身份证号、第一学历) |
1 |
校对是否重名 |
读 |
人员(姓名) |
1 |
提示不能重名 |
输出 |
错误提示 |
1 |
保存人员信息 |
写 |
人员(姓名、身份证号、第一学历) |
1 |
现在需求发生了改变,要求人员可以重名了。新需求为:
需求版本2:
1)录入员工的个人信息,包括员工姓名、身份证号、第一学历;
2)人员可以重名。
则本次需求变更的规模为多少呢?
子处理(数据移动) |
类型 |
兴趣对象与数据组及其属性 |
功能点 |
输入人员信息 |
输入 |
人员(姓名、身份证号、第一学历) |
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。
对于变更后的功能点数,虽然有两个错误提示消息,但在一个功能处理内所有不包含用户感兴趣的其他信息的错误/确认消息,都要合并为一个输出。
快速学习COSMIC方法之十五:如何度量需求变更的规模相关推荐
- 快速学习COSMIC方法之十四:嵌入式软件功能点识别案例
前面的几讲,我们讲完了如何计算功能点的方法,接下来我们看一个完整的案例.这是COSMIC官方网站上曾经发布的一个嵌入式软件的案例,有多个版本,我们改编自其中一个版本来讨论一下. 需求描述如下: 1. ...
- 快速学习COSMIC方法之二:COSMIC方法的度量过程
COSMIC方法的度量分为三个阶段: 1 度量策略阶段 2 映射阶段 3 度量阶段 在度量策略阶段,主要包括四个活动: 1)确定度量目的:为什么执行本次度量. 比如你要度量一个房子的面积,是为了卖房子 ...
- 快速学习COSMIC方法之九:如何识别兴趣对象?
兴趣对象是COSMIC方法中一个关键的概念.它影响了我们识别的功能点的多少.兴趣对象是描述中在功能需求中的.功能用户感兴趣的事物,它可以是一个具体的东西,也可以是一个抽象的概念,系统一定要对它执行输入 ...
- 快速学习COSMIC方法之十一:如何识别输入?
在COSMIC方法中,功能处理可拆分为四种数据移动:输入,输出,读,写.数据移动是最小的.不可再拆分的.软件内部的动作.在数据移动中包含了算术运算如加减乘除,关系运算如等于.不等于,逻辑运算如与或非, ...
- 快速学习COSMIC方法之七:如何理解功能处理的定义?
在COSMIC度量手册中对功能处理的定义如下: a) 体现了待度量软件的功能性用户需求基本部件的一组数据移动,该功能处理在这些FUR中是独一无二的,并能独立于这些FUR的其他功能处理被定义. b) 一 ...
- 快速学习COSMIC软件规模度量方法
转载:快速学习COSMIC软件规模度量方法 – 绿盟科技技术博客 最近与某运营商开展合作项目时,客户需要我方输出一份COSMIC软件规模度量数据用于评估项目预算,由于此前未接触过COSMIC软件规模度 ...
- 深度学习入门笔记(十五):深度学习框架(TensorFlow和Pytorch之争)
欢迎关注WX公众号:[程序员管小亮] 专栏--深度学习入门笔记 声明 1)该文章整理自网上的大牛和机器学习专家无私奉献的资料,具体引用的资料请看参考文献. 2)本文仅供学术交流,非商用.所以每一部分具 ...
- Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第十五章:第一人称摄像机和动态索引...
Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第十五章:第一人称摄像机和动态索引 原文:Introduction to 3 ...
- 未处理异常和C++异常——Windows核心编程学习手札之二十五
未处理异常和C++异常 --Windows核心编程学习手札之二十五 当一个异常过滤器返回EXCEPTION_CONTINUE_SEARCH标识符时是告诉系统继续上溯调用树,寻找另外的异常过滤器,但当每 ...
最新文章
- 程序员的职业素养(读书笔记)-- 第一章
- 初探JavaScript(一)——也谈元素节点、属性节点、文本节点
- ASP获取地址栏URL地址方法
- 【译】Typescript的类型(二)
- 反汇编学习笔记2 函数的本质
- 暑期训练日志----2018.8.24
- 百度云服务器安装git并做远程仓库
- jqery 实现滚动图片【三】
- (五)Netty之Selector选择器
- 各种排序总结(三)堆排序
- 给 Android 开发者的 Kotlin 教程(一)
- Lazada市场大数据分析,东南亚年轻群体的消费趋势!
- httpwatch详解
- 软件工程第三次作业——软件质量保证鄙见
- UR机器人返回信息格式解析
- Python预测2022世界杯1/8决赛胜负
- 走进“开源SDR实验室” 一起玩转GNU Radio:AGC自动增益控制
- 爬虫日常-selenium登录12306,绕过验证
- dede中直接编写php文件夹,织梦php如何打包文件夹呢? 直接上代码了
- 软件怎样作用于硬件!!?