软件工程:实践者的研究方法(第七版)_讲义_第十一章 质量概念

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

管理活动的影响
估算决策。在确定交付日期和制定总预算 之前,给软件团队提供项目估算数据是很 少见的。 进度安排决策。当建立了软件项目时间表 时,按照依赖性安排任务的先后顺序。 面向风险的决策。风险管理是成功软件项 目的关键特性之一。

实现软件质量
软件工程方法 项目管理技术 质量控制 质量保证



有效的软件过程为生产高质量的软件产品奠定了基 础。 有用的产品是指交付最终用户要求的内容、功能和 特征,但最重要的是,以可靠、无误的方式交付这 些东西。 通过为软件产品的生产者和使用者增值,高质量软 件为软件组织和最终用户群体带来了收益。
Garvin的质量维度
性能质量。软件是否交付了所有的内容、功能 和特性,这些内容、功能和特性在某种程度上是 需求模型所规定的一部分,可以为最终用户提供 价值。 特性质量。软件是否首次提供了使最终用户惊 喜的特性? 可靠性。软件是否无误地提供了所有的特性和 能力,当需要(使用该软件)时,它是否是可用 的,是否无错地提供了功能? 符合性。软件是否遵从本地的和外部的与应用 领域相关的软件标准,是否遵循了事实存在的设 计惯例和编码惯例?
预防成本包括:(1)计划和协调所有质量控制和 质量保证所需管理活动的成本;(2)为开发完整 的需求模型和设计模型所增加的技术活动的成本; (3)测试计划的成本;(4)与这些活动有关的所 有培训成本。 评Biblioteka Baidu成本包括为深入了解产品“第一次通过” 每个过程的条件而进行的活动。评估成本的例子 包括:


第十一章 质量概念
质量概念
如果软件团队在所有软件工程活动中强调 质量,就可以减少很多必需的返工,结果 是降低了成本,更为重要的是缩短了上市 时间。 为实现高质量软件,必须做4项活动:已 验证的软件过程和实践、扎实的项目管理、 全面的质量控制和具有质量保证基础设施。

质量概念

[Ric01]提到:尽管意愿良好,有缺陷的 代码仍然是软件工业的幽灵,计算机系统 的故障时间高达45%,美国公司去年花 费了大约一千亿美元,用在了丧失的生产 率和修补上,这还不包括使客户生气而失 去了这些客户的代价。
质量成本

质量成本包括追求质量过程中或在履行质 量有关的活动中引起的费用以及质量不佳 引起的下游费用等所有费用。为了解这些 费用,一个组织必须收集度量数据,为目 前的质量成本提供一个基准,找到降低这 些成本的机会,并提供一个规范化的比对 依据。质量成本可分为预防成本、评估成 本和失效成本。
质量成本

外部失效成本是在产品已经发运给客户之后发 现了缺陷时的相关成本。
质量成本

当我们从预防到检查内部失效和外部失效 成本,找到并修复错误或缺陷的相关成本急 剧增加。
图11-2 改正错误和缺陷的相对成本
风险
人们拿自己的工作、自己的舒适、自己的 安全、自己的娱乐、自己的决定以及自己 的生命在计算机软件上下赌注。最好这是 正确的。 软件质量问题很重要,不管是嵌入在汽车 引擎中的,工厂里的机械手臂中的,还是 嵌入在医院的治疗设备中,这些应用必须 做到万无一失,低劣部署的代码可以杀人。

McCall的质量因素
维护性:查出和修复程序中的一个错误所需要 的工作量。 灵活性:修改一个运行的程序所需的工作量。 易测试性:测试程序以确保它能完成预期功能 所需要的工作量。 可移植性:将程序从一个硬件和(或)软件系 统环境移植到另一个环境所需要的工作量。 可复用性:程序(或程序的一部分)可以在另 一个应用系统中使用的程度。 互操作性:将一个系统连接到另一系统所需要 的工作量。

ISO 9126质量因素
功能性:软件满足已确定要求的程度,由以下子属性表 征:适合性、准确性、互操作性、依从性和安全保密性。 可靠性:软件可用的时间长度,由以下子属性表征:成 熟性、容错性和易恢复性。 易用性:软件容易使用的程度,由以下子属性表征:易 理解性、易学习性和易操作性。 效率:软件优化使用系统资源的程度,由以下子属性表 征:时间特性和资源利用特性。 维护性:软件易于修复的程度,由以下子属性表征:易 分析性、易改变性、稳定性和易测试性。 可移植性:软件可以从一个环境移植到另一个环境的容 易程度,由以下子属性表征:适应性、易安装性、符合 性和易替换性。

质量和安全

软件安全完全与质量有关系。必须一开始 就在设计、构造、测试、编码阶段以及在 整个软件生命周期中考虑安全性、可靠性、 可得性、可信性。即使是已认识到软件安 全问题的人们也主要关注生命周期的晚些 阶段。越早发现软件问题越好。有两种类 型的软件问题,一种是隐藏的错误,这是 实现的问题。另一种是软件缺陷,这是设 计中的构造问题。人们对错误关注太多, 却对缺陷关注不够。
质量概念

