版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
软件工程
教材:主编曹哲高诚中国水利水电出版社教案:河北工业大学廊坊分院计算机系黄南川第2章河北工业大学廊坊分院计算机系经理管什么?计划预算组织进度标准什么是软件项目管理?第2章河北工业大学廊坊分院计算机系第2章 软件项目管理软件项目管理必须从项目的开头介入,并贯穿于整个软件生存周期的全过程。软件项目管理的范围主要集中于3个P上,即:People(人员)、Problem(问题)和Process(过程)。软件项目管理的主要任务是:根据选定的软件开发过程框架(即软件开发模型)和对其估算的结果制定软件项目实施计划;再根据计划对人员进行组织、分工;按照计划的进度,以及成本管理、风险管理、质量管理的要求,控制并管理软件开发和维护的活动,最终以最小的代价完成软件项目规定的全部任务。第2章河北工业大学廊坊分院计算机系第2章 软件项目管理软件项目的成本管理、软件质量管理和软件配置管理有一定的特殊性和独立性,可单独立项。任务分别是:成本管理估算软件项目的成本,作为立项和签合同的依据之一,并在软件开发过程中按计划管理经费的使用质量管理制定软件质量保证计划,按照质量评价体系控制软件质量要素,对阶段性的软件产品进行评审,对最终软件产品进行确认,确保软件质量配置管理制定配置管理计划,对程序、数据、文档的各种版本进行管理,确保软件的完整性和一致性第2章河北工业大学廊坊分院计算机系第2章 软件项目管理
2.1软件度量
2.2软件项目估算
2.3软件质量度量
2.4软件复杂性度量
2.5软件开发过程的管理
第2章河北工业大学廊坊分院计算机系软件度量是软件产品、软件开发过程或资源等属性的定量描述。如程序规模、操作符个数、程序中错误的个数等。面向规模的度量面向功能的度量2.1.1软件度量的基本概念第2章河北工业大学廊坊分院计算机系1)测量(measure):对产品或过程的某个属性的范围、数量、维度、容量或大小提供一个定量的指示。2)度量(metric):对系统、部件或过程的某一特性所具有的程度进行的量化测量。如软件质量度量等。3)估算(estimation):对软件产品、过程、资源等使用历史资料或经验公式等进行预测。如工作量、成本、完成期限等。估算一般用于立项、签订合同、制定工作计划等。4)指标(guideline):是一个度量或度量的组合,它可对软件产品、过程或资源提供更深入的理解。2.1软件的度量第2章河北工业大学廊坊分院计算机系产品指软件开发过程得到的文档和程序,如:需求规格说明、设计规格说明、源代码、测试报告等过程与软件项目有关的活动,如软件项目计划、开发活动、维护活动、管理活动等资源进行软件项目所需要的各种支持,如人力、经费、方法、工具、软硬件环境等2.软件项目管理的对象及其属性——对象第2章河北工业大学廊坊分院计算机系内部属性是指对象本身的属性,如软件产品的代码长度、模块化的程度、复杂性等。对象的外部属性体现了对象与环境的关系,如软件的可靠性、可维护性、可移植性、成本、人员的生产率等。对象的部分属性如表2-1所示。2.软件项目管理的对象及其属性——对象的属性第2章河北工业大学廊坊分院计算机系表2-1软件工程的产品、过程、资源的属性
产品过程资源内部属性程序代码行长度;程序功能;模块化;控制流结构;重用性;模块耦合度与内聚度。工作量;计划及进度;事件。人员;方法;工具;环境;经验。外部属性软件的可靠性;软件的可理解性;软件的有效性;软件的可用性;软件的可维护性;软件的可移植性。成本;可控制性;可观察性;稳定性。成本;生产率;时间。第2章河北工业大学廊坊分院计算机系直接度量对不依赖于其他属性的简单属性的测量。如软件的模块数、程序的代码行数、操作符的个数,工作量、成本等。度量分类间接度量即对涉及若干个其他属性的软件要素、准则或属性的度量。如软件的功能性、复杂性、可靠性、可维护性等等。.3.软件度量的分类第2章河北工业大学廊坊分院计算机系图2-1-1两侧面间关系面向规模的度量面向功能的度量面向人的度量生产率度量质量度量技术度量第2章河北工业大学廊坊分院计算机系2.1.2面向规模的度量
面向规模的度量是以软件的代码行(LOC,LineofCode)数为基础的直接度量。
L表示软件的代码行数,单位为KLOC(千行代码)或LOC;
E表示开发软件所需工作量,单位为人月(PM)或人年(PY);
S表示软件成本,单位为美元或元;
N表示错误个数;
Pd表示软件文档页数;
M表示开发所用的人数。第2章河北工业大学廊坊分院计算机系1.软件开发的生产率P:P=L/E
(平均每人月开发的代码行数,单位:LOC/PM)2.开发每行代码的平均成本C:C=S/L
(单位:美元/LOC或元/LOC)3.代码出错率EQR:EQR=N/L
(每千行代码的平均错误数,单位:个/KLOC)4.软件的文档率D:D=Pd/L
(平均每千行代码的文档页数,单位:页/KLOC)2.1.2
面向规模的度量第2章河北工业大学廊坊分院计算机系优点:简单、直接。缺点:①代码行数的估算依赖于程序设计语言的功能和表达能力。②对设计精巧的软件项目产生不利影响。③在开发初期估算代码行十分困难。④只适用于过程式程序设计语言。2.1.2
面向规模的度量第2章河北工业大学廊坊分院计算机系【例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章河北工业大学廊坊分院计算机系2.1.3面向功能的度量1.简单功能点度量
1979年,Albrecht首先提出了功能点度量方法。这是一种面向功能的间接度量方法,即从软件定义的基本功能出发,来估算软件系统的规模。因此,该方法可以在软件开发项目的初期,在软件定义过程中即可预测待开发软件的规模。第2章河北工业大学廊坊分院计算机系1.简单功能点度量功能点FP的度量公式如下:FP=CT×TCF=CT[0.65+0.01∑Fi]
(2-5)其中:
CT——基本功能点。
CT值按表2-2来计算,它的值为5个参数加权值的总和。14i=1第2章河北工业大学廊坊分院计算机系表2-2简单功能点度量的基本功能点的计算测量参数值加权因子加权值简单一般复杂用户输入数×3×4×6=用户输出数×4×5×7=用户查询数×3×4×6=文件数×7×10×15=外部接口数×5×7×10=
基本功能点CT第2章河北工业大学廊坊分院计算机系表2-2中的5个参数的含义1)用户输入数:用户为软件系统提供的输入参数的个数(不包括查询);2)用户输出数:软件为用户提供的输出参数(报告、屏幕帧、错误信息等)的个数;3)用户查询数:一次联机输入导致软件以联机输出方式实时产生一个响应的个数;4)文件数:逻辑主文件的个数;5)外部接口数:机器可读的接口(如磁盘或磁带上的数据文件等)的个数。第2章河北工业大学廊坊分院计算机系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—极重要的影响。由此可见,∑Fi的值在0~70之间变化,因此,TCF取值范围:0.65~1.35。第2章河北工业大学廊坊分院计算机系表2-3Fi
取值表i因素Fii因素Fi1234567需要可靠的备份和恢复吗?需要数据通信吗?有分布式处理的功能吗?性能是关键吗?在现存实用的操作环境下运行吗?需要联机数据入口吗?联机数据入口需要用输入信息构造复杂的界面或操作吗?891011121314
需要联机更新主文件吗?输入、输出、文件、查询复杂吗?内部处理过程复杂吗?要求代码设计可重用吗?设计中包含转换和安装吗?系统设计支持不同组织的多次安装吗?系统设计有利于用户的修改、使用吗?第2章河北工业大学廊坊分院计算机系2.功能点度量简单功能点度量方法没有直接考虑软件本身的算法的复杂性问题。所以它仅适用于度量算法简单的事务处理等系统。1986年Jones对简单功能点度量进行了推广,在计算软件系统的基本功能点CT时,引入了算法复杂性因素,即使用表2-4计算CT。我们称这种推广的度量方法为功能点度量。这两种方法对一般的事务处理系统等算法简单的软件系统计算出来的FP值基本相同,但对于较复杂的软件系统,功能点度量方法比简单功能点度量方法计算出来的FP值要高20%~35%。第2章河北工业大学廊坊分院计算机系表2-4推广的功能点度量的基本功能点的计算测量参数值权值加权值用户输入数×4=用户输出数×5=用户查询数×4=文件数×7=外部接口数×7=复杂算法数×3=基本功能点CT第2章河北工业大学廊坊分院计算机系用功能点计算软件项目的有关参考量:1)生产率P(平均每人月开发的功能点数,以功能点/PM为单位):
P=FP/E(2-6)2)平均成本C(以美元/功能点或元/功能点为单位):
C=S/FP(2-7)第2章河北工业大学廊坊分院计算机系用功能点计算软件项目的有关参考量:3)代码出错率EQR(即每功能点的平均错误数,以个/功能点为单位)为:
EQR=N/FP(2-8)
4)软件的文档率D(即平均每功能点的文档页数,以页/功能点为单位)为:
D=Pd/FP
(2-9)第2章河北工业大学廊坊分院计算机系3.功能点度量方法的优缺点优点:①可用于软件项目开发的初期阶段的项目估算。因为在可行性研究和需求分析阶段已能基本确定输入、输出等各个参考量;②与程序设计语言无关。适合于过程或非过程式语言。缺点:①某些参考量的收集有一定困难;②度量值的主观因素较多,如Fi取值;③功能点FP本身没有直观的物理意义。第2章河北工业大学廊坊分院计算机系4.软件的代码行与功能点的关系软件的功能点数和选用的程序设计语言无关,但对于同一个软件(功能点数已定),如用不同的程序设计语言来实现,所得到的软件的代码行数可能会有较大差别。Albrecht等人通过多个软件统计出了用不同程序设计语言实现每个功能点所需代码行数,即计算出各语言的LOC/FP的平均值,如表2-5所示。第2章河北工业大学廊坊分院计算机系表2-5部分程序设计语言LOC/FP平均值的比较程序设计语言LOC/FP程序设计语言LOC/FP汇编语言C语言COBOLFORTRANPascal3201281057190Ada面向对象语言第四代语言(4GL)代码生成器图形语言(图标)
493020154第2章河北工业大学廊坊分院计算机系2.2软件项目估算常用的软件项目的估算方法主要有以下4种1.自顶向下的估算方法2.自底向上的估算方法3.差别估算法4.根据经验估算公式2.2.1软件项目的估算方法第2章河北工业大学廊坊分院计算机系基本思想:首先根据已完成项目的总成本或总工作量来推算待开发软件的总成本或总工作量,然后再按比例将其分配到各开发任务中去。即从整体到局部。优点:估算工作量小、速度快。缺点:对项目中的特殊困难估计不足,有可能产生遗漏,估算出的值盲目性较大。1.自顶向下的估算方法第2章河北工业大学廊坊分院计算机系2.自底向上的估算方法基本思想是:把待开发软件细分,直到每一个子任务或阶段都已经明确所需要的开发工作量或成本,然后再把它们累加起来,得到待开发软件的总工作量或总成本。优点:计算各个部分的准确性较高。缺点:缺少各个子任务之间相互联系的工作量和系统工作量(如项目管理、配置管理、质量管理),估算值往往偏低,必须用其他方法进行校正。第2章河北工业大学廊坊分院计算机系3.差别估算法基本思想:把待开发的软件项目与过去完成的软件项目进行比较,从各子任务中区分出类似的和不同的部分。类似的部分按已知的实际量计算,不同的部分则采用某种方法进行估算。差别估算法综合了以上两种方法的优点。优点:估算的准确程度高。缺点:不容易划分相似的界限。第2章河北工业大学廊坊分院计算机系4.根据经验估算公式通过众多实际软件项目的经验,总结出一些有价值的软件成本和工作量估算的经验模型。这些模型对于软件项目管理具有一定的指导意义和验证效果。第2章河北工业大学廊坊分院计算机系估算方法举例【例2.2】Boehm给出了“软件库存情况更新”项目采用自顶向下估算方法的一个参考例子,由过去已完成的项目的工作量,估算出该项目的总工作量为53。然后将其按比例分配到各个阶段,如表2-6所示。从中可以看出软件开发各阶段工作量的分配情况。第2章河北工业大学廊坊分院计算机系表2-6软件项目的自顶向下估算
软件库存情况更新开发者:W.Ward日期:2/8/82阶段任务工作量(1/53)小计(1/53)可行性研究与需求分析软件需求定义56开发计划1概要设计概要设计610初步用户手册3测试计划1详细设计详细PDL描述412数据定义4测试数据及过程设计2正式的用户手册2编码编码616单元测试10组装与联合测试编写文档49组装与联合测试5总计53第2章河北工业大学廊坊分院计算机系2.2.2代码行和功能点的估算采用2.2.1中介绍的估算方法可以估算出代码行或功能点的乐观值a、一般值m和悲观值b,并用如下的加权平均公式计算LOC或FP的期望值(expectation):
X=(a+4m+b)/6(2-10)
软件的LOC或FP的期望值估算出来后,就可以根据已有的标准生产率对成本和工作量等进行估算了。第2章河北工业大学廊坊分院计算机系【例2.3】对CAD软件项目进行估算解:这里采用自底向上的估算方法。即首先,将CAD项目按功能分解为7个子项目,并估算出每个子项目LOC的乐观值a、一般值m和悲观值b,由此可估算出每个子项目的代码行的期望值X。在根据已知的开发类似子项目的生产率P和平均成本C即可估算出每一个子项目的成本和工作量,最后将7个子项目的成本和工作量分别累加,即可估算出软件项目的总成本S和总工作量E。估算的各种值如表2-7所示。第2章河北工业大学廊坊分院计算机系表2-7采用加权平均、自底向上方法估算代码行、成本和工作量子项目a(LOC)m(LOC)b(LOC)X(LOC)每行成本C(美元/LOC)生产率P(LOC/PM)成本S(美元)
工作量(PM)用户接口控制180024002700235014315329007.5二维几何造型41005200750054002022010800024.5三维几何造型48006900870068502022013700031.1数据库管理2900350037003350182406030013.9图形显示40004900640050002220011000025.0外设控制2000210025002150281406020015.4设计分析66008500980084001830015120028.0总计33500659600145.4第2章河北工业大学廊坊分院计算机系估算的组织实施为了使估算更准确,可以组织几个专家采用无记名的方式分别填写表2-7,然后组织者计算出这几个表格的平均值;这一过程可反复几次,直到获得一个得到多数专家共识的软件规模。另外,还可以将每个子项目再按生存周期划分,估算其各阶段的工作量,再累加求出每个子项目的工作量和整个项目的工作量。可将用几种方法估算的结果进行比较来验证估算的准确性。第2章河北工业大学廊坊分院计算机系2.2.3软件项目的经验估算模型1.IBM模型——1977年,IBM公司对60个软件项目的数据利用最小二乘法拟合,得到的经验估算公式:
E=5.2×L0.91
(2-11)
D=4.1×L0.36=2.136×E0.3956
(2-12)
S=0.54×E0.6
(2-13)
DOC=49×L1.01
(2-14)其中:E为工作量(PM);L为源代码行数(KLOC);
D为项目持续的时间,以月为单位;
S为人员需要量(人);DOC为文档数量(页)。第2章河北工业大学廊坊分院计算机系2.Putnam模型1978年,Putnam提出了大型软件项目的动态多变量估算模型。该模型以工作量在30人年以上的大型软件项目的实测数据为依据,推导出了工作量分布曲线,如图2-2-1所示。图中的工作量分布曲线的形状与著名的Rayleigh-Norden曲线相似。第2章河北工业大学廊坊分院计算机系图2-2-1软件项目的工作量分布曲线系统定义功能设计规格说明设计编码测试和确认维护管理系统定义、需求分析开发运行维护0开发占总工作量的40%维护占总工作量的60%总工作量td时间t(年)工作量(人年)第2章河北工业大学廊坊分院计算机系2.Putnam模型Putnam估算模型如下:
L=CkE1/3td4/3Ck为技术状态常数,与开发环境有关,如下:
2000较差,没有方法学的支持,缺乏文档和评审,采用批处理方式;Ck
=8000一般,有方法学的支持,有适当的文档和评审,采用交互处理方式;
11000较好,有集成化的CASE工具和环境。E=L3/(Ck3td4)第2章河北工业大学廊坊分院计算机系R-N分布线性分布01234t(年)td人年数\年图2-2-2概率密度第2章河北工业大学廊坊分院计算机系图2-2-2人力资源的分配初级技术人员高级技术人员管理人员验收测试组装测试单元测试编码详细设计概要设计需求分析系统定义人数第2章河北工业大学廊坊分院计算机系Putnam模型的优缺点优点:揭示了软件项目的源程序代码长度、软件开发时间和工作量三者之间的关系,在理论上有重要意义。缺点:准确程度不高。没有反映软件产品、项目、参加人员、软硬件资源等属性。第2章河北工业大学廊坊分院计算机系3.CoCoMo模型(构造性成本模型)CoCoMo模型按其详细程度分三个层次:
基本CoCoMo模型;
中间CoCoMo模型;
详细CoCoMo模型。2.2.3软件项目的经验估算模型第2章河北工业大学廊坊分院计算机系(1)基本CoCoMo模型其工作量和开发时间的估算公式如下:
E=aLb
D=cEd
其中:
L——软件代码行的估算值(以KLOC计);
E——工作量(以PM计);
D——开发时间(以月计);
a、b、c、d——经验常数。第2章河北工业大学廊坊分院计算机系表2-8a、b、c、d参数值的选取软件类型abcd适应领域组织型2.41.052.50.38一般应用程序半独立型3.01.122.50.35实用程序、编译程序等嵌入型3.61.202.50.32实时控制程序、操作系统第2章河北工业大学廊坊分院计算机系(2)中间CoCoMo模型中间CoCoMo模型在估算工作量时,在基本CoCoMo模型的基础上再乘以由15个因素组成的工作量调节因子EAF,于是有:
E=aLbEAF=aLb∏Fi
其中:
L——软件的代码行数(以KLOC计);
E——工作量(以PM计);
a、b——经验常数;i=115第2章河北工业大学廊坊分院计算机系表2-9a、b参数的取值软件类型ab组织型3.21.05半独立型3.01.12嵌入型2.81.20第2章河北工业大学廊坊分院计算机系(2)中间CoCoMo模型工作量调节因子EAF与软件的产品的取值属性、计算机属性、人员属性、项目属性等因素有关。这15个因素Fi(i=1~15)的值可按等级取值,即可分为很低、低、正常、高、很高、极高,共6级。正常情况下Fi=1。Boehm推荐的Fi值的范围是.70~1.66,F
i的值可根据实际情况按表2-10来选取。工作量E求出之后,就可以用公式(2-18)即D=cEd计算出开发时间D。第2章河北工业大学廊坊分院计算机系(3)详细CoCoMo模型详细CoCoMo模型的基本工作量(指EAF=1时的工作量)公式、开发时间公式与中间CoCoMo模型相同。所不同的是详细CoCoMo模型在计算EAF时针对每个影响因素,分层次(系统层、子系统层、模块层)并按软件生存周期分阶段给出工作量因素的分级表。详细CoCoMo模型可以更准确地估算软件项目的工作量。第2章河北工业大学廊坊分院计算机系表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.301.301.701.40第2章河北工业大学廊坊分院计算机系通信工作量由N个程序员组成的程序员小组的通信数量:
C(N)=N(N-1)/2设:每两个人之间通信的平均工作量为μ则:N人的程序员小组增加的通信工作量为:
EC=μC(N)=μN(N-1)/2(2-20)则该小组的总工作量ET为:
ET=E+EC
(2-21)第2章河北工业大学廊坊分院计算机系通信工作量如图,由3人组成的程序员小组的通信数量:
C(3)=3(3-1)/2=3而由5人组成的程序员小组的通信数量:
C(5)=5(5-1)/2=10。当程序员小组的人数较多时,通信工作量EC≈μN2/2与人数的平方成正比,从而使程序员小组的生产率随着人数的增加而迅速下降。由此可见,当在开发的后期发现不能按时交货时,临时盲目增加程序员将会更加推迟交货的日期。第2章河北工业大学廊坊分院计算机系通信数图2-2-4N=3和N=5时的通信数第2章河北工业大学廊坊分院计算机系4.COCOMOⅡ模型简介COCOMOⅡ提供了3个层次的软件开发工作量-进度估算模型,其估算的详细程度逐步增加。①应用组装模型该层次的模型可用于“应用组装”类型的软件项目的开发工作量-进度的估算;也可用于“应用程序生成器”、“系统集成”、“基础结构”等类型的软件项目的最早阶段或螺旋周期的原型开发阶段,以便解决像软件/系统交互、用户界面、性能和技术等的风险问题,该模型也适用于后期阶段的原型开发。这类软件项目或原型的开发可充分利用现成的构件。②早期设计模型该模型适用于“应用程序生成器”、“系统集成”、“基础结构”等类型的软件项目的早期设计阶段,以便确定软件或系统的体系结构或增量开发策略和操作概念、制定生命周期计划等。③后体系结构模型早期设计阶段结束,即已开发了软件生命周期体系结构,确认了系统任务、风险、操作概念、生命周期计划,建立了产品的框架后,即可采用该模型对软件产品的实际开发与维护进行有效的估算。第2章河北工业大学廊坊分院计算机系COCOMOⅡ模型系列的估算公式①后体系结构模型公式
——软件开发工作量代码行的非线性函数:E=aLb∏Fi
(2-22)b=c+0.01∑
Wj
(2-23)在式2-22中,L为软件的代码行数;
E为工作量(以PM计);
a为工作量系数;
b为工作量指数;工作量调节因子Fi(i=1~17)可分为很低、低、正常、高、很高、极高,共6级。正常情况下Fi=1。Fi的值可以根据实际情况按表2-12来选取。i=117j=15第2章河北工业大学廊坊分院计算机系工作量调节因子Fi的取值Fi属性含义很低低正常高很高极高产品
属性F1软件可靠性(RELY)0.820.921.001.101.26F2数据库规模(DATA)0.901.001.141.28F3软件复杂性(CPLX)0.730.871.001.171.341.74F4可重用性(RUSE)0.951.001.071.151.24F5文档级别(DOCU)0.810.911.001.111.23平台
属性F6执行时间约束(TIME)1.001.111.291.63F7内存约束(STOR)1.001.051.171.46F8平台变更率(PVOL)0.871.001.151.30人员
属性F9分析员的能力(ACAP)1.421.191.000.850.71F10程序员的能力(PCAP)1.341.151.000.880.76F11应用领域经验(APEX)1.221.101.000.880.81F12平台经验(PLEX)1.191.091.000.910.85F13语言和工具经验(LTEX)1.201.091.000.910.84F14人员连续性(PCON)1.291.121.000.900.81项目
属性F15多地点开发(SITE)1.221.091.000.930.860.80F17软件工具的使用(TOOL)1.171.091.000.900.78F17开发进度约束(SCED)1.431.141.001.001.00第2章河北工业大学廊坊分院计算机系后体系结构模型比例因子Wj的取值Wj比例因子含义很低低正常高很高极高W1项目先例性(PREC)6.204.963.722.481.240.00W2开发灵活性(FLEX)5.074.053.042.031.010.00W3体系结构与风险排除(RESL)7.075.654.242.831.410.00W4团队凝聚力(TEAM)5.484.383.292.191.100.00W5过程成熟度(PMAT)7.806.244.683.121.560.00第2章河北工业大学廊坊分院计算机系②早期设计模型公式该模型也是把软件开发工作量表示成代码行的非线性函数:E=aLb∏Fi
(2-24)b=c+0.01∑
Wj
(2-25)式2-24与式2-22基本相同,所不同的是其工作量调节因子Fi(i=1~7)只有7个,是将后体系结构的17个调节因子分类组合而成。Fi的值可以根据实际情况按表2-14来选取。由表2-14可见,由于是多个调节因子组合成一个调节因子,因此,其等级分为极低、很低、低、正常、高、很高、极高,共7级。该阶段估算的细致程度与所获得的数据的细致程度相一致,与后体系结构模型相比较,是较粗粒度的估算。i=175j=1第2章河北工业大学廊坊分院计算机系早期设计工作量调节因子Fi的取值Fi调节因子含义极低很低低正常高很高极高对应后体系结构调节因子的组合F1产品可靠性与复杂性(RCPX)0.490.600.831.001.331.912.72RELY、DATA、CPLX、DOCUF2可复用性开发(RUSE)0.951.001.071.151.24RUSEF3平台难度(PDIF)0.871.001.291.812.61TIME、STOR、PVOLF4人员能力(PERS)2.121.621.261.000.830.630.50ACAP、PCAP、PCONF5人员经验(PREX)1.591.331.121.000.870.740.62APEX、PLEX、LTEXF6设施(FCIL)1.431.301.101.000.870.730.62TOOL、SITEF7要求的开发进度(SCED)1.431.141.001.001.00SCED第2章河北工业大学廊坊分院计算机系③COCOMOⅡ进度估算模型COCOMOⅡ提供了用于早期设计和后体系结构阶段的简单的进度估算公式。D=(d×Ef标称)×g/100 (2-26)f=(e+0.2×(b–c))(2-27)其中,D为开发时间(即进度),以月(Mo)为单位,以瀑布模型为例,指的是从确认一个产品的需求直到验证产品已经满足需求为止的整个开发时间;d为进度系数;E标称为不考虑SCED工作量调节因子时所估算的工作量,称为标称工作量(以PM计);g为要求的进度压缩或扩展的百分数;f为进度指数;e为进度基本指数;b为工作量指数;c为工作量基本指数。 以上几个COCOMOⅡ公式中的参数典型值为
a=2.94,c=0.91,d=3.67,e=0.28第2章河北工业大学廊坊分院计算机系【例2.5】设有一个软件开发项目的体系结构和需求已经确认,项目规模(包括新开发的代码行和复用改编折算的代码行)为100KLOC,试估算该项目当要求进度压缩为标称进度的75%(即g=75)时的开发时间和开发成本。假设估算时所有的工作量调节因子Fi和比例因子Wj都取正常值、承担该项目的开发组织的平均工资为W=6000元/PM。解:由于该项目的体系结构已经确立,所以应采用COCOMOⅡ的后体系结构模型来估算工作量:b=c+0.01∑
Wj=0.91+0.01×(3.72+3.04+4.24+3.29+4.68)≈1.01E标称=aLb∏Fi=2.94×1001.01×∏1.00≈308PM该项目的进度(即开发时间,单位以月(Mo)计)为:f=e+0.2×(b–c)=0.28+0.2×(1.01–0.91)=0.3D=(d×Ef标称)×=3.67×3080.3×75/100≈15.4Mo进度压缩后的实际估算工作量为:E=aLb∏
Fi=2.94×1001.01×∏1.00×1.43≈440PM软件开发成本为:S=E×W=440×6000=2640000元161617165第2章河北工业大学廊坊分院计算机系成功的标准:2.3软件质量度量失败的根本原因:
用户在用用户可很容易做完要做的事开发人员写出的东西达不到用户要求(人的问题、技术问题)第2章河北工业大学廊坊分院计算机系2.3软件质量度量软件质量是软件的生命。它作为软件工程的一部分,贯穿于整个软件生存周期之中。生产高质量的软件产品是软件工程的首要目标。由于软件是逻辑产品,软件质量很难直接度量。因此,应当给出软件质量的科学的、实用的定义,并通过一定的度量模型进行度量,以便在整个软件生存周期中对其进行评价和控制。第2章河北工业大学廊坊分院计算机系2.3.1软件质量的定义1983年,ANSI/IEEEstd729标准给出了软件质量的定义如下:软件质量是软件产品满足规定的和隐含的与需求能力有关的全部特征和特性,包括:
1.软件产品满足用户要求的程度;
2.软件拥有所期望的各种属性的组合程度;
3.用户对软件产品的综合反映程度;
4.软件在使用过程中满足用户需求的程度。第2章河北工业大学廊坊分院计算机系2.3.2软件质量的度量模型软件质量与软件的内部特性及其组合有关。要度量软件质量,就应根据这些内部特性(即软件属性)建立起软件度量模型,进而构建软件质量度量体系。1976年,Boehm提出了定量度量软件质量的概念,他给出了软件质量的层次模型,并给出了60个软件质量度量公式;1978年,Walters和McCall提出了三层次软件质量度量模型;1985年,ISO提出了SQM(SoftwareQualityMetric,软件质量度量)工作报告等等。第2章河北工业大学廊坊分院计算机系1.McCall等人的软件质量度量模型McCall等人提出了由软件质量要素、评价准则、定量度量三个层次组成的三层次度量模型。其中:第一层是将对软件质量的度量归结为对直接影响软件质量的若干个软件质量要素的度量;第二层是用若干个可度量的评价准则来间接度量软件质量要素;第三层是对相应评价准则的直接度量。第2章河北工业大学廊坊分院计算机系图2-3-1软件质量三层次度量模型要素j评价准则1评价准则2评价准则L度量1度量2度量L……第2章河北工业大学廊坊分院计算机系2.软件质量要素软件质量要素(factor)是指直接影响软件质量的软件质量特性。随着对软件质量的认识的逐步提高,软件质量要素也可能有所变化。当时McCall等人认为,软件质量由11个软件质量要素来衡量。这11个质量要素可划分为三类:面向运行特征的软件质量要素有正确性、可靠性、有效性、完整性和可用性;面向软件承受修改的质量要素有可维护性、灵活性、可测试性;面向转移的软件质量要素有可移植性、可重用性、可互操作性。这三类要素构成了软件质量的三个侧面,如图2-3-2所示。第2章河北工业大学廊坊分院计算机系图2-3-2软件质量要素的构成产品修正产品转移产品运行可维护性灵活性可测试性可移植性可重用性可互操作性正确性可靠性有效性完整性可用性第2章河北工业大学廊坊分院计算机系质量要素新概念正确性1程序满足需求规格说明及用户目标的程度2指对未授权人员访问程序或数据加以控制的程度;完整性3
指学习使用软件(即操作软件、准备输入数据、解释输出结果等)的难易程度可用性第2章河北工业大学廊坊分院计算机系质量要素新概念灵活性4指改变一个操作的顺序所需工作量的多少5指测试软件以便使其具有预定功能所需工作量的多少可测试性6指程序与其他系统相互交换并使用信息的能力可互操作性第2章河北工业大学廊坊分院计算机系2.软件质量要素软件质量要素不是独立的,一个要素可能与其他几个要素有关系,如表2-12所示,其中:
正相关以“√”表示,负相关以“×”表示。对于具有负相关的质量要素,在开发时应根据具体情况加以取舍或进行折衷。例如,对于实时控制系统,必须确保系统的可靠性和有效性,而软件的可重用性、可移植性等质量要素就可以放宽要求。第2章河北工业大学廊坊分院计算机系质量要素间的关系要素关系要素正确性可靠性有效性完整性可用性可维护性灵活性可测试性可移植性可重用性可互操作性正确性
可靠性√有效性完整性×
可用性√√×
√可维护性√√×
√灵活性√√×
×
√√可测试性√√×
√√√可移植性×
√√可重用性×
×
×
√√√√可互操作性×
×
√第2章河北工业大学廊坊分院计算机系3.软件质量要素的评价准则软件质量要素一般很难直接测量。为了对11个要素进行度量,McCall等人通过确定影响软件质量要素的属性,定义了21个软件质量要素的评价准则。这些评价准则既能够比较完整、准确地描述软件质量要素,又比较容易测量。通过这组评价准则就可以间接测量软件质量要素,进而度量整个软件质量。第2章河北工业大学廊坊分院计算机系评价准则新概念1)可审查性(audit-ability):检查软件需求、文档、过程、标准等是否一致的难易程度;2)准确性(accuracy):计算和控制的精确程度;3)简明性(conciseness):程序源代码的紧凑程度;4)通信通用性(communicationcommonality):使用标准接口、协议和带宽的程度;5)数据通用性(datacommonality):在程序中使用标准数据结构和类型的程度;6)容错性(error-tolerance):在各种异常情况下软件能继续提供操作的能力;第2章河北工业大学廊坊分院计算机系评价准则新概念7)执行效率(executionefficiency):软件运行效率;8)可扩充性(expandability):结构、数据、过程等设计可以扩充的程度;9)通用性(generality):程序潜在应用领域的多少;10)硬件独立性(hardwareindependence):软件与其运行的硬件环境无关的程度;11)检测性(instrumentation):程序监视自身运行并标识错误的程度;12)可操作性(operability):操作该软件的难易程度;第2章河北工业大学廊坊分院计算机系评价准则新概念13)安全性(security):控制或保护程序和数据不被破坏、非法访问等机制的能力;14)自文档化(self-documentation):源代码提供自身说明文档的程度;15)简单性(simplicity):程序易于理解的程度;16)软件独立性(softwareindependence):软件与非标准编程语言特征、操作系统特征等软件环境约束无关的程度;17)易培训性(training):软件对使用它的新用户的支持程度。第2章河北工业大学廊坊分院计算机系质量要素与评价准则的关系
评价准则
关系质量要素可追踪性完全性一致性容错性准确性简单性可操作性执行效率可审查性检测性安全性数据通用性可扩充性通用性硬件独立性简明性通信通用性自文档化软件独立性易培训性模块化正确性√√√可靠性√√√√有效性√√√完整性√√√可用性√√可维护性√√√√√√灵活性√√√√√√√可测试性√√√√√可移植性√√√√√可重用性√√√√√可互操作性√√√√第2章河北工业大学廊坊分院计算机系4.软件质量要素的度量第j种软件质量要素Fj(j=1,2,…,11)的计算公式为:
Fj=∑CjkMk
(2-21)其中:Mk是第j种软件质量要素Fj对第k种评价准则的测量值。评价准则多数只能按主观想法定值。McCall将每个评价准则都划分为0~10级,并且Mk的值可以在0,0.1,0.2,…,1.0中取一个。加权系数Cjk满足∑Cjk=1,Cjk≥0。
Cjk=0表示质量要素与第k种评价准则无关。第2章河北工业大学廊坊分院计算机系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.1×0.7+0.3×0.6+0.4×0.5+0.2×0.8=0.61第2章河北工业大学廊坊分院计算机系ISO三层次软件质量度量模型。1985年,国际标准化组织也提出了三层次软件质量度量模型。其中:高层称为软件质量需求评价准则(SQRC),并由正确性、可容性、有效性、安全性、可用性、可维护性、灵活性、可互操作性等8个要素组成;中层称为软件质量设计评价准则(SQDC),并由可追踪性、完全性…、等共23个评价准则组成;低层称作软件质量度量评价准则(SQMC)。ISO认为,应对高层和中层建立国际标准,而低层可由各使用单位自行制定。第2章河北工业大学廊坊分院计算机系2.4软件复杂性度量通过软件的复杂性度量值可以估算出软件中故障的数量;也能估算出软件开发所需的工作量;定量度量的结果还可以用于比较不同设计方案的优劣。同时,软件的复杂性也能从某些方面影响软件的可维护性、可靠性等软件质量要素。
因此,软件复杂性度量是软件度量的一个重要组成部分。第2章河北工业大学廊坊分院计算机系2.4.1软件复杂性的概念及度量原则1.软件复杂性的概念K.Magel
从6个方面来描述软件复杂性:
1)理解程序的难度;
2)维护程序的难度;
3)向其他人解释程序的难度;
4)按指定方法修改程序的难度;
5)根据设计文件编写程序的工作量;
6)执行程序时需要资源的多少。软件复杂性反映了软件的可理解性、模块化、简单性等属性。第2章河北工业大学廊坊分院计算机系2.软件复杂性度量的原则软件复杂性的度量,的一些基本原则:
1)软件的复杂性与其规模的关系不是线性的;
2)数据结构复杂的程序较复杂;
3)控制结构复杂的程序较复杂;
4)转向语句使用不当的程序较复杂;
5)循环结构比选择结构复杂、选择结构比顺序结构复杂;
6)语句、数据、子程序模块等出现的顺序对复杂性有影响;第2章河北工业大学廊坊分院计算机系2.软件复杂性度量的原则7)非局部变量较多的程序较复杂;8)参数按地址调用(Callbyreference)比按值调用(Callbyvalue)复杂;9)函数副作用比显式参数传递难理解;10)作用不同的变量同名时较难理解;11)模块、过程间联系密切的程序较复杂;12)程序嵌套层数越多越复杂。以上这些基本原则是指导我们进一步研究定量度量软件复杂性的基础。第2章河北工业大学廊坊分院计算机系2.4.2McCabe度量模型McCabe给出了程序控制结构图G的巡回秩数V(G)作为程序控制结构复杂性的度量,其度量模型为:
V(G)=E–N+2(2-22)其中:E——程序图G中边的总数;
N——程序图中结点的总数。
V(G)又称为图G的环形复杂度。可以证明,V(G)的值等于结构图中有界和无界的封闭区域的个数。第2章河北工业大学廊坊分院计算机系R1三种基本结构的程序图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章河北工业大学廊坊分院计算机系2.4.2McCabe度量模型程序结构的复杂性度量值V(G)取决于程序控制流的复杂程度。当程序内的分支数和循环数增加时,V(G)值将随之增加,即程序的复杂性增大。McCabe研究大量程序后指出,V(G)可作为程序规模的定量指标,V(G)值越高的程序往往是越复杂、越容易出问题的程序。McCabe建议模块规模应满足:V(G)≤10第2章河北工业大学廊坊分院计算机系【例2.6】程序流程图如图2-4-2所示,试求出其巡回秩数V(G)解:(1)画出程序流程图对应的程序图。开始abchgfdei结束图2-4-3程序图abcfghdeiR1R2R3R41234567891011图2-4-2程序流程图第2章河北工业大学廊坊分院计算机系(2)由程序图(或流图)可得:abcfghdeiR1R2R3R41234567891011(3)由程序图可以看出,其有界区域有R1、R2、R3共3个,还有1个无界区域R4,共4个封闭区域,所以:V(G)=E–N+2=11–9+2=4
V(G)=4【例2.5】程序流程图如图2-4-2所示,试求出其巡回秩数V(G)第2章河北工业大学廊坊分院计算机系2.4.3Halstead度量模型20世纪70年代初,Halstead给出了称为文本复杂性度量的模型。它是根据统计程序中的操作符和操作数的个数来度量程序的复杂程度。程序可以看成是由操作符和操作数组成的符号序列。操作符是指程序中出现的语法符号,如+、–、if-then-else、while等。操作数是操作对象,如程序中定义或使用的变量、常量、数组、指针等。令:N1为程序中操作符出现的总个数,
N2为程序中操作数出现的总个数。则程序的语言符号长度N定义为:N=N1+N2。第2章河北工业大学廊坊分院计算机系2.4.3Halstead度量模型如果已经测得程序中不同操作符的个数n1和不同操作数的个数n2,则程序的长度N可用下式来估算:
N≈n1log2n1+n2log2n2
(2-23)Halstead用下式来定义程序量(即程序在词汇上的复杂性):
V=Nlog2(n1+n2
)(2-24)Halstead还给出了预测错误数的公式如下:
E=Nlog2(n1+n2
)/3000(2-25)第2章河北工业大学廊坊分院计算机系2.4.3Halstead度量模型可以对多个某种程序设计语言的程序进行统计分析,从而得出每千代码行(KLOC)或每个功能点(FP)所包含的操作符和操作数个数CL或CF,于是,可以将程序语言符号长度N折合成相应的代码行数或功能点数。第2章河北工业大学廊坊分院计算机系2.5软件开发过程的管理在前几节中介绍了软件度量和估算,这些即是评价软件的重要依据,也是软件开发过程管理的组成部分和基础。在本节中将介绍软件项目管理的过程、风险分析,软件开发计划的进度安排,软件开发人员的组织与分工等等。2.5.1软件开发项目管理过程为达到软件工程的目标,必须对软件开发项目的工作范围、所需的工作量和成本、必需的人力和软硬件资源、可能遇到风险、进度的安排、待实现的任务、经历的里程碑等进行管理。软件开发过程的管理应在所有技术工作开始之前启动,直至软件工程过程的结束。第2章河北工业大学廊坊分院计算机系软件开发项目管理过程主要包括以下几个方面:1.启动一个软件项目
2.成本估算3.风险分析4.进度安排5.追踪和控制第2章河北工业大学廊坊分院计算机系2.5.2风险分析风险的特点:①不确定性,某项风险可能发生也可能不发生;②损失,一旦某项风险变成了现实,就必然会给项目带来不良的影响和损失,甚至灾难性后果。
Ifyoudon’tactivelyattacktherisks,theywillactivelyattackyou.——TomGilb(1988)第2章河北工业大学廊坊分院计算机系风险分析风险分析的三个主要活动:
风险标识;风险估算;处理风险的策略。(1)按照风险的影响范围分类
①项目风险
②技术风险
③商业风险1.风险标识
(2)按照风险的可预测性分类
①已知风险
②可预测的风险
③不可预测的风险第2章河北工业大学廊坊分院计算机系人员风险检测表序号问题回答(0、1、2、3、4、5}1开发人员的水平如何?22开发人员在技术上是否配套?13是否有足够的人员可用?04开发人员是否能自始至终参加软件项目的工作?25开发人员是否能把全部精力投入到软件开发工作中?26开发人员对自己的工作是否有正确的期望?17开发人员是否已接受了必要的培训?08开发人员的流动是否还能保证工作的连续性?3第2章河北工业大学廊坊分院计算机系2.风险估算——风险预测。软件项目管理人员主要从影响风险的因素和风险发生后带来的损失来度量风险。要对风险进行估算,首先应建立风险度量指标体系、指明风险带来的影响和损失,确定影响风险的因素,估计风险出现的可能性或概率,即进行定量的估算。估算方法如下:设:某一风险检测表由m项组成,每项可在0,1,2,…,N中根据实际情况选取一个整数值。其中0表示最好情况,N表示最差情况。又设:第i种风险检测表的第j项取值为Xij,对应的加权系数为Wij,则第i种风险的估算值可以定义为:
σi=∑
Wi
jXij/(mN)(2-47)
mj=1第2章河北工业大学廊坊分院计算机系2.风险估算其中:∑
Wij=m,Wij≥0
设:第i种风险对整个项目的风险估算的加权系数为ρi,i=1,2,…,l,其中l为风险的种类数,且满足ρ1+ρ2+…+ρl=1,则整个软件项目的风险估算值R定义为:R=∑ρiσi=∑ρi[∑
Wi
jXij/(mN)](2-48)
容易验证,0≤R≤1。估算的结果,如果R接近于0,说明项目风险比较小,如果R接近于1,说明项目风险比较大。如果ρiσi的值比较大,说明第i类风险出现的可能性比较大。mj=1mj=1
li=1
li=1第2章河北工业大学廊坊分院计算机系3.风险评价常采用三元组[ri,pi,xi]来描述风险。其中ri代表第i种风险,pi表示第i种风险发生的概率,xi代表该风险带来的影响,i=1,2,…,l,表示软件开发项目共有l种风险,i为风险序号。一个风险评价技术就是定义风险参照水准。对于大多数软件项目来说,成本、进度、性能就是典型的风险参照水准。在软件开发过程中由于成本超支、进度拖延、软件性能下降、支持困难,或它们的某种组合,都有一个水准。当软件项目的风险的某种组合达到或超过了一个或多个参照水准时,项目就应终止。第2章河北工业大学廊坊分院计算机系3.风险评价比如,在软件开发的过程中,项目的进度应与投入的成本相一致,如果投入的成本与进度的拖延之间超过某一个参照水准时,项目就应该终止。图2-6-1给出了这样的参照曲线,当风险的一个组合所引起的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年婚前协议书(财产分割)
- 2024年发布:权益投资抵押合同范本
- 2024年三天制租赁合同范本
- 资产管理担保协议
- 2024年屋顶漏水修复费用协议
- 追偿协议追偿责任
- 在线民宿民俗平台用户注册协议
- 物联网分期付款协议
- 解除转包合同
- 专业技能培训劳务服务协议
- 三元地理些子法
- 零星劳务合同模板(精选7篇)
- 检验科报告双签字制度
- 北京市海淀区乡镇地图可编辑PPT行政区划边界高清(北京市)
- 2022-2023学年湖南省长沙市长郡滨江中学物理九年级第一学期期中联考模拟试题含解析
- 幼儿园教学课件中班数学《水果列车》课件
- 小学语文五年级读写大赛试卷
- 二年级(上)音乐第四单元 单元分析
- 第一部分心理健康教育概论
- 集团公司后备人才选拔培养暂行办法
- 挡墙施工危险源辨识及风险评价
评论
0/150
提交评论