Software Engineering and Applications
Vol.05 No.01(2016), Article ID:16944,7 pages
10.12677/SEA.2016.51003

Recognition Method of COSMIC Measurement in the Persistent Storage

Song Wu, Hao Liu, Liuqing Peng

College of Computer Science, National University of Defense Technology, Changsha Hunan

Received: Jan. 28th, 2016; accepted: Feb. 16th, 2016; published: Feb. 19th, 2016

Copyright © 2016 by authors and Hans Publishers Inc.

This work is licensed under the Creative Commons Attribution International License (CC BY).

http://creativecommons.org/licenses/by/4.0/

ABSTRACT

COSMIC method is a full function point counting method which is currently used for software size measurement. At present, this method’s applicable project is very wide and its counting rules are simple and easy to learn and master. It has been accepted by more and more software organizations. An important job of using the COSMIC measurement is to identify the persistent storage and to provide decision basis to identify the data movement and the calculation function point. However, the COSMIC Functional Size Measurement Method Version only regulates and explains some principles and rules to identify the persistent storage. So, it has lager fuzzy and uncertainty. It also doesn’t give an effective operation method, which makes the measurement personnel have a big subjectivity in the practical measurement. They lead to a great deviation in the measurement results. On the basis of the principles and rules of the COSMIC Functional Size Measurement Method Version, combined with the practical measurement experiment, this paper proposes procedures that can be carried out to identify the persistent storage.

Keywords:COSMIC Method, Persistent Storage, Recognition Method

COSMIC度量中持久存储器的识别方法

吴颂,刘浩,彭柳青

国防科学技术大学计算机学院,湖南 长沙

收稿日期:2016年1月28日;录用日期:2016年2月16日;发布日期:2016年2月19日

摘 要

COSMIC方法是当前用于软件规模度量的一种全功能点估算方法。目前,该方法适用的项目很广泛,计数规则也比较简单,易于学习和掌握,已经被更多的软件组织所接受。运用COSMIC度量方法,其中有一项重要工作,就是识别持久存储器,为识别数据移动和计算功能点提供判定依据。但是,由于COSMIC度量手册中仅对识别持久存储器的一些原则和规则进行了规定和说明,有较大的模糊和不确定性,并且没有给出行之有效的操作方法,使得度量人员在实践度量中,存在较大的主观性,由此导致度量结果存在较大偏差。本文在遵循COSMIC度量手册原则和规则的基础上,结合实践度量实验,提出了一种可实施的识别持久存储器的方法步骤。

关键词 :COSMIC方法,持久存储器,识别方法

1. 引言

当前,软件需求的日趋复杂,人们意识到有效的控制软件开发成本和进度变得越来越困难[1] ,随着软件工程方法的不断发展深入,为了更好的控制软件开发成本、进度、工作量等,软件度量在软件开发中的重要性日益凸显[2] 。其中,COSMIC方法就是一种当前较为成熟的用于估算软件开发工作量的全功能点估算方法[3] ,该方法为“业务应用”(或MIS)软件、“实时软件”、“基础设施”软件以及一些科学/工程软件提供了一种度量软件功能规模的标准方法。该方法于2002年12月被ISO/IEC JTC1 SC7接受,成为国际标准。最新版本为ISO/IEC 19761:2011“软件工程-COSMIC-功能规模度量方法”[4] 。目前,COSMIC方法4.0版已经发布,此度量手册为度量者在实践中应用COSMIC方法的最基本标准,是度量人员运用该方法进行软件度量所遵循的基本原则。但是,由于手册中只是说明了一些基本的定义、原则和规则,使得度量人员在实践中不免遇到许多困难,其中识别持久存储器困难就是其中一个对度量结果起重要影响的问题。

本文从COSMIC度量手册中持久存储器的定义和原则入手,结合相关实验案例进行分析和验证,提出一种持久存储器的识别方法,有效提高了持久存储器识别的准确性和可操作性。

2. COSMIC度量方法简介

