基于功能点计算模型的大型军用软件规模估算研究及应用
董文丽1,2潘常春1
(1.上海交通大学,上海 200030;2.中国科学院上海天文台,上海 200030)
摘要 :软件项目估算是GJB 5000A定义的二级项目策划过程域中的关键工作,而项目估算最需要的基础信息是软件规模估算。对软件规模估算常用的几种方法进行比较,分析表明,功能点估算法利用用户需求建立量化指标,对于大型软件项目前期估算相对客观,但存在参数设置多的挑战。因此,提出因子加权调整的功能点估算方法。重点介绍面向实际应用的功能点估算的具体步骤,并通过实际案例说明算法的有效性。
关键词 :GJB 5000A;项目策划;软件规模估算;功能点估算法
0 引言
随着我军信息化装备的跨越式发展,软件在武器装备中所占的份额持续上升,已成为信息化装备的灵魂,其作用日益突出。
为提升大型军用软件产品的质量,我军制定了一系列软件开发规范,其中GJB 5000A将军用软件能力成熟度模型采用分级表示,其中二级(ML2)为已管理级,组织通过建立7个关键过程域(PA)对项目的工程、管理及支持过程进行跟踪优化,确保项目过程得到计划、执行、测量和控制[1]。
这一点对于自我意识还没有形成的小宝宝来说确实勉为其难,但这种意识却要在点滴的生活小事中及早播种、及早萌芽。每次抱宝宝出门玩,可以让宝宝想想带什么,几次提醒,宝宝便主动想起要戴好帽子或穿好外套。宝宝会表达、会思考以后,可让宝宝试着安排一下今天到哪里玩、准备做些什么,并帮助宝宝分析这样做的优劣和可能性。当宝宝要带东西出去而忘记带或把带出去的东西忘在外面而生气发脾气时,父母千万不能自揽责任包办代替,而要让宝宝意识到自己想做的事自己应该安排好,并且学着负责到底。经常注意给宝宝这样的提醒、教育和帮助,宝宝便逐渐地有了这种“负责”的意识。
在GJB 5000A二级项目策划(Project Planning)过程域中,策划参数的估计值应有可信赖的基础,故关键的工作之一是项目估算,而项目估算最需要的基础信息是软件的规模。软件规模估算是后续计算软件项目工作量、成本和进度的主要依据,是项目范围管理的关键。
1 软件规模估算常用方法
目前,度量软件规模最常用的方法有Wideband Delphi估算法、类比估算法、源代码行估算法和功能点估算法。
此处需要说明的是,在运用因子加权调整的功能点估算时,14项基本特征应根据具体项目进行赋值,也可以针对项目的特殊性适当增加新的调整因子,权值的取值范围调整可以根据不同的项目用线性插值法获取。
类比估算法需要从组织的产品库中找到类似项目的相关估算数据,比较并评估新项目与产品库中既有的在应用领域、运行环境,甚至复杂度比较类似的历史项目,得出规模估计[3]。因此,估算的准确性很大程度上取决于历史项目数据的准确性和完整程度。使用类比估算方法的前提条件之一是组织已建立内容丰富、准确、可靠的软件过程数据库,并且已具备比较好的项目评价与分析机制。在实际项目估算中,类比估算法往往需要解决可重用代码的估算问题,并且对于崭新的软件项目有一定的局限性。
源代码行估算法需要把软件项目功能分解到尽可能详细的程度,估算时将项目划分为若干个功能模块,分别测量每个功能模块的代码长度,所有功能代码行的总和即为项目的代码长度。每个功能的代码长度估算值可通过乐观值、悲观值与可能值求得,从而通过代码长度估算软件工作量、成本、生产率等。该方法虽然简单直观,但因为目前没有代码行规模度量标准,即使相同功能、相同技术实现的软件,开发人员不同,其代码行数量也存在较大差异。另外,代码行是从技术实现角度度量软件规模,不便于客户和管理人员理解,不利于项目管理。
表3针对不同的软件模块功能,对各类文件进行分解。
2 功能点估算方法
2.1 功能点估算步骤
功能点估算的主要步骤:确定项目类型、识别项目范围和边界、根据事务类型功能点以及数据类型功能点估算法进行未调整功能点分析,即确定加权因子并计算未调整功能点数,同时确定调整因子,最后计算得出交付功能点数(软件调整规模)。具体见图1。
图1 功能点估算步骤
2.2 确定项目类型
项目组估算人员根据用户需求,依据拟签订的合同、技术协议或开发人员形成的软件设计开发文档,确定项目类型,并将软件需求分解为两类功能性需求,一类是事务功能需求,另一类是数据功能需求。
2.3 识别项目范围和边界
项目的范围和边界按照表1的功能单元类型(数据功能类型和事务功能类型)进行识别,分解到可被估算的最小功能单元。根据数据功能类型及事务功能类型的定义及特征,逐一识别每个估算对象包含的功能单元类型并分类[5]。
托伐普坦治疗肝硬化腹水伴低钠血症疗效与安全性的Meta分析 …………………………………………… 李春杏等(6):833
表1 功能单元类型
2.4 确定加权因子
根据功能单元的功能复杂程度确定其功能复杂度。将功能复杂度按照高(H)、平均(A)、低(L)进行划分,由某一功能单元涉及的数据元素类型数(DETs)、记录元素类型数(RETs)、引用文件类型数(FTRs)共同决定。通过计算各功能单元设计的各元素类型个数后,将数值与复杂度矩阵对照,从而确定该功能单元的功能复杂度所属类型,高(H)、平均(A)、低(L),然后按照加权因子对应表(表2)确定各功能单元的加权因子。
表2 加权因子对应表
2.5 未调整功能点数分析
下班了,吴朝晖走出总编室有些恍惚,觉得以前坚守的堤坝怎么松动了。自己像一个在山洞里迷路的游客,好不容易看到一丝亮光,走近才知道是一只老鹰的眼睛。
UFP=N EI·θ EI+N EO·θ EO+N EQ·θ EQ+N ILF·θ EILF+N EIF·θ EIF
(1)
式中,N EI,N EO,N EQ,N ILF,N EIF分别表示EI,EO,EQ,ILF,EIF的个数;θ EI,θ EO,θ EQ,θ EIF,θ ILF分别表示EI,EO,EQ,ILF,EIF的加权因子。
2.6 确定调整因子(VAF)
根据该装备子系统的具体特点,选择系统的15个特征见表6,其中特征1“关键性”是根据本系统的特殊性增加的调整因子。特征2~15是通用系统特征。每个系统特征的影响度为0~5,其中,0为未出现或无影响;1为偶发影响;2为轻度影响;3为一般影响;4为重大影响;5为强影响。
以外部输入(EI)为调整功能点的计算为例,根据功能单元涉及的数据元素类型数(DETs)和引用文件类型数(FTRs)确定EI的复杂度。并根据未调整功能点数的计算公式(式(1)),计算出最小粒度功能单元的功能点数。见表4。
(2)
式中,n 表示根据实际情况确定的系统性能特征个数;N i 表示第i 个影响因素的影响程度。
2.7 计算功能点数(软件调整规模)
将未调整功能点数(UFP)和调整因子(VAF)相乘得到功能点数(FP),即
FP=UFP×VAF
(3)
3 规模估计应用实例
以某装备业务时间同步处理的钟差解算子系统为例,进行功能点估算法的规模估算。软件规模估算对象为4个子系统(功能模块):A星地双向时间同步处理、B站间时间同步处理、C星间时间同步处理、D星间时间同步处理。(注:A,B,C,D为模块代号)。
进行未调整功能点数分析计算,需要统计所包含功能单元类型的个数,并对应分析各功能单元类型对应的加权因子。在计算分析过程中,需将内部逻辑文件(ILF)、外部接口文件(EIF)、外部输入(EI)、外部输出(EO)以及外部查询(EQ)5个功能单元类型的统计值和与之对应的加权因子相乘并求和,其结果即为未调整功能点数(UFP)。计算公式见式(1)
3.1 功能需求分解表
功能点估算法是根据用户所要求的功能来测量软件规模的一种方法[4],采用功能点作为计量单位目前有5个标准,即IFPUG标准、NESMA标准、COSMIC标准、FISMA标准、MARKII标准。其中,IFPUG标准应用范围最广,且适用于所有类型的软件。功能点估算法由国际组织IFPUG负责标准制定与推动事宜,比较具有客观公正性。
表3 功能需求分解表
3.2 估算未调整功能点数
综上所述,本文将式(2)、式(11)、式(12)、式(13)、式(14)、式(15)、式(17)、式(18)代入式(16)中的第二式得:
表4 EI未调整功能点计算
注:EI复杂度系数的确定根据EI的DETs和FTRs 数据,以及参考相应的矩阵对应表[6];#表示数据的汇总,下同。
建国之前的美国人多半把英国视为“母国”。北美殖民地为什么可以脱离“母国”而独立呢?这曾是一个反复困扰着美国人的理论难题。众所周知,潘恩撰写《常识》以及杰弗逊等人起草《独立宣言》,正是以一种“主权在民”和“社会契约论”等独具特色的自由主义观念,解释了美国脱离英国而独立的原因。《独立宣言》明确宣布,统治者的统治必须征得被统治者同意,而英国对北美殖民地的统治侵害了殖民地居民权利,违背了他们的意愿,因而不具有合法性。自由主义成了北美殖民地独立和新国家建国的基本依据,这表明,没有相对一致的自由主义观念,由殖民地组成的美利坚合众国便失去了立国之本。
内部逻辑文件、外部接口文件、外部输出文件、外部查询文件的功能点计算方法依此类推,最后得到未调整功能点数的汇总,见表5。
表5 未调整功能点数汇总表
3.3 确定规模调整因子(VAF)
按照软件的通用系统特征以及系统特征的影响度,逐一计算每个估算对象的规模调整因子,并将所有系统特征相加获得总影响度,调整因子(VAF)的计算见式(2)
表6 VAF的确定
3.4 调整后功能点数
根据式(3),得出调整后的功能点数,即为软件功能规模。具体见表7。
表7 调整后的功能点
Wideband Delphi估算法,是在专家个人判断和专家会议方法的基础上发展起来的一种直观观测方法。这种方法发挥集体的力量,鼓励参加估算的专家就相关问题进行充分讨论[2]。在估算过程中,为了让估算结果符合客观实际,需要召集人提供客观的估算条件,并将估算内容和估算表格分发给专家,通过组织专家集中召开会议或者利用多轮邮件进行判断、评估,最终专家的估算结果在一定的差异阈值内即可得知估算结果。该方法经常需要多轮专家估算才能收敛达到软件规模最大程度的一致,估算结果具有一定的人为性,并与专家的知识和能力有很大的关系。
2.食品安全监管工作落实不到位。网络模式下,餐饮服务行业的食品安全质量监管工作无法得到有效落实,网络餐饮的加工及配送环节无人监管。
该装备子系统设计语言为FORTRAN语言,实际代码行数为20 010行。根据FORTRAN语言与C语言换算[6]的比率值0.84,该子系统等价于C语言23 822行。采用加权因子估算的功能点与常用编程语言C语言进行代码行之间换算[7],取平均值(1∶128),调整功能点180可换算C语言为23 040行。调整功能点的误差为3.28%。结果表明,该算法具有较好的有效性。
总之,课前预习是连接课堂教学的必要环节,通过有效的课前预习,能够降低学生学习的难度,加深知识的理解与掌握,从而使课堂教学收到事半功倍的教学效果,提高教学效率。因此,作为初中数学教师,除了重视对学生知识的传授之外,更应结合学生的认知实际,运用科学的指导策略,帮助学生开展有效的课前预热,提高学生的预习能力和学习能力。
4 结语
基于功能点计算模型的软件规模估算方法在以原始功能点数作为衡量软件规模的主要依据的同时,还考虑了软件基本特征对软件工作量的影响,这些影响通过规模调整因子体现。基于功能点的软件规模估算方法更易于用户理解,适用于项目全生命周期,有相关标准支持,运行一致性较好。但采用功能点估算法度量软件规模,一是技术复杂、工作量大,需要投入大量的时间和资源;二是要求度量人员不仅要熟练掌握软件功能点度量标准,还要掌握一定的软件技术知识和项目背景知识。
在军用软件项目管理过程中,基于GJB 5000A对软件过程管理系统的规定,详细分析并分解项目策划系统的功能要求。只有充分考虑并尝试应用功能点估算法,才能使之真正成为软件规模估算的有效方法,并且以此为基础实施项目管理才能更加科学有效。
参考文献
[1]马洁.基于GJB5000A的军用软件过程改进的研究[D].北京:中国科学院大学,2014.
[2]秦放, 李孝贵,王立娟.软件规模估算方法的研究[J].计算机与数字工程,2012(5):18-19,22.
[3]李军.软件估算技术结合GJB5000A要求在某实际项目中的应用[D].成都:电子科技大学,2011.
[4]肖丁,吴建林,周春燕,等.软件工程模型与方法[M].北京:北京邮电大学出版社,2008.
[5]GARMUS D,GERRON D .功能点分析:成功软件项目的测量实践[M].北京:清华大学出版社,2003.
[6]KISHORE S,NAIK R.软件需求与估算 [M].北京:机械工程出版社,2004.
[7]BOEHM B W.软件成本估算COCOMOⅡ模型方法[M].北京:机械工业出版社,2005.
收稿日期 :2018-12-25
作者简介 :
董文丽(1982—),女,高级工程师,研究方向:软件工程化。
2.正确把握好选人标准。《党政领导干部选拔任用工作条例》(以下简称《条例》)规定了选拔任用干部的六条原则和六项条件,对选拔领导干部的标准作出了明确规定。选拔干部要全面贯彻落实《条例》规定,坚持“四化”方针和德才兼备的原则,全面衡量、客观公正地评价备选干部,既不求全责备,也不以偏概全,要善于发现和选拔“有本事、靠得住”的人到领导岗位,做好领导干部能力建设的基础工作。
潘常春(1979—),男,博士,副研究员,研究方向:大数据分析、供应链优化。
标签:GJB论文; 5000A论文; 项目策划论文; 软件规模估算论文; 功能点估算法论文; 上海交通大学论文; 中国科学院上海天文台论文;