[转载]如何选择功能规模度量方法:土耳其电信公司案例分析

gongzaimian 2016-12-13 09:44:28
如何选择功能规模度量方法:土耳其电信公司案例分析

本文由中国联通系统集成山东分公司 付小宁 翻译

《全球科技日报》2015年第7期(摘自98-108页)
第四届世界创新与计算机科学大会(INSODE-2014)入选论文(意大利,罗马,酒店会议中心,2014年4月11-12日)
Selami Bagriyanik,软件开发事业部,土耳其电信技术研发中心,Bahcesehir大学,马尔泰佩,伊斯坦布尔市,土耳其。
Adem Karahoca,软件工程专业,工程系,Bahcesehir大学,贝西克塔斯,伊斯坦布尔市,土耳其。
Ersin Ersoy,软件工程,工程系,Bahcesehir大学,贝西克塔斯,伊斯坦布尔市,土耳其。

摘要
对于信息技术的从业者来说,功能规模度量是一个非常重要的工具,其度量结果数据非常珍贵,能被应用到好几个方面。比方说,功能规模对于衡量软件生产率和质量至关重要;并且,也是软件项目成本估算的一项重要指标。然而,功能规模度量方法的用法并没有在软件业内广泛使用,就算在公司内应用也仍然面临巨大的挑战。本次研究重点关注于电信公司对软件规模度量方法的选择过程,研究影响规模度量选择决策的因素和在对概念规划进行验证过程的经验案例。本次是通过对土耳其电信公司40多个项目应用COSMIC和IFPUG两种可选方法进行规模度量的案例进行研究。经过分析,得出电信公司最佳的选择是使用COSMIC方法。
关键词:功能规模度量,功能点,COSMIC,IFPUG,软件成本估算

1简介
功能规模度量,指根据软件系统的信息处理操作来度量系统的功能规模,例如对数据库进行保存和检索数据、或者通过接口将信息发布到外部系统等。自从IBM的工程师Albrech首次提出了FPA方法后,功能规模度量方法在软件行业就被应用起来[1]。最近30年来,从最初的度量方法已经派生出了其他几种度量方法。图1展示了最常见的几种度量方法的概要发展历史[2]。

图1:功能规模度量方法发展史

根据卡珀斯.琼斯(Capers Jones)的观点,在一些重要的有代表性的企业中,通常会有相当多的项目在使用功能点基准度量方法进行项目度量。而且,功能点是衡量软件生产率和质量的最可靠的度量标准[3,7]。然而,由于功能点度量方法自身仍存在着某些缺陷,在一些软件企业中,实施功能点规模度量依然面临着很多挑战。例如,实施度量的成本问题,以及如何选择最优的方法的问题都是有难度的[3,4]。从另一方面来讲,上面提到的都属于同一类问题,不能由其中单一一种方法,例如荷兰软件度量协会(简称NESMA)、国际功能点用户协会(简称IFPUG)或通用软件度量国际协会(简称COSMIC)这些组织提出的功能规模度量方法来解决。进一步说,公司需要的是,能够将期望的方法与项目组内是否有活力等其他因素结合起来,来衡量项目是否是成功的。

在本文中,方法选择过程包含以下步骤:
1. 统计一下已有的几种功能规模度量方法(FSM),形成长列表;
2. 根据对公司的重要程度准则确定FSM的短列表(即找出其中两种备选方法);
3. 建立概念验证(POC)项目团队,并对成员进行必要的培训;
4. 确定POC项目的度量范围(规划列表),在短列表中确定备选方法;
5. 使用第一种备选方法完成度量和估算,给出结果;
6. 使用第二种备选方法完成度量和估算,并给出结果;
7. 评价两种度量的结果,选择最佳方法;
8. 最终确认被选择的方法。

2几种度量方法使用说明
2.1功能规模度量法

在《实用软件度量》[5]一书中提到, 2008年前后,存在IFPUG、COSMIC、NESMA和MarkII等这些在软件业中已广为应用且占据着重要的地位的FSM方法;同时,这四种方法也被ISO组织接受作为国际标准的功能点分析方法。下面是几种广为人知的FSM的衍生方法(按字母顺序):
 - 3D功能点
 - 回火功能点
 - COSMIC功能点
 - DeMarco的“爆破”功能点
 - 工程功能点
 - 特征点
 - 全功能点
 - “轻型”功能点
 - IFPUG功能点
 - ISO功能点标准
 - MarkII功能点
 - 微功能点
 - NESMA功能点
 - 对象点
 - 模式匹配与功能点
 - SPR功能点
 - 故事点
 - 未调整功能点
 - 用例点
 - Web对象点
