在COSMIC方法中,功能处理可拆分为四种数据移动:输入,输出,读,写。数据移动是最小的、不可再拆分的、软件内部的动作。在数据移动中包含了算术运算如加减乘除,关系运算如等于、不等于,逻辑运算如与或非,这些数据运算都是不计算功能点的。

在识别功能处理的输入(包括触发输入即第一个数据移动,也包括其他输入)时要注意如下的问题:

1 每个数据移动仅能移动一个兴趣对象的一个数据组。

这个规则是不能违背的。在实践中往往是由于对某组数据是否是一个独立的兴趣对象识别错误,而造成计数错误,读者可以再仔细读一下《如何识别兴趣对象》一文中的案例。

  2 输入同一个兴趣对象的不同数据组。

在一个功能处理中,如果一个输入移动了同一个兴趣对象的不同的数据组,并且这些输入的源头是不同类型的外部功能用户,此时需要计数为不同的功能点。否则,要视为相同的功能点。

例如:

在一个地震监测软件的功能处理中,不同类型的传感器监测了地震的不同参数值,有的传感器监控了震级,有的传感器监控了位置等,这些参数都是描述某次地震的数据属性,是同一个兴趣对象的属性,而不同类型的传感器产生了移动同一个兴趣对象的不同数据组的输入,因此要识别为多个输入。

再如:

在一个人员管理系统中,当同一个操作员需要录入人员的很多属性信息时,即使分成了多屏,即使是时间上不连贯的多次录入,只要是在同一个功能处理内,仍然仅计算为一个输入。

    3 输入仅有一个属性的数据组。

对于实时软件而言,这种情况很常见。有可能某个兴趣对象仅有一个属性。比如温度传感器采集了温度信息。

对于应用软件而言,这种情况并不多见,一般一个兴趣对象会有多个属性。

4 输入具有n个属性的数据组。

在输入时,如果一个兴趣对象有多个属性,允许功能用户可以输入该兴趣对象的一个或多个属性(不论一个还是多个属性,都属于一个数据组),而剩余的其他属性可以保持空白,此时仅计算为一个输入。

例如,我们常见的12306系统的车票查询功能:

查询条件有很多个属性:日期,车次类型,出发站,到达站,出发时间等,每次查询时不需要设置所有的查询条件,可能仅仅是部分属性,此时不能把每种属性的组合识别为一个输入,而应该仅仅是一个输入。

     5 不要混淆了输入与读。

输入是从功能处理的外部移动到功能处理的内部。输入的源头是被度量的功能处理以外的功能用户,输入的目的地是被度量的功能处理。输入和读不要混淆,读的源头是存储介质,目的地是被度量的功能处理。存储介质被认为是在度量范围内,在功能处理的内部,而不是外部的功能用户。从下图的软件环境模型中可以很清楚的看出二者的区别。

    6 触发输入的特殊性。

触发输入是一个功能处理的第1个输入,它分成2种情况:

情况1: 仅仅起到通知作用的触发输入。

如有这样一个功能性用户需求:当进入一个部门查询功能处理时,系统会列出公司内的所有部门。此时,在该功能处理中仅仅只有一个输入,此输入仅起到了启动该功能处理的作用,没有移动其他数据到功能处理内。

情况2:既起到了通知的作用,也附加了数据信息进来。

如有这样一个功能性用户需求:查询年龄超过某个数值的员工。此时,在该功能处理中触发输入既起到了通知的作用,也包含了查询条件的数据。

按照COSMIC的度量规则,一个功能处理至少包含一个输入和输出,或者包含一个输入和写。一个功能处理的第1个数据移动一定是输入,是输入启动了功能处理。输出和写都是对输入的响应,如果没有输出和写,只有输入和读构成的一个功能处理,那就意味着功能处理没有给功能用户提供服务,这就不是一个功能处理,是没有价值的,不能独立存在的,是无意义的功能。

对于触发输入也可以这么理解:

如果你能明确地识别出一个移动了某个数据组的输入,则就可以忽略启动功能处理的动作了。如果在一个功能处理内,没有明确的识别出移动了某个数据组的输入,则必须识别启动功能处理的动作为一个输入。

 7 时钟信号作为触发输入。

时钟信号作为触发输入在实时软件中是很常见的。比如对于空调中的控制软件,每5秒钟就会监测环境温度与目标温度的差别,控制压缩机是否工作,此时时钟信号就是一个触发输入。再如在应用软件中,每到晚上12点,系统会自动备份,自动备份系统数据的触发输入就是时钟信号。

  8 输入中包含了相关的数据运算。

在度量输入时,对应的数据运算是不单独计算功能点的。

如:

在输入人员的账号密码时,密码是星号显示的,不能明文显示,这就是对输入数据的数据运算。

  9 输入中包含了提示用户输入数据的提示信息。

提示用户应该输入什么信息,这些提示信息被认为已经包含在了输入中,不单独计算功能点。

如:

软件在输入栏中有提示:请输入你的身份证号。

这种提示信息是不单独计算功能点的。

再如:

软件画出了一个单据的录入格式:

画出此录入界面也不单独计算功能点。

10 输入数据的缺省值

如果在输入时对于数据属性有缺省值,此时有2种情况:

情形1: 缺省值是固定不变的,不需要从持久存储介质中读出来的,是不需要计算功能点的。比如录入人员信息时,可以选择性别,这是固定的两个选择:男,女,此时对于这类缺省数据的显示是不计算功能点的。再如,当录入订单信息时,缺省的产品数量是1,此时对缺省值的显示也不需要计算功能点。