COSMIC方法基于基本的软件工程原则,主要通过“软件环境模型[4] ”和“通用软件模型[4] ”来对待度量软件进行建模、定义和范围限定,使软件规模估算得到可靠、一致的估计结果。其中,“软件环境模型”用来描述待度量软件的特征。“通用软件模型”用来对被度量软件的功能需求进行建模和对主要度量参数进行设定。

COSMIC方法中度量过程一般分为三个阶段:第一阶段为度量策略阶段,主要对度量目的、度量范围、功能用户及一些主要度量参数进行定义和设定。任何软件的度量估算,只有在开始度量前定义了度量目的、范围、功能用户等参数,度量结果的含义才能被认可和理解。第二个阶段为度量映射阶段,主要是把功能用户需求(Function User Requirement,下文简称FUR) [4] 映射到功能过程中,从而识别出触发事件、功能过程、数据组、感兴趣对象、数据属性、数据移动类型等,为下一步度量过程打下基础。第三阶段是度量阶段,主要是应用度量函数,累加待度量软件的功能规模大小,得到以功能点(COSMIC Function Point,下文简称CFP) [4] 为计量单位的软件功能规模值。

具体过程如图1所示。

COSMIC度量方法的优点:一是相比于其他功能点估算方法,COSMIC方法适应的软件估算项目更加广泛,该方法可以广泛适应于商业应用软件、业务实时软件、数据库管理软件、算法功能类软件 [5] 等。二是学习掌握更加容易,便于推广应用。COSMIC方法的定义、原则和规则,更加容易让度量人员学习和理解,其计数规则简单,当理解了该方法的原则和规则之后,不需要再记忆任何的东西,便于推广应用。三是COSMIC方法的估算结果的一致性 [6] 较好。通过大量的度量人员研究和实践经验证明,运用COSMIC方法对软件项目进行度量估算,其估算结果的一致性较好,有利于不同的度量人员进行度量结果重现和工程实践应用。

3. 识别持久存储器存在的问题和困难

COSMIC度量手册中持久存储器的定义:使得功能过程在其生命周期结束后仍然能够存储数据组的存储介质,并且或者通过该存储介质,功能过程也可以检索数据组,此数据组由另一个功能过程存储或同一功能过程之前的事件存储或者也可能由某些其他过程存储[4] 。由此定义可以得知,持久存储器其实质就是软件在边界内与持久存储介质之间进行数据交互的一种介质的统称。从大量实践度量经验中分析,得出在识别持久存储器的过程中,往往容易产生以下几方面的问题和困难:

3.1. 把持久存储器识别在边界外,导致度量结果偏差比较大

COSMIC方法是通过度量功能过程的数据移动的个数计数功能点(CFP)来估算工作量的,在度量映射阶段,定义了四种数据移动类型,分别是数据Entry(E)操作:将一个数据组从功能用户跨越边界移动到要求的功能过程中;数据Exit (X)操作:将一个数据组从功能过程跨越边界移动到要求的功能用户;数据Read®操作:将一个数据组从永久存储器移动到要求的功能过程内的数据移动;数据Write (W)操作:将一个数据组从功能过程内部移动到永久存储器的数据移动。

图2所示。

把持久存储器识别在边界外,则当功能过程需要操作移动持久存储器中的数据时,就会产生一个Exit (X)和一个Entry (E),而如果识别了持久存储器在边界内,则功能过程需要调用持久存储器中的数据时,只需要产生一个Read (R)即可,或者功能过程需要向持久存储器存储数据时,只需要产生一个Write (W)即可,由此可见,会对度量结果的功能点(CFP)产生较大的偏差影响。

图3(a),图3(b)所示。

3.2. 对定义理解不清楚,导致遗漏识别持久存储器

COSMIC度量手册中对持久存储器的定义前后引用,描述比较繁琐,很容易使度量人员不能很准确的把握识别持久存储器的标准,使得在实践中往往遗漏识别持久存储器。比如,在COSMIC官方网站上公布的LBT循环测试器(ISDN Loop Back Tester) [7] 案例中,需求文档中讲到超时120秒则引发软件自动挂机,此时超时计时器应该识别为一个持久存储器,用来保存超时数据。如果对定义理解不深刻,此处就很容易遗漏识别超时计时器为持久存储器,必然对最后度量结果产生较大影响。

