软件工程PPT课件_第1页
软件工程PPT课件_第2页
软件工程PPT课件_第3页
软件工程PPT课件_第4页
软件工程PPT课件_第5页
已阅读5页,还剩188页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

精品课件 1 课程名称 软件工程第3讲班级 日期 教室 教学题目 第2章软件项目管理2 1软件度量2 2软件项目的估算2 2 1软件项目估算方法教学目的 了解软件度量的基本概念 掌握面向规模和面向功能点度量方法 了解项目估算方法 教学重点 面向规模和面向功能点的度量方法 教学难点 面向功能点的度量方法教具 多媒体教室 电子教案作业 精品课件 2 第2章软件项目管理 软件项目管理必须从项目的开头介入 并贯穿于整个软件生存周期的全过程 软件项目管理的范围主要集中于3个P上 即 People 人员 Problem 问题 和Process 过程 软件项目管理的主要任务是 根据选定的软件开发过程框架 即软件开发模型 和对其估算的结果制定软件项目实施计划 再根据计划对人员进行组织 分工 按照计划的进度 以及成本管理 风险管理 质量管理的要求 控制并管理软件开发和维护的活动 最终以最小的代价完成软件项目规定的全部任务 精品课件 3 第2章软件项目管理 软件项目的成本管理 软件质量管理和软件配置管理有一定的特殊性和独立性 可单独立项 其任务分别是 成本管理 估算软件项目的成本 作为立项和签合同的依据之一 并在软件开发过程中按计划管理经费的使用 质量管理 制定软件质量保证计划 按照质量评价体系控制软件质量要素 对阶段性的软件产品进行评审 对最终软件产品进行确认 确保软件质量 配置管理 制定配置管理计划 对程序 数据 文档的各种版本进行管理 确保软件的完整性和一致性 精品课件 4 第2章软件项目管理 在制定有效的项目实施计划的过程中 首先要对项目的工作量 完成期限等等参考量进行估算 估算的结果将成为项目计划其他活动的基础 同时 为了对软件项目进行科学 有效的管理 就必须对软件开发过程的有关特征进行度量 度量的结果用于软件开发过程的管理与监控 本章主要介绍软件度量的概念 软件的规模度量 软件项目的估算 软件的质量度量 复杂性度量 可靠性度量 风险的分析与度量以及软件项目管理过程与步骤等等 精品课件 5 第2章软件项目管理 2 1软件度量2 2软件项目估算2 3软件质量度量2 4软件复杂性度量2 5软件可靠性度量2 6软件开发过程的管理习题思考题 精品课件 6 2 1软件度量 对软件工程项目的规模 成本 产品质量等属性进行定量的描述 可以帮助项目管理人员和开发者制定有效的项目计划 监控项目的风险 进度和阶段产品的质量 并为调整过程中活动和做出重要决策提供可靠的依据 下面介绍软件度量的基本概念 并介绍软件的规模度量和功能度量 2 1 1软件度量的基本概念1 测量 度量 估算和指标软件工程项目的定量描述涉及测量 度量 估算和指标等一些基本概念 精品课件 7 1 测量 measure 对产品或过程的某个属性的范围 数量 维度 容量或大小提供一个定量的指示 2 度量 metric 对系统 部件或过程的某一特性所具有的程度进行的量化测量 如软件质量度量等 3 估算 estimation 对软件产品 过程 资源等使用历史资料或经验公式等进行预测 如工作量 成本 完成期限等 估算一般用于立项 签订合同 制定工作计划等 精品课件 8 4 指标 guideline 指标 是一个度量或度量的组合 它可对软件产品 过程或资源提供更深入的理解 如有4个小组共同完成一个软件项目 每一个小组都必须采用自行选择的评审类型进行技术评审 管理者检查 每小时每人所发现的错误数 这一度量结果时发现 采用正式技术评审方法的两个小组的该度量值要比另外两个小组高出40 假设4个小组的其他参数都相同 这就给管理者提供了一个指标 正式技术评审方法比其他技术评审方法更有效率 于是 管理者可决定建议所有小组都采用更加正式的技术评审方法 精品课件 9 2 软件项目管理的对象及其属性 软件项目管理的对象主要包括产品 过程和资源等 产品 product 是指软件开发过程得到的文档和程序 如 需求规格说明 设计规格说明 源代码 测试报告等 过程 process 是指与软件项目有关的活动 如软件项目计划 开发活动 维护活动 管理活动等 资源 resource 是指进行软件项目所需要的各种支持 如人力 经费 方法 工具 软硬件环境等 要对软件项目管理的对象进行有效的管理与控制 就必须对这些对象的属性进行测量 度量与估算 一般来说 产品 过程 资源等对象都具有内部属性和外部属性 精品课件 10 对象的属性 内部属性是指对象本身的属性 如软件产品的代码长度 模块化的程度 复杂性等 对象的外部属性体现了对象与环境的关系 如软件的可靠性 可维护性 可移植性 成本 人员的生产率等 对象的部分属性如表2 1所示 精品课件 11 表2 1软件工程的产品 过程 资源的属性 精品课件 12 对象的属性 项目管理员和用户都十分关心产品 过程 资源的外部属性 于是可将外部属性看成是面向管理员和用户的属性 但在软件开发的过程中 软件的外部属性一般是很难度量和控制的 这些外部属性是由软件的内部属性所决定的 因此 可以通过研究内部属性与外部属性之间的关系来解决外部属性的度量问题 进而逐步建立起了软件工程度量系统 精品课件 13 3 软件度量的分类 可分为直接度量和间接度量两类 1 直接度量 即对不依赖于其他属性的简单属性的测量 如软件的模块数 程序的代码行数 操作符的个数 工作量 成本等 2 间接度量 即对涉及若干个其他属性的软件要素 准则或属性的度量 因为它们必须通过建立一定的度量方法或模型才能间接推断而获得 如软件的功能性 复杂性 可靠性 可维护性等等 软件度量系统还可进一步划分为两个侧面 它们之间的关系如图2 1 1所示 精品课件 14 图2 1 1两侧面间关系 面向规模的度量 面向功能的度量 面向人的度量 生产率度量 质量度量 技术度量 精品课件 15 2 1 2面向规模的度量 面向规模的度量是以软件的代码行 LOC LineofCode 数为基础的直接度量 一般的软件开发组织对开发过的每个软件项目都有如代码行 工作量 成本 错误 人数 文档页数等的统计记录 利用代码行数可以度量软件规模 生产率 平均成本 出错率 文档率等参考量 设 L表示软件的代码行数 单位为KLOC 千行代码 或LOC E表示开发软件所需工作量 单位为人月 PM 或人年 PY S表示软件成本 单位为美元或元 N表示错误个数 Pd表示软件文档页数 M表示开发所用的人数 则有 精品课件 16 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 精品课件 17 例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 精品课件 18 基于代码行面向规模的度量方法的优缺点 适用场合 优点 简单 直接 缺点 如它依赖于程序设计语言的功能和表达等特征 在开发初期很难准确估算出代码行数 对设计水平高的软件项目产生不利影响 适用场合 适合于过程式程序设计语言和事后度量 精品课件 19 2 1 3面向功能的度量 1 简单功能点度量1979年 Albrecht首先提出了功能点度量方法 这是一种面向功能的间接度量方法 即从软件定义的基本功能出发 来估算软件系统的规模 因此 该方法可以在软件开发项目的初期 在软件定义过程中即可预测待开发软件的规模 精品课件 20 1 简单功能点度量 功能点FP的度量公式如下 FP CT TCF CT 0 65 0 01 Fi 2 5 其中 CT 基本功能点 CT值按表2 2来计算 它的值为5个参数加权值的总和 14 i 1 精品课件 21 表2 2简单功能点度量的基本功能点的计算 精品课件 22 表2 2中的5个参数的含义 1 用户输入数 用户为软件系统提供的输入参数的个数 不包括查询 2 用户输出数 软件为用户提供的输出参数 报告 屏幕帧 错误信息等 的个数 3 用户查询数 一次联机输入导致软件以联机输出方式实时产生一个响应的个数 4 文件数 逻辑主文件的个数 5 外部接口数 机器可读的接口 如磁盘或磁带上的数据文件等 的个数 精品课件 23 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 65 1 35 精品课件 24 表2 3Fi取值表 精品课件 25 2 功能点度量 简单功能点度量方法没有直接考虑软件本身的算法的复杂性问题 所以它仅适用于度量算法简单的事务处理等系统 1986年Jones对简单功能点度量进行了推广 在计算软件系统的基本功能点CT时 引入了算法复杂性因素 即使用表2 4计算CT 我们称这种推广的度量方法为功能点度量 这两种方法对一般的事务处理系统等算法简单的软件系统计算出来的FP值基本相同 但对于较复杂的软件系统 功能点度量方法比简单功能点度量方法计算出来的FP值要高20 35 精品课件 26 表2 4推广的功能点度量的基本功能点的计算 精品课件 27 用功能点计算软件项目的有关参考量 1 生产率P 平均每人月开发的功能点数 以功能点 PM为单位 P FP E 2 6 2 平均成本C 以美元 功能点或元 功能点为单位 C S FP 2 7 精品课件 28 用功能点计算软件项目的有关参考量 3 代码出错率EQR 即每功能点的平均错误数 以个 功能点为单位 为 EQR N FP 2 8 4 软件的文档率D 即平均每功能点的文档页数 以页 功能点为单位 为 D Pd FP 2 9 精品课件 29 3 功能点度量方法的优缺点 优点 可用于软件项目开发的初期阶段的项目估算 因为在可行性研究和需求分析阶段已能基本确定输入 输出等各个参考量 与程序设计语言无关 适合于过程或非过程式语言 缺点 某些参考量的收集有一定困难 度量值的主观因素较多 如Fi取值 功能点FP本身没有直观的物理意义 精品课件 30 4 软件的代码行与功能点的关系 软件的功能点数和选用的程序设计语言无关 但对于同一个软件 功能点数已定 如用不同的程序设计语言来实现 所得到的软件的代码行数可能会有较大差别 Albrecht等人通过多个软件统计出了用不同程序设计语言实现每个功能点所需代码行数 即计算出各语言的LOC FP的平均值 如表2 5所示 精品课件 31 表2 5部分程序设计语言LOC FP平均值的比较 精品课件 32 2 2软件项目估算2 2 1软件项目的估算方法 常用的软件项目的估算方法主要有以下4种 1 自顶向下的估算方法基本思想 首先根据已完成项目的总成本或总工作量来推算待开发软件的总成本或总工作量 然后再按比例将其分配到各开发任务中去 即从整体到局部 优点 估算工作量小 速度快 缺点 对项目中的特殊困难估计不足 有可能产生遗漏 估算出的值盲目性较大 精品课件 33 2 自底向上的估算方法 基本思想是 把待开发软件细分 直到每一个子任务或阶段都已经明确所需要的开发工作量或成本 然后再把它们累加起来 得到待开发软件的总工作量或总成本 需要指出 在对软件进行细分时 一种是按照功能将大的软件项目划分为若干个子项目 另一种是按照软件生命周期分解为各个阶段 当然 也可以两者同时进行 优点 计算各个部分的准确性较高 缺点 缺少各个子任务之间相互联系的工作量和系统工作量 如项目管理 配置管理 质量管理 估算值往往偏低 必须用其他方法进行校正 精品课件 34 3 差别估算法 基本思想 把待开发的软件项目与过去完成的软件项目进行比较 从各子任务中区分出类似的和不同的部分 类似的部分按已知的实际量计算 不同的部分则采用某种方法进行估算 差别估算法综合了以上两种方法的优点 优点 估算的准确程度高 缺点 不容易划分相似的界限 精品课件 35 4 根据经验估算公式 通过众多实际软件项目的经验 总结出一些有价值的软件成本和工作量估算的经验模型 这些模型对于软件项目管理具有一定的指导意义和验证效果 没有一种估算模型能够适合于所有类型的软件项目 因此 对估算的结果应当慎重使用 在实际估算时 几种估算方法可单独 同时或组合使用 以便提高估算的准确程度 精品课件 36 估算方法举例 例2 2 Boehm给出了 软件库存情况更新 项目采用自顶向下估算方法的一个参考例子 由过去已完成的项目的工作量 估算出该项目的总工作量为53 然后将其按比例分配到各个阶段 如表2 6所示 从中可以看出软件开发各阶段工作量的分配情况 精品课件 37 表2 6软件项目的自顶向下估算 精品课件 38 课程名称 软件工程第4讲班级 日期 教室 教学题目 2 2 2代码行和功能点的估算 2 2 3软件项目的经验估算模型 教学目的 熟悉软件项目估算模型 教学重点 软件项目估算模型 教学难点 详细CoCoMo模型教具 多媒体教室 电子教案作业 精品课件 39 2 2 2代码行和功能点的估算 采用2 2 1中介绍的估算方法可以估算出代码行或功能点的乐观值a 一般值m和悲观值b 并用如下的加权平均公式计算LOC或FP的期望值 expectation X a 4m b 6 2 10 软件的LOC或FP的期望值估算出来后 就可以根据已有的标准生产率对成本和工作量等进行估算了 精品课件 40 例2 3 对CAD软件项目进行估算 解 这里采用自底向上的估算方法 即首先 将CAD项目按功能分解为7个子项目 并估算出每个子项目LOC的乐观值a 一般值m和悲观值b 由此可估算出每个子项目的代码行的期望值X 在根据已知的开发类似子项目的生产率P和平均成本C即可估算出每一个子项目的成本和工作量 最后将7个子项目的成本和工作量分别累加 即可估算出软件项目的总成本S和总工作量E 估算的各种值如表2 7所示 精品课件 41 表2 7采用加权平均 自底向上方法估算代码行 成本和工作量 精品课件 42 估算的组织实施 为了使估算更准确 可以组织几个专家采用无记名的方式分别填写表2 7 然后组织者计算出这几个表格的平均值 这一过程可反复几次 直到获得一个得到多数专家共识的软件规模 另外 还可以将每个子项目再按生存周期划分 估算其各阶段的工作量 再累加求出每个子项目的工作量和整个项目的工作量 可将用几种方法估算的结果进行比较来验证估算的准确性 精品课件 43 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为文档数量 页 精品课件 44 1 IBM模型 IBM模型是根据已估算出的源代码行数来估算其他资源的需要量的 因此该模型是面向LOC的静态单变量估算模型 还有一些面向FP的静态单变量估算模型 由于这些模型的准确度不高 在实际应用中必须对公式中的参数进行调整 以适应目前情况 精品课件 45 2 Putnam模型 1978年 Putnam提出了大型软件项目的动态多变量估算模型 该模型以工作量在30人年以上的大型软件项目的实测数据为依据 推导出了工作量分布曲线 如图2 2 1所示 图中的工作量分布曲线的形状与著名的Rayleigh Norden曲线相似 精品课件 46 图2 2 1软件项目的工作量分布曲线 系统定义 功能设计规格说明 设计编码 测试和确认 维护 管理 系统定义 需求分析 开发 运行维护 0 开发占总工作量的40 维护占总工作量的60 总工作量 td 时间t 年 工作量 人年 精品课件 47 2 Putnam模型 由上图可得出Putnam估算模型如下 L CkE1 3td4 3 2 15 其中 L为源代码行数 以LOC计 E为开发与维护的工作量 以人年计 td为开发时间 以年计 Ck为技术状态常数 与开发环境有关 如下 2000较差 没有方法学的支持 缺乏文档和评审 采用批处理方式 Ck 8000一般 有方法学的支持 有适当的文档和评审 采用交互处理方式 11000较好 有集成化的CASE工具和环境 精品课件 48 2 Putnam模型 由式 2 15 可以得出估算工作量的式子 E L3 Ck3td4 2 16 工作量估算出来之后 就可以估算软件项目的成本 式中的td是对应于软件交付时的时间 它正好是工作量曲线的峰值 说明此时的工作量最大 参加项目的人最多 图2 2 2给出了软件开发项目每年所需的人年数与开发时间的关系 精品课件 49 R N分布 线性分布 01234t 年 td 人年数 年 图2 2 2概率密度 精品课件 50 2 Putnam模型 如图2 2 2所示 软件开发项目每年所需的人年数与开发时间的关系满足Rayleigh Norden分布 即软件项目的工作量分布曲线不是线性的 因此 参加软件项目的人员就不能一成不变 如果按线性方案平均分配人员 则开发的初期一部分人力是多余的 而到了峰值段人力明显不足 到了开发的后期再临时增加人力已为时过晚 即造成了浪费 又拖延了进度 精品课件 51 2 Putnam模型 从公式 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给出了各类人员随开发工作的进展在软件工程各阶段参与情况的典型曲线 精品课件 52 图2 2 3人力资源的分配 初级技术人员 高级技术人员 管理人员 验收测试组装测试单元测试编码详细设计概要设计需求分析系统定义 人数 精品课件 53 Putnam模型的优缺点 优点 揭示了软件项目的源程序代码长度 软件开发时间和工作量三者之间的关系 在理论上有重要意义 缺点 准确程度不高 没有反映软件产品 项目 参加人员 软硬件资源等属性 精品课件 54 3 CoCoMo模型 1981年 Boehm提出了CoCoMo模型 ConstructiveCostModel 即构造性成本模型 该模型是以静态单变量模型为基础构造出来的 CoCoMo模型按其详细程度分三个层次 基本CoCoMo模型 中间CoCoMo模型 详细CoCoMo模型 精品课件 55 1 基本CoCoMo模型 其工作量和开发时间的估算公式如下 E aLb 2 17 D cEd 2 18 其中 L 软件代码行的估算值 以KLOC计 E 工作量 以PM计 D 开发时间 以月计 a b c d 经验常数 应根据待开发软件所属的类型按照表2 8来选取 精品课件 56 表2 8a b c d参数值的选取 基本CoComo模型主要用于系统开发的初期估算整个系统开发和维护的工作量及软件开发所需时间 精品课件 57 例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 0 33 51 12 153PM开发时间为 D cEd 2 5 1530 35 14 54 月 CAD项目平均需要的人力为 N E D 153 14 54 11人 精品课件 58 2 中间CoCoMo模型 中间CoCoMo模型在估算工作量时 在基本CoCoMo模型的基础上再乘以由15个因素组成的工作量调节因子EAF 于是有 E aLbEAF aLb Fi 2 19 其中 L 软件的代码行数 以KLOC计 E 工作量 以PM计 a b 经验常数 其取值如表2 9所示 i 1 15 精品课件 59 表2 9a b参数的取值 精品课件 60 2 中间CoCoMo模型 工作量调节因子EAF与软件的产品的取值属性 计算机属性 人员属性 项目属性等因素有关 这15个因素Fi i 1 15 的值可按等级取值 即可分为很低 低 正常 高 很高 极高 共6级 正常情况下Fi 1 Boehm推荐的Fi值的范围是0 70 1 66 Fi的值可根据实际情况按表2 10来选取 工作量E求出之后 就可以用公式 2 18 即D cEd计算出开发时间D 精品课件 61 表2 10工作量调节因子Fi的取值 精品课件 62 3 详细CoCoMo模型简介 详细CoCoMo模型的基本工作量 指EAF 1时的工作量 公式 开发时间公式与中间CoCoMo模型相同 所不同的是详细CoCoMo模型在计算EAF时针对每个影响因素 分层次 系统层 子系统层 模块层 并按软件生存周期分阶段给出工作量因素的分级表 详细CoCoMo模型可以更准确地估算软件项目的工作量 精品课件 63 表2 11子系统层软件可靠性工作量因素分级表 精品课件 64 通信工作量 由N个程序员组成的程序员小组的通信数量 C N N N 1 2设 每两个人之间通信的平均工作量为 则 N人的程序员小组增加的通信工作量为 EC C N N N 1 2 2 20 则该小组的总工作量ET为 ET E EC 2 21 精品课件 65 通信工作量 如图 由3人组成的程序员小组的通信数量 C 3 3 3 1 2 3而由5人组成的程序员小组的通信数量 C 5 5 5 1 2 10 当程序员小组的人数较多时 通信工作量EC N2 2与人数的平方成正比 从而使程序员小组的生产率随着人数的增加而迅速下降 由此可见 当在开发的后期发现不能按时交货时 临时盲目增加程序员将会更加推迟交货的日期 精品课件 66 通信数 图2 2 4N 3和N 5时的通信数 精品课件 67 课程名称 软件工程第5讲班级 日期 教室 教学题目 2 3软件质量度量 2 4软件复杂性度量教学目的 理解软件质量 复杂性度量方法 教学重点 软件质量 复杂性度量方法 教学难点 软件质量要素的度量教具 多媒体教室 电子教案作业 精品课件 68 2 3软件质量度量 软件质量是软件的生命 它作为软件工程的一部分 贯穿于整个软件生存周期之中 生产高质量的软件产品是软件工程的首要目标 由于软件是逻辑产品 软件质量很难直接度量 因此 应当给出软件质量的科学的 实用的定义 并通过一定的度量模型进行度量 以便在整个软件生存周期中对其进行评价和控制 精品课件 69 2 3 1软件质量的定义 1983年 ANSI IEEEstd729标准给出了软件质量的定义如下 软件质量是软件产品满足规定的和隐含的与需求能力有关的全部特征和特性 包括 1 软件产品满足用户要求的程度 2 软件拥有所期望的各种属性的组合程度 3 用户对软件产品的综合反映程度 4 软件在使用过程中满足用户需求的程度 精品课件 70 2 3 2软件质量的度量模型 软件质量与软件的内部特性及其组合有关 要度量软件质量 就应根据这些内部特性 即软件属性 建立起软件度量模型 进而构建软件质量度量体系 1976年 Boehm提出了定量度量软件质量的概念 他给出了软件质量的层次模型 并给出了60个软件质量度量公式 1978年 Walters和McCall提出了三层次软件质量度量模型 1985年 ISO提出了SQM SoftwareQualityMetric 软件质量度量 工作报告等等 精品课件 71 1 McCall等人的软件质量度量模型 McCall等人提出了由软件质量要素 评价准则 定量度量三个层次组成的三层次度量模型 其中 第一层是将对软件质量的度量归结为对直接影响软件质量的若干个软件质量要素的度量 第二层是用若干个可度量的评价准则来间接度量软件质量要素 第三层是对相应评价准则的直接度量 精品课件 72 图2 3 1软件质量三层次度量模型 要素j 评价准则1 评价准则2 评价准则L 度量1 度量2 度量L 精品课件 73 2 软件质量要素 软件质量要素 factor 是指直接影响软件质量的软件质量特性 随着对软件质量的认识的逐步提高 软件质量要素也可能有所变化 当时McCall等人认为 软件质量由11个软件质量要素来衡量 这11个质量要素可划分为三类 面向运行特征的软件质量要素有正确性 可靠性 有效性 完整性和可用性 面向软件承受修改的质量要素有可维护性 灵活性 可测试性 面向转移的软件质量要素有可移植性 可重用性 可互操作性 这三类要素构成了软件质量的三个侧面 如图2 3 2所示 精品课件 74 图2 3 2软件质量要素的构成 产品修正 产品转移 产品运行 可维护性灵活性可测试性 可移植性可重用性可互操作性 正确性可靠性有效性完整性可用性 精品课件 75 质量要素新概念 1 正确性 correctness 指程序满足需求规格说明及用户目标的程度 2 完整性 integrity 指对未授权人员访问程序或数据加以控制的程度 3 可用性 usability 指学习使用软件 即操作软件 准备输入数据 解释输出结果等 的难易程度 精品课件 76 质量要素新概念 4 灵活性 flexibility 指改变一个操作的顺序所需工作量的多少 5 可测试性 testability 指测试软件以便使其具有预定功能所需工作量的多少 6 可互操作性 interoperability 指程序与其他系统相互交换并使用信息的能力 精品课件 77 2 软件质量要素 软件质量要素不是独立的 一个要素可能与其他几个要素有关系 如表2 12所示 其中 正相关以 表示 负相关以 表示 对于具有负相关的质量要素 在开发时应根据具体情况加以取舍或进行折衷 例如 对于实时控制系统 必须确保系统的可靠性和有效性 而软件的可重用性 可移植性等质量要素就可以放宽要求 精品课件 78 表2 12质量要素间的关系 精品课件 79 3 软件质量要素的评价准则 软件质量要素一般很难直接测量 为了对11个要素进行度量 McCall等人通过确定影响软件质量要素的属性 定义了21个软件质量要素的评价准则 这些评价准则既能够比较完整 准确地描述软件质量要素 又比较容易测量 通过这组评价准则就可以间接测量软件质量要素 进而度量整个软件质量 精品课件 80 评价准则新概念 1 可审查性 audit ability 检查软件需求 文档 过程 标准等是否一致的难易程度 2 准确性 accuracy 计算和控制的精确程度 3 简明性 conciseness 程序源代码的紧凑程度 4 通信通用性 communicationcommonality 使用标准接口 协议和带宽的程度 5 数据通用性 datacommonality 在程序中使用标准数据结构和类型的程度 6 容错性 error tolerance 在各种异常情况下软件能继续提供操作的能力 精品课件 81 评价准则新概念 7 执行效率 executionefficiency 软件运行效率 8 可扩充性 expandability 结构 数据 过程等设计可以扩充的程度 9 通用性 generality 程序潜在应用领域的多少 10 硬件独立性 hardwareindependence 软件与其运行的硬件环境无关的程度 11 检测性 instrumentation 程序监视自身运行并标识错误的程度 12 可操作性 operability 操作该软件的难易程度 精品课件 82 评价准则新概念 13 安全性 security 控制或保护程序和数据不被破坏 非法访问等机制的能力 14 自文档化 self documentation 源代码提供自身说明文档的程度 15 简单性 simplicity 程序易于理解的程度 16 软件独立性 softwareindependence 软件与非标准编程语言特征 操作系统特征等软件环境约束无关的程度 17 易培训性 training 软件对使用它的新用户的支持程度 精品课件 83 表2 13质量要素与评价准则的关系 精品课件 84 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种评价准则无关 精品课件 85 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 精品课件 86 ISO三层次软件质量度量模型 1985年 国际标准化组织也提出了三层次软件质量度量模型 其中 高层称为软件质量需求评价准则 SQRC 并由正确性 可容性 有效性 安全性 可用性 可维护性 灵活性 可互操作性等8个要素组成 中层称为软件质量设计评价准则 SQDC 并由可追踪性 完全性 等共23个评价准则组成 低层称作软件质量度量评价准则 SQMC ISO认为 应对高层和中层建立国际标准 而低层可由各使用单位自行制定 精品课件 87 2 4软件复杂性度量 通过软件的复杂性度量值可以估算出软件中故障的数量 也能估算出软件开发所需的工作量 定量度量的结果还可以用于比较不同设计方案的优劣 同时 软件的复杂性也能从某些方面影响软件的可维护性 可靠性等软件质量要素 因此 软件复杂性度量是软件度量的一个重要组成部分 精品课件 88 2 4 1软件复杂性的概念及度量原则1 软件复杂性的概念 K Magel从6个方面来描述软件复杂性 1 理解程序的难度 2 维护程序的难度 3 向其他人解释程序的难度 4 按指定方法修改程序的难度 5 根据设计文件编写程序的工作量 6 执行程序时需要资源的多少 软件复杂性反映了软件的可理解性 模块化 简单性等属性 精品课件 89 2 软件复杂性度量的原则 软件复杂性的度量 的一些基本原则 1 软件的复杂性与其规模的关系不是线性的 2 数据结构复杂的程序较复杂 3 控制结构复杂的程序较复杂 4 转向语句使用不当的程序较复杂 5 循环结构比选择结构复杂 选择结构比顺序结构复杂 6 语句 数据 子程序模块等出现的顺序对复杂性有影响 精品课件 90 2 软件复杂性度量的原则 7 非局部变量较多的程序较复杂 8 参数按地址调用 Callbyreference 比按值调用 Callbyvalue 复杂 9 函数副作用比显式参数传递难理解 10 作用不同的变量同名时较难理解 11 模块 过程间联系密切的程序较复杂 12 程序嵌套层数越多越复杂 以上这些基本原则是指导我们进一步研究定量度量软件复杂性的基础 精品课件 91 2 4 2McCabe度量模型 1976年 McCabe提出了基于程序拓扑结构的软件复杂性度量模型 该方法是把程序流程图转化为程序图 即把程序看成是有一个入口结点和一个出口结点的有向图 图中每个结点对应一个语句 一个简单判断或一个顺序流程的代码块 原来程序流程图中的箭头变成连接各结点的有向弧 或称为边 一般地 可以假设从程序图中的开始结点可以到达图中的任一结点 而从图中的任一结点都可以到达出口结点 程序图又称为程序控制结构图或程序流图 精品课件 92 2 4 2McCabe度量模型 McCabe给出了程序控制结构图G的巡回秩数V G 作为程序控制结构复杂性的度量 其度量模型为 V G E N 2 2 22 其中 E 程序图G中边的总数 N 程序图中结点的总数 V G 又称为图G的环形复杂度 可以证明 V G 的值等于结构图中有界和无界的封闭区域的个数 精品课件 93 图2 4 1三种基本结构的程序图 R1 R2 a 顺序结构 V G E N 2 1 2 2 1 b 选择结构 V G E N 2 4 4 2 2 c while结构 V G E N 2 3 3 2 2 d until结构 V G E N 2 3 3 2 2 精品课件 94 2 4 2McCabe度量模型 程序结构的复杂性度量值V G 取决于程序控制流的复杂程度 当程序内的分支数和循环数增加时 V G 值将随之增加 即程序的复杂性增大 McCabe研究大量程序后指出 V G 可作为程序规模的定量指标 V G 值越高的程序往往是越复杂 越容易出问题的程序 McCabe建议模块规模应满足 V G 10 精品课件 95 例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程序流程图 精品课件 96 例2 5 程序流程图如图2 4 2所示 试求出其巡回秩数V G 2 由程序图 或流图 可得 V G E N 2 11 9 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 精品课件 97 2 4 3Halstead度量模型 20世纪70年代初 Halstead给出了称为文本复杂性度量的模型 它是根据统计程序中的操作符和操作数的个数来度量程序的复杂程度 程序可以看成是由操作符和操作数组成的符号序列 操作符是指程序中出现的语法符号 如 if then else while等 操作数是操作对象 如程序中定义或使用的变量 常量 数组 指针等 令 N1为程序中操作符出现的总个数 N2为程序中操作数出现的总个数 则程序的语言符号长度N定义为 N N1 N2 精品课件 98 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 精品课件 99 2 4 3Halstead度量模型 可以对多个某种程序设计语言的程序进行统计分析 从而得出每千代码行 KLOC 或每个功能点 FP 所包含的操作符和操作数个数CL或CF 于是 可以将程序语言符号长度N折合成相应的代码行数或功能点数 精品课件 100 课程名称 软件工程第6讲班级 日期 教室 教学题目 2 5软件可靠性度量教学目的 了解可靠性的概念 理解可靠性估算方法 教学重点 可靠性的概念 估算方法 教学难点 可靠性的概念 估算方法 教具 多媒体教室 电子教案作业 精品课件 101 2 5软件可靠性度量2 5 1软件可靠性的有关概念 1 软件可靠性由于大型软件投入使用后还是要残留一定数量的错误 于是 当某些操作或输入数据导致遇到这些错误时 就会使程序失效 从而出现软件故障 软件可靠性定义为在某个给定时间间隔内 程序按照规格说明成功运行的概率 精品课件 102 1 软件可靠性 令 随机变量t表示发生故障的时刻 t 0 函数f t 为随机变量t的概率密度函数 F t 表示分布函数 P 0 t t1 表示从初始时刻到t1时刻程序发生故障的概率 设 初始时刻程序运行正常 即F 0 0 于是有 F t f x dx 2 26 f t dF t 2 27 dt 0 t 精品课件 103 令 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 由以上几个式子可导出 R t 1 Pf t 1 F t 1 f x dx 2 28 上式说明 当软件残留的错误数一定时 程序运行的时间越长 发生故障的次数越多 软件的可靠性越小 0 t 精品课件 104 下面引入故障率函数Z t 以比较一个程序在不同时期 或不同程序在同一时期的可靠性 设系统一直成功运行至时刻t t t1 t1 t P t1 t t1 t t t1 是系统在 t1 t1 t 时间间隔且t t1时发生故障的概率 故障率函数Z t1 的值定义为 Z t1 limP t1 t t1 t t t1 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 精品课件 105 对上式两端积分 利用初始条件R 0 1 可得 R t exp Z x dx 2 32 上式即为可靠性和故障率的基本方程式 据此可以导出几个常用的故障模型 1 Z t 其中 是常数 将 代入式 2 32 可得 R t e t 2 33 上式称为故障率为常数的可靠性模型 由于故障率是常数 可靠性将随着时间t的增加呈指数衰减 t0 精品课件 106 2 Z t kt 这里k为常数 t 0 将kt代入式 2 32 可得 R t e kt2 2 2 34 上式称为故障率是时间的线性函数时的可靠性模型 即当存在损耗和退化时 故障率将随着时间的增加而线性增加 该模型一般不适合于软件产品 需要指出 软件中的错误一般都是人为的设计错误 其中多数是逻辑错误 随着对软件的测试及修复 软件系统中的错误会越来越少 因此 实际软件系统的故障率函数曲线应如图2 5 1所示 即软件故障率不是常数 也不是线性函数 而是按指数规律下降 实际的统计结果也说明了这一点 精品课件 107 图2 5 1软件系统故障率 Z t O t 精品课件 108 2 软件的有效性及其度量 软件的有效性函数A t 定义为软件系统在时刻t按照规格说明成功运行的概率 可靠性与有效性之间的差别是 可靠性强调软件系统在0 t这段时间间隔内都有效 而有效性强调软件系统在时刻t这一时间点有效 A 200 0 93表示假设有100个相同的系统同时启动运行 运行到200小时这一时刻 其中有93个处于正常运行状态 7个出现故障 等待修复 R 200 0 93表示假设有100个相同的系统有93个无故障运行了200小时 有7个在此期间发生故障 精品课件 109 2 软件的有效性及其度量 一般来说 对R 200 0 93的要求比对A 200 0 93的要求要严格得多 对于不可修复系统 即不允许程序停止运行的系统 或没有修复能力的情况 A t R t 对于可修复系统并能及时修复的情况 A t R t 精品课件 110 软件稳态有效性的两种度量方法 1 软件系统投入运行后 在一段时间内 可统计软件系统的故障停机时间tdi和正常运行时间tuj 则软件系统的稳态有效性为 A t Tu Tu Td 2 35 其中 t Tu Td Td tdi Tu tuj 精品课件 111 软件稳态有效性的两种度量方法 2 软件系统在稳态运行时 可统计其平均故障间隔时间MTBF meantimebetweenfailurs 即程序正常运行时间的平均值 和平均修复时间MTTR meantimetorepair 即平均停机时间 则软件系统的稳态有效性为 A MTBF MTBF MTTR 2 36 采用上述方法 在开发阶段和投入运行后都可以定量地度量软件系统的有效性和可靠性 软件系统投入运行的一段时间内 可以用各种输入和操作来引发程序中残留的错误 经过多次修复后错误将逐渐减少 有效性和可靠性将不断提高 精品课件 112 2 5 2软件可靠性的估算 软件可靠性估算模型大致分为宏观和微观模型两类 宏观模型是从程序中残留错误数的角度建立模型 并用统计方法确定模型参数 而微观模型则以程序的控制结构和语句分析为基础 下面仅介绍几个典型的宏观模型 1 残留错误总数的估算模型对残留错误总数的估算是可靠性估算的基础 典型的估算模型 错误植入模型 分别测试模型 精品课件 113 1 错误植入模型 Mills首先提出了估算程序中残留错误总数的错误植入模型 即在进行测试之前 由专人 比如统计人员 在程序中随机地植入一些错误 称为带有标记的错误 测试人员测试之后 通过统计测试人员发现的原有错误和植入错误的比例来估算程序中原有错误总数 设 Nt 植入的错误数 n 测试发现原有的错误数 nt 发现植入的错误数 ET 原有的错误总数 则有 ET Nt n nt于是ET的估算模型为 ET Nt n nt 2 37 精品课件 114 2 分别测试模型 1973年 Hyman对错误植入模型做了改进 即用甲 乙两个程序测试员同时对一个程序的两个副本进行独立测试 设 ET 程序中原有的残留错误总数 E1 甲在 0 时间内发现的错误数 E2 乙在 0 时间内发现的错误数 E0 两人在 0 时间内发现的相同的错误的个数 则有 ET E1 E2 E0 2 38 Hyman提出的分别测试模型无论在技术上还是在经济上都比错误植入模型优越 精品课件 115 2 软件平均故障间隔时间的估算 软件的平均故障间隔时间MTBF是可靠性度量的一个重要参数 往往作为一个重要的质量指标由用户提出来 下面介绍MTBF的估算方法 1 软件故障率为常数当软件故障率 为常数时 假设程序运行H小时 共发生r次故障 则 的估算值为 r H于是有 MTBF 1 H r 2 39 精品课件 116 2 软件故障率与程序残留错误数成正比 设 IT 程序代码长度 ET 测试之前程序中残留错误总

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论