软件工程 Software Engineering.ppt

上传人:eastlab115 文档编号:389395 上传时间:2018-10-14 格式:PPT 页数:261 大小:1.59MB
下载 相关 举报
软件工程 Software Engineering.ppt_第1页
第1页 / 共261页
软件工程 Software Engineering.ppt_第2页
第2页 / 共261页
软件工程 Software Engineering.ppt_第3页
第3页 / 共261页
软件工程 Software Engineering.ppt_第4页
第4页 / 共261页
软件工程 Software Engineering.ppt_第5页
第5页 / 共261页
亲,该文档总共261页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

1、2018/10/14,国防科技大学计算机学院,1,软件工程 Software Engineering,国防科技大学计算机学院 2004.07,齐治昌 教授, 谭庆平 教授, 宁洪 教授, 董威 博士,2018/10/14,国防科技大学计算机学院,2,第二章 软件项目管理,软件项目管理的概念、原则和技术 项目管理计划、组织、监管和控制 软件开发过程的度量和定量分析,2018/10/14,国防科技大学计算机学院,3,软件项目管理,目的为了使软件项目能够在预定成本、进度、质量的前提下顺利完成,必须对软件工程项目进行计划、组织、监控和管理,第二章 软件项目管理,2018/10/14,国防科技大学计算机

2、学院,4,软件项目管理,任务 制定软件项目的实施计划和方案; 对人员进行组织和分工; 按照计划进度,以及成本管理、风险管理、质量管理的要求进行软件开发,完成软件项目的各项要求和任务。,第二章 软件项目管理,2018/10/14,国防科技大学计算机学院,5,软件项目管理,内容 软件度量 软件项目估算 软件质量度量 软件复杂性度量 软件可靠性度量 软件开发过程的管理 软件项目管理中的CASE工具,第二章 软件项目管理,2018/10/14,国防科技大学计算机学院,6,软件项目管理,特点 管理在软件工程项目中的地位和作用与其它工程项目一样十分重要,必须对成本、人员、进度、质量、风险等进行分析和管理。

3、 软件产品是逻辑的,软件项目的施工是开发小组集体的智力劳动,使用的开发工具是建立在计算机系统上的软件。 软件很多属性无法直接度量为软件定量分析和项目管理增加困难。,第二章 软件项目管理,2018/10/14,国防科技大学计算机学院,7,2.1 软件度量,软件度量的意义 软件度量的概念 软件规模度量 软件功能度量,第二章 软件项目管理,2018/10/14,国防科技大学计算机学院,8,2.1.1 度量、测量和估算 (1/3),度量 metrics 度量具有数字特征,软件工程范围的度量是软件开发过程、软件资源或软件产品简单属性的定量描述。 如,程序规模、操作符个数、程序中错误的个数等。,2.1软件

4、度量,2018/10/14,国防科技大学计算机学院,9,度量、测量和估算 (2/3),测量 measure 对软件开发过程、产品和资源进行实时和事后的定量描述,涉及测量的要素、方法、过程、工具和数值结果。 直接测量和间接测量直接测量用于不依赖于其它属性的简单属性;间接测量用于依赖于若干其它属性的要素、准则和属性。,2.1软件度量,2018/10/14,国防科技大学计算机学院,10,度量、测量和估算 (3/3),估算 estimation 对软件产品、过程、资源进行预测 估算可以采用经验公式、或参考历史资料 估算用于事前签订合同、立项、制定工作计划等,2.1软件度量,2018/10/14,国防科

5、技大学计算机学院,11,度量、测量和估算,软件的外部属性和内部属性 外部属性 软件产品、过程、资源与环境的关系 如,成本、效益、劳动生产率、可靠性、可维护性 内部属性软件产品、过程、资源、环境自身的属性 如,产品结构、模块化程度、复杂性、程序长度等。,2.1软件度量,2018/10/14,国防科技大学计算机学院,12,度量、测量和估算,用户和管理者关心外部属性,但在开发过程中无法直接管理和控制。由于外部属性是由内部属性决定的,因此必须建立外部属性与内部属性的关系,并通过内部属性的度量去度量外部属性。,2.1软件度量,2018/10/14,国防科技大学计算机学院,13,度量、测量和估算,产品的内

