
软件研发行业参考统计分析数据.docx
10页软件研发行业参考统计分析数据1・CMM汇总1・1・不同CMM等级软件生命周期各阶段缺陷发现分布示意图系统测试詩求设计碼认测试发布10%0%0%<4%过程成熟 度等级缺陷分布2%%53110%修夏成本不同CMM等级软件生命周期各阶段缺陷分布示意图1・2・CMM级别与Bug率本来像软件这样的逻辑产品,开发过程中出现缺陷(BUG)不可避免,但随着CMM 级别的提高,软件可靠性将有数量级的改进目前业界通常的标准是:每千行源代码所含的BUG数,CMM1级为11.95个,CMM2级为5.52个,CMM3级为2.39个,CMM4级为0.92个,CMM5级则只有0.32个也就是说CMM5级的可靠性比CMM1提高近40倍在CMM1,大多数的BUG通常都会在测试阶段出现,随着CMM级别的提高,BUG 出现的高峰也随之提前,从而使软件开发的进度得到可靠的保证在可靠性提高的同时, CMM5的软件开发周期是CMM1的36%,而生产成本是CMM1的19%,平均每个软件 开发人员的生产率会提高4倍1・3・交付后缺陷分布饼图交讨后的缺陷分布1.4.不同阶段消除一个缺陷的相对成本1.5.经验:评审、测试与客户发现缺陷比例经验• 80%的缺陷,通过同行评审发现。
16%的缺陷,通过测试发现• 4%的缺陷,通过客户发现评川监现 彌试疫恥 窖八墅脱1・6・识别缺陷的成效测试的成效:最多识别软件所有缺陷中30-35%的缺陷评审的成效:最多识别软件所有缺陷中70-75%的缺陷1.7.识别缺陷的成本测试的成本:识别一个重要缺陷平均花费15-25小时评审的成本:需求阶段识别一个重要缺陷平均花费2-3小时;设计阶段识别一个重要缺陷平均花费3-4小时;代码评审阶段识别一个重要缺陷3-5小时;测试计划评审识别一个重要缺陷 3-5小时1.8. 解决缺陷的成本测试的成本:消除一个重要缺陷平均花费 30-80 小时(包括识别缺陷时间) 在开发后期才能识别缺陷,成本较高 评审的成本:需求及设计阶段消除一个重要缺陷5-10 小时;代码评审阶段消除一个重要缺陷 5-15小时更倾向于在开发前期识别缺陷,成本较低1.9. 投入回报比较(1)航天飞机搭乘项目:在设计或代码评审时消除一个缺陷的成本为1 美元,在系统测试时为13美元,交付使用后为92美元(Paulk etal,1995)即13〜92 : 1(2) 电信公司审查发现和纠正一个缺陷的平均费用为200美元,客户验收测试发现的缺陷平均花费4200 美元(Boehm and Basili 2001)。
即 21 : 1 某研究表明,客户使用过程中发现、纠正与需求相关的缺陷的费用是比需求开发阶段发现和纠正同样缺陷的费用的 68〜110 倍(Boehm 1981;Grady 1999)即 68〜110 : 1(3) 印度Infosys公司经验表明:在代码审查上多花费一天,这个产品就有期望在后期修改缺陷节省3-6 天即 3〜6 : 11.10. 软件过程审查的质量目标质量目标目标下限上限SRS文档Review缺陷发现密度(个/页):0.800.501.10HLD文档Review缺陷发现密度(个/页):0.700.500.90LLD文档Review缺陷发现密度(个/页):0.430.220.64代码检视缺陷发现密度(个/KLOC):10.627.4313.81单元测试计划Review缺陷发现密度(个/页):0.430.220.64集成测试计划Review缺陷发现密度(个/页):0.700.500.90系统测试计划Review缺陷发现密度(个/页):0.800.501.101・11.印度某CMMI5公司PCB印度某CMML5公司PCBMetricGoalLowerUpperAnalysis ScheduleProductivity222025End of projectEffort Eetimation Variance0-10%10%End of phaseSchedule Estimation Variance0-10%10%End of phaseDelivered Defect Density0.50.18/KLOC1.5/KLOCEnd of projectSRSD.60.3/Page1.2/PageEnd of phaseHLD0.40.2/Page1.0/PageEnd of phaseLLD0,50.35/Page0.9/PageEnd of phaseUnit Testing63.5/KLOC8.5/KLOCEnd of phase1・12.软件过程审查产生的效果1) 产出量:单位开发人员的产出量由950行代码/人月(全流程)增长到1320行代码/人月(全流程), 增长量为38.9%。
关键原因在于大在减少了项目后期返工的工作量考虑由于项目熟悉和学习曲线等的原 因,实际的产出增长量应该超过20%2) 产品质量(遗留缺陷密度):我们从软件系统的遗留缺陷率来分析系统的质量情况在半年的维 护时间内,第一期代码行为4万行,严重缺陷有5个,一般缺陷有32个,严重缺陷发现密度为0.125个缺 陷/千行代码,总遗留缺陷发现密度为0.925个缺陷/千行代码;第二期代码行数为5万行,严重缺陷有1个(属于客户需求问题引发的设计缺陷),一般缺陷有15个,严重缺陷发现密度为0.02个缺陷/千行代码, 总遗留缺陷发现密度为0.32个缺陷/千行代码因此严重缺陷发现密度改进了 84%,一般缺陷发现密度改进 了 65.4%3) 客户满意度:第一期客户严重不满意,称我们在做玩具,满意度只有22%;第二期客户满意度大 幅上升,称我们是专业人士,非常敬业,为他们所钦佩,满意度达到了 91%因此满意度提高了 314%1.13. 评审和动态测试互补效果1F5Q%|皿1F50丈門评审5D!^1L0&F代掛讦审50 ?£♦50 %15心豹33I诜瞄数口; 2001.14. 不同阶段缺陷修复的成本阶段缺陷修复成本用户需求和分析$1概要设计$2详细设计$5编码和实现$10组件测试$15集成测试$22系统测试$50用户验收和使用$100+2.代码审查2・1・发现缺陷的效果□扌居统计;代码中60%以上的缺陷都可以通过代码审查发 现出来2・2・代码审查建议□ 一次检查大约200400行代码,不宜超过60~90 分钟□合适的检查速度,每小时少于300-500行代码3.测试■ HPFirmvuar^ Systems⑶ Prajedte) (48 Proj&cte)TESTED%IMPUEMEMTATIOJ 豹0%desgn谄测RECMTESFRJF 150%FECf/lTSSPEQF. 14 0%IMRLEME 卜 IFAT1QN30.0%TEST •孔0%IMPLaiEKrTATiai.MO%Applications(53 Projects)DE9GN 16.0%TEST 29 IM3.1.测试重要性业界优秀的公司都非常重视测试-IBM》软件可靠性比硬件可靠性低…个数量级>软件丄程化和软件测试是保证软件质量的有效手段* 一般项项FI总投入的30%—40%Percent Engineering Hours by Phase3.2. NASA经验分享■ NASA (美国航空航天管理局):版本发布后 遗留缺陷率测试成本(人月/KLOC )开发组测试20%1.4独立测试组16%2.5。