我们可以假设上述FSM的衍生方法之间的差异是随时间而一成不变的。接下来章节中,我们要介绍本次案例研究选出的两种主要的备选方案—IFPUG和COSMIC方法的详细说明。本文不再对其他方法进行介绍。

2.1.1 IFPUG功能点
IFPUG方法是最早的功能点度量方法。它的第一个版本出现于上世纪80年代初期[2]。本节介绍中的部分内容来自于《IFPUG方法计数实践手册》(第4.1版)(以下简称《实践手册》)[6]。但这段内容并不能用来衡量软件项目,如果希望能做到这一点的话,我们还需要对《实践手册》做更充分全面的研究学习。IFPUG功能点计数方法的过程,首先需要确定功能点计数的类型,计数范围和应用边界。然后,识别出数据功能和事务功能,并计算出未调整功能点数。最后一步,确定调整因子的值,并计算出调整功能点数。
图2通过人力资源系统的应用展示了IFPUG方法的基本原理:


外部查询(EQ)、外部输入(EI)、外部输出(EO)、外部接口文件(EIF)和内部逻辑文件(ILF)都属于事务功能或数据功能。“边界”是IFPUG功能点方法中另一个重要的基本概念。它是用户和软件系统之间的概念上的分界。EIF可以看成是一组用户可识别的或系统内维护的概念性的数据实体。处理来自系统边界外部的数据即EI。向系统边界的外部传递数据的是EO或者EQ。通过相应的复杂度矩阵计算每一组数据和事务功能,最后相加得出总数。表1给出了一种复杂度矩阵的示例。本文不再介绍其他复杂度矩阵或转换表,如果想了解得更详细,请查阅《实践手册》[6]。

在得到所有数据功能和事务功能的复杂度值后,计算出未调整功能点数,与调整因子相乘,得出最终的调整功能点总数。

2.1.2 COSMIC功能点
与IFPUG相比,COSMIC是相对比较新的度量方法。它最早被人所知是在1998年。本节对该方法介绍的部分内容来自于《COSMIC度量指南》(以下简称《度量指南》)。该方法用于衡量软件项目也并不是完全没瑕疵,因此,如果我们要想做好软件度量,就必须对《度量指南》做进一步深入的学习和研究。
图3展示了COSMIC方法的度量过程。该过程包含三个主要阶段:度量策略、建立映射和度量实施。在第一个阶段,我们需要确定度量目的、范围和颗粒度大小,识别功能用户。在映射阶段,需要识别功能处理、数据分组和数据属性(可选)。最后,确定数据移动,并对上一阶段中识别出来的所有功能处理实施度量。本方法的输出是以COSMIC功能点为最小单位的项目功能规模。


图4展示了COSMIC方法的部分基本概念。COSMIC把数据移动分为4种类型,分别是:输入(E)、输出(X)、读(R)和写(W)。在功能处理中,数据移动携带的信息称为“数据组”。“E”表示数据组从功能用户移动到目标软件,“X”表示数据组从目标软件移动到功能用户,“R”表示从目标软件的持持久存储介质中取出数据组,“W”表示将数据组写入到目标软件的持持久存储介质中。

每一个数据移动都存在于一个功能处理中,移动一个数据组就记为1个COSMIC功能点。通过累加所有数据组的移动来得出一个功能处理的总规模。同样的,一个项目所有功能处理规模的总和即是该项目需求的总规模。

2.2 加权决策矩阵
加权决策矩阵由Stuart Pugh提出,是应用于多目标决策分析(简称MCDA)的一种方法[9]。加权决策矩阵依赖于对一组既定结果选项进行赋权重的标准和对待选项的决策权,给每一项标准赋予一个分数,然后对每个选项对应的各项准则的分数进行相加,得出该选项的总分数。最后对各待选项的分数进行排序,选出序列中分数最高的那一组的权重标准,以此确定最优选项。

3功能规模度量方法和结果的评价与选择
当初,电信公司的信息与通信技术(简称ICT)软件开发部门需要的是一套系统性的成本评估模型。当然,即使是针对其第二个层面的目标,即通过更客观的手段衡量软件生产率和质量,对于ICT部门也很重要。因此,本文接下来探讨同时支撑这两个目标的解决方案。
因为FSM功能点度量是这几种类型的软件度量方法是的统一称呼,它可以应用于估计基本成本和计算软件生产率以及质量。因此,最初的成本估计问题从一开始就转变成了功能规模度量方法的选择问题。
由此可见,功能规模度量方法的选择由自主度量开始。第一章简介部分列出的选择过程包含8个步骤。下面是对这8个步骤展开的详细说明。