6、部属性 程序代码长度 程序功能 模块化 重用性 控制流 数据流 模块耦合度与内聚度 产品的外部属性 程序的可靠性 可用性 可维护性 软件的可理解性 有效性 可移植性,2.1软件度量,2018/10/14,国防科技大学计算机学院,14,度量、测量和估算,过程的内部属性工作量 计划和进度 一段时间内某类事件发生的次数 过程的外部属性成本 可控制性 可观察性 稳定性,2.1软件度量,2018/10/14,国防科技大学计算机学院,15,度量、测量和估算,资源的内部属性人 软硬件环境 方法 经验资源的外部属性成本 时间,2.1软件度量,2018/10/14,国防科技大学计算机学院,16,2.1.2 规模

7、度量,代码行数 LOC或KLOC生产率 Pl=L/E其中 L 软件项目代码行数E 软件项目工作量(人月 PM)Pl 软件项目生产率(LOC/PM),2.1软件度量,2018/10/14,国防科技大学计算机学院,17,规模度量,代码出错率 EQRl=Ne/L 其中 Ne 软件项目的代码错误数EQRl 每千行代码的错误数,2.1软件度量,2018/10/14,国防科技大学计算机学院,18,例 软件项目记录,2.1软件度量,2018/10/14,国防科技大学计算机学院,19,规模度量,每行代码平均成本Cl=S/L其中 S 软件项目总开销(元美元)Cl软件项目每行代码的平均成本文档与代码比Dl=Pd/

8、L其中 Pd 软件项目文档页数Dl 每千行代码的平均文档数,2.1软件度量,2018/10/14,国防科技大学计算机学院,20,规模度量,用软件代码行数估算软件规模简单易行。 缺点 代码行数的估算依赖于程序设计语言的功能和表达能力; 采用代码行估算方法会对设计精巧的软件项目产生不利的影响; 在软件项目开发前或开发初期估算它的代码行数十分困难; 代码行估算只适用于过程式程序设计语言,对非过程式的程序设计语言不太适用等等。,2.1软件度量,2018/10/14,国防科技大学计算机学院,21,FP=CT*0.65+0.01*Fi (2-5)其中:CT按表2.3计算Fi 是复杂性调节值Fi 取值 0,

9、1,.,5 当 Fi = 0 时,表示 Fi 不起作用Fi = 5 时,表示 Fi 作用最大,2.1.3 面向功能的度量,2.1软件度量,2018/10/14,国防科技大学计算机学院,22,表2.3 功能点度量,测量参数 值 权值 用户输入数 *4 用户输出数 *5 用户查询数 *4 文件数 *7 外部界面数 *7 CT ,2.1软件度量,2018/10/14,国防科技大学计算机学院,23,面向功能的度量,表2.3中的五个信息量按下列方式取值用户输入数 用户为软件提供的输入参数个数 用户输出数 软件系统为用户提供的输出参数个数 用户查询数 一个联机输入确定一次查询,软件以联机输出的形式,实时地

10、产生一个响应 文件数 统计逻辑的主文件个数 外部界面数 统计所有机器可读的界面,利用这些界面可以将信息从一个系统传送到另一个系统,2.1软件度量,2018/10/14,国防科技大学计算机学院,24,面向功能的度量,用功能点定义的概念 生产率Pf=FP/E (2-6)其中 Pf表示每人月完成的功能点数,2.1软件度量,2018/10/14,国防科技大学计算机学院,25,面向功能的度量,软件规模的功能点度量没有直接涉及软件系统本身的算法复杂性。 1986年Jones把软件项目中的算法复杂性因素引入到功能点计算中来,为了避免混淆,我们把Albrecht定义的功能点称为简单功能点,用FPs表示,把Jo

11、nes推广的功能点称为功能点,用FP表示。 推广的功能点包括计算机程序中用于各类问题求解的算法因素,如求解线性代数方程组、遍历二叉树的各个结点、处理中断等等。 功能点计算仍用公式(25),其中CT按表2.5计算。,2.1软件度量,2018/10/14,国防科技大学计算机学院,26,表2.5 功能点度量,测量参数 值 权值 用户输入数 *4 用户输出数 *5 用户查询数 *4 文件数 *7 外部界面数 *7 算法 *3 CT ,2.1软件度量,2018/10/14,国防科技大学计算机学院,27,面向功能的度量,对一般的工程计算或事务处理软件,用表2.3和表2.5两种方法计算出来的FP值应该基本上

