《第15章软件度量解析》由会员分享,可在线阅读,更多相关《第15章软件度量解析(179页珍藏版)》请在金锄头文库上搜索。
1、第十五章 软件度量,软件工程(第三版),齐治昌 谭庆平 宁洪2012年8月,第十五章 软件度量,15.1 软件测量、度量与估算的概念 15.2 软件规模度量 15.3 软件复杂性度量 15.4 软件质量度量 15.5 软件可靠性度量 15.6 制定软件度量大纲的方法和工具,2018/9/25,2,国防科技大学计算机学院,15.1 软件测量、度量与估算的概念,测量、预测在社会生活中经常遇到。 如,测量人的身 高、体重、血压,测量运动物体的速度、加速度,测量电路的电流、电阻和电压,根据做匀速直线运动物体的初始距离、速度,预测t时刻后的位置。 复杂的数值天气预报是大家熟悉的预测。 传统工程项目都对产
2、品和生产过程进行严格的连续地测量和估算,以保证产品质量,控制生产过程的成本和时间。 近代企业管理已建立完整的体系和方法学。,2018/9/25,国防科技大学计算机学院,3,软件测量、度量与估算的概念,软件工程项目,有“工程”属性。 软件工程的定义明确指出,软件工程是“采用系统的、规范的、可量化的方法开发、运行、维护软件的过程”。 软件工程的度量和估算是软件工程的重要组成部分,度量可分为软件度量和软件项目度量两部分。 本章讨论软件度量、测量和估算的基本概念,软件的规模度量,质量度量,结构和复杂性度量,可靠性度量。 第16章将结合软件项目管理与过程改进介绍软件项目的成本估算、计划安排、风险分析和软
3、件开发组织的度量。,2018/9/25,4,国防科技大学计算机学院,15.1软件测量、度量与估算的概念,15.1.1 软件测量的意义和作用 15.1.2 度量、测量和估算 15.1.3 软件工程测量、度量、估算的基本内容 15.1.4 软件工程测量估算的基本方法,2018/9/25,国防科技大学计算机学院,5,15.1.1软件测量的意义和作用,今天,测量已成为良好软件工程实践不可或缺的活动。 软件开发人员通过测量(measure)软件特性了解软件开发过程中需求是否一致和完整; 设计制品是否与需求一致; 代码是否与设计一致; 需求是否可测试; 软件制品是否可靠; 审查(inspection)和测
4、试是否有效; 是否实现了软件制品和过程目标等。,2018/9/25,6,国防科技大学计算机学院,软件测量的意义和作用,软件管理人员通过对过程和软件制品属性的估算和测量,安排项目预算和开发计划; 了解每个过程耗费的成本; 了解软件开发的进度; 了解软件项目的生产率; 了解软件制品的质量; 了解用户对软件制品的满意程度; 确定软件的发布时间等。 客户通过对软件制品要素的测量确定软件制品功能和性能是否满足使用要求。 软件维护人员通过软件测量了解软件制品存在的问题和可维护性。,2018/9/25,国防科技大学计算机学院,7,软件测量的意义和作用,测量能帮助人们客观地了解软件开发和维护过程,将软件制品的
5、现状和全貌定量地、直观地呈现在人们面前,使人们对软件开发活动各实体之间的关系有更深入的了解。 “知己知彼、百战不殆”,了解了软件和软件开发过程的现状才能采取措施控制软件质量和软件工程过程目标的实现。 如,测量模块的复杂性,找出复杂性超过可接受范围的模块,对它们采取措施进行更详细、更全面的评审,提高软件的质量,减少缺陷数量,减轻测试的工作量。,2018/9/25,国防科技大学计算机学院,8,软件测量的意义和作用,利用测量数据实施量化管理,可提高软件组织和软件项目的管理水平。 软件工程师、软件项目管理人员都应重视测量,提高测量精度,达到了解、控制与改进软件质量和软件工程过程的目的。,2018/9/
6、25,国防科技大学计算机学院,9,15.1.2度量、测量和估算,软件工程的定量描述离不开测量(measure)、度量(metrics)和估算(estimation)三个基本概念。 测量是广泛使用的概念,是按照统一的规则为现实世界的实体属性定值。 如田径比赛中,裁判员利用秒表确定运动员百米比赛成绩。 软件工程的测量是按照测量标准直接的、客观的采集软件制品、过程或资源的特征、属性,并获取数据。 如,测量程序的代码行数,操作符的种类、个数,程序中缺陷的个数等等。,2018/9/25,国防科技大学计算机学院,10,度量、测量和估算,测量涉及测量对象、选用的量纲、方法、工具、过程和数值结果。 软件估算是
7、根据经验、历史资料或模型,项目实际对软件制品、过程、资源进行预测。 数理统计意义上的预测或估算将在15.1.4节讨论。 估算一般用于签订合同、制定工作计划、进行项目预算等。 这里涉及软件过程工作量的估算。,2018/9/25,国防科技大学计算机学院,11,度量、测量和估算,软件工程的度量是软件制品、过程或资源的特征、属性的量化,可能是直接的,也可能是间接的;可能是客观的,也可能是主观的,也可能是多种类型数据组合计算的结果。 如,软件的可用性、软件的可追踪性、软件组织的能力成熟度度量等。 体操比赛中,裁判员对运动员自由体操、单杠运动的评分是典型的度量活动。 软件工程度量可分为软件制品度量、软件项
8、目度量、软件项目团队中人和组织的过程度量。,2018/9/25,国防科技大学计算机学院,12,度量、测量和估算,管理人员关心软件项目、软件产品、软件工程过程的外部要素指标,如软件项目的“进度”、软件项目的“成本”、软件制品的“质量”、软件开发机构的“成熟度”等,这些要素指标通常不能直接度量。 人们把描述软件项目、制品外部要素指标分解为若干准则,用这些准则的度量值计算软件的外部要素指标。 这些准则的度量值是通过采集、测量与准则有关的软件工程过程、项目、制品的内部属性数据计算出来的。 软件工程测量和度量过程如图15.1所示。,2018/9/25,国防科技大学计算机学院,13,图15.1软件工程测量
9、和度量过程,2018/9/25,国防科技大学计算机学院,14,图15.2 软件工程度量的分类,2018/9/25,国防科技大学计算机学院,15,度量、测量和估算,软件工程的软件制品、过程、资源都具有外部属性和内部属性。 外部属性体现了软件制品、过程、资源与环境的关系。 如,成本、效益、程序员的生产率、软件制品的可靠性、易用性、可维护性、可移植性等。 软件项目管理人员和顾客十分关心软件制品、过程和资源的外部属性。 外部属性是面向管理者和用户的属性。 软件的内部属性指软件制品、过程和资源本身的技术属性,如软件制品的结构、模块化程度、复杂性、程序描述语言及采用的设计方法等。,2018/9/25,国防
10、科技大学计算机学院,16,度量、测量和估算,表15.1给出了软件制品、过程和资源的部分内部属性和外部属性。 软件外部属性在软件开发过程中很难测量和控制,但它是由软件的内部属性决定的,否则就无法通过软件开发团队的努力实现用户要求的功能和性能(基本上是外部属性)。 人们研究软件的内部属性,及内部属性与外部属性的关系,并试图通过软件内部属性的测量或度量解决软件外部属性的度量问题,进而通过技术和管理手段改善软件的内部属性,达到提高软件外部属性的目的。,2018/9/25,国防科技大学计算机学院,17,表15.1软件工程的制品、过程和资源的内部属性及外部属性(1),2018/9/25,国防科技大学计算机
11、学院,18,表15.1软件工程的制品、过程和资源的内部属性及外部属性(2),2018/9/25,国防科技大学计算机学院,19,15.1.3软件工程测量、度量、估算的 基本内容,软件工程测量、度量、估算的内容包括软件度量、软件项目度量、软件组织的能力成熟度度量、软件工程方法和工具的评估等。 本章讨论软件的度量,主要内容有:软件规模度量,软件质量度量模型,软件可靠性建模、测量和预测,软件结构和复杂性度量。 第16章结合软件项目管理介绍软件项目度量,包括:工作量估算、成本估算、计划安排、生产率度量、风险度量与分析。,2018/9/25,国防科技大学计算机学院,20,软件工程测量、度量、估算的 基本内
12、容,最后讨论软件组织的能力成熟度评估模型CMM和CMMI。 软件工程方法的评估属于计算机科学的范畴,如,算法设计与分析、计算复杂性、可计算性等 软件工具评估与具体对象密切相关,限于篇幅这里不展开讨论。,2018/9/25,国防科技大学计算机学院,21,软件工程测量、度量、估算的 基本内容,软件规模度量将在15.2节讨论。 根据软件开发需求、设计、构建不同阶段的特点和需要分别介绍软件规模的对象点估算、功能点估算和代码行估算,讨论复用在软件开发工作量估算和生产率估算中的问题。 在可运行代码版本生成前,无法对可靠性和可维护性之类的软件质量属性进行测量,但人们普遍认为,结构复杂的模块和系统比结构简单的
13、缺陷多,对可靠性、可维护性的负面影响大。,2018/9/25,国防科技大学计算机学院,22,软件工程测量、度量、估算的 基本内容,开发结构复杂的模块和系统比开发结构简单的要花费更多的工作量和成本。 必须对软件模块和系统进行结构和复杂性度量。 对结构复杂的部分加强审查,寻求降低复杂性的途径,提高简单性和正确性。 在此基础上对这部分软件进行更严格的测试。 15.3节讨论模块和模块间信息流的复杂性。 15.4节将讨论软件质量度量,McCall定义了三层次树状图分别表示软件质量的要素指标,软件质量要素评价准则与软件属性度量之间的关系。,2018/9/25,国防科技大学计算机学院,23,软件工程测量、度
14、量、估算的 基本内容,树状图上层代表软件制品的外部质量要素,如正确性、可靠性、有效性、可用性、可维护性。 为了对这些外部要素进行量化,将其分解为若干可以度量或测量的评价准则,是支持软件外部质量要素的技术属性。 如,一致性、可追踪性、完全性、模块化等;评价准则比质量要素易于理解、易于度量,相对独立,度量的可操作性强。 通过对软件评价准则相关属性的测量或度量实现对评价准则的度量,进而实现对软件质量要素指标的度量。 “分而治之”的软件质量度量方法已被广泛采用。,2018/9/25,国防科技大学计算机学院,24,软件工程测量、度量、估算的 基本内容,多数质量模型都将可靠性作为一个要素。 可以用评价准则
15、对可靠性进行度量。 由于准确的可靠性测量和预测出现在系统独立运行后,运行后的软件可靠性测量与硬件系统的可靠性测量有许多共性,相对独立和成熟。软件可靠性测量及预测将在15.5节讨论。 管理人员希望能在软件生命周期的早期预测出项目的成本,从而产生了大量估算软件项目成本和工作量的模型。 如,Putnam的SLIM模型、Albrecht的功能点模型、Boehm的COCOMO模型等。,2018/9/25,国防科技大学计算机学院,25,软件工程测量、度量、估算的 基本内容,这些模型采用的方法是,将工作量表示成一个或多个变量(如软件制品规模、开发人员的能力、复用等级等)的函数。 16.2节将讨论工作量和成本
16、估算的COCOMO 模型和Putnam模型。 在完成软件需求的前提下,降低复杂性、提高软件质量将贯穿软件开发的全过程。 为此将在需求过程中用功能、数据、行为三要素进行分析模型度量。,2018/9/25,国防科技大学计算机学院,26,软件工程测量、度量、估算的 基本内容,设计过程的度量 针对正确性、模块化、简明性等进行体系结构设计度量; 针对内聚度、耦合性和复杂性进行构件设计度量; 针对易用性进行用户界面GUI设计度量。 对于面向对象系统可将上述度量用于类的设计度量,此外还要对局部化、封装、信息隐藏、继承及对象抽象等属性进行度量。 对实现过程进行源代码度量,Halstead利用代码中出现的操作符和操作数的种类和数量,评估程序的复杂性和质量1。,2018/9/25,国防科技大学计算机学院,27,软件工程测量、度量、估算的 基本内容,1980年代,卡内基.梅隆大学软件工程研究所(CMU/SEI) 在美国国防部的支持下提出了能力成熟度模型 对软件开发组织的能力和属性进行评估,结果分为五级,“1”级最低,“5”级最高。 软件组织的能力成熟度评估为软件开发组织建设和用户选择软件开发组织提供了依据。 能力成熟度模型CMM、能力成熟度模型集成CMMI和软件开发组织过程改进的评估将在16.8节介绍。,