什么是质量?

质量就是良好的实用性
1.从顾客的角度出发
2.用户对产品的基本要求是适用
3.不同类型用户对产品和服务的要求不同
软件与用户需求相一致的程度。

质量是产品符合规定要求的程度。
使用要求:用户需求,应准确、清晰的表达,多样化,动态化的用户需求。
满足程度:应通过一定手段,借助工具进行定期测量。
提供标准:应有标准来衡量产品与需求的一致程度。

 

比如说:
购买汽车:有人只可能需要的是个代步工具,而有人则可能是需要宽大的空间。

质量的定义:反应实体满足明确或隐含需要能力的特性的总和。

在合同环境中:需要是规定的,在其他环境中,隐含需要
在许多情况下,需要会随时间而改变,要求定期修改规范。

 

质量的要素:

1:实体
实体是质量的主题,既测量的主体

2:特性集合
表示度量,特性必须可以测量,定性或定量方式得到指导性结论。

3:需求

软件质量是符合明确叙述的功能和性能需求、以及所有专业开发的软件都应具有的隐含特征的程度。
1.用户需求是衡量软件质量的基础。
2.除满足明确定义的需求外,还要满足隐含的需求。
客观而言:软件质量是软件具有某种能力的属性
主观而言:软件具有的能力对应不同层次的用户需求

比如说:微信-》即时聊天-》移动端-》文字无法满足-》语音通话-》视频通话
-》群聊-》群会议-》朋友圈-》屏蔽,展示三天,展示半年....-》理财-》支付...
支付宝-》生活类的软件-》聊天-》视频-》养小鸡-》抢五福-》缴燃气,电费-》公交 地铁.....

 

不同层次的用户需求:


1.显示需求 难度小
需求规格说明书描述的内容-》软件内部质量

2.隐式需求
未在需求规格说明诉中明确描述,用户明确说明的目标,反映验收质量

3.实际需求 难度大
软件的使用质量,用户在实际使用过程中对产品质量评价


客户并不只是购买了一件产品,购买的是你的保证。
狭义的软件质量:软件的内部质量,软件无故障。
广义的软件质量:产品质量,过程质量和客户满意度。

 

软件测试和软件质量

测试:
目的:保证被测软件系统负荷用户需求
手段:通过找BUG来判断软件与需求的一致性

质量:
定义:是反应软件满足明确或隐含需要能力的特性总和
狭义的软件质量:软件无故障
广义的软件质量:产品质量,过程质量和客户满意度

软件测试可以验证软件质量。
软件测试不能提高软件的质量。


软件质量的重要性:
软件质量问题可能导致经济损失是指灾难性的后果。
质量是软件产品和软件组织的生命线。
质量问题会增加开发和维护软件产品的成本。

 

软件质量属性:

产品修改:
1.可理解吗?我能理解它吗?
2.可维修吗?我们修复它吗?
3.灵活性? 我能改变它吗?
4.可测试性?我们个测试它吗?

产品转移:
1.可移植性(我能在另一台机器上使用它吗?)
2.可再用性(我能用它的某些部分吗?)
3.互运行性(我能把它和另个一系统结合吗?)

产品运行:
1.正确性(它按我的需要工作吗?)
2.健壮性(对意外环境它能适当的响应吗?)
3.效率(完成预定功能时它需要的计算机资源多吗?)
4.完整性(它安全吗?)
5.可用性(我能使用它吗?)
6.风险(能按预定计划完成它吗?)


McCall软件质量模型:

软件质量:

1.功能 2.性能 3.易用性
4.可信性-》可靠性,可用性,安全性,保密性,可维护性

软件的质量形成于软件的整个开发过程中,而不是事后的检测
20世纪80年代初,质量管理逐步从单一的关注产品,转移到关注生产好产品的过程上,并且将过程的作用扩大到了组织运行的所有领域。

质量产生于过程
要真正的提高软件质量,必须有一个成熟和稳定的软件过程。
结果可预测
对现行执行可检测 -》质量得到保证
实施的过程性能 稳定过程的上下控制

因为特殊原因造成过程性能不稳定。
根除特殊原因,使过程性能稳定,防止质量问题的出现。

质量成本:

质量成本是为了达到产品或服务的质量而付出的所有努力的总成本,包括三部分:
1.预防成本:为了防止将缺陷引入软件而进行的预防工作所消耗的费用
2.评价成本:检查软件是否包含缺陷的工作所消耗的费用
3.失效成本:修复缺陷工作所消耗的成本