12、相同对于比较复杂的软件系统FP比FPs的值高20%35%,2.1软件度量,2018/10/14,国防科技大学计算机学院,28,面向功能的度量,优点 与程序设计语言无关,它不仅适用于过程式语言,也适用于非过程式的语言;软件项目开发初期就能基本上确定系统的输入、输出等参数,功能点度量能用于软件项目的开发初期。,2.1软件度量,2018/10/14,国防科技大学计算机学院,29,面向功能的度量,缺点 它涉及到的主观因素比较多,如各种权函数的取值; 信息领域中的某些数据有时不容易采集; FP的值没有直观的物理意义。,2.1软件度量,2018/10/14,国防科技大学计算机学院,30,2.1.4 代码行

13、度量与功能点度量的比较,代码行度量依赖于程序设计语言,而功能点度量不依赖于程序设计语言。 Albrecht和Jones等人对若干软件采用事后处理的方式分别统计出不同程序设计语言每个功能点与代码行数的关系,用LOC/FP的平均值表示。 表2.6表明,一行Ada语言代码的“功能”平均是一行FORTRAN语言代码“功能”的1.4倍。一行四代语言代码的“功能”平均是一行传统程序设计语言代码“功能”的3至5倍。,2.1软件度量,2018/10/14,国防科技大学计算机学院,31,表2.6 各种语言的LOC/FP(平均值),程序设计语言 LOC/FP(平均值) 汇编语言 300 COBOL 100 FOR

14、TRAN 100 Pascal 90 Ada 70 面向对象的语言 30 四代语言(4GL) 20 代码生成器 15,2.1软件度量,2018/10/14,国防科技大学计算机学院,32,2.2 软件项目估算,当前在基于计算机的系统中,软件开发成本占总成本的比例很大。 在软件项目立项和软件项目管理工作中,客户和项目管理人员都十分重视软件项目的成本估算。 软件是逻辑产品,成本估算涉及人、技术、环境、政策等多种因素,在项目完成之前,很难精确地估算出项目的开销。,第二章 软件项目管理,2018/10/14,国防科技大学计算机学院,33,软件项目估算,常用的估算方法 参照已经完成的类似项目估算待开发项目

15、的成本和工作量。 将大的项目分解成若干子项目,在估算出每个子项目成本和工作量之后,再估算整个项目。 将软件项目按软件生存周期分解,分别估算出软件项目在软件开发各个阶段的工作量和成本,然后再把这些工作量和成本汇总估算整个项目。 根据实验或历史数据给出软件项目工作量或成本的经验估算公式。,2.2软件项目估算,2018/10/14,国防科技大学计算机学院,34,软件项目估算,四种方法可以同时、单独或组合使用,以便取长补短,提高项目估算的精度和可靠性。 采用分解技术估算软件项目应考虑系统集成时需要的工作量。 为了实现软件项目估算,实践中开发了大量的软件项目自动估算工具,用以支持软件工作量或成本估算。,

16、2.2软件项目估算,2018/10/14,国防科技大学计算机学院,35,2.2.1代码行、功能点和工作量估算,软件项目的规模是影响软件项目成本和工作量的重要因素。 软件项目代码行和功能点估算是成本和工作量估算的基础。 采用上述四种估算方法可以估算出LOC或FP的乐观值a,悲观值b和一般值m,然后根据下列加权公式计算出期望值e=(a4mb)6 (2-10)希望LOC或FP的值落在区间a,b之外的概率极小,2.2软件项目估算,2018/10/14,国防科技大学计算机学院,36,代码行、功能点和工作量估算,当LOC或FP的期望值估算出来之后,根据以前软件项目开发的平均生产率LOC/PM或FP/PM就

