软件工程第2章

上传人:彧*** 文档编号:240748272 上传时间:2024-05-04 格式:PPT 页数:142 大小:1.50MB
返回 下载 相关 举报
软件工程第2章_第1页
第1页 / 共142页
软件工程第2章_第2页
第2页 / 共142页
软件工程第2章_第3页
第3页 / 共142页
点击查看更多>>
资源描述
软件工程软件工程经理管什么?经理管什么?计计 划划预预算算组组 织织进进 度度标标 准准什么是软件项目管理?什么是软件项目管理?管理管理就是通过计划、组织和控制等一系就是通过计划、组织和控制等一系列活动,合理地配置和使用各种资源,以达列活动,合理地配置和使用各种资源,以达到既定目标的过程。到既定目标的过程。什么是软件项目管理?什么是软件项目管理?什么是软件项目管理?什么是软件项目管理?成本管理成本管理:估算软件项目的成本,作为签订合同或项目立项的依据;在软件开发过程中按计划管理经费的使用。质量管理质量管理:制定软件质量保证计划;按照软件质量评价体系控制软件质量要素;对阶段性的软件产品进行评审;对最终产品进行验证和确认,确保软件产品的质量。软件配置管理软件配置管理:制定配置管理计划;对程序、文档和数据的各种版本进行管理,确保软件的完整性和一致性。第第2章章 软件项目管理软件项目管理2.1 软件度量软件度量2.2 软件项目估算软件项目估算2.3 软件质量度量软件质量度量 2.4 软件复杂性度量软件复杂性度量2.5 软件可靠性度量软件可靠性度量2.6 软件开发过程的管理软件开发过程的管理 软件度量软件度量是软件产品、软件开发过程或是软件产品、软件开发过程或自愿简单属性的自愿简单属性的定量定量描述。如程序规模、操描述。如程序规模、操作符个数、程序中错误的个数等。作符个数、程序中错误的个数等。l面向规模的度量面向规模的度量l面向功能的度量面向功能的度量2.1 软件度量软件度量2.1 软件度量软件度量.软件度量的基本概念软件度量的基本概念1测量、度量、估算和指标测量、度量、估算和指标 软软件件工工程程项项目目的的定定量量描描述述涉涉及及测测量量、度度量量、估估算和指标等一些基本概念。算和指标等一些基本概念。1 1)测量()测量(measuremeasure):):对产品或过程的某个属性的范围、数对产品或过程的某个属性的范围、数量、维度、容量或大小提供一个定量的指示。量、维度、容量或大小提供一个定量的指示。2.1 软件度量软件度量4 4)指标()指标(guidelineguideline):是一个度量或度量的组合,它可对):是一个度量或度量的组合,它可对软件产品、过程或资源提供更深入的理解。软件产品、过程或资源提供更深入的理解。2 2)度量()度量(metricmetric):对系统、部件或过程的某一特性所具):对系统、部件或过程的某一特性所具有的程度进行的量化测量。如软件质量度量等。有的程度进行的量化测量。如软件质量度量等。3 3)估算()估算(estimationestimation):对软件产品、过程、资源等使用历):对软件产品、过程、资源等使用历史资料或经验公式等进行预测。如工作量、成本、完成期限史资料或经验公式等进行预测。如工作量、成本、完成期限等。估算一般用于立项、签订合同、制定工作计划等。等。估算一般用于立项、签订合同、制定工作计划等。2软件项目管理的对象及其属性软件项目管理的对象及其属性软件项目管理的软件项目管理的对象对象主要包括产品、过程和资源等。主要包括产品、过程和资源等。产品(产品(product)是指软件开发过程得到的文档和程序。是指软件开发过程得到的文档和程序。过程(过程(process)是指与软件项目有关的活动。是指与软件项目有关的活动。资源(资源(resource)是指进行软件项目所需要的各种支持。是指进行软件项目所需要的各种支持。要要对对软软件件项项目目管管理理的的对对象象进进行行有有效效的的管管理理与与控控制制,就就必必须须对对这这些些对对象象的的属属性性进进行行测测量量、度度量量与与估估算算。一一般般来来说说,产产品、过程、资源等对象都具有内部属性和外部属性。品、过程、资源等对象都具有内部属性和外部属性。2.1 软件度量软件度量对象的属性对象的属性对象的内部属性是指对象本身的属性,如软对象的内部属性是指对象本身的属性,如软件产品的代码长度、模块化的程度、复杂性件产品的代码长度、模块化的程度、复杂性等。等。对象的外部属性体现了对象与环境的关系,对象的外部属性体现了对象与环境的关系,如软件的可靠性、可维护性、可移植性、成如软件的可靠性、可维护性、可移植性、成本、人员的生产率等。本、人员的生产率等。表表2-1 软件工程的产品、过程、资源的属性软件工程的产品、过程、资源的属性产产品品过过程程资资源源内内部部属属性性程序代码行长度;程序代码行长度;程序程序功能;模块化;控制流结功能;模块化;控制流结构;重用性;模块耦合度构;重用性;模块耦合度与内聚度。与内聚度。工作量;计划及工作量;计划及进度;事件。进度;事件。人员;方法;工人员;方法;工具;环境;经验。具;环境;经验。外外部部属属性性软件的可靠性;软件的可软件的可靠性;软件的可理解性;软件的有效性;理解性;软件的有效性;软件的可用性;软件的可软件的可用性;软件的可维护性;软件的可移植性。维护性;软件的可移植性。成本;可控制性;成本;可控制性;可观察性;稳定可观察性;稳定性。性。成本;生产率;成本;生产率;时间。时间。3 3软件度量的分类软件度量的分类 可分为直接度量和间接度量两类:可分为直接度量和间接度量两类:1)直直接接度度量量。即即对对不不依依赖赖于于其其他他属属性性的的简简单单属属性性的的测测量量。如如软软件件的的模模块块数数、程程序序的的代代码码行行数数、操操作作符符的的个个数,工作量、成本等。数,工作量、成本等。2)间间接接度度量量。即即对对涉涉及及若若干干个个其其他他属属性性的的软软件件要要素素、准准则则或或属属性性的的度度量量。因因为为它它们们必必须须通通过过建建立立一一定定的的度度量量方方法法或或模模型型才才能能间间接接推推断断而而获获得得。如如软软件件的的功功能能性性、复复杂性、可靠性、可维护性等等。杂性、可靠性、可维护性等等。2.1 软件度量软件度量2.1.2 面向规模的度量面向规模的度量 面面向向规规模模的的度度量量是是以以软软件件的的代代码码行行(LOC,Line of Code)数为基础的直接度量。数为基础的直接度量。L L表示软件的代码行数,单位为表示软件的代码行数,单位为KLOCKLOC(千行代码)或(千行代码)或LOCLOC;E E表示开发软件所需工作量,单位为人月(表示开发软件所需工作量,单位为人月(PMPM)或人年()或人年(PYPY););S S表示软件成本,单位为表示软件成本,单位为美元美元或或元元;N N表示错误个数;表示错误个数;PdPd表示软件文档页数;表示软件文档页数;M M表示开发所用的人数。表示开发所用的人数。1软件开发的生产率软件开发的生产率P:P=L/E 2开发每行代码的平均成本开发每行代码的平均成本C:C=S/L3代代码码出出错错率率EQR:EQR=N/L 4软软件件的的文文档档率率D:D=Pd/L2.1.2 面向规模的度量面向规模的度量2.1.2 面向规模的度量面向规模的度量优点:简单、直接。优点:简单、直接。缺点:缺点:代码行数的估算依赖于程序设计语言的功能和表代码行数的估算依赖于程序设计语言的功能和表 达能力。达能力。对设计精巧的软件项目产生不利影响。对设计精巧的软件项目产生不利影响。在开发初期估算代码行十分困难。在开发初期估算代码行十分困难。只适用于过程式程序设计语言。只适用于过程式程序设计语言。2.1.2 面向规模的度量面向规模的度量2.1.3 面向功能的度量面向功能的度量1简单功能点度量简单功能点度量 1979年年,Albrecht首首先先提提出出了了功功能能点点度度量量方方法法。这这是是一一种种面面向向功功能能的的间间接接度度量量方方法法,即即从从软软件件定定义义的的基基本本功功能能出出发发,来来估估算算软软件件系系统统的的规规模模。因因此此,该该方方法法可可以以在在软软件件开开发发项项目目的的初初期期,在在软软件件定定义义过过程程中中即即可可预预测待开发软件的规模。测待开发软件的规模。1简单功能点度量简单功能点度量功能点功能点FP的度量公式如下:的度量公式如下:FP=CTTCF=CT 0.65+0.01F i 其中:其中:CT基本功能点。基本功能点。CT值值按按表表2-2来来计计算算,它它的的值值为为5个个参参数数加加权权值值的总和。的总和。14 i=1表表2-2 简单功能点度量的基本功能点的计算简单功能点度量的基本功能点的计算测量参数测量参数值值加权因子加权因子加权值加权值简单简单一般一般复杂复杂用用户户输输入入数数346=用户输出数用户输出数457=用户查询数用户查询数346=文件数文件数71015=外部接口数外部接口数5710=基本功能点基本功能点CT表表2-2中的中的5个参数的含义个参数的含义1)用用 户户 输输 入入 数数:用用 户户 为为 软软 件件 系系 统统 提提 供供 的的 输输 入入 参参 数数 的的 个个 数(不包括查询);数(不包括查询);2)用用 户户 输输 出出 数数:软软 件件 为为 用用 户户 提提 供供 的的 输输 出出 参参 数数(报报 告告、屏幕帧、错误信息等)的个数;屏幕帧、错误信息等)的个数;3)用用 户户 查查 询询 数数:一一 次次 联联 机机 输输 入入 导导 致致 软软 件件 以以 联联 机机 输输 出出 方方 式实时产生一个响应的个数;式实时产生一个响应的个数;4)文件数:逻辑主文件的个数;)文件数:逻辑主文件的个数;5)外部接口数:机器可读的接口(如磁盘或磁带上的数据)外部接口数:机器可读的接口(如磁盘或磁带上的数据文件等)的个数。文件等)的个数。1简单功能点度量简单功能点度量在在FPFP度量公式中:度量公式中:TCFTCF技术复杂性调节因子。技术复杂性调节因子。0.650.65和和0.010.01经验数据。经验数据。F Fi i(i=1i=1,2 2,1414)复杂性调节值。复杂性调节值。F Fi i所代表的因素如表所代表的因素如表2-32-3所示,每个所示,每个F Fi i可根据实可根据实际情况取际情况取0 0、1 1、2 2、3 3、4 4、5 5中的一个值。中的一个值。其中:其中:0 0没有影响、没有影响、1 1偶然的、偶然的、2 2适中、适中、3 3普通、普通、4 4重要、重要、5 5极重要的影响。极重要的影响。TCFTCF取值范围:取值范围:0.65 1.350.65 1.35。表表2-3 F i 取值表取值表 i因素因素 Fii因素因素Fi1 12 23 34 45 56 67 7需要可靠的备份和恢复吗?需要可靠的备份和恢复吗?需要数据通信吗?需要数据通信吗?有分布式处理的功能吗?有分布式处理的功能吗?性能是关键吗?性能是关键吗?在现存实用的操作环境下运在现存实用的操作环境下运行吗?行吗?需要联机数据入口吗?需要联机数据入口吗?联机数据入口需要用输入信联机数据入口需要用输入信息构造复杂的界面或操作吗息构造复杂的界面或操作吗?8 89 910101111121213131414 需要联机更新主文件吗?需要联机更新主文件吗?输入、输出、文件、查询输入、输出、文件、查询复杂吗?复杂吗?内部处理过程复杂吗?内部处理过程复杂吗?要求代码设计可重用吗?要求代码设计可重用吗?设计中包含转换和安装吗?设计中包含转换和安装吗?系统设计支持不同组织的系统设计支持不同组织的多次安装吗?多次安装吗?系统设计有利于用户的修改、系统设计有利于用户的修改、使用吗使用吗?2功能点度量功能点度量l简单功能点度量方法没有直接考虑软件本身的简单功能点度量方法没有直接考虑软件本身的算法的复杂性算法的复杂性问题。所以它仅适用于度量算法简单的事务处理等系统。问题。所以它仅适用于度量算法简单的事务处理等系统。l1986年年Jones对简单功能点度量进行了推广,在计算软件对简单功能点度量进行了推广,在计算软件系统的基本功能点系统的基本功能点CT时,引入了算法复杂性因素,即使用表时,引入了算法复杂性因素,即使用表2-4计算计算CT。我们称这种推广的度量方法为功能点度量。我们称这种推广的度量方法为功能点度量。l这两种方法对一般的事务处理系统等算法简单的软件系统计这两种方法对一般的事务处理系统等算法简单的软件系统计算出来的算出来的FP值基本相同,但对于较复杂的软件系统,功能点值基本相同,但对于较复杂的软件系统,功能点度量方法比简单功能点度量方法计算出来的度量方法比简单功能点度量方法计算出来的FP值要高值要高20%35%。表表2-4 推广的功能点度量的基本功能点的计算推广的功能点度量的基本功能点的计算测量参数测量参数值值权值权值加权值加权值用用户户输输入入数数4=用户输出数用户输出数5=用户查询数用户查询数4=文件数文件数7=外外部部接接口口数数7=复杂算法数复杂算法数3=基本功能点基本功能点CT用功能点计算软件项目的有关参考量:用功能点计算软件项目的有关参考量:1)生产率)生产率P:P=FP/E 2)平均成本平均成本C:C=S/FP 3)代码出错率)代码出错率EQR:EQR=N/FP4)软件的文档率)软件的文档率D:D=Pd/FP 3功能点度量方法的优缺点功能点度量方法的优缺点优点:优点:可用于软件项目开发的初期阶段的项目估算。可用于软件项目开发的初期阶段的项目估算。与程序设计语言无关。与程序设计语言无关。缺点:缺点:某些参考量的收集有一定困难;某些参考量的收集有一定困难;度量值的主观因素较多,如度量值的主观因素较多,如Fi取值;取值;功能点功能点FP本身没有直观的物理意义。本身没有直观的物理意义。2.2 软件项目估算软件项目估算常用的软件项目的估算方法主要有以下常用的软件项目的估算方法主要有以下4种种1自顶向下的估算方法自顶向下的估算方法2自底向上的估算方法自底向上的估算方法3差别估算法差别估算法4根据经验估算公式根据经验估算公式2.2.1 2.2.1 软件项目的估算方法软件项目的估算方法1自顶向下的估算方法自顶向下的估算方法基基本本思思想想:首首先先根根据据已已完完成成项项目目的的总总成成本本或或总总工工作作量量来来推推算算待待开开发发软软件件的的总总成成本本或或总总工工作作量量,然然后后再再按按比比例例将将其其分分配配到到各各开开发发任任务务中去。即从整体到局部。中去。即从整体到局部。优点:估算工作量小、速度快。优点:估算工作量小、速度快。缺缺点点:对对项项目目中中的的特特殊殊困困难难估估计计不不足足,有有可可能产生遗漏,估算出的值盲目性较大。能产生遗漏,估算出的值盲目性较大。2自底向上的估算方法自底向上的估算方法基基本本思思想想是是:把把待待开开发发软软件件细细分分,直直到到每每一一个个子子任任务务或或阶阶段段都都已已经经明明确确所所需需要要的的开开发发工工作作量量或或成成本本,然然后后再再把把它它们们累累加加起起来来,得得到到待开发软件的总工作量或总成本。待开发软件的总工作量或总成本。优点:计算各个部分的准确性较高。优点:计算各个部分的准确性较高。缺缺点点:缺缺少少各各个个子子任任务务之之间间相相互互联联系系的的工工作作量量和和系系统统工工作作量量(如如项项目目管管理理、配配置置管管理理、质质量量管管理理),估估算算值值往往往往偏偏低低,必必须须用用其其他他方法进行校正。方法进行校正。3差别估算法差别估算法基基本本思思想想:把把待待开开发发的的软软件件项项目目与与过过去去完完成成的的软软件件项项目目进进行行比比较较,从从各各子子任任务务中中区区分分出出类类似似的的和和不不同同的的部部分分。类类似似的的部部分分按按已已知知的的实实际际量量计计算算,不不同同的的部部分分则则采采用用某某种种方方法法进进行行估估算算。差差别别估估算算法法综综合合了了以上两种方法的优点。以上两种方法的优点。优点:估算的准确程度高。优点:估算的准确程度高。缺点:不容易划分相似的界限。缺点:不容易划分相似的界限。4根据经验估算公式根据经验估算公式通通过过众众多多实实际际软软件件项项目目的的经经验验,总总结结出出一一些些有有价价值值的的软软件件成成本本和和工工作作量量估估算算的的经经验验模模型型。这这些些模模型型对对于于软软件件项项目目管管理理具具有有一一定的指导意义和验证效果。定的指导意义和验证效果。2.2.2 代码行和功能点的估算代码行和功能点的估算q采采用用2.2.1中中介介绍绍的的估估算算方方法法可可以以估估算算出出代代码码行行或或功功能能点点的的乐乐观观值值a、一一般般值值m和和悲悲观观值值b,并并用用如如下下 的的 加加 权权 平平 均均 公公 式式 计计 算算 LOC或或 FP的的 期期 望望 值值(expectation):):X=(a+4 m+b)/6 软件的软件的LOC或或FP的期望值估算出来后,就可的期望值估算出来后,就可以根据已有的标准生产率对成本和工作量等进行估以根据已有的标准生产率对成本和工作量等进行估算了。算了。2.2.3 软件项目的经验估算模型软件项目的经验估算模型1IBM模型(静态单变量模型)模型(静态单变量模型)数据利用最小二乘法拟合,得到的经验估算公式:数据利用最小二乘法拟合,得到的经验估算公式:E=5.2 L0.91 D=4.1L0.36=2.136 E0.3956 S=0.54 E0.6 DOC=49 L1.012Putnam模型(动态多变量模型)模型(动态多变量模型)该模型以工作量在该模型以工作量在30人年以上的大型软件项人年以上的大型软件项目的实测数据为依据,推导出了工作量分布曲目的实测数据为依据,推导出了工作量分布曲线,如图线,如图2-2-1所示。所示。2.2.3 软件项目的经验估算模型软件项目的经验估算模型图图2-2-1 软件项目的工作量分布曲线软件项目的工作量分布曲线系统定义系统定义功能设计功能设计规格说明规格说明设计编码设计编码测试和确认测试和确认维护维护管理管理系统定义、需求分析系统定义、需求分析开开 发发运行维护运行维护0开发占总工作量的开发占总工作量的40%维护占总工作量的维护占总工作量的60%总工作量总工作量td时间时间t(年)年)工作量工作量 (人年)(人年)图图2-2-1 软件项目的工作量分布曲线软件项目的工作量分布曲线2Putnam模型模型Putnam估算模型如下:估算模型如下:L=Ck E1/3 td 4/3C Ck k为技术状态常数,与开发环境有关,如下:为技术状态常数,与开发环境有关,如下:2000 2000 较差,没有方法学的支持,缺乏文档较差,没有方法学的支持,缺乏文档 和评审,采用批处理方式;和评审,采用批处理方式;C Ck k =8000 =8000 一般,有方法学的支持,有适当的文一般,有方法学的支持,有适当的文 档和评审,采用交互处理方式;档和评审,采用交互处理方式;11000 11000 较好,有集成化的较好,有集成化的CASECASE工具和环境。工具和环境。E=L3/(Ck3 td4)图图2-2-2 人力资源的分配人力资源的分配初级技术人员初级技术人员高级技术人员高级技术人员管理人员管理人员验验收收测测试试组组装装测测试试单单元元测测试试编编码码详详细细设设计计概概要要设设计计需需求求分分析析系系统统定定义义人数人数Putnam模型的优缺点模型的优缺点l优点:揭示了软件项目的源程序代码长度、优点:揭示了软件项目的源程序代码长度、软件开发时间和工作量三者之间的关系,在软件开发时间和工作量三者之间的关系,在理论上有重要意义。理论上有重要意义。l缺点:准确程度不高。缺点:准确程度不高。没有反映软件产品、没有反映软件产品、项目、参加人员、软硬件资源等属性。项目、参加人员、软硬件资源等属性。3CoCoMo模型(构造性成本模型)模型(构造性成本模型)CoCoMo模型按其详细程度分三个层次:模型按其详细程度分三个层次:基本基本CoCoMo模型模型;中间中间CoCoMo模型模型;详细详细CoCoMo模型模型。2.2.3 软件项目的经验估算模型软件项目的经验估算模型(1)基本)基本CoCoMo模型模型其工作量和开发时间的估算公式如下:其工作量和开发时间的估算公式如下:E=a Lb D=c Ed 其中:其中:L 软件代码行的估算值(以软件代码行的估算值(以KLOC计);计);E 工作量(以工作量(以PM计);计);D开发时间(以月计);开发时间(以月计);a、b、c、d经验常数。经验常数。表表2-8 a、b、c、d参数值的选取参数值的选取软件类型软件类型abcd适应领域适应领域组织型组织型2.41.052.50.38一般应用程序一般应用程序半独立型半独立型3.01.122.50.35实用程序、实用程序、编译程序等编译程序等嵌入型嵌入型3.61.202.50.32实时控制程序、实时控制程序、操作系统操作系统(2)中间)中间CoCoMo模型模型中中间间CoCoMo模模型型在在估估算算工工作作量量时时,在在基基本本CoCoMo模模型型的的基基础础上上再再乘乘以以由由15个个因因素素组组成成的的工作量调节因子工作量调节因子EAF,于是有:于是有:E=a Lb EAF=a Lb F i 其中:其中:L 软件的代码行数(以软件的代码行数(以KLOC计);计);E 工作量(以工作量(以PM计);计);a、b 经验常数;经验常数;i=115表表2-9 a、b参数的取参数的取值值软件类型软件类型ab组织型组织型3.21.05半独立型半独立型3.01.12嵌入型嵌入型2.81.20(2)中间)中间CoCoMo模型模型l工作量调节因子工作量调节因子EAF与软件的产品的取值属性、计与软件的产品的取值属性、计算机属性、人员属性、项目属性等因素有关。这算机属性、人员属性、项目属性等因素有关。这15个因素个因素Fi(i=115)的值可按等级取值,即可分为的值可按等级取值,即可分为很低、低、正常、高、很高、极高,共很低、低、正常、高、很高、极高,共6级。正常级。正常情况下情况下Fi=1。Boehm推荐的推荐的Fi值的范围是值的范围是.701.66,F i的值可根据实际情况按表的值可根据实际情况按表2-10来选来选取。取。l工作量工作量E求出之后,就可以用公式(求出之后,就可以用公式(2-18)即)即 D=c Ed计算出开发时间计算出开发时间D。(3)详细)详细CoCoMo模型模型详详细细CoCoMo模模型型的的基基本本工工作作量量(指指EAF=1时时的的工工作作量量)公公式式、开开发发时时间间公公式式与与中中间间CoCoMo模模型相同。型相同。所所不不同同的的是是详详细细CoCoMo模模型型在在计计算算EAF时时针针对对每每个个影影响响因因素素,分分层层次次(系系统统层层、子子系系统统层层、模模块块层层)并并按按软软件件生生存存周周期期分分阶阶段段给给出出工工作作量量因因素素的的分分级表。级表。详详细细CoCoMo模模型型可可以以更更准准确确地地估估算算软软件件项项目目的的工作量。工作量。表表2-11 子系统层软件可靠性工作量因素分级表子系统层软件可靠性工作量因素分级表阶段阶段可靠性级别可靠性级别需求分析和需求分析和概要设计概要设计详细详细设计设计编码及编码及单元测试单元测试集成及集成及测试测试综合综合很低很低0.800.800.800.600.75低低0.900.900.900.800.88正常正常1.001.001.001.001.00高高1.101.101.101.301.15很高很高1.301.30 1.301.701.40通信数通信数图图2-2-4 N=3 和和N=5 时的通信数时的通信数成功的标准成功的标准:2.3 软件质量度量软件质量度量失败的根本原因:失败的根本原因:用户在用户在用用用用用户可很容易做完要做的事用户可很容易做完要做的事开发人员写出的东西达不到用户要求开发人员写出的东西达不到用户要求(人的问题、技术问题人的问题、技术问题)不贪污的官就是好不贪污的官就是好官吗官吗l“运行正确运行正确”的程序就是高质量的程序吗?的程序就是高质量的程序吗?l也许运行速度很低并且浪费内存;也许代码也许运行速度很低并且浪费内存;也许代码写得一塌糊涂写得一塌糊涂 2.3.1 软件质量的定义软件质量的定义 软软件件质质量量是是软软件件产产品品满满足足规规定定的的和和隐隐含含的的与与需求能力需求能力有关的全部特征和特性,包括:有关的全部特征和特性,包括:1 1软件产品满足用户要求的程度;软件产品满足用户要求的程度;2 2软件拥有所期望的各种属性的组合程度;软件拥有所期望的各种属性的组合程度;3 3用户对软件产品的综合反映程度;用户对软件产品的综合反映程度;4 4软件在使用过程中满足用户需求的程度。软件在使用过程中满足用户需求的程度。2.3.2 软件质量的度量模型软件质量的度量模型1976年,年,Boehm提出了定量度量软件质量的概念,提出了定量度量软件质量的概念,他给出了软件质量的层次模型,并给出了他给出了软件质量的层次模型,并给出了60个软件个软件质量度量公式;质量度量公式;1978年,年,Walters和和McCall提出了三层次软件质提出了三层次软件质量度量模型;量度量模型;1985年,年,ISO提出了提出了SQM(Software Quality Metric,软件质量度量)工作报告等等。软件质量度量)工作报告等等。1McCall等人的软件质量度量模型等人的软件质量度量模型qMcCall等人提出了由软件质量要素、评价准则、等人提出了由软件质量要素、评价准则、定量度量三个层次组成的三层次度量模型。定量度量三个层次组成的三层次度量模型。其中其中:第一层是将对软件质量的度量归结为对直接影响软件质量的第一层是将对软件质量的度量归结为对直接影响软件质量的若干个若干个软件质量要素软件质量要素的度量;的度量;第二层是用若干个可度量的第二层是用若干个可度量的评价准则评价准则来间接度量软件质量要来间接度量软件质量要素;素;第三层是对相应评价准则的第三层是对相应评价准则的直接度量直接度量。图图2-3-1 软件质量三层次度量模型软件质量三层次度量模型要素要素j评价评价准则准则1评价评价准则准则2评价评价准则准则L度量度量1度量度量2度量度量L2软件质量要素软件质量要素q当时当时McCall等人认为,软件质量由等人认为,软件质量由11个软件质量个软件质量要素来衡量。这要素来衡量。这11个质量要素可划分为三类:个质量要素可划分为三类:面向面向运行特征运行特征的软件质量要素有正确性、可靠性、的软件质量要素有正确性、可靠性、有效性、完整性和可用性;有效性、完整性和可用性;面向面向软件承受修改软件承受修改的质量要素有可维护性、灵活性、的质量要素有可维护性、灵活性、可测试性;可测试性;面向面向转移转移的软件质量要素有可移植性、可重用性、的软件质量要素有可移植性、可重用性、可互操作性。可互操作性。这三类要素构成了软件质量的三个侧面,如这三类要素构成了软件质量的三个侧面,如图图2-3-22-3-2所示。所示。图图2-3-2 软件质量要素的构成软件质量要素的构成产品产品修正修正产品产品转移转移产品产品运行运行 可维护性可维护性 灵活性灵活性 可测试性可测试性 可移植性可移植性 可重用性可重用性 可互操作性可互操作性正确性正确性 可靠性可靠性 有效性有效性完整性完整性 可用性可用性质量要素概念质量要素概念1)正确性()正确性(correctness):):指程序满足需求规格说明及用户目标的程度;指程序满足需求规格说明及用户目标的程度;2)可靠性可靠性(reliability):):指在给定的时间间隔内,程序成功运行的概率。可靠性是衡量软指在给定的时间间隔内,程序成功运行的概率。可靠性是衡量软件质量的一个重要目标。件质量的一个重要目标。3)有效性有效性(efficiency):):指软件系统的时间和空间效率。这是一个应当努力追求的重要目指软件系统的时间和空间效率。这是一个应当努力追求的重要目标。标。4)完整性()完整性(integrity):):指对未授权人员访问程序或数据加以控制的程度;指对未授权人员访问程序或数据加以控制的程度;5)可用性()可用性(usability):):指学习使用软件(即操作软件、准备输入数据、解释输出结果等)指学习使用软件(即操作软件、准备输入数据、解释输出结果等)的难易程度的难易程度;质量要素概念质量要素概念1)灵活性()灵活性(flexibility):):指改变一个操作的顺序所需工作量的多少;指改变一个操作的顺序所需工作量的多少;2)可测试性()可测试性(testability):):指测试软件以便使其具有预定功能所需工作量的多少;指测试软件以便使其具有预定功能所需工作量的多少;3)可维护性()可维护性(maintainability):):指指软软件件产产品品交交付付使使用用后后,在在实实现现改改正正潜潜伏伏的的错错误误、改改进进性性能等属性、适应环境变化等方面工作的难易程度。能等属性、适应环境变化等方面工作的难易程度。1)可互操作性()可互操作性(interoperability):):指程序与其他系统相互交换并使用信息的能力。指程序与其他系统相互交换并使用信息的能力。2)可重用性()可重用性(reusability):):指软部件可以在多种场合使用的程度。指软部件可以在多种场合使用的程度。3)可移植性()可移植性(portability):):指软件从一个计算机系统或环境移植到另一个上去的难易指软件从一个计算机系统或环境移植到另一个上去的难易程度。程度。质量要素概念质量要素概念2软件质量要素软件质量要素软软件件质质量量要要素素不不是是独独立立的的,一一个个要要素素可可能能与与其其他他几几个要素有关系,如表个要素有关系,如表2-12所示,其中所示,其中:正相关以正相关以“”表示,表示,负相关以负相关以“”表示。表示。对对于于具具有有负负相相关关的的质质量量要要素素,在在开开发发时时应应根根据据具具体体情况加以取舍或进行折衷。情况加以取舍或进行折衷。例例如如,对对于于实实时时控控制制系系统统,必必须须确确保保系系统统的的可可靠靠性性和和有有效效性性,而而软软件件的的可可重重用用性性、可可移移植植性性等等质质量量要要素就可以放宽要求。素就可以放宽要求。表表2-12 质量要素间的关系质量要素间的关系关系关系要素要素要素要素正正确确性性可可靠靠性性有有效效性性完完整整性性可可用用性性可可维维护护性性灵灵活活性性可可测测试试性性可可移移植植性性可可重重用用性性可可互互操操作作性性正确性正确性可靠性可靠性有效性有效性完整性完整性可用性可用性可维护性可维护性灵活性灵活性可测试性可测试性可移植性可移植性可重用性可重用性可互操作性可互操作性3软件质量要素的评价准则软件质量要素的评价准则 软件质量要素一般很难直接测量。为了对软件质量要素一般很难直接测量。为了对11个个要素进行度量,要素进行度量,McCall等人通过确定影响软件质等人通过确定影响软件质量要素的属性,定义了量要素的属性,定义了21个软件质量要素的评价个软件质量要素的评价准则。这些评价准则既能够比较完整、准确地描准则。这些评价准则既能够比较完整、准确地描述软件质量要素,又比较容易测量。述软件质量要素,又比较容易测量。通过这组评价准则就可以间接测量软通过这组评价准则就可以间接测量软件质量要素,进而度量整个软件质量。件质量要素,进而度量整个软件质量。评价准则新概念评价准则新概念1)可审查性()可审查性(audit-ability):):检查软件需求、文档、过程、标准等是否一致的难易程度;检查软件需求、文档、过程、标准等是否一致的难易程度;2)准确性()准确性(accuracy):):计算和控制的精确程度;计算和控制的精确程度;3)简明性()简明性(conciseness):):程序源代码的紧凑程度;程序源代码的紧凑程度;4)通信通用性()通信通用性(communication commonality):):使用标准接口、协议和带宽的程度;使用标准接口、协议和带宽的程度;5)数据通用性()数据通用性(data commonality):):在程序中使用标准数据结构和类型的程度;在程序中使用标准数据结构和类型的程度;6)容错性()容错性(error-tolerance):):在各种异常情况下软件能继续提供操作的能力;在各种异常情况下软件能继续提供操作的能力;评价准则新概念评价准则新概念7)执行效率()执行效率(execution efficiency):):软件运行效率;软件运行效率;8)可扩充性()可扩充性(expandability):):结构、数据、过程等设计可以扩充的程度;结构、数据、过程等设计可以扩充的程度;9)通用性()通用性(generality):):程序潜在应用领域的多少;程序潜在应用领域的多少;10)硬件独立性()硬件独立性(hardware independence):):软件与其运行的硬件环境无关的程度;软件与其运行的硬件环境无关的程度;11)检测性()检测性(instrumentation):):程序监视自身运行并标识错误的程度;程序监视自身运行并标识错误的程度;12)可操作性()可操作性(operability):):操作该软件的难易程度;操作该软件的难易程度;评价准则新概念评价准则新概念13)安安全全性性(security):控控制制或或保保护护程程序序和和数数据据不不被被破破坏、非法访问等机制的能力;坏、非法访问等机制的能力;14)自文档化()自文档化(self-documentation):):源代码提供自身说明文档的程度;源代码提供自身说明文档的程度;15)简单性()简单性(simplicity):):程序易于理解的程度;程序易于理解的程度;16)软件独立性()软件独立性(software independence):):软软件件与与非非标标准准编编程程语语言言特特征征、操操作作系系统统特特征征等等软软件件环环境约束无关的程度;境约束无关的程度;17)易培训性()易培训性(training):):软件对使用它的新用户的支持程度。软件对使用它的新用户的支持程度。18)可追踪性()可追踪性(traceability):是指根据软件需求对软件):是指根据软件需求对软件设计、程序进行正向追踪,或根据程序、软件设计对软件设计、程序进行正向追踪,或根据程序、软件设计对软件需求进行逆向追踪的能力。需求进行逆向追踪的能力。19)模块化()模块化(modularity):把一个程序划分成若干个模块,):把一个程序划分成若干个模块,每个模块完成一个子功能,将这些模块组装成一个整体,每个模块完成一个子功能,将这些模块组装成一个整体,即可完成该程序指定的功能。即可完成该程序指定的功能。20)一一致致性性(consistency):整整个个软软件件系系统统(包包括括程程序序、数数据据和和文文档档)的的各各个个模模块块应应使使用用一一致致的的概概念念、符符号号和和术术语语;程程序序内内部部接接口口应应保保持持一一致致;软软件件与与环环境境的的接接口口应应保保持持一一致致;系系统统规规格格说说明明应应与与系系统统行行为为保保持持一一致致;用用于于形形式式化化规规格格说说明的公理系统应保持一致。明的公理系统应保持一致。21)完完全全性性(completeness):软软件件系系统统不不丢丢失失任任何何重重要要成成分,完全实现所需的系统功能的程度。分,完全实现所需的系统功能的程度。评价准则新概念评价准则新概念表表2-13 质量要素与评价准则的关系质量要素与评价准则的关系评价准评价准则则关系关系质量要素质量要素可可追追踪踪性性完完全全性性一一致致性性容容错错性性准准确确性性简简单单性性可可操操作作性性执执行行效效率率可可审审查查性性检检测测性性安安全全性性数数据据通通用用性性可可扩扩充充性性通通用用性性硬硬件件独独立立性性简简明明性性通通信信通通用用性性自自文文档档化化软软件件独独立立性性易易培培训训性性模模块块化化正确性正确性 可靠性可靠性 有效性有效性 完整性完整性 可用性可用性可维护性可维护性灵活性灵活性可测试性可测试性 可移植性可移植性 可重用性可重用性 可互操作性可互操作性4软件质量要素的度量软件质量要素的度量第第j种软件质量要素种软件质量要素Fj(j=1,2,11)的计算公式为:的计算公式为:Fj=Cj k M k其中:其中:M Mk k是第是第j j 种软件质量要素种软件质量要素F Fj j对第对第k k种评价准则的测种评价准则的测量值。评价准则多数只能按主观想法定值。量值。评价准则多数只能按主观想法定值。McCallMcCall将每将每个评价准则都划分为个评价准则都划分为0 100 10级,并且级,并且M Mk k的值可以在的值可以在0 0,0.10.1,0.20.2,1.01.0中取一个。中取一个。加权系数加权系数C Cjkjk满足满足C Cjkjk=1=1,C Cjkjk 0 0。C Cjkjk=0=0表示质量要素与第表示质量要素与第k k种评价准则无关。种评价准则无关。4软件质量要素的度量软件质量要素的度量例如,要度量某软件的例如,要度量某软件的F2(可靠性)可靠性)假设假设C23=0.1,C24=0.3,C25=0.4,C26=0.2,其余的其余的C2k=0,而而M3=0.7、M4=0.6、M5=0.5,M6=0.8,则可靠性的度量值为:则可靠性的度量值为:F2=C23M3+C24M4+C25M5+C26M6 =0.10.7+0.30.6+0.40.5+0.20.8 =0.61ISO三层次软件质量度量模型。三层次软件质量度量模型。q1985年,国际标准化组织也提出了三层次软件质年,国际标准化组织也提出了三层次软件质量度量模型。其中:量度量模型。其中:高层称为软件质量需求评价准则(高层称为软件质量需求评价准则(SQRC),),并由正并由正确性、可容性、有效性、安全性、可用性、可维护确性、可容性、有效性、安全性、可用性、可维护性、灵活性、可互操作性等性、灵活性、可互操作性等8个要素组成;个要素组成;中层称为软件质量设计评价准则(中层称为软件质量设计评价准则(SQDC),),并由可并由可追踪性、完全性追踪性、完全性、等共、等共23个评价准则组成;个评价准则组成;低层称作软件质量度量评价准则(低层称作软件质量度量评价准则(SQMC)。)。2.4 软件复杂性度量软件复杂性度量l通过软件的复杂性度量值可以估算出软件中通过软件的复杂性度量值可以估算出软件中故障的数量;故障的数量;l也能估算出软件开发所需的工作量;也能估算出软件开发所需的工作量;l定量度量的结果还可以用于比较不同设计方定量度量的结果还可以用于比较不同设计方案的优劣。案的优劣。l同时,软件的复杂性也能从某些方面影响软同时,软件的复杂性也能从某些方面影响软件的可维护性、可靠性等软件质量要素。件的可维护性、可靠性等软件质量要素。因此,软件复杂性度量是软件度量的一个重因此,软件复杂性度量是软件度量的一个重要组成部分。要组成部分。2.4.1 软件复杂性的概念及度量原则软件复杂性的概念及度量原则1软件复杂性的概念软件复杂性的概念K.Magel 从从6个方面来描述软件复杂性:个方面来描述软件复杂性:1)理解程序的难度;)理解程序的难度;2)维护程序的难度;)维护程序的难度;3)向其他人解释程序的难度;)向其他人解释程序的难度;4)按指定方法修改程序的难度;)按指定方法修改程序的难度;5)根据设计文件编写程序的工作量;)根据设计文件编写程序的工作量;6)执行程序时需要资源的多少。)执行程序时需要资源的多少。软软件件复复杂杂性性反反映映了了软软件件的的可可理理解解性性、模模块块化化、简单性等属性。简单性等属性。2软件复杂性度量的原则软件复杂性度量的原则q软件复杂性的度量,的一些基本原则:软件复杂性的度量,的一些基本原则:1)软件的复杂性与其规模的关系不是线性的;)软件的复杂性与其规模的关系不是线性的;2)数据结构复杂的程序较复杂;)数据结构复杂的程序较复杂;3)控制结构复杂的程序较复杂;)控制结构复杂的程序较复杂;4)转向语句使用不当的程序较复杂;)转向语句使用不当的程序较复杂;5)循循环环结结构构比比选选择择结结构构复复杂杂、选选择择结结构构比比顺顺 序结构复杂;序结构复杂;6)语句、数据、子程序模块等出现的顺序对复杂)语句、数据、子程序模块等出现的顺序对复杂性有影响性有影响;2软件复杂性度量的原则软件复杂性度量的原则7)非局部变量较多的程序较复杂;)非局部变量较多的程序较复杂;8)参参数数按按地地址址调调用用(Call by reference)比比按按值调用(值调用(Call by value)复杂;复杂;9)函数副作用比显式参数传递难理解;)函数副作用比显式参数传递难理解;10)作用不同的变量同名时较难理解;)作用不同的变量同名时较难理解;11)模块、过程间联系密切的程序较复杂;)模块、过程间联系密切的程序较复杂;12)程序嵌套层数越多越复杂。)程序嵌套层数越多越复杂。以上这些基本原则是指导我们进一步研究定量度以上这些基本原则是指导我们进一步研究定量度量软件复杂性的基础。量软件复杂性的基础。2.4.2 McCabe度量模型度量模型q该方法是把程序流程图转化为程序图:即把该方法是把程序流程图转化为程序图:即把程序看成是有一个入口结点和一个出口结点程序看成是有一个入口结点和一个出口结点的有向图,图中每个结点对应一个语句、一的有向图,图中每个结点对应一个语句、一个简单判断或一个顺序流程的代码块,原来个简单判断或一个顺序流程的代码块,原来程序流程图中的箭头变成连接各结点的有向程序流程图中的箭头变成连接各结点的有向弧(或称为边)。一般地,可以假设从程序弧(或称为边)。一般地,可以假设从程序图中的开始结点可以到达图中的任一结点,图中的开始结点可以到达图中的任一结点,而从图中的任一结点都可以到达出口结点。而从图中的任一结点都可以到达出口结点。程序图又称为程序控制结构图或程序流图。程序图又称为程序控制结构图或程序流图。2.4.2 McCabe度量模型度量模型McCabe给给出出了了程程序序控控制制结结构构图图G的的巡巡回回秩秩数数V(G)作作为为程序控制结构复杂性的度量,其度量模型为:程序控制结构复杂性的度量,其度量模型为:V(G)=E N+2 其中:其中:E 程序图程序图G中边的总数;中边的总数;N 程序图中结点的总数。程序图中结点的总数。V(G)又称为图又称为图G的环形复杂度。的环形复杂度。可以证明,可以证明,V(G)的值等于结构图中有界和无界的封闭区的值等于结构图中有界和无界的封闭区域的个数。域的个数。R1图图2-4-1 三种基本结构的程序图三种基本结构的程序图R1R2R1R2(a)顺序结构顺序结构V(G)=E N+2=1 2+2=1(b)选择结构选择结构V(G)=E N+2=4 4+2=2(c)while结构结构R1R2V(G)=E N+2=3 3+2=2(d)until 结构结构V(G)=E N+2=3 3+2=2 2.4.2 McCabe度量模型度量模型程序结构的复杂性度量值程序结构的复杂性度量值V(G)取决于程序控制取决于程序控制流的复杂程度。当程序内的分支数和循环数增加时,流的复杂程度。当程序内的分支数和循环数增加时,V(G)值将随之增加,即程序的复杂性增大。值将随之增加,即程序的复杂性增大。McCabe研究大量程序后指出,研究大量程序后指出,V(G)可作为程可作为程序规模的定量指标,序规模的定量指标,V(G)值越高的程序往往是值越高的程序往往是越复杂、越容易出问题的程序。越复杂、越容易出问题的程序。McCabe建议模块规模应满足:建议模块规模应满足:V(G)10【例例2.5】程序流程图如图程序流程图如图2-4-2所示,试求出其巡回秩所示,试求出其巡回秩数数V(G)解:(解:(1)画出程序流程图对应的程序图。)画出程序流程图对应的程序图。开始开始abchgfdei结束结束图图2-4-3 程序图程序图abcfghdeiR1R2R3R41234567891011图图2-4-2 程序流程图程序流程图【例例2.5】程序流程图如图程序流程图如图2-4-2所示,试求出其巡回所示,试求出其巡回秩数秩数V(G)(2 2)由程序图(或流图)可得:)由程序图(或流图)可得:abcfghdeiR1R2R3R41234567891011(3 3)由程序图可以看出,其有)由程序图可以看出,其有界区域有界区域有R1R1、R2R2、R3R3共共3 3个,个,还有还有1 1个无界区域个无界区域R4R4,共,共4 4个封个封闭区域,所以:闭区域,所以:V V(G G)=E=E N+2=11 N+2=11 9 9+2 +2 =4 =4 V V(G G)=4=42.4.3 Halstead度量模型度量模型q20世世纪纪70年年代代初初,Halstead给给出出了了称称为为文文本本复复杂杂性性度度量量的的模模型型。它它是是根根据据统统计计程程序序中中的的操操作作符符和和操操作作数数的的个个数数来来度度量量程程序序的的复复杂杂程程度度。程程序序可可以以看看成成是是由由操操作作符符和和操操作作数数组组成成的的符符号号序序列列。操操作作符符是是指指程程序序中中出出现现的的语语法法符符号号,如如+、if-then-else、while等等。操操作作数数是是操操作作对对象象,如如程程序序中中定定义义或使用的变量、常量、数组、指针等。或使用的变量、常量、数组、指针等。令:令:N1为程序中操作符出现的总个数,为程序中操作符出现的总个数,N2为程序中操作数出现的总个数。为程序中操作数出现的总个数。则程序的语言符号长度则程序的语言符号长度N定义为:定义为:N=N1+N2。2.4.3 Halstead度量模型度量模型如果已经测得程序中不同操作符的个数如果已经测得程序中不同操作符的个数n1和不同操作数的和不同操作数的个数个数n2,则则程序的长度程序的长度N可用下式来估算:可用下式来估算:N n1 log2 n1+n2 log2 n2 Halstead用下式来定义用下式来定义程序量程序量(即程序在词汇上的复杂性):(即程序在词汇上的复杂性):V=N log 2(n1+n2)Halstead还给出了还给出了预测错误数预测错误数的公式如下:的公式如下:E=N log 2(n1+n2)/30002.4.3 Halstead度量模型度量模型可以对多个某种程序设计语言的程序进行统可以对多个某种程序设计语言的程序进行统计分析,从而得出每千代码行(计分析,从而得出每千代码行(KLOC)或每或每个功能点(个功能点(FP)所包含的操作符和操作数个所包含的操作符和操作数个数数CL或或CF,于是,可以将程序语言符号长度于是,可以将程序语言符号长度N折合成相应的代码行数或功能点数。折合成相应的代码行数或功能点数。2.5 软件可靠性度量软件可靠性度量 软软件件可可靠靠性性定定义义为为在在某某个个给给定定时时间间间间隔隔内,程序按照规格说明成功运行的概率。内,程序按照规格说明成功运行的概率。1软件可靠性软件可靠性令令:随随机机变变量量 t 表表示示发发生生故故障障的的时时刻刻,t0,;函函数数f(t)为为随随机机变变量量t 的的概概率率密密度度函函数数,F(t)表表示示分分布布函函数数;P(0 t t1)表表示示从从初初始始时时刻刻到到t1时刻程序发生故障的概率。时刻程序发生故障的概率。设:初始时刻程序运行正常,即设:初始时刻程序运行正常,即F(0)=0。于是有:于是有:F(t)=f(x)dx f(t)=d F(t)d t0t令:令:Pf(t1)表示从表示从0到到t1时刻程序发生故障的概率,有:时刻程序发生故障的概率,有:Pf(t1)=P(0 t t1)=F(t1)F(0)=F(t1)如如果果在在0,t区区间间程程序序成成功功运运行行的的概概率率为为Ps(t)、发发生生故障的概率为故障的概率为Pf(t),),则有:则有:Ps(t)+Pf(t)=1Ps(t)就就是是可可靠靠性性,一一般般标标记记为为R(t)。由由以以上上几几个个式式子可导出:子可导
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 办公文档 > 活动策划


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!