PAF 成本模型:

预防   评价    失效
培训   审查    废品
计划   测试    返工
过程   审计    修复
调查   监控    检测
咨询   度量    缺陷分析
资格   验证    服务
       分析    退货
       确认    投诉处理和解决
在项目早期预防和检测缺陷比在项目晚期检测和排除缺陷更有效,更节省成本。

软件项目质量管理的目标:

1.软件项目质量管理的目标无疑是保证软件产品的质量。但是,对于一个具体软件项目来说,保证软件产品的质量并不意味追求“完美的质量”
2.对于绝大多数普通软件来说,没有必要付出巨大代价追求“零缺陷”,如果由于追求完美质量而造成严重的成本超支和进度拖延,而获得的质量提升为用户所带来的的效益极为有限,就得不偿失了
3.在软件项目中,对于软件的各种质量属性并不是放在同等重要的位置上,项目组织应该把关注点放在那些用户最关心的,对软件整体质量影响最大的质量属性上,这些质量属性称为质量要素。
4.软件项目质量管理的目标是在项目整体目标的约束下,是软件质量满足用户需求。

 

全面软件质量管理

质量管理计划:
质量管理计划就是为了实现项目的质量目标,对项目的质量管理工作所做的全面规划,软件项目质量管理计划一般应满足以下要求。
1.确定项目应达到的质量目标和所有持性的要求。
2.确定项目中的质量活动和质量控制程序。
3.确定项目采用的控制收到及合适的验证手段和方法。
4.确定和准备质量记录。

 

质量管理计划一般包括以下主要内容:
质量要素分析
质量目标
过程检查计划
技术评审计划
软件测试自己和
缺陷跟踪工具

 

在软件的相关概念:
1.软件质量的相关属性
2.软件质量的模型
3.软件质量的度量

1.一些属性
1.功能要正确
2.运行要可靠
3.使用方便
4.效率较高
5.容易移植
6.可维护性
7.资源经济性

 

提高了软件质量-》提出了不同的模型
mcCall模型
boehm模型
ISO质量模型

 

软件的可靠性-》主要通过测试来查看
四点:
软件内在的缺陷:是固定存在的-》1.故障 fault
是故障在一定的条件下产生,暴露出来的现象-》2.错误 error
对错误不作任何修改,使得输出不满足用户的需求-》3.失效failure
软件在给定的试卷间隔及给定环境条件下,按设计要求,成功的运行程序的概率-》4.可靠性

 

测试精确度-》AC 越大,可靠性越好
测试覆盖度率的评价-》Cv 越大,可靠性越好


AC = 测试可能发现的播种故障数/预先植入的播种故障总数 (0<=AC<=1)
Cv = 测试过程中已发现的原有故障数/测试可能发现的总原有故障数 (0<=Cv<=1)

 

软件度量:
1.预测型-》

*尺度度量(定量度量)
评价准则 度量 需求 设计 编码
程序复杂性 每一模块的复杂性度量 是否 是否 是否
系统复杂性度量=各模块复杂性度量之和/系统模块数

 

*二元度量(定性度量)
评价准则 度量 需求 设计 编码
设计文档 是否 是否 是否
的完备性

二元度量-》
a.无二义性引用(输入、功能、输出)
b.所有数据引用都可以从跟一个外部源定义,计算和取得
c.所有定义的功能都被使用
d.所有使用功能都被定义
e.对每一个判定点,所有的条件和处理都已被定义
f.所有被定义、被引用的调用序列的参数一致

2.验收型


在软件质量的保证中:
1.质量保证的任务
*用户要求定义
*力争不重复劳动
*掌握开发新软件的方法
*排除无效劳动
*发挥每个开发者的能力
*提高开发软件的工程的能力
*提高计划和管理质量的能力

2.软件质量的保证体系
*规定在项目的哪个阶段进行评审以及如何评审
*规定在项目的哪个阶段应当产生哪些报告和计划
*规定产品各方面测试应达到的水平
*在每次评审和测试中应达到的水平

3.软件保证的设施
*需要明确的软件的功能,应达到什么样的质量标准,即质量目标。
*各个阶段进行检查和评价。
*评价时,要有对质量进行独立的准则和方法。
*要求所有与软件生存周期有关的人都要参加
*要求对软件形成全过程的进行质量管理

4.软件质量的设计