17、可以计算出工作量。 如,软件项目的规模估算为310FP,以前完成的软件项目的生产率为5.5FP/PM,于是工作量估算为E=310/5.5=56PM。 如果当前估算的软件子项目比以前完成的项目复杂,那么所用的生产率值可以低于平均生产率,反之也可以高于平均生产率。,2.2软件项目估算,2018/10/14,国防科技大学计算机学院,37,例 2.2 估算计算机辅助设计软件项目,将CAD项目按功能分解为七个子项目 用户界面和控制; 二维几何分析; 三维几何分析; 数据库管理; 计算机图形显示; 外设控制; 设计分析。 表2.8 给出七个子项目代码行的乐观估计、悲观 计和一般估计值,然后计算出加权平均值

18、。,2.2软件项目估算,2018/10/14,国防科技大学计算机学院,38,估算计算机辅助设计软件项目,分析七个子项目的规模复杂性和难度,参照以前开发类似项目的经验给出开发每行代码的平均成本,每月开发的代码行数。 用这两组数据计算出七个子项目的开发成本和工作量。最后汇总的CAD软件开发项目规模为 33360 LOC成本为 656680 $工作量为 144.5 PM。,2.2软件项目估算,2018/10/14,国防科技大学计算机学院,39,估算计算机辅助设计软件项目,再用第二种方法和第三种方法分别估算软件开发子项目在软件工程各个阶段的工作量,估算结果列入表2.8。 两种方法估算的工作量分别为14

19、4.5PM和152.5PM,相差5%左右。 估算的成本分别为656680$和708075$,相差7%左右。两种方法估算的工作量和成本基本一致。,2.2软件项目估算,2018/10/14,国防科技大学计算机学院,40,表2.8 代码行和成本、工作量估算,功能 乐观 一般 悲观 加权 $ LOC 成本 工作量LOC LOC LOC 平均 /LOC /PM (人月) 用户界面控制1790 2400 2650 2340 14 315 32760 7.4 二维几何分析4080 5200 7400 5380 20 220 107600 24.4 三维几何分析4600 6900 8600 6800 20 2

20、20 136000 30.9 数据库管理 2900 3400 3600 3350 18 240 60300 13.9 图形显示 3900 4900 6200 4950 22 200 108900 24.7 外设控制 1990 2100 2450 2140 28 140 59920 15.2 设计分析 6600 8500 9800 8400 18 300 151200 28.0 总计 33360 656680 144.5,2.2软件项目估算,2018/10/14,国防科技大学计算机学院,41,表2.8 工作量估算,功能 需求分析 设计 编码 测试 总计用户界面控制 1.0 2.0 0.5 3.5

21、 7 二维几何分析 2.0 10.0 4.5 9.5 26 三维几何分析 2.5 12.0 6.0 11.0 31.5 数据库管理 2.0 6.0 3.0 4.0 15 计算机图形显示 1.5 11.0 4.0 10.5 27 外设控制 1.5 6.0 3.5 5.0 16 设计分析 4.0 14.0 5.0 7.0 30 总计(人月) 14.5 61 26.5 50.5 152.5 每人月成本 5200 4800 4250 4500 成本() 75400 292800 112625 227250 708075,2.2软件项目估算,2018/10/14,国防科技大学计算机学院,42,2.2.2

22、 经验估算模型之一 CoCoMo模型,计算机软件的估算模型是根据以前完成项目的实际数据导出的,用于软件项目的计划阶段。模型是根据“从前的”,“局部的”数据得出的,估算模型不可能完全适用于当前所有的软件项目和全部开发环境。这些模型的计算结果仅供参考。两个常用的估算模型CoCoMo模型 Putnam模型,2.2软件项目估算,2018/10/14,国防科技大学计算机学院,43,CoCoMo模型,1981年Boehm提出“构造性成本模型”(Constructive Cost Model),简称CoCoMo模型。它是在静态、单变量模型的基础上构造出来的。CoCoMo模型分为基本、中间、详细三个层次,分别

23、用于软件开发的三个不同阶段。,2.2软件项目估算,2018/10/14,国防科技大学计算机学院,44,CoCoMo模型,基本CoCoMo模型 用于系统开发的初期,估算整个系统的工作量(包括软件维护)和软件开发所需要的时间。中间CoCoMo模型 用于估算各个子系统的工作量和开发时间。详细CoCoMo模型 用于估算独立的软部件,如子系统内部的各个模块。,2.2软件项目估算,2018/10/14,国防科技大学计算机学院,45,1 基本CoCoMo模型,静态、单变量模型E = aLb (2-11)D = cEd (2-12) 其中:E表示工作量,单位是人月(PM)。D表示开发时间,单位是月(M)。L是