3.1当前几种功能规模度量方法的对比
2.1节中介绍了将近20种功能规模度量的方法。如果为了证明理论的研究结果,而试遍所有的方法是不可行的。因此,我们需要把列举出来的这些方法的长列表进行缩减,建立短列表。

3.2 确定功能规模度量方法的短列表
在这个阶段,我们的目标是以对企业的重要程度作为初步准则,在所有的功能规模度量方法中选择两种方法:
a. 这种方法应是全球、尤其是在欧美地区所广为人知的方法。
b. 这种方法应适用于电信软件产品或其应用中,尤其是核心业务支撑系统(即BSS系统)。
c. 可以从当地机构或者网络上能够方便的找到该方法的文档和培训材料。
d. 能够收集到使用该方法进行度量的样板数据。
e. 该方法符合ISO标准要求。
f. 使用该方法快捷高效、性价比高;尽管这个因素对我们也很重要,但在当前概念研究阶段并不需要考虑,因为需要专门去研究和尝试才能证明这些优点。

上述列表中列出的这近20种功能规模度量方法的详细介绍,请参见《附件:参考文献》[2, 5, 10, 11, 12, 13, 14, 15]。表2给出了对这些方法的权重决策矩阵,权重值取决于各项选择标准的重要程度。依据文献综述中给出的理论性的文字说明,对每一种方法给出相应分值。把总分高于70分的标识为绿色,有:COSMIC、IFPUG、NESMA、未调整功能点和FISMA方法。尽管这5种方法的表现都不错,但COSMIC和IFPUG方法的表现更为优秀。因此,通过对理论和实践的验证,证明IFPUG和COSMIC是对我们最为有效的度量方法。

3.3 组建概念验证(简称POC)工作组并进行必要的培训
POC工作组需要从公司技术部门的志愿者中选出12名来自不同业务领域的开发工程师和软件测试工程师组成。首先,需要由参加过IFPUG方法理论官方演练的高级架构师对工作组进行IFPUG的培训。先讲解基本概念,并进行计数练习。然后以实际开发项目进行实地操练。因为当地的培训机构没有关于IFPUG的培训课程,所以我们需要从国内寻找其他培训机构来学习IFPUG方法。本地倒是有一个培训机构开设土耳其语的COSMIC方法的培训课程。

3.4 选定度量方法,确定POC工作组的度量范围
为了完成项目度量,通常认为,我们需要充分掌握项目的主要信息。因此,选择POC工作组成员都熟悉的项目作为实施度量的备选项目。此外,还参考了以下标准来选择和确定待度量项目:
 项目完成后应该能估算出每个功能点的平均人天成本。
 POC工作组中至少有1名成员能够充分掌握项目的主要信息。
 应该包含基础设施项目,以确定这类项目是否能够被度量。
 应该包含对功能需求提出了变更请求的项目,以确认变更请求是否能够被度量。

3.5 使用IFPUG方法的度量工作结束,对该方法进行评价
我们最终确定了11个项目来实施度量,给出了如下结论:
 实施度量花费的工作量占了项目总工作量的不到1%。
 基础设施项目的规模是0个功能点,因为这个项目没有新增、修改或者删除类功能;这是个数据库升级项目,对其他应用系统所使用的Oracle数据库进行升级。
 经过观察,存在变更请求的项目毫无疑问是可以被度量的,发生变更的那部分功能(功能范围只发生了一点小小的改变)的规模是可以用IFPUG方法单独度量出来的。
 IFPUG是个简便易学的方法,但是度量经验和专业领域知识很重要,这直接导致度量结果是否更精确。
 工作组在阐释功能复杂度矩阵(见表1)时会有主观因素在里面。
 对于主机系统这样的特殊项目来说,专业术语基本用不上,模型本身起到的作用更大。

3.6 使用COSMIC方法的度量工作结束,对该方法进行评价
这次,POC工作组使用COSMIC方法对11个项目实施了度量,给出了如下结论:
 实施度量花费的工作量占了项目总工作量大约0.4%。
 基础设施项目的规模是0个功能点,因为这个项目没有新增、修改或者删除类功能;这是个数据库升级项目,对其他应用系统所使用的Oracle数据库进行升级。
 经过观察,存在变更请求的项目毫无疑问是可以被度量的,发生变更的那部分功能(功能范围只发生了一点小小的改变)的规模是可以用COSMIC方法单独度量出来的。
 相比较IFPUG,COSMIC方法更为简便,但是度量经验和专业领域知识对于度量结果的精确程度依然十分重要。
 COSMIC没有像IFPUG复杂度矩阵(如表1)中给出的那种主观模型;如果数据模型更为复杂,COSMIC能够提供更多的扩展性。
 专业术语、模型与软件业界的新概念(例如面向对象、面向服务的架构和多层应用)能够实现相辅相容。