3.3. 把部分对等构件识别为持久存储器,导致度量结果偏差比较大

有的度量人员没有深刻把握持久存储器的定义,在按照需求文档进行度量时,容易把对等构件识别为持久存储器,导致度量结果的功能点(CFP)偏小。比如在COSMIC官方网站上公布的课程注册系统[8]

Figure 1. COSMIC method measurement process

图1. COSMIC方法度量过程

Figure 2. The four types of data movement

图2. 四类数据移动

(a) (b)

Figure 3. (a) To identify boundary in persistent storage data movement, (b) to identify boundary outside lasting memory data movement

图3. (a) 识别边界内持久存储器的数据移动,(b) 识别边界外持久存储器的数据移动

案例中,课程目录数据是保存在对等构件“课程目录系统”中的,如果把其误认为一个持久存储器,那么就会造成向对等构件功能用户请求和返回数据的X/E被识别为一个R,向其发送数据的X被识别为W,导致最终度量结果比实际偏小。

3.4. 把持久存储器识别为功能用户,导致度量结果偏差比较大

由于度量人员没有准确理解功能用户的定义,没有准备把握边界的划分,导致把持久存储器识别为功能用户,造成结果偏差。比如在LBT循环测试器(ISDN Loop Back Tester) [7] 案例中,根据需求文档描述,很容易识别出忙音检测器、线路转换/循环电流丢失检测器,如果度量人员一开始没有认识到忙音检测器、线路转换/循环电流丢失检测器是LBT软件的一部分,此处就很容易把其识别为功能用户,而不把其识别为持久存储器,导致启动忙音检测器的一次数据读(R)识别为一个数据输入(E)和数据输出(X),把写(W)入忙音检测器状态识别为一个数据输入(E)和数据输出(X),最终度量结果偏差。

4. 识别持久存储器的方法步骤

为有效解决识别持久存储器困难的问题,在遵循COSMIC手册原则和规则的基础上,结合大量度量实践经验,本文提出一种识别方法,使得度量人员可以较为准确的识别出持久存储器。其方法步骤如下:

步骤1:依据需求文档的表述,识别交互事物。

在此步骤中,根据需求文档表述,从中识别出所有存储类交互事物。此步骤中遵循的规则如下:

规则1:需求文档中出现硬件存储设备的表述语句,从中识别出存储类交互事物。

实例1:在LBT循环测试器[7] 案例度量中,功能用户需求(FUR)中表述“所有数据如用户密码、LRD码和登录计数器都存储于非易失存储器(EEPROM)和RAM”,由此,可以识别出硬件存储设备RAM和EEPROM为存储类交互事物。

规则2:需求文档中出现数据存储、保存或者数据调用、取回的表述语句,从中识别出存储类交互事物。

实例2:在课程注册系统[8] 案例中,功能用户需求(FUR)中创建课表这一功能过程有“系统保存课表”的表述,此语句表述即为保存数据操作,从中可以识别出保存课表数据的存储类交互事物。

实例3:在课程注册系统[8] 案例中,功能用户需求(FUR)中表述“当教授选择/取消选择所教的课程,系统检索和显示一系列教授在下学期将要讲授的课程设置”,此语句的意思表述即表明此功能过程需要检索和取回教授在下学期将要讲授的课程信息,即取回数据操作,从中可以识别出存储教授授课信息的存储类交互事物。

步骤2:从存储类交互事物中排除功能用户、对等构件。

在识别出的存储类交互事物中,对照功能用户和对等构件的定义,从中排除功能用户[9] 和对等构件。功能用户和对等构件都是边界外与待度量软件交互的数据发送者或预期数据接收者,不能作为持久存储器,应当予以排除。