24、项目的代码行估计值,单位是千行代码a,b,c,d是常数,取值如表2.9所示。Boehm把软件划分为组织型、半独立型和嵌入型三类,允许不同应用领域和复杂程度的软件按照三类软件的适用范围选取相应的参数a,b,c,d。,2.2软件项目估算,2018/10/14,国防科技大学计算机学院,46,表2.9 简单CoCoMo模型参数,软件类型 a b c d 适用范围 组织型 2.4 1.05 2.5 0.38 各类应用程序半独立型 3.0 1.12 2.5 0.35 各类实用程序、编译程序等 嵌入型 3.6 1.20 2.5 0.32 实时处理、控制程序、操作系统,2.2软件项目估算,2018/10/14

25、,国防科技大学计算机学院,47,2 中间CoCoMo模型,中间CoCoMo模型以基本CoCoMo模型为基础,在工作量估计公式中乘以工作量调节因子 EAFE = aLb *EAF (2-13)其中:L是软件产品的目标代码行数a,b是常数,取值如表2.10所示。,2.2软件项目估算,2018/10/14,国防科技大学计算机学院,48,中间 CoCoMo模型,表2.10 中间CoCoMo模型参数软件类型 a b组织型 3.2 1.05半独立型 3.0 1.12嵌入型 2.8 1.20 ,2.2软件项目估算,2018/10/14,国防科技大学计算机学院,49,CoCoMo模型,工作量调节因子与软件产品

26、属性、计算机属性、人员属性、项目属性有关 软件产品属性软件可靠性、软件复杂性、数据库的规模。 计算机属性 程序执行时间、程序占用内存的大小、软件开发环境的变化、软件开发环境的响应速度。 人员属性 分析员的能力、程序员的能力、有关应用领域的经验、开发环境的经验、程序设计语言的经验 项目属性 软件开发方法的能力,软件工具的质量和数量、软件开发的进度要求。,2.2软件项目估算,2018/10/14,国防科技大学计算机学院,50,CoCoMo 模型,四种属性共15个要素。 每个要素调节因子 Fi, i=1,2,.,15,的值分为:很低、低、正常、高、很高、极高,共六级。 正常情况下 Fi=1。 Boe

27、hm推荐的Fi值范围(0.70, 0.85, 1.00, 1.15, 1.30, 1.65) 当15个Fi的值选定后,EAF的计算如下 EAFF1*F2*F15,2.2软件项目估算,2018/10/14,国防科技大学计算机学院,51,CoCoMo 模型,调节因子集的定义和调节因子定值是由统计结果和经验决定的。不同的软件开发组织,在不同的历史时期,随着环境的变化,这些数据可能改变。使用中间CoCoMo模型可以估算开发软件产品的工作量,比较各种开发方案的工作量。,2.2软件项目估算,2018/10/14,国防科技大学计算机学院,52,例2.3 用基本CoCoMo模型估算例2.2,工作量、开发时间和

28、项目开发人数 在例2.2中,目标代码行数为 33.3 KLOC CAD软件开发属于中等规模、半独立型 从表2.9中查到a=3.0,b=1.12。 代入公式(2-11)E = 3.0L1.12= 3.033.31.12= 152 PM,2.2软件项目估算,2018/10/14,国防科技大学计算机学院,53,例2.3 用基本CoCoMo模型估算例2.2,将E的估算值代入公式 (2-12)取 C=2.5 d=0.35D=2.5E0.35=2.5*1520.35=14.5 M建议参加项目开发的人数N=E/D=152/14.511,2.2软件项目估算,2018/10/14,国防科技大学计算机学院,54,

