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

在COSMIC度量手册中对功能处理的定义如下:

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

b) 一个功能处理只有一个触发输入。每个功能处理在接受到由其触发输入数据移动所移动的一个数据组后,开始进行处理。

c)一个功能处理的数据移动的集合是响应触发输入的所有可能的功能性需求所需要的集合。

注1:实现时,一个功能处理实例,在收到一个触发输入实例移动的数据组实例时,才开始执行处理。

注2:除了触发输入外,一个功能处理的FUR可能需要一个或多个其他的输入。

注3:如果功能用户发送了包含错误的数据组,例如,由于传感器失灵,或者人输入的命令存在错误,通常是由功能处理来判断事件是否确实发生、和/或输入的数据是否有效、以及如何响应。

注4:一个功能处理是独一无二的(正如a)所述),如果该功能处理是由一个在FUR中独一无二的触发事件所触发,那么它的总规模必须包含在FUR内。在相同FUR中,即使有两个或多个功能处理它们的功能相似,它们也可能是独一无二的。

这个定义,是我们识别功能处理的基础,要深刻理解其含义:

 1 功能处理是软件功能需求中的一个功能部件。

 所谓部件,是指一个能够独立存在的功能。

什么是独立存在呢?不同的功能之间有严格或非严格的操作顺序,它们算不算独立存在的功能部件呢?我们看如下的场景:

案例1: 必须先录入了人员信息,才能查询人员信息,否则啥也查不到,那么查询人员信息算不算一个可以独立存在的功能呢?算!此时不考虑不同功能之间的数据依赖关系。

案例2: 比如先下订单,才能结算,那么结算算不算一个可以独立存在的功能呢?算!下了订单也未必一定要结算!

案例3 : 在一个读后修改的案例中,需要先查询出订单的简单信息,才能再查询其详细信息,然后修改保存它。此时:查询订单概要,查询订单详细,修改订单是有严格的先后执行顺序的,上一步操作是下一步的基础,此时算不算单独的功能处理呢?算!因为查询订单概要后,功能用户也可以不再查询订单详细,退出该功能,这也是功能用户的一个独立的使用目的,并没有规定一定要查询完概要后,必须查询订单明细,是否查询订单明细是由功能用户选择决定的,不是由系统作出的决策,所以这种由客户独立作出决策的且都是对用户有意义的决策都包含了不同的功能处理。

对于“独立”的理解可以解释为,如果执行了A功能,则未必一定执行B功能,A和B就是独立的,是否执行B功能不是由被度量的软件决定的,而是由外部的功能用户决定的。反之亦然。

 2 功能处理是一个基本功能部件。

所谓基本部件,是指不能够再细拆分的功能,不能再拆分为其他的功能。

比如:

案例4 : 在一个人员管理的软件中,人员信息的维护就是一个能够独立存在功能,它就是一个功能部件。

人员信息的维护可以拆分为增加人员信息,删除人员信息,修改人员信息,查询人员信息,那么人员信息的维护就不是一个基本部件,因为它还可以再拆分为其他独立存在功能。

那么增加人员信息是否是一个基本部件呢,它是否还可以再拆分为能够独立存在的功能部件呢?再往下细拆分,就没有独立存在的价值了,所以增加人员信息就是一个基本功能部件,就是功能处理了。

 3 一个功能处理只有一个触发输入。

功能处理由触发输入所启动,触发输入是一个功能处理的第1个数据移动,一个功能处理的第一个数据移动一定是输入。

可以由多个不同的触发事件被功能用户所感知,而产生同一个触发输入。一个功能处理不能有多个触发输入,不同的触发输入启动不同的功能处理。

识别出功能处理的数据移动后,一定要有一个输入,否则,这个功能处理可能就识别的不正确。

输入是由功能用户产生的,是来自功能处理外部的。输入不是由存储介质产生的,功能处理与存储介质的数据移动是读和写。

可以由系统时钟产生触发输入。

 4 功能处理要达到目的后才能结束。

案例5 : 在我们安装windows操作系统时,我们在安装过程中发生和系统的多次交互,系统让我们选择下一步:


此时对于用户而言也面临一个选择,要么选择下一步,要么点红叉,退出,此时点击红叉退出对用户而言就没有意义了,因为这个功能的目的是安装软件,你点击红叉不是安装软件的一个子目的,没有意义,所以此时选择下一步不是一个功能处理。

你不能将一个完整执行的功能处理与一个半途而废的功能处理识别为两个不同的功能处理。

 5 功能处理在一个度量范围是不能重复出现的。

什么是不能重复出现呢?即功能处理的目的是相同的、功能处理中的数据移动也是完全相同的。在一个被度量软件中,在需求中有可能可以识别出两种情况的复用,一种是需求中有重复的部分数据移动,这部分重复的数据移动是在各自的功能处理中分别度量的;另一种情况是需求中重复的功能是一个单独的功能处理,这部分重复的功能满足功能处理的定义与识别规则,此时不能重复度量,要单独视为一个功能处理,计数一次。

有时候两个功能处理识别出的数据移动是一样的,即数据移动的类型相同,移动的数据组类型也相同,功能点的个数也相同,但是未必是合并为一个功能处理,为什么呢,因为其功能的目的是不同的,而且客户在FUR中明确区分了是两个功能。比如,对一个人员信息的新增与修改功能。

 深刻理解功能处理的概念可以帮助我们准确、合理的识别功能处理,因此要仔细思考上述的概念要点。

本站公众号
   欢迎关注本站公众号,获取更多程序园信息
开发小院