怎样差的软件才是劣质软件呢?定义是 不同的,专家认为,只要每1000行代码 有3或4处缺陷就能使程序执行得很差,大 多数程序员每写10行代码大约注入一个错 误,许多商业产品有数百万行代码,软件 经销商至少将开发预算的一半花费在了测 试时修改错误上。
质量概念

如今,软件质量仍然是个问题,但是应该 责备谁?客户责备开发人员,认为粗心的 实践导致低质量的软件。开发人员责备客 户,认为不合理的交工日期以及连续不断 的变更使开发人员在还没有完全验证时就 交付了软件。

定向质量因素
直觉:界面遵照预期使用模式的程度,使 得即使是新手,不经过专门培训也能使用。 效率:定位或初步了解操作和信息的程度。 健壮性:软件处理有错的输入数据或不恰 当的用户交互的程度。 丰富性:界面提供丰富特征集的程度。

软件质量困境

如果生产了一个存在严重质量问题的软件系统, 你将受到损失,因为没有人想去购买。另一方面, 如果你花费无限的时间、极大的工作量和高额的 资金来开发一个绝对完美的软件,那么完成该软 件将花费很长的时间,生产成本是极其高昂的, 以至于破产。要么错过了市场机会,要么几乎耗 尽所有的资源。所以企业界的人们努力达到奇妙 的中间状态:一方面,产品要足够好,不会立即 被抛弃;另一方面,又不是那么完美,不需要花 费太长时间和太多成本。[Ven03]
什么是质量
在软件开发中,设计质量包括设计满足需 求模型规定的功能和特性的程度。符合质量 关注的是实现遵从设计的程度以及所得到的 系统满足需求和性能目标的程度。 用户满意度=合格的产品+好的质量+按预 算和进度安排交付

软件质量

软件质量可以这样定义:在一定程度上应用有 效的软件过程,创造有用的产品,为生产者和使 用者提供明显的价值。该定义强调了以下3个重 要方面:

小结
作业

P225 7,9,11
什么是质量

质量是一个复杂多面的概念。可以从5个 不同的观点来描述。玄妙观点认为质量是 马上就能识别的东西,却不能清楚地定义。 用户观点是从最终用户的具体目标来说的。 如果产品达到这些目标,就显示出质量。 制造商观点是从产品的原始规格说明的角 度来定义质量,如果产品符合规格说明, 就显示出质量。产品观点认为质量是产品 的固有属性。最后,基于价值的观点根据 客户愿意为产品支付多少钱来评测质量。

McCall的质量因素

[McC77]提出了影响软件质量因素的一 种有用的分类。这些软件质量因素侧重于 软件产品的3个重要方面:操作特性、承 受变更的能力以及对新环境的适应能力, 如图11-1所示。
McCall的质量因素
图11-1McCall的软件质量因素
McCall的质量因素
正确性:程序满足其需求规格说明和完成用户 任务目标的程度。 可靠性:期望程序以所要求的精度完成其预期 功能的程度。 效率:程序完成其功能所需的计算资源和代码 的数量。 完整性:对未授权的人员访问软件或数据的可 控程度。 易用性:对程序进行学习、操作、准备输入和 解释输出所需要的工作量。
对软件工程工作产品进行技术审查的成本。 数据收集和度量估算的成本。 测试和调试的成本。
质量成本
失效成本是那些如果在将产品发给客户之前或 之后没有错误就不会存在的费用。失效成本可分 为内部失效成本和外部失效成本。 内部失效成本发生在当你在发货之前发现错误 时,内部失效成本包括:



为纠正错误进行返工所需的成本。 返工时无意中产生副作用,必须对副作用加以缓解而发生的 成本。 组织为评估失效的模型而收集质量数据,由此发生的相关成 本。
软件工程
第三部分 质量管理
质量管理涉及问题
高质量软件的一般特性是什么? 如何评审质量,如何有效地进行质量评审? 什么是软件质量保证? 软件测试需要应用什么策略? 使用什么方法才能设计出有效的测试用例? 有没有确保软件正确性的可行方法? 如何管理和控制软件开发过程中经常发生的变 更?


Garvin的质量维度
耐久性。是否能够对软件进行维护或改正,而 不会粗心大意地产生料想不到的副作用?随着时 间的推移,变更会使错误率或可靠性变得更糟吗? 适用性。软件能在可接受的短时期内完成维护 和改正吗?技术支持人员能得到所需的所有信息 以进行变更和修正缺陷吗? 审美。美的东西具有某种优雅、特有的流畅和 醒目的外在,这些都是很难量化的,但显然是不 可缺少的。美的软件具有这些特征。 感知。在某些情况下,一些偏见将影响人们对 质量的感知。
相关文档
最新文档