29、CoCoMo模型,例中计算出来的11人是粗略估计在软件项目开发过程中,11个人不可能都有相同的能力和个性,相同的经验和知识结构,并且在软件开发的各个阶段对人的要求也不同。,2.2软件项目估算,2018/10/14,国防科技大学计算机学院,55,人员和工作量之间的关系,十个人年工作量的项目不可能由一个人干十年,但十个人干一年也无法完成任务,因为十个人的任务组需要交流的开销;项目后期增加人员还需要增加培训的工作量,可能会使项目的交付日期一托再托;项目工作人员的数量和项目整体生产率之间的关系不是线性的。,2.2软件项目估算,2018/10/14,国防科技大学计算机学院,56,CoCoMo模型,若干人

30、共同开发一个软件项目还应该增加他们之间相互通信和交换意见的额外工作量。设 N个程序员组成小组,实现相同规模的程序,相互通信数为 C=N(N-1)/2每次通信和交换意见的平均工作量为则 增加的通信开销为EcN(N-1)/2 (2-14),2.2软件项目估算,2018/10/14,国防科技大学计算机学院,57,例2.4 计算一个程序的通信开销,3人和5人开发一个程序相互通信和交换意见的关系如图2.2所示 将N=3和N=5分别代入公式(2-14) Ec(3)3(3-1)/23 Ec(5)5(5-1)/210,2.2软件项目估算,2018/10/14,国防科技大学计算机学院,58,CoCoMo模型,由

31、N个程序员组成的小组共同开发一个程序总的工作量ET满足ET=E+Ec (2-15) 程序员小组的生产率是PG=LOC/(E+Ec) (2-16) 程序员小组生产率和单个程序员生产率的比为Rp=E/(E+Ec) (2-17)随着程序员小组人数的增加EcN*2/2,程序员小组的生产率将会下降。模型表明盲目增加程序员人数会推迟软件完成的日期,2.2软件项目估算,2018/10/14,国防科技大学计算机学院,59,CoCoMo模型,以静态单变量CoCoMo模型为基础,还可以定义估算资源R的静态多变量模型 Rai*ei*bi 其中:ei 表示软件第i个特性ai, bi 是与软件第i个特性有关的常数,通常

32、由实验数据确定。,2.2软件项目估算,2018/10/14,国防科技大学计算机学院,60,2.2.3 经验估算模型之二:Putnam模型,1978年,Putnam提出了大型软件项目工作量(一般在30人年以上)估算模型。它是一个动态多变量模型,适用于软件开发的各个阶段,估算模型以大型软件项目的实测数据为基础,导出如图2.3所示的工作量分布曲线。该曲线与著名的Rayleigh-Norden (R-N)曲线相似,它描述了开发工作量,开发时间和软件代码行数之间的关系。,2.2软件项目估算,2018/10/14,国防科技大学计算机学院,61,Putnam模型,方程L = CK E1/3 td4/3 (2

33、-18)其中:L 表示源程序代码行数td 表示开发时间Ck 表示技术状态常数E 表示工作量 (以人年记,包括维护),2.2软件项目估算,2018/10/14,国防科技大学计算机学院,62,Putnam模型,2.2软件项目估算,2018/10/14,国防科技大学计算机学院,63,Putnam模型,差的软件开发环境 软件开发没有方法学的支持,缺乏对文档的评审,采用批处理方式。 一般的软件开发环境 应有软件开发方法学的支持,有适宜的文档和评审,采用交互处理方式。好的软件开发环境 应采用CASE工具和集成化CASE环境。 CK= 2000 比较差的软件开发环境 8000 一般的软件开发环境11000

34、比较好的软件开发环,2.2软件项目估算,2018/10/14,国防科技大学计算机学院,64,Putnam模型,由(2-18)3 3 4E L / (CK*td) (2-19) td对应于Rayleigh-Norden曲线的最大值,表示软件交付时工作量最大,参与软件项目的人最多。 当工作量估算出来之后,利用每人年的开销($/PY)可以估算成本。 公式(2-19)表明,开发软件项目的工作量与交货时间的4次方成反比,将0.9td代替(2-19)式的td计算E发现,提前10%的时间要增加52%的工作量,降低了软件开发生产率。 软件开发过程中人员与时间的折衷是一个十分重要的问题。,2.2软件项目估算,2