情形2: 缺省值是变化的,需要从持久存储介质中读出来。此时需要为这些信息的显示识别一个读与一个输出。比如,在录入供应商的订单信息时,供应商的付款方式是根据上次的付款方式查询出来,并显示出来供录入人员修改。此时缺省的付款方式的显示就要识别一个读与一个输出。

快速学习COSMIC方法之十一:如何识别输入?相关推荐

  1. 快速学习COSMIC方法之九:如何识别兴趣对象?

    兴趣对象是COSMIC方法中一个关键的概念.它影响了我们识别的功能点的多少.兴趣对象是描述中在功能需求中的.功能用户感兴趣的事物,它可以是一个具体的东西,也可以是一个抽象的概念,系统一定要对它执行输入 ...

  2. 快速学习COSMIC方法之二:COSMIC方法的度量过程

    COSMIC方法的度量分为三个阶段: 1 度量策略阶段 2 映射阶段 3 度量阶段 在度量策略阶段,主要包括四个活动: 1)确定度量目的:为什么执行本次度量. 比如你要度量一个房子的面积,是为了卖房子 ...

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

    合理的度量需求变更的规模是COSMIC方法比第一代的功能点估算方法更科学的亮点.在度量需求的变更时,首先需要明确我们的度量目的,即我们要度量的是本次变更的规模,而不是变更之后的规模.明确目的后,要将变 ...

  4. 快速学习COSMIC方法之十四:嵌入式软件功能点识别案例

    前面的几讲,我们讲完了如何计算功能点的方法,接下来我们看一个完整的案例.这是COSMIC官方网站上曾经发布的一个嵌入式软件的案例,有多个版本,我们改编自其中一个版本来讨论一下. 需求描述如下: 1. ...

  5. 快速学习COSMIC方法之七:如何理解功能处理的定义?

    在COSMIC度量手册中对功能处理的定义如下: a) 体现了待度量软件的功能性用户需求基本部件的一组数据移动,该功能处理在这些FUR中是独一无二的,并能独立于这些FUR的其他功能处理被定义. b) 一 ...

  6. 快速学习COSMIC软件规模度量方法

    转载:快速学习COSMIC软件规模度量方法 – 绿盟科技技术博客 最近与某运营商开展合作项目时,客户需要我方输出一份COSMIC软件规模度量数据用于评估项目预算,由于此前未接触过COSMIC软件规模度 ...

  7. 快速学习COSMIC之一:COSMIC方法的简单案例

    COSMIC方法是新一代的软件规模度量方法,其基本的原理很简单,就是度量软件需求中的输入.输出.读.写这4类数据移动的个数,我们通过2个简单的例子来说明其基本的原理. 案例一:针对MIS类软件的需求 ...

  8. 大数据学习,Scala快速学习的方法

    大数据学习过程中,都会学习Scala,众所周知,Spark支持4门语言,分别为R.Python.Java与Scala,但真正的底层实现语言则是Scala.在我以往的实践分享中,除了Python,我还会 ...

  9. OpenCV学习笔记(二十一)——绘图函数core OpenCV学习笔记(二十二)——粒子滤波跟踪方法 OpenCV学习笔记(二十三)——OpenCV的GUI之凤凰涅槃Qt OpenCV学习笔记(二十

    OpenCV学习笔记(二十一)--绘图函数core 在图像中,我们经常想要在图像中做一些标识记号,这就需要绘图函数.OpenCV虽然没有太优秀的GUI,但在绘图方面还是做得很完整的.这里就介绍一下相关 ...

最新文章

  1. Springboot中优雅进行字段校验
  2. 谨慎的Waymo CEO:未来几十年,自动驾驶无法做到无处不在
  3. 皮一皮:谁来解释下一无所有的字典含义?
  4. mysql grant %_MySQL的Grant命令详解
  5. 简单而不简陋﹣wp7视觉点滴
  6. python3 image_python3 ImageTk 安装方法
  7. 2017.9.29 road 失败总结
  8. 用汇编的眼光看C++(之算术符重载)
  9. 红帽急了:新年的 RHEL 将有低成本或免费版
  10. 设置表格表头字体_Excel双栏和三栏斜线表头制作技巧
  11. 虚拟桌面与代理服务器的那些事
  12. 【智能优化算法-灰狼算法】基于非支配排序灰狼优化器(NS-GWO)算法求解多目标优化算法附matlab代码
  13. 【前端灵魂脚本语言JavaScript⑤】——JS中数组的使用
  14. php-fpm服务启动命令,PHP-fpm服务的启动和停止
  15. kali linux 渗透测试学习笔记——被动信息收集
  16. matlab中selector用法,MATLAB SIMULINK Bus Selector 总线选择
  17. iOS开发工具——取色工具Sip
  18. mysql字连接查询实现至少选修C1和C2两门课的学生和一个都没有被选中的课程
  19. 云计算Leader Election之霸道选举算法Bully Algorithm
  20. 贪食蛇java源码_JAVA 贪食蛇 源码

热门文章

  1. 地库创业,第五年获 10 亿元国家队融资,驭势科技的无人驾驶野心
  2. python 匹配整数或者小数(包括正数和负数)(简单易懂,代码可以直接运行)
  3. Android 集成百度文字识别OCR身份证银行卡驾驶证识别
  4. SAS学习之查找异常值
  5. 投影矩阵之z坐标推导
  6. 光伏逆变器的行业演进和格局分析
  7. SolidWorks卸载重装教程
  8. LabVIEW串口通信基础知识
  9. 数据链路层——封装成帧、透明传输、差错检测、最大传输单元MTU、以太网协议
  10. cocos creator2.1.3休闲游戏《星球飞刀大作战》源码H5+安卓+IOS三端源码