步骤3:分析数据移动跨越软件生命周期或者跨越功能过程,识别出持久存储器。

分析待度量软件与存储类交互事物之间的数据移动是否跨越了软件生命周期或功能过程,如果存储的数据在下一个功能过程需要使用或者在软件生命周期结束后仍然需要调用,则识别为持久存储器,否则只是临时存储,不应识别为持久存储器。此步骤遵循的规则如下:

规则3:存储的数据在软件生命周期结束后仍然保存在存储介质中,或者取回的数据是上一个软件生命周期所保存在存储介质中的数据,应识别为持久存储器。如图4所示。

实例4:在LBT循环测试器[7] 案例度量中,功能用户需求(FUR)中表述“每次LBT软件接收到正确的用户名和密码算做一次成功登陆,即对此登陆次数进行计数,由登陆计数器保存登录次数”。此功能过程表述在每一次的软件启动后,都需要对登陆计数器中数据进行更新和保存,即跨越了软件生命周期存储数据,因此应该识别为持久存储器。

规则4:在一个功能过程中存储的数据是下一个功能过程需要使用或者说此功能过程调用的数据是由该功能过程之前的其他功能过程所存储的数据,应识别为持久存储器。如图5所示。

实例5:在LBT循环测试器[7] 案例度量中,功能用户需求(FUR)中表述“每次登陆软件都需要输入用户名和密码,当密码正确才能正常登陆,如果输入密码错误的次数达到3次,则登陆失败”。按照此规则,因为存储的错误密码计数(3次)没有跨越功能过程,不应被识别为持久存储器。

经过以上步骤之后,比较准确的识别出了持久存储器。

实例6:根据本文所述识别器持久存储器的方法步骤对LBT循环测试器案例[7] 进行度量实验,得到其度量结果,如表1所示。

5. 结束语

本文在COSMIC度量方法给出的持久存储器定义基础之上,对度量手册中的原则和规则进行了梳理,结合实践度量案例中发现的问题,提出了准确识别持久存储器的一种方法步骤。下一步将继续对COSMIC

Figure 4. Across the software life cycle and interactive data persistent storage medium

图4. 跨越软件生命周期与持久存储介质交互数据

Figure 5. Cross function process and interactive data persistent storage medium

图5. 跨越功能过程与持久存储介质交互数据

Table 1. ISDN Loop Back Tester in the recognition results of persistent storage

表1. LBT循环测试器案例中识别持久存储器的结果

度量方法进行深入研究,探究一种可实施的COSMIC度量方法。

文章引用

吴 颂,刘 浩,彭柳青. COSMIC度量中持久存储器的识别方法
Recognition Method of COSMIC Measurement in the Persistent Storage[J]. 软件工程与应用, 2016, 05(01): 22-28. http://dx.doi.org/10.12677/SEA.2016.51003

参考文献 (References)

  1. 1. 卢潇, 孙璐, 刘娟, 等. 软件工程[M]. 北京: 清华大学出版社, 2005: 2-23.

  2. 2. McGarry, J., Card, D. JONESC [J]. 实用软件度量, 2003, 5(1): 80-86.

  3. 3. 周泽龙. 可实施的COSMIC方法研究[D]: [硕士学位论文]. 长沙: 国防科技大学, 2013: 4.

  4. 4. COSMIC (2015) COSMIC Method v4. 0. 1 Measurement Manual. No. 4.

  5. 5. 朱明阳, 程江涛. 一种度量算法的功能点方法[C]. 2014全国网络与信息安全学术会议, 2014: 5.

  6. 6. 买新晖. COSMIC度量一致性控制的方法研究[J]. 电脑知识与技术, 2014, 10(2): 322-324.

  7. 7. COSMIC-Case Study (2002) ISDN Loop Back Tester. No. 2.

  8. 8. COSMIC-Case Study (2008) C-Registration System. No. 1

  9. 9. 程江涛, 朱明阳. COSMIC度量中功能用户的识别方法[C]. 2014全国网络与信息安全学术会议, 2014: 5.

期刊菜单