35、018/10/14,国防科技大学计算机学院,65,软件开发过程人员与时间的关系,2.2软件项目估算,2018/10/14,国防科技大学计算机学院,66,Putnam模型,软件开发项目的工作量随着时间t的增长并不呈线性增长趋势。 参加软件项目开发的人员数目不应该是一成不变的。如果按照线性分布方案配备人员,即每年的人数是常数。 那么起始段一部分人力是多余的,而峰值段人力又不够,到项目后期再增加人力为时已晚,造成浪费。 由于人力调度的不合理,不得不延长项目开发时间,增加一部分额外工作量。,2.2软件项目估算,2018/10/14,国防科技大学计算机学院,67,Putnam模型,Putnam模型揭示了

36、软件项目的工作量、软件开发时间和程序代码长度三者之间的关系它没有反映软件产品属性,软件项目属性、软件开发人员属性,计算机软硬件资源属性等用Putnam模型进行软件项目的成本估算是十分粗糙的,2.2软件项目估算,2018/10/14,国防科技大学计算机学院,68,2.3 软件质量度量,1)软件质量定义及三层次度量模型2)软件质量要素3)软件质量要素评价准则,第二章 软件项目管理,2018/10/14,国防科技大学计算机学院,69,2.3.1 软件质量定义及三层次度量模型,软件质量是软件的生命,它直接影响软件的使用与维护。 质量低下的软件不但影响基于计算机系统的工作效率,而且还可能给用户带来灾难性

37、的后果。 提高软件产品质量是软件工程的首要任务。 软件开发人员、管理人员、维护人员和用户在软件开发、维护、使用过程中所处地位不同,对软件质量的理解和要求也不同。,2.3软件质量度量,2018/10/14,国防科技大学计算机学院,70,软件质量度量,管理人员关心软件开发标准,在经费和时间允许的情况下,如何实现软件需求规格说明中定义的功能 维护人员重视软件的正确性,可理解性和可修改性 用户更关心软件的性能和可靠性等等应该对软件质量给出一个客观的、科学的定义并尽量予以量化。这对统一人们对软件产品质量的认识,在软件产品开发与维护过程中评价和控制软件产品质量都是十分必要的,2.3软件质量度量,2018/

38、10/14,国防科技大学计算机学院,71,软件质量度量,软件质量 1983年 ANSI/IEEEstd729软件产品满足规定的和隐含的与需求能力有关的全部特征和特性,包括1.软件产品品质满足用户要求的程度;2.软件各种属性的组合程度;3.用户对软件产品的综合反映程度;4.软件在使用过程中满足用户要求的程度。,2.3软件质量度量,2018/10/14,国防科技大学计算机学院,72,软件质量度量,软件质量依赖于软件的内部特性及其组合 为了对软件质量进行度量,必须对影响软件质量的要素进行度量,并建立实用的软件质量度量体系或模型 1968年Rubey和Hartwick提出了软件某些属性的度量方法 19

39、76年Boehm提出了定量评价软件质量的概念,给出了60个软件质量度量公式和软件质量度量的层次模型,2.3软件质量度量,2018/10/14,国防科技大学计算机学院,73,软件质量度量,1978年Walters和McCall提出了包括质量要素(factor)、准则(criteria)和度量(metric)的三层次软件质量度量模型G.Murine又提出了软件质量度量技术SQM用于定量地评价软件质量1985年国际标准化组织(ISO)提出了软件质量度量(SQM)工作报告,2.3软件质量度量,2018/10/14,国防科技大学计算机学院,74,三层次软件质量度量模型,质量要素 (factor)评价准则

40、 (criteria)度 量 (metric),2.3软件质量度量,2018/10/14,国防科技大学计算机学院,75,2.3.2 软件质量要素,软件质量要素直接影响软件开发过程各个阶段的产品质量 由于对软件质量理解的不断深化,软件质量要素不是一成不变的 McCall等人给出的软件质量要素共11个,分为三类。,2.3软件质量度量,2018/10/14,国防科技大学计算机学院,76,McCall的软件质量要素,软件的运行特征 正确性 可靠性 有效性完整性 可用性 软件承受修改的能力可维护性 灵活性可测试性 软件对新环境的适应程度可移植性 可重用性连接性,2.3软件质量度量,2018/10/14,