3.7 对几种度量方法结果的总体评价
最终的度量结果,主要取决于度量方法的难易程度,引入该方法实施度量的成本以及方法带来的外部效益和优势。前面3.6 节已经提过,通常认为COSMIC 方法比IFPUG 更容易操作。在雷诺汽车做出的一份关于COSMIC 和IFPUG 案例研究的报告中,也对其简易性进行了同样的观察[19]。进一步说,经验证,使用IFPUG 方法进行度量所花费的人工工作量,是COSMIC 做出同样度量所花费工作量的2 倍。在概念验证阶段的工作已经证明,这两种方法同样可以用于衡量需求分析的能力,规范和提高需求分析的水平。经过查阅大量文献资料后,在一篇博士学位论文中也论述了关于规范使用COSMIC 方法可以提升需求分析的质量和水平,而这也正论证了我们的观察和实验的结论[18]。西门子公司也在其研究报告中指出了功能性需求质量的重要性[20]。就其外部效益和优势来说,COSMIC 的概念和模型与现代化的软件工程实践也是相符合的,例如面向服务的多层架构和面向对象,等等。另一方面,对于同一家公司的研究型项目的规模度量来说,COSMIC 已经证实相较于IFPUG更具有优势[16]。
根据上面提到的关于COSMIC 的各种优点,我们给出的结论是,我们将选择COSMIC
方法作为我们企业的功能规模度量方法。

3.8所选方法的最终确认
前面几个步骤均由开发和测试工程师组成的团队完成。在我们公司的组织角色系统中,需求工程师(即分析人员)也是COSMIC方法的潜在使用者。因此,最终确认环节可以应用COSMIC方法从需求分析的角度去实施验证。对一支由6名来自不同业务领域的需求分析人员组成的工作团队进行COSMIC方法的培训,让他们度量37个不同业务领域的小型或中型规模的项目,其最终输出的度量结果同样证明了3.6和3.7章节的结论。这一点又一次揭示了需求描述详细程度的重要作用。就是说,如果需求过程做得并不充分、存在漏洞,我们可以采用度量手段,对需求本身进行验证,以提高需求的质量。

4.结论与未来的研究方向
功能规模度量结果对于衡量软件开发生命周期中几大关键度量指标方面的作用非凡,同时也是软件成本估算的一类重要指标。本文章对两种不同视角下策略的选择过程作为研究重点:一方面,是根据短列表中所给出的备选度量方法进行选择的理论论述部分;另一个方面,是对短列表中已选出的备选度量方法进行验证的时间部分。首先,根据权重决策矩阵和理论性的学术文章,我们在大约20种度量方法中选出了两种待选方案(IFPUG方法和COSMIC方法);然后,在电信公司的实际项目中充分运用这两种方法,分别由开发、测试、需求分析人员使用这两种方法实施项目度量,对演练过程进行深入观察和分析。最终,在完成这些工作后,我们认为,对公司来说,COSMIC是最适合的技术。因为,它具备以下优点:COSMIC更简便易用;它能够用于提升质量;最后一点,它更适合当代软件工程领域的技术、模型和实践。
将来,我们可以在以下几个课题方向上做更深入的研究:
 对软件需求分析说明书进行自动化功能规模度量的过程;
 在企业内部组织专题预研,揭示功能点在估算软件开发成本方面是否比传统估算方法(比如COCOMO)更优秀;更进一步,研究使用COSMIC基本功能组件、运用数据挖掘技术、或者考虑其他额外因素比如开发人员的专业技能、开发所使用的技术等对估算软件开发成本的影响。
 可以考虑如何运用COSMIC来提升软件需求分析的质量。

致谢
非常感谢广大软件开发工程师、系统分析工程师、公司管理人员和电信公司所有志愿参与本次研究工作的员工!

参考文献




...全文
2917 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
Johnyin 2017-06-20
  • 打赏
  • 举报
回复
这个还有些专业,度量规模是项目管理中做项目计划的基础。 国内大多数公司都处于“拍脑袋”阶段。

1,265

社区成员

发帖
与我相关
我的任务
社区描述
软件工程/管理 管理版
社区管理员
  • 研发管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