




已阅读5页,还剩188页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课程名称:软件工程第3讲班级:日期:教室:教学题目:第2章软件项目管理2.1软件度量2.2软件项目的估算2.2.1软件项目估算方法教学目的:了解软件度量的基本概念,掌握面向规模和面向功能点度量方法。了解项目估算方法。教学重点:面向规模和面向功能点的度量方法。教学难点:面向功能点的度量方法教具:多媒体教室、电子教案作业:,第2章软件项目管理,软件项目管理必须从项目的开头介入,并贯穿于整个软件生存周期的全过程。软件项目管理的范围主要集中于3个P上,即:People(人员)、Problem(问题)和Process(过程)。软件项目管理的主要任务是:根据选定的软件开发过程框架(即软件开发模型)和对其估算的结果制定软件项目实施计划;再根据计划对人员进行组织、分工;按照计划的进度,以及成本管理、风险管理、质量管理的要求,控制并管理软件开发和维护的活动,最终以最小的代价完成软件项目规定的全部任务。,第2章软件项目管理,软件项目的成本管理、软件质量管理和软件配置管理有一定的特殊性和独立性,可单独立项。其任务分别是:成本管理估算软件项目的成本,作为立项和签合同的依据之一,并在软件开发过程中按计划管理经费的使用;质量管理制定软件质量保证计划,按照质量评价体系控制软件质量要素,对阶段性的软件产品进行评审,对最终软件产品进行确认,确保软件质量;配置管理制定配置管理计划,对程序、数据、文档的各种版本进行管理,确保软件的完整性和一致性。,第2章软件项目管理,在制定有效的项目实施计划的过程中,首先要对项目的工作量、完成期限等等参考量进行估算。估算的结果将成为项目计划其他活动的基础,同时,为了对软件项目进行科学、有效的管理,就必须对软件开发过程的有关特征进行度量,度量的结果用于软件开发过程的管理与监控。本章主要介绍软件度量的概念,软件的规模度量,软件项目的估算,软件的质量度量、复杂性度量、可靠性度量、风险的分析与度量以及软件项目管理过程与步骤等等。,第2章软件项目管理,2.1软件度量2.2软件项目估算2.3软件质量度量2.4软件复杂性度量2.5软件可靠性度量2.6软件开发过程的管理习题思考题,2.1软件度量,对软件工程项目的规模、成本、产品质量等属性进行定量的描述,可以帮助项目管理人员和开发者制定有效的项目计划,监控项目的风险、进度和阶段产品的质量,并为调整过程中活动和做出重要决策提供可靠的依据。下面介绍软件度量的基本概念,并介绍软件的规模度量和功能度量。2.1.1软件度量的基本概念1测量、度量、估算和指标软件工程项目的定量描述涉及测量、度量、估算和指标等一些基本概念。,1)测量(measure):对产品或过程的某个属性的范围、数量、维度、容量或大小提供一个定量的指示。2)度量(metric):对系统、部件或过程的某一特性所具有的程度进行的量化测量。如软件质量度量等。3)估算(estimation):对软件产品、过程、资源等使用历史资料或经验公式等进行预测。如工作量、成本、完成期限等。估算一般用于立项、签订合同、制定工作计划等。,4)指标(guideline)指标是一个度量或度量的组合,它可对软件产品、过程或资源提供更深入的理解。如有4个小组共同完成一个软件项目,每一个小组都必须采用自行选择的评审类型进行技术评审。管理者检查“每小时每人所发现的错误数”这一度量结果时发现:采用正式技术评审方法的两个小组的该度量值要比另外两个小组高出40%。假设4个小组的其他参数都相同,这就给管理者提供了一个指标:正式技术评审方法比其他技术评审方法更有效率。于是,管理者可决定建议所有小组都采用更加正式的技术评审方法。,2软件项目管理的对象及其属性,软件项目管理的对象主要包括产品、过程和资源等。产品(product)是指软件开发过程得到的文档和程序,如:需求规格说明、设计规格说明、源代码、测试报告等;过程(process)是指与软件项目有关的活动,如软件项目计划、开发活动、维护活动、管理活动等;资源(resource)是指进行软件项目所需要的各种支持,如人力、经费、方法、工具、软硬件环境等。要对软件项目管理的对象进行有效的管理与控制,就必须对这些对象的属性进行测量、度量与估算。一般来说,产品、过程、资源等对象都具有内部属性和外部属性。,对象的属性,内部属性是指对象本身的属性,如软件产品的代码长度、模块化的程度、复杂性等。对象的外部属性体现了对象与环境的关系,如软件的可靠性、可维护性、可移植性、成本、人员的生产率等。对象的部分属性如表2-1所示。,表2-1软件工程的产品、过程、资源的属性,对象的属性,项目管理员和用户都十分关心产品、过程、资源的外部属性,于是可将外部属性看成是面向管理员和用户的属性。但在软件开发的过程中,软件的外部属性一般是很难度量和控制的。这些外部属性是由软件的内部属性所决定的,因此,可以通过研究内部属性与外部属性之间的关系来解决外部属性的度量问题,进而逐步建立起了软件工程度量系统。,3软件度量的分类,可分为直接度量和间接度量两类:1)直接度量。即对不依赖于其他属性的简单属性的测量。如软件的模块数、程序的代码行数、操作符的个数,工作量、成本等。2)间接度量。即对涉及若干个其他属性的软件要素、准则或属性的度量。因为它们必须通过建立一定的度量方法或模型才能间接推断而获得。如软件的功能性、复杂性、可靠性、可维护性等等。软件度量系统还可进一步划分为两个侧面。它们之间的关系如图2-1-1所示。,图2-1-1两侧面间关系,面向规模的度量,面向功能的度量,面向人的度量,生产率度量,质量度量,技术度量,2.1.2面向规模的度量,面向规模的度量是以软件的代码行(LOC,LineofCode)数为基础的直接度量。一般的软件开发组织对开发过的每个软件项目都有如代码行、工作量、成本、错误、人数、文档页数等的统计记录。利用代码行数可以度量软件规模、生产率、平均成本、出错率、文档率等参考量。设:L表示软件的代码行数,单位为KLOC(千行代码)或LOC;E表示开发软件所需工作量,单位为人月(PM)或人年(PY);S表示软件成本,单位为美元或元;N表示错误个数;Pd表示软件文档页数;M表示开发所用的人数。则有:,1软件开发的生产率P(即平均每人月开发的代码行数,以LOC/PM为单位)为:P=L/E(2-1)2开发每行代码的平均成本C(以美元/LOC或元/LOC为单位)为:C=S/L(2-2)3代码出错率EQR(即每千行代码的平均错误数,以个/KLOC为单位)为:EQR=N/L(2-3)4软件的文档率D(即平均每千行代码的文档页数,以页/KLOC为单位)为:D=Pd/L(2-4),【例2.1】已知有一个国外典型的软件项目的记录,开发人员M=6人,其代码行数=20.2KLOC,工作量E=43PM,成本S=314000美元,错误数N=64,文档页数Pd=1050页。试计算开发该软件项目的生产率P、平均成本C、代码出错率EQR和文档率D。解:根据给出的已知数据,可得:P=L/E=20.2KLOC/43PM=0.47KLOC/PM=470LOC/PMC=S/L=314000美元/20.2KLOC=15.54美元/LOCEQR=N/L=64个/20.2KLOC=3.17个/KLOCD=Pd/L=1050页/20.2KLOC=51.98页/KLOC,基于代码行面向规模的度量方法的优缺点、适用场合,优点:简单、直接。缺点:如它依赖于程序设计语言的功能和表达等特征、在开发初期很难准确估算出代码行数、对设计水平高的软件项目产生不利影响。适用场合:适合于过程式程序设计语言和事后度量。,2.1.3面向功能的度量,1简单功能点度量1979年,Albrecht首先提出了功能点度量方法。这是一种面向功能的间接度量方法,即从软件定义的基本功能出发,来估算软件系统的规模。因此,该方法可以在软件开发项目的初期,在软件定义过程中即可预测待开发软件的规模。,1简单功能点度量,功能点FP的度量公式如下:FP=CTTCF=CT0.65+0.01Fi(2-5)其中:CT基本功能点。CT值按表2-2来计算,它的值为5个参数加权值的总和。,14,i=1,表2-2简单功能点度量的基本功能点的计算,表2-2中的5个参数的含义,1)用户输入数:用户为软件系统提供的输入参数的个数(不包括查询);2)用户输出数:软件为用户提供的输出参数(报告、屏幕帧、错误信息等)的个数;3)用户查询数:一次联机输入导致软件以联机输出方式实时产生一个响应的个数;4)文件数:逻辑主文件的个数;5)外部接口数:机器可读的接口(如磁盘或磁带上的数据文件等)的个数。,1简单功能点度量,在FP度量公式中:TCF技术复杂性调节因子。0.65和0.01经验数据。Fi(i=1,2,14)复杂性调节值。Fi所代表的因素如表2-3所示,每个Fi可根据实际情况取0、1、2、3、4、5中的一个值。其中:0没有影响、1偶然的、2适中、3普通、4重要、5极重要的影响。TCF取值范围:0.651.35。,表2-3Fi取值表,2功能点度量,简单功能点度量方法没有直接考虑软件本身的算法的复杂性问题。所以它仅适用于度量算法简单的事务处理等系统。1986年Jones对简单功能点度量进行了推广,在计算软件系统的基本功能点CT时,引入了算法复杂性因素,即使用表2-4计算CT。我们称这种推广的度量方法为功能点度量。这两种方法对一般的事务处理系统等算法简单的软件系统计算出来的FP值基本相同,但对于较复杂的软件系统,功能点度量方法比简单功能点度量方法计算出来的FP值要高20%35%。,表2-4推广的功能点度量的基本功能点的计算,用功能点计算软件项目的有关参考量:,1)生产率P(平均每人月开发的功能点数,以功能点/PM为单位):P=FP/E(2-6)2)平均成本C(以美元/功能点或元/功能点为单位):C=S/FP(2-7),用功能点计算软件项目的有关参考量:,3)代码出错率EQR(即每功能点的平均错误数,以个/功能点为单位)为:EQR=N/FP(2-8)4)软件的文档率D(即平均每功能点的文档页数,以页/功能点为单位)为:D=Pd/FP(2-9),3功能点度量方法的优缺点,优点:可用于软件项目开发的初期阶段的项目估算。因为在可行性研究和需求分析阶段已能基本确定输入、输出等各个参考量;与程序设计语言无关。适合于过程或非过程式语言。缺点:某些参考量的收集有一定困难;度量值的主观因素较多,如Fi取值;功能点FP本身没有直观的物理意义。,4软件的代码行与功能点的关系,软件的功能点数和选用的程序设计语言无关,但对于同一个软件(功能点数已定),如用不同的程序设计语言来实现,所得到的软件的代码行数可能会有较大差别。Albrecht等人通过多个软件统计出了用不同程序设计语言实现每个功能点所需代码行数,即计算出各语言的LOC/FP的平均值,如表2-5所示。,表2-5部分程序设计语言LOC/FP平均值的比较,2.2软件项目估算2.2.1软件项目的估算方法,常用的软件项目的估算方法主要有以下4种:1自顶向下的估算方法基本思想:首先根据已完成项目的总成本或总工作量来推算待开发软件的总成本或总工作量,然后再按比例将其分配到各开发任务中去。即从整体到局部。优点:估算工作量小、速度快。缺点:对项目中的特殊困难估计不足,有可能产生遗漏,估算出的值盲目性较大。,2自底向上的估算方法,基本思想是:把待开发软件细分,直到每一个子任务或阶段都已经明确所需要的开发工作量或成本,然后再把它们累加起来,得到待开发软件的总工作量或总成本。需要指出,在对软件进行细分时,一种是按照功能将大的软件项目划分为若干个子项目;另一种是按照软件生命周期分解为各个阶段。当然,也可以两者同时进行。优点:计算各个部分的准确性较高。缺点:缺少各个子任务之间相互联系的工作量和系统工作量(如项目管理、配置管理、质量管理),估算值往往偏低,必须用其他方法进行校正。,3差别估算法,基本思想:把待开发的软件项目与过去完成的软件项目进行比较,从各子任务中区分出类似的和不同的部分。类似的部分按已知的实际量计算,不同的部分则采用某种方法进行估算。差别估算法综合了以上两种方法的优点。优点:估算的准确程度高。缺点:不容易划分相似的界限。,4根据经验估算公式,通过众多实际软件项目的经验,总结出一些有价值的软件成本和工作量估算的经验模型。这些模型对于软件项目管理具有一定的指导意义和验证效果。没有一种估算模型能够适合于所有类型的软件项目。因此,对估算的结果应当慎重使用。在实际估算时,几种估算方法可单独、同时或组合使用,以便提高估算的准确程度。,估算方法举例,【例2.2】Boehm给出了“软件库存情况更新”项目采用自顶向下估算方法的一个参考例子,由过去已完成的项目的工作量,估算出该项目的总工作量为53。然后将其按比例分配到各个阶段,如表2-6所示。从中可以看出软件开发各阶段工作量的分配情况。,表2-6软件项目的自顶向下估算,课程名称:软件工程第4讲班级:日期:教室:教学题目:2.2.2代码行和功能点的估算,2.2.3软件项目的经验估算模型.教学目的:熟悉软件项目估算模型。教学重点:软件项目估算模型。教学难点:详细CoCoMo模型教具:多媒体教室、电子教案作业:,2.2.2代码行和功能点的估算,采用2.2.1中介绍的估算方法可以估算出代码行或功能点的乐观值a、一般值m和悲观值b,并用如下的加权平均公式计算LOC或FP的期望值(expectation):X=(a+4m+b)/6(2-10)软件的LOC或FP的期望值估算出来后,就可以根据已有的标准生产率对成本和工作量等进行估算了。,【例2.3】对CAD软件项目进行估算,解:这里采用自底向上的估算方法。即首先,将CAD项目按功能分解为7个子项目,并估算出每个子项目LOC的乐观值a、一般值m和悲观值b,由此可估算出每个子项目的代码行的期望值X。在根据已知的开发类似子项目的生产率P和平均成本C即可估算出每一个子项目的成本和工作量,最后将7个子项目的成本和工作量分别累加,即可估算出软件项目的总成本S和总工作量E。估算的各种值如表2-7所示。,表2-7采用加权平均、自底向上方法估算代码行、成本和工作量,估算的组织实施,为了使估算更准确,可以组织几个专家采用无记名的方式分别填写表2-7,然后组织者计算出这几个表格的平均值;这一过程可反复几次,直到获得一个得到多数专家共识的软件规模。另外,还可以将每个子项目再按生存周期划分,估算其各阶段的工作量,再累加求出每个子项目的工作量和整个项目的工作量。可将用几种方法估算的结果进行比较来验证估算的准确性。,2.2.3软件项目的经验估算模型,1IBM模型1977年,IBM公司对60个软件项目的数据利用最小二乘法拟合,得到的经验估算公式:E=5.2L0.91(2-11)D=4.1L0.36=2.136E0.3956(2-12)S=0.54E0.6(2-13)DOC=49L1.01(2-14)其中:E为工作量(PM);L为源代码行数(KLOC);D为项目持续的时间,以月为单位;S为人员需要量(人);DOC为文档数量(页)。,1IBM模型,IBM模型是根据已估算出的源代码行数来估算其他资源的需要量的,因此该模型是面向LOC的静态单变量估算模型。还有一些面向FP的静态单变量估算模型。由于这些模型的准确度不高,在实际应用中必须对公式中的参数进行调整,以适应目前情况。,2Putnam模型,1978年,Putnam提出了大型软件项目的动态多变量估算模型。该模型以工作量在30人年以上的大型软件项目的实测数据为依据,推导出了工作量分布曲线,如图2-2-1所示。图中的工作量分布曲线的形状与著名的Rayleigh-Norden曲线相似。,图2-2-1软件项目的工作量分布曲线,系统定义,功能设计规格说明,设计编码,测试和确认,维护,管理,系统定义、需求分析,开发,运行维护,0,开发占总工作量的40%,维护占总工作量的60%,总工作量,td,时间t(年),工作量(人年),2Putnam模型,由上图可得出Putnam估算模型如下:L=CkE1/3td4/3(2-15)其中:L为源代码行数(以LOC计);E为开发与维护的工作量(以人年计);td为开发时间(以年计);Ck为技术状态常数,与开发环境有关,如下:2000较差,没有方法学的支持,缺乏文档和评审,采用批处理方式;Ck=8000一般,有方法学的支持,有适当的文档和评审,采用交互处理方式;11000较好,有集成化的CASE工具和环境。,2Putnam模型,由式(2-15)可以得出估算工作量的式子:E=L3/(Ck3td4)(2-16)工作量估算出来之后,就可以估算软件项目的成本。式中的td是对应于软件交付时的时间,它正好是工作量曲线的峰值,说明此时的工作量最大、参加项目的人最多。图2-2-2给出了软件开发项目每年所需的人年数与开发时间的关系。,R-N分布,线性分布,01234t(年),td,人年数年,图2-2-2概率密度,2Putnam模型,如图2-2-2所示,软件开发项目每年所需的人年数与开发时间的关系满足Rayleigh-Norden分布,即软件项目的工作量分布曲线不是线性的,因此,参加软件项目的人员就不能一成不变。如果按线性方案平均分配人员,则开发的初期一部分人力是多余的,而到了峰值段人力明显不足,到了开发的后期再临时增加人力已为时过晚,即造成了浪费,又拖延了进度。,2Putnam模型,从公式(2-16)即E=L3/(Ck3td4)还可以看出,开发软件项目的工作量和交货时间td的4次方成反比,如果条件允许,适当地推迟交货时间(即使td增大),可大幅度降低开发工作量。例如:如果以1.1td代替式(2-16)中的td,即推迟10%的时间交货,可使开发工作量E减少到原来的68%。反之,如果以0.9td代替td,即提前10%的时间交货,会使E比原来增加52%。因此,工作量与时间的折衷就显得十分重要。图2-2-3给出了各类人员随开发工作的进展在软件工程各阶段参与情况的典型曲线。,图2-2-3人力资源的分配,初级技术人员,高级技术人员,管理人员,验收测试组装测试单元测试编码详细设计概要设计需求分析系统定义,人数,Putnam模型的优缺点,优点:揭示了软件项目的源程序代码长度、软件开发时间和工作量三者之间的关系,在理论上有重要意义。缺点:准确程度不高。没有反映软件产品、项目、参加人员、软硬件资源等属性。,3CoCoMo模型,1981年,Boehm提出了CoCoMo模型(ConstructiveCostModel,即构造性成本模型)。该模型是以静态单变量模型为基础构造出来的。CoCoMo模型按其详细程度分三个层次:基本CoCoMo模型;中间CoCoMo模型;详细CoCoMo模型。,1)基本CoCoMo模型,其工作量和开发时间的估算公式如下:E=aLb(2-17)D=cEd(2-18)其中:L软件代码行的估算值(以KLOC计);E工作量(以PM计);D开发时间(以月计);a、b、c、d经验常数。应根据待开发软件所属的类型按照表2-8来选取。,表2-8a、b、c、d参数值的选取,基本CoComo模型主要用于系统开发的初期估算整个系统开发和维护的工作量及软件开发所需时间。,【例2.4】用基本CoCoMo模型计算开发CAD软件所需的工作量、开发时间以及需要参加项目的平均人数。,解:在【例2.3】中已估算出CAD软件的代码行数为33.5KLOC,CAD软件为半独立型、中等规模的软件,由表2-8可查出a=3.0,b=1.12,c=2.5,d=0.35。CAD项目的开发工作量为:E=aLb=3.033.51.12=153PM开发时间为:D=cEd=2.51530.35=14.54(月)CAD项目平均需要的人力为:N=E/D=153/14.5411人,2)中间CoCoMo模型,中间CoCoMo模型在估算工作量时,在基本CoCoMo模型的基础上再乘以由15个因素组成的工作量调节因子EAF,于是有:E=aLbEAF=aLbFi(2-19)其中:L软件的代码行数(以KLOC计);E工作量(以PM计);a、b经验常数,其取值如表2-9所示;,i=1,15,表2-9a、b参数的取值,2)中间CoCoMo模型,工作量调节因子EAF与软件的产品的取值属性、计算机属性、人员属性、项目属性等因素有关。这15个因素Fi(i=115)的值可按等级取值,即可分为很低、低、正常、高、很高、极高,共6级。正常情况下Fi=1。Boehm推荐的Fi值的范围是0.701.66,Fi的值可根据实际情况按表2-10来选取。工作量E求出之后,就可以用公式(2-18)即D=cEd计算出开发时间D。,表2-10工作量调节因子Fi的取值,3)详细CoCoMo模型简介,详细CoCoMo模型的基本工作量(指EAF=1时的工作量)公式、开发时间公式与中间CoCoMo模型相同。所不同的是详细CoCoMo模型在计算EAF时针对每个影响因素,分层次(系统层、子系统层、模块层)并按软件生存周期分阶段给出工作量因素的分级表。详细CoCoMo模型可以更准确地估算软件项目的工作量。,表2-11子系统层软件可靠性工作量因素分级表,通信工作量,由N个程序员组成的程序员小组的通信数量:C(N)=N(N-1)/2设:每两个人之间通信的平均工作量为则:N人的程序员小组增加的通信工作量为:EC=C(N)=N(N-1)/2(2-20)则该小组的总工作量ET为:ET=E+EC(2-21),通信工作量,如图,由3人组成的程序员小组的通信数量:C(3)=3(3-1)/2=3而由5人组成的程序员小组的通信数量:C(5)=5(5-1)/2=10。当程序员小组的人数较多时,通信工作量ECN2/2与人数的平方成正比,从而使程序员小组的生产率随着人数的增加而迅速下降。由此可见,当在开发的后期发现不能按时交货时,临时盲目增加程序员将会更加推迟交货的日期。,通信数,图2-2-4N=3和N=5时的通信数,课程名称:软件工程第5讲班级:日期:教室:教学题目:2.3软件质量度量,2.4软件复杂性度量教学目的:理解软件质量、复杂性度量方法。教学重点:软件质量、复杂性度量方法。教学难点:软件质量要素的度量教具:多媒体教室、电子教案作业:,2.3软件质量度量,软件质量是软件的生命。它作为软件工程的一部分,贯穿于整个软件生存周期之中。生产高质量的软件产品是软件工程的首要目标。由于软件是逻辑产品,软件质量很难直接度量。因此,应当给出软件质量的科学的、实用的定义,并通过一定的度量模型进行度量,以便在整个软件生存周期中对其进行评价和控制。,2.3.1软件质量的定义,1983年,ANSI/IEEEstd729标准给出了软件质量的定义如下:软件质量是软件产品满足规定的和隐含的与需求能力有关的全部特征和特性,包括:1软件产品满足用户要求的程度;2软件拥有所期望的各种属性的组合程度;3用户对软件产品的综合反映程度;4软件在使用过程中满足用户需求的程度。,2.3.2软件质量的度量模型,软件质量与软件的内部特性及其组合有关。要度量软件质量,就应根据这些内部特性(即软件属性)建立起软件度量模型,进而构建软件质量度量体系。1976年,Boehm提出了定量度量软件质量的概念,他给出了软件质量的层次模型,并给出了60个软件质量度量公式;1978年,Walters和McCall提出了三层次软件质量度量模型;1985年,ISO提出了SQM(SoftwareQualityMetric,软件质量度量)工作报告等等。,1McCall等人的软件质量度量模型,McCall等人提出了由软件质量要素、评价准则、定量度量三个层次组成的三层次度量模型。其中:第一层是将对软件质量的度量归结为对直接影响软件质量的若干个软件质量要素的度量;第二层是用若干个可度量的评价准则来间接度量软件质量要素;第三层是对相应评价准则的直接度量。,图2-3-1软件质量三层次度量模型,要素j,评价准则1,评价准则2,评价准则L,度量1,度量2,度量L,2软件质量要素,软件质量要素(factor)是指直接影响软件质量的软件质量特性。随着对软件质量的认识的逐步提高,软件质量要素也可能有所变化。当时McCall等人认为,软件质量由11个软件质量要素来衡量。这11个质量要素可划分为三类:面向运行特征的软件质量要素有正确性、可靠性、有效性、完整性和可用性;面向软件承受修改的质量要素有可维护性、灵活性、可测试性;面向转移的软件质量要素有可移植性、可重用性、可互操作性。这三类要素构成了软件质量的三个侧面,如图2-3-2所示。,图2-3-2软件质量要素的构成,产品修正,产品转移,产品运行,可维护性灵活性可测试性,可移植性可重用性可互操作性,正确性可靠性有效性完整性可用性,质量要素新概念,1)正确性(correctness):指程序满足需求规格说明及用户目标的程度;2)完整性(integrity):指对未授权人员访问程序或数据加以控制的程度;3)可用性(usability):指学习使用软件(即操作软件、准备输入数据、解释输出结果等)的难易程度;,质量要素新概念,4)灵活性(flexibility):指改变一个操作的顺序所需工作量的多少;5)可测试性(testability):指测试软件以便使其具有预定功能所需工作量的多少;6)可互操作性(interoperability):指程序与其他系统相互交换并使用信息的能力。,2软件质量要素,软件质量要素不是独立的,一个要素可能与其他几个要素有关系,如表2-12所示,其中:正相关以“”表示,负相关以“”表示。对于具有负相关的质量要素,在开发时应根据具体情况加以取舍或进行折衷。例如,对于实时控制系统,必须确保系统的可靠性和有效性,而软件的可重用性、可移植性等质量要素就可以放宽要求。,表2-12质量要素间的关系,3软件质量要素的评价准则,软件质量要素一般很难直接测量。为了对11个要素进行度量,McCall等人通过确定影响软件质量要素的属性,定义了21个软件质量要素的评价准则。这些评价准则既能够比较完整、准确地描述软件质量要素,又比较容易测量。通过这组评价准则就可以间接测量软件质量要素,进而度量整个软件质量。,评价准则新概念,1)可审查性(audit-ability):检查软件需求、文档、过程、标准等是否一致的难易程度;2)准确性(accuracy):计算和控制的精确程度;3)简明性(conciseness):程序源代码的紧凑程度;4)通信通用性(communicationcommonality):使用标准接口、协议和带宽的程度;5)数据通用性(datacommonality):在程序中使用标准数据结构和类型的程度;6)容错性(error-tolerance):在各种异常情况下软件能继续提供操作的能力;,评价准则新概念,7)执行效率(executionefficiency):软件运行效率;8)可扩充性(expandability):结构、数据、过程等设计可以扩充的程度;9)通用性(generality):程序潜在应用领域的多少;10)硬件独立性(hardwareindependence):软件与其运行的硬件环境无关的程度;11)检测性(instrumentation):程序监视自身运行并标识错误的程度;12)可操作性(operability):操作该软件的难易程度;,评价准则新概念,13)安全性(security):控制或保护程序和数据不被破坏、非法访问等机制的能力;14)自文档化(self-documentation):源代码提供自身说明文档的程度;15)简单性(simplicity):程序易于理解的程度;16)软件独立性(softwareindependence):软件与非标准编程语言特征、操作系统特征等软件环境约束无关的程度;17)易培训性(training):软件对使用它的新用户的支持程度。,表2-13质量要素与评价准则的关系,4软件质量要素的度量,第j种软件质量要素Fj(j=1,2,11)的计算公式为:Fj=CjkMk(2-21)其中:Mk是第j种软件质量要素Fj对第k种评价准则的测量值。评价准则多数只能按主观想法定值。McCall将每个评价准则都划分为010级,并且Mk的值可以在0,0.1,0.2,1.0中取一个。加权系数Cjk满足Cjk=1,Cjk0。Cjk=0表示质量要素与第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.61,ISO三层次软件质量度量模型。,1985年,国际标准化组织也提出了三层次软件质量度量模型。其中:高层称为软件质量需求评价准则(SQRC),并由正确性、可容性、有效性、安全性、可用性、可维护性、灵活性、可互操作性等8个要素组成;中层称为软件质量设计评价准则(SQDC),并由可追踪性、完全性、等共23个评价准则组成;低层称作软件质量度量评价准则(SQMC)。ISO认为,应对高层和中层建立国际标准,而低层可由各使用单位自行制定。,2.4软件复杂性度量,通过软件的复杂性度量值可以估算出软件中故障的数量;也能估算出软件开发所需的工作量;定量度量的结果还可以用于比较不同设计方案的优劣。同时,软件的复杂性也能从某些方面影响软件的可维护性、可靠性等软件质量要素。因此,软件复杂性度量是软件度量的一个重要组成部分。,2.4.1软件复杂性的概念及度量原则1软件复杂性的概念,K.Magel从6个方面来描述软件复杂性:1)理解程序的难度;2)维护程序的难度;3)向其他人解释程序的难度;4)按指定方法修改程序的难度;5)根据设计文件编写程序的工作量;6)执行程序时需要资源的多少。软件复杂性反映了软件的可理解性、模块化、简单性等属性。,2软件复杂性度量的原则,软件复杂性的度量,的一些基本原则:1)软件的复杂性与其规模的关系不是线性的;2)数据结构复杂的程序较复杂;3)控制结构复杂的程序较复杂;4)转向语句使用不当的程序较复杂;5)循环结构比选择结构复杂、选择结构比顺序结构复杂;6)语句、数据、子程序模块等出现的顺序对复杂性有影响;,2软件复杂性度量的原则,7)非局部变量较多的程序较复杂;8)参数按地址调用(Callbyreference)比按值调用(Callbyvalue)复杂;9)函数副作用比显式参数传递难理解;10)作用不同的变量同名时较难理解;11)模块、过程间联系密切的程序较复杂;12)程序嵌套层数越多越复杂。以上这些基本原则是指导我们进一步研究定量度量软件复杂性的基础。,2.4.2McCabe度量模型,1976年,McCabe提出了基于程序拓扑结构的软件复杂性度量模型。该方法是把程序流程图转化为程序图:即把程序看成是有一个入口结点和一个出口结点的有向图,图中每个结点对应一个语句、一个简单判断或一个顺序流程的代码块,原来程序流程图中的箭头变成连接各结点的有向弧(或称为边)。一般地,可以假设从程序图中的开始结点可以到达图中的任一结点,而从图中的任一结点都可以到达出口结点。程序图又称为程序控制结构图或程序流图。,2.4.2McCabe度量模型,McCabe给出了程序控制结构图G的巡回秩数V(G)作为程序控制结构复杂性的度量,其度量模型为:V(G)=EN+2(2-22)其中:E程序图G中边的总数;N程序图中结点的总数。V(G)又称为图G的环形复杂度。可以证明,V(G)的值等于结构图中有界和无界的封闭区域的个数。,图2-4-1三种基本结构的程序图,R1,R2,(a)顺序结构,V(G)=EN+2=12+2=1,(b)选择结构,V(G)=EN+2=44+2=2,(c)while结构,V(G)=EN+2=33+2=2,(d)until结构,V(G)=EN+2=33+2=2,2.4.2McCabe度量模型,程序结构的复杂性度量值V(G)取决于程序控制流的复杂程度。当程序内的分支数和循环数增加时,V(G)值将随之增加,即程序的复杂性增大。McCabe研究大量程序后指出,V(G)可作为程序规模的定量指标,V(G)值越高的程序往往是越复杂、越容易出问题的程序。McCabe建议模块规模应满足:V(G)10,【例2.5】程序流程图如图2-4-2所示,试求出其巡回秩数V(G),解:(1)画出程序流程图对应的程序图。,开始,a,b,c,h,g,f,d,e,i,结束,图2-4-3程序图,a,b,c,f,g,h,d,e,i,R1,R2,R3,R4,1,2,3,4,5,6,7,8,9,10,11,图2-4-2程序流程图,【例2.5】程序流程图如图2-4-2所示,试求出其巡回秩数V(G),(2)由程序图(或流图)可得:V(G)=EN+2=119+2=4(3)由程序图可以看出,其有界区域有R1、R2、R3共3个,还有1个无界区域R4,共4个封闭区域,所以:V(G)=4,a,b,c,f,g,h,d,e,i,R1,R2,R3,R4,1,2,3,4,5,6,7,8,9,10,11,2.4.3Halstead度量模型,20世纪70年代初,Halstead给出了称为文本复杂性度量的模型。它是根据统计程序中的操作符和操作数的个数来度量程序的复杂程度。程序可以看成是由操作符和操作数组成的符号序列。操作符是指程序中出现的语法符号,如+、if-then-else、while等。操作数是操作对象,如程序中定义或使用的变量、常量、数组、指针等。令:N1为程序中操作符出现的总个数,N2为程序中操作数出现的总个数。则程序的语言符号长度N定义为:N=N1+N2。,2.4.3Halstead度量模型,如果已经测得程序中不同操作符的个数n1和不同操作数的个数n2,则程序的长度N可用下式来估算:Nn1log2n1+n2log2n2(2-23)Halstead用下式来定义程序量(即程序在词汇上的复杂性):V=Nlog2(n1+n2)(2-24)Halstead还给出了预测错误数的公式如下:E=Nlog2(n1+n2)/3000(2-25),2.4.3Halstead度量模型,可以对多个某种程序设计语言的程序进行统计分析,从而得出每千代码行(KLOC)或每个功能点(FP)所包含的操作符和操作数个数CL或CF,于是,可以将程序语言符号长度N折合成相应的代码行数或功能点数。,课程名称:软件工程第6讲班级:日期:教室:教学题目:2.5软件可靠性度量教学目的:了解可靠性的概念、理解可靠性估算方法。教学重点:可靠性的概念、估算方法。教学难点:可靠性的概念、估算方法。教具:多媒体教室、电子教案作业:,2.5软件可靠性度量2.5.1软件可靠性的有关概念,1软件可靠性由于大型软件投入使用后还是要残留一定数量的错误。于是,当某些操作或输入数据导致遇到这些错误时,就会使程序失效,从而出现软件故障。软件可靠性定义为在某个给定时间间隔内,程序按照规格说明成功运行的概率。,1软件可靠性,令:随机变量t表示发生故障的时刻,t0,;函数f(t)为随机变量t的概率密度函数,F(t)表示分布函数;P(0tt1)表示从初始时刻到t1时刻程序发生故障的概率。设:初始时刻程序运行正常,即F(0)=0。于是有:F(t)=f(x)dx(2-26)f(t)=dF(t)(2-27),dt,0,t,令:Pf(t1)表示从0到t1时刻程序发生故障的概率,有:Pf(t1)=P(0tt1)=F(t1)F(0)=F(t1)如果在0,t区间程序成功运行的概率为Ps(t)、发生故障的概率为Pf(t),则有:Ps(t)+Pf(t)=1Ps(t)就是可靠性,一般标记为R(t)。由以上几个式子可导出:R(t)=1Pf(t)=1F(t)=1f(x)dx(2-28)上式说明,当软件残留的错误数一定时,程序运行的时间越长,发生故障的次数越多,软件的可靠性越小。,0,t,下面引入故障率函数Z(t),以比较一个程序在不同时期、或不同程序在同一时期的可靠性。设系统一直成功运行至时刻t,tt1,t1+t,P(t1tt1+t,tt1)是系统在t1,t1+t时间间隔且tt1时发生故障的概率。故障率函数Z(t1)的值定义为:Z(t1)=limP(t1tt1+t,tt1)/t(2-29)可以证明:Z(t)=(2-30)对式(2-28)的两端对时间t求导得:dF(t)/dt=dR(t)/dt,代入上式,得:=Z(t)dt(2-31),1R(t),dF(t)d(t),dR(t)R(t),对上式两端积分,利用初始条件R(0)=1,可得:R(t)=expZ(x)dx(2-32)上式即为可靠性和故障率的基本方程式。据此可以导出几个常用的故障模型:1)Z(t)=,其中是常数。将代入式(2-32),可得:R(t)=et(2-33)上式称为故障率为常数的可靠性模型。由于故障率是常数,可靠性将随着时间t的增加呈指数衰减。,t0,2)Z(t)=kt,这里k为常数,t0。将kt代入式(2-32),可得:R(t)=ekt2/2(2-34)上式称为故障率是时间的线性函数时的可靠性模型。即当存在损耗和退化时,故障率将随着时间的增加而线性增加。该模型一般不适合于软件产品。需要指出,软件中的错误一般都是人为的设计错误,其中多数是逻辑错误。随着对软件的测试及修复,软件系统中的错误会越来越少。因此,实际软件系统的故障率函数曲线应如图2-5-1所示,即软件故障率不是常数、也不是线性函数,而是按指数规律下降。实际的统计结果也说明了这一点。,图2-5-1软件系统故障率,Z(t),O,t,2软件的有效性及其度量,软件的有效性函数A(t)定义为软件系统在时刻t按照规格说明成功运行的概率。可靠性与有效性之间的差别是,可靠性强调软件系统在0t这段时间间隔内都有效,而有效性强调软件系统在时刻t这一时间点有效。A(200)=0.93表示假设有100个相同的系统同时启动运行,运行到200小时这一时刻,其中有93个处于正常运行状态,7个出现故障,等待修复。R(200)=0.93表示假设有100个相同的系统有93个无故障运行了200小时,有7个在此期间发生故障。,2软件的有效性及其度量,一般来说,对R(200)=0.93的要求比对A(200)=0.93的要求要严格得多。对于不可修复系统(即不允许程序停止运行的系统)或没有修复能力的情况:A(t)=R(t)对于可修复系统并能及时修复的情况:A(t)R(t)。,软件稳态有效性的两种度量方法,1)软件系统投入运行后,在一段时间内,可统计软件系统的故障停机时间tdi和正常运行时间tuj,则软件系统的稳态有效性为:A(t)=Tu/(Tu+Td)(2-35)其中:t=Tu+Td,Td=tdi,Tu=tuj,软件稳态有效性的两种度量方法,2)软件系统在稳态运行时,可统计其平均故障间隔时间MTBF(meantimebetweenfailurs,即程序正常运行时间的平均值)和平均修复时间MTTR(meantimetorepair,即平均停机时间),则软件系统的稳态有效性为:A=MTBF/(MTBF+MTTR)(2-36)采用上述方法,在开发阶段和投入运行后都可以定量地度量软件系统的有效性和可靠性。软件系统投入运行的一段时间内,可以用各种输入和操作来引发程序中残留的错误,经过多次修复后错误将逐渐减少,有效性和可靠性将不断提高。,2.5.2软件可靠性的估算,软件可靠性估算模型大致分为宏观和微观模型两类。宏观模型是从程序中残留错误数的角度建立模型,并用统计方法确定模型参数。而微观模型则以程序的控制结构和语句分析为基础。下面仅介绍几个典型的宏观模型。1残留错误总数的估算模型对残留错误总数的估算是可靠性估算的基础。典型的估算模型:错误植入模型;分别测试模型。,1)错误植入模型,Mills首先提出了估算程序中残留错误总数的错误植入模型。即在进行测试之前,由专人(比如统计人员)在程序中随机地植入一些错误(称为带有标记的错误),测试人员测试之后,通过统计测试人员发现的原有错误和植入错误的比例来估算程序中原有错误总数。设:Nt植入的错误数,n测试发现原有的错误数,nt发现植入的错误数,ET原有的错误总数。则有:ET/Ntn/nt于是ET的估算模型为:ET=Ntn/nt(2-37),2)分别测试模型,1973年,Hyman对错误植入模型做了改进,即用甲、乙两个程序测试员同时对一个程序的两个副本进行独立测试。设:ET程序中原有的残留错误总数,E1甲在0,时间内发现的错误数,E2乙在0,时间内发现的错误数,E0两人在0,时间内发现的相同的错误的个数,则有:ET=E1E2/E0(2-38)Hyman提出的分别测试模型无论在技术
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 片区污水处理厂建设项目风险评估报告
- 堤防绿化与生态恢复方案
- xx市供水系统设施更新项目技术方案
- 园林古建筑材料选用与技术标准方案
- 房屋建筑施工现场风险评估方案
- 校长在校本研修启动仪式上的讲话:祛虚、求实、问道
- 高中物理实验试题及答案
- 医师三基考试试题及答案
- 2025年矿山爆破器材试题及答案
- 一级造价工程师建设工程技术与计量试题及答案
- 人教版二年级数学上册第一单元测试卷(含答案)
- 人教版二年级数学上册第二单元 1~6的表内乘法素养达标卷(A)(含答案)
- 退休聘用保安协议书范本
- 110接处警课件培训
- 2025至2030复合磨机衬板行业发展趋势分析与未来投资战略咨询研究报告
- 财政局一体化培训课件
- 无痛纤维支气管镜术后的护理
- 高效沉淀池技术规程 T-CECA 20040-2024知识培训
- 移动通讯工具管理制度
- 《云计算与大数据技术》教学大纲(48学时版)
- 【员工培训研究的国内外文献综述2400字】
评论
0/150
提交评论