41、国防科技大学计算机学院,77,软件的属性(续),正确性(Correctness)程序满足规格说明及完成用户目标的程度。 完整性(Integrity)控制未被授权人员访问程序和数据的程度。 可用性(Usability)学习使用软件的难易程度。包括:操作软件、为软件准备输入数据,解释软件输出结果。,2.3软件质量度量,2018/10/14,国防科技大学计算机学院,78,软件的属性(续),灵活性(Flexibility)改变一个操作程序所需的工作量。 可测试性(Testability)测试程序使之具有预定功能所需的工作量。 连接性(Interoperability)两个或多个系统交换信息并相互使用已

42、交换信息的能力。,2.3软件质量度量,2018/10/14,国防科技大学计算机学院,79,软件质量要素之间的关系,软件质量要素之间有正相关,也有负相关。系统设计过程中应根据具体情况对各种要素的要求进行折衷,以便得到在总体上用户和系统开发人员都满意的质量标准。 ,而有效性不是影响系统成败的关键要素。 实时控制系统的可靠性、有效性是决定系统成败的关键要素,必须全力保证,而软件的可移植性、可重用性就不是主要的了。 通用软件工具对可维护性、可移植性、可重用性应该给予更多的注意,2.3软件质量度量,2018/10/14,国防科技大学计算机学院,80,表2.11 质量要素之间的关系,要 正 可 有 完 可

43、 可 可 灵 可 可 互素 确 靠 效 整 用 维 测 活 移 重 操性 性 性 性 性 护 试 性 植 用 作 正确性 可靠性 有效性 完整性 - 可用性 - 可维护性 - 可测试性 - 灵活性 - - 可移植性 - 可重用性 - - - 互操作性 - - ,2.3软件质量度量,2018/10/14,国防科技大学计算机学院,81,2.3.3 软件质量要素评价准则,直接测量软件质量要素十分困难,甚至是不可能的,McCall等人定义了一组比较容易度量的软件质量要素评价准则,通过评价准则间接测量软件质量要素。 定义评价准则的关键是确定影响软件质量要素的属性。这些属性必须满足比较完整、准确的描述软件

44、质量要素; 比较容易量化和测量,能够反映软件质量的优劣。,2.3软件质量度量,2018/10/14,国防科技大学计算机学院,82,McCall软件质量要素评价准则(1/6),可审查性(Auditability) 检查软件需求、规格说明、标准、过程、指令、代码及合同是否一致的难易程度。 准确性(Accuracy) 计算和控制的精度,最好表示成相对误差的函数,值越大表示精度越高。 通信通用性(Communication Commonality) 使用标准接口、协议和频带的程度。,2.3软件质量度量,2018/10/14,国防科技大学计算机学院,83,McCall软件质量要素评价准则(2/6),完全

45、性(Completeness) 见1.2简明性(Conciseness) 程序源代码的紧凑性。一致性(Consistency) 见1.2数据通用性(Data Commonality) 在程序中使用标准的数据结构和类型。,2.3软件质量度量,2018/10/14,国防科技大学计算机学院,84,McCall软件质量要素评价准则(3/6),容错性(Errortolerance) 系统在各种异常条件下提供继续操作的能力 执行效率(Execution Efficiency) 程序运行效率 可扩充性(Expandability) 能够对结构设计、数据设计和过程设计进行扩充的程度 通用性(Generalit

46、y) 程序部件潜在的应用范围的广泛性,2.3软件质量度量,2018/10/14,国防科技大学计算机学院,85,McCall软件质量要素评价准则(4/6),硬件独立性(Hardware Independence) 软件同支持它运行的硬件系统不相关的程度。 检测性(Instrumentation) 监视程序的运行,一旦发生错误时,标识错误的程度。 模块化(Modularity) 见1.2可操作性(Operability)操作一个软件的难易程度。,2.3软件质量度量,2018/10/14,国防科技大学计算机学院,86,McCall软件质量要素评价准则(5/6),安全性(Security) 控制或保护程序和数据不受破坏的机制,以防止程序和数据受到意外的或蓄意的存取、使用、修改、毁坏或泄密。自文档化(Self-documentation)源代码提供有意义文档的程度。简单性(Simplicity)理解程序的难易程度。,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 教学课件 > 大学教育

copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1