作者:中国软件评测中心 陈兵
来源:赛迪网
发文时间:2003.12.22
信息工程监理的中心任务是对信息工程项目的进度目标、质量目标和风险防范,实施有效的监督、协调与控制。为了监督、控制软件项目开发过程的性能等,引入定量监理十分必要。
目录
软件开发引入定量监理做参照
软件开发定量监理的两个基本“点”
对进度定量监理的四步法
几种估算模型的介绍
软件开发引入定量监理做参照
应用软件系统开发过程中,不仅存在着信息不对称的风险,还存在着各方信息处理能力不对称引起的风险;不但有项目的特殊风险,还有项目管理风险;不但有经济风险,还有时间风险、心理风险等。
定量过程监理的目的是定量监督、控制软件项目的开发过程性能,软件开发过程性能决定了实施软件过程所获得的实际结果。
应用软件开发是非常专业的,而且是讲究分工的。需求分析、总体设计、概要和详细设计、编码、测试、安装及维护等,每一个过程都有自己的精深之处,涉及的专业面广、业务和技术性强、可见性差、风险大、可预见性小。即使应用软件承建方按规范开发模式的要求一步步进行,也会遇到许多不可预见的问题,更不用说承建方可能有不规范行为的情况。信息化系统的核心是软件,由于难以对软件工程的质量和进度等进行有效的监控,因此,若承建方不按规范进行设计、实施、测试,也不易察觉。
凡此种种,造成许多信息化系统工程项目不成功,不完善,长期收不了口,“豆腐渣”工程层出不穷,严重地影响了信息化系统工程的质量和进度,不仅损害了合同双方的利益,还给国家和社会造成了许多不应有的损失。因此,在软件开发监理过程中,引入定量的方法、手段对应用软件开发过程的某些方面进行定量计算、分析和验证,或通过定量的方法对可能出现的故障、风险进行分析判断,或为执行者提供数据进行核实,从而降低工程建设的风险,使投资的信息化系统发挥应有的作用是非常必要的。
软件开发定量监理的两个基本“点”
通过中国软件评测中心大量的监理实践,我们体会到应用软件开发过程的定量监理可以从以下三个方面展开,即:软件开发进度的监理、软件开发的质量监理和软件开发的风险监理。在进度、质量和风险的定量监理中,又分别按照度量、估算两个步骤进行定量分析、监理。
度量:根据一定的度量标准对软件开发过程中所产生的数据进行收集和整理,如代码行(LOC)和功能点(FP)的数量。它为估计不准、进度缓慢、可见性差等普遍问题提供了矫正的方法。
软件度量的主要作用有两个,一是使用软件度量建立项目基线;二是收集项目当前的生产率和质量状态,利用基线对项目当前状态进行评价,并确定软件工程过程的改进目标。
估算:通常的定义是,对未来事实非零可能性的最乐观的预测。软件项目估算是项目计划活动的基础,估算是一门科学,也是一门艺术,应当认识到,软件评估永远也不会是一门精确的科学。
对进度定量监理的四步法 软件项目的规模、进度估算历来是比较复杂的事,因为软件本身的复杂性、历史经验的缺乏、估算工具缺乏以及一些人为错误,导致软件项目的规模估算往往和实际情况相差甚远。因此,是监理工作的重点之一。 为了可靠地对软件项目进行估算,我们采取如下4个步骤:第一步是对软件规模进行估算。一般是通过计算LOC(源代码行数)或功能点数(FP)完成的,也可以基于过程进行估算;第二步是估算软件项目所需的工作量,以人月或人小时为单位;第三步是以自然月为单位,估算项目的进度;第四步是估算项目成本。下面来具体介绍。 1、估算项目的规模 对软件项目进行有效的估算,取决于掌握多少有关项目范围的原始资料。通常,应当根据正式的需求描述进行估算。正式的需求描述可以是需求说明书、系统规格说明书或软件需求说明书等。如果开始时缺乏一些正式的资料,也可以采用口头描述或草稿的方式开始估算工作。在得到项目范围的正式资料后,必须进行再估算。估算的两个主要方法是: 第一种方法是根据项目特征和算法进行估算。 例如,根据软件系统的输入、输出、查询、文件及外部接口等信息,使用功能点法估算出系统的规模。基于功能点估算是按照用例(Use case)来做的,而不是软件功能来做。通过研究初始应用需求来确定各种输入、输出、计算和数据库需求的数量和特性。通常的步骤是: A、计算输入、输出、查询、主控文件和接口需求的数目。 B、将这些数据进行加权乘。下表为一个典型的权值表。
![](/images/load.gif)
![](/images/load.gif)
![](/images/load.gif)
![](/images/load.gif)
1、IBM模型
1977年,IBM的Walston和Felix提出了如下的估算公式:
E = 5.2×L0.91,L是源代码行数(以KLOC计),E是工作量(以PM计)
D = 4.1×L0.36,D是项目持续时间(以月计)
S = 0.54×E0.6,S是人员需要量(以人计)
DOC = 49×L1.01。DOC是文档数量(以页计)
在此模型中,一般指一条机器指令为一行源代码。一个软件的源代码行数不包括程序注释、作业命令、调试程序在内。对于非机器指令编写的源程序,如汇编语言或高级语言程序,应转换成机器指令源代码行数来考虑。
2、Putnam模型
这是1978年Putnam提出的模型,是一种动态多变量模型。它是假定在软件开发的整个生存期中工作量有特定的分布。这种模型是依据在一些大型项目(总工作量达到或超过30个人年)中收集到的工作量分布情况而推导出来的,但也可以应用在一些较小的软件项目中。
Putnam模型可以导出一个“软件方程”,把已交付的源代码(源语句)行数与工作量和开发时间联系起来。其中,td是开发持续时间(以年计),K是软件开发与维护在内的整个生存期所花费的工作量(以人年计),L是源代码行数(以LOC计),Ck是技术状态常数,它反映出“妨碍程序员进展的限制”,并因开发环境而异。其典型值的选取如下表所示。
![](/images/load.gif)
3、COCOMO模型(COnstructive COst MOdel)
这是由TRW公司开发。Boehm提出的结构型成本估算模型,是一种精确、易于使用的成本估算方法。在该模型中使用的基本量有以下几个:DSI(源指令条数)定义为代码或卡片形式的源程序行数。若一行有两个语句,则算做一条指令。它包括作业控制语句和格式语句,但不包括注释语句。KDSI=1000DSI。MM(度量单位为人月)表示开发工作量。TDEV(度量单位为月)表示开发进度。它由工作量决定。
![](/images/load.gif)
(1)软件开发项目的分类
在COCOMO模型中,考虑开发环境,软件开发项目的总体类型可分为三种:组织型(Organic)、嵌入型(Embedded)和介于上述两种软件之间的半独立型(Semidetached)。
(2)COCOMO模型的分类
COCOMO模型按其详细程度分成三级:即基本COCOMO模型、中间COCOMO模型、详细COCOMO模型。基本COCOMO模型是一个静态单变量模型,它用一个以已估算出来的源代码行数(LOC)为自变量的(经验)函数来计算软件开发工作量。中间COCOMO模型则在用LOC为自变量的函数计算软件开发工作量(此时称为名义工作量)的基础上,再用涉及产品、硬件、人员、项目等方面属性的影响因素来调整工作量的估算。详细COCOMO模型包括中间COCOMO模型的所有特性,但用上述各种影响因素调整工作量估算时,还要考虑对软件工程过程中每一步骤(分析、设计等)的影响。