软件质量
一、 质量
质量:ISO定义质量为一个实体的所有特性,基于这些特性可以满足的明显的或隐含的需求,而质量就是这些特性满足需求的程度。
软件质量的特性是基于软件质量模型,评价的标准是基于需求(显示需求,隐式需求,用户的实际需求)
符合需求:符合开发者的明确定义的目标,可度量的,必须做和必须不做,内部质量,即软件启动到交付用户之间产生的所有中间产品的质量
符合用户显示需求:客户明确说的目标,SRS,验收质量,即用户在验收时品鉴产品的质量
符合用户的实际需求:显示需求&&隐式需求,使用质量,即用户在实际使用的过程中对产品的质量评价。
二、 质量大师
戴明(deming’s 14 point)戴明环
戴明环:PDCA(plan do check action),将出现的问题投入至戴明环中,结束后若还有问题,则将未解决的问题也投入至戴明环 直至问题全部解决。
主要观点:引起效率低下和不良质量的原因是公司的管理系统
朱兰:质量来源于客户的需求
克劳斯比:‘零缺陷之父’‘世界质量先生’《质量免费》《质量再免费》《质量无泪》
JIT,just in time ,强调一次性将事情做好,不给自己留有弥补的余地
质量四项基本原则:
质量就是满足要求
工作的标准就是零缺陷
产生质量的系统是预防
用不符合要求的代价来衡量质量
费根鲍姆:全面质量控制的创始人,他要求用系统或全面的方法管理质量,在质量过程中要求所有职能部门参与,不局限于生产部门。
石川馨:《质量控制指南》为QC准备的非物质技术分析课本,总结了QC小组的七种常用工具:因果图,控制图,流程图,直方图,帕累托图,趋势图,散点图
田口玄一:
项目铁三角:质量,时间,成本
质量铁三角:流程,组织,技术
三、 软件质量管理体系
CMM ISO 6西格玛
ISO:国际标准组织。是普遍适用的质量管理体系
CMM:能力成熟度模型,过程能力等级分为五级,不同能力等级的过程能力满足的KPA不同(key process area,关键过程域),总计有18个KPA,CMM级别越高,可视度越高。
PSP:个人开发能力,注重个人技能
TSP:团队开发能,注重团队的高效工作和产品交付能力。
CMM:注重组织能力和高质量的产品。
CMMI:能力成熟度模型集成
6西格玛:数据的分散程度,6西格玛表示一百万个产品的不良产品不多于3.4个
实施方法(七步骤法):
找问题:找出需要改善的问题
收集并整理现时的生产数据;
找出原因:找出当时发生错误的原因
计划制定解决方案
检查效果:检查解决方案的效果
将有效方法制度化:将解决方法融入公司的规章制度中
检讨成效并发展新目标
管理原则:
注重客户;注重流程;全员参与;预防为主;事实依据决定;持续和突破性的改进;
四、 软件质量模型
任何一款软件必须遵循的特性,子特性的依存性:隐式需求
以下六个特性可以分为内部质量和外部质量
功能性:可以完成的事情
1、适合性:提供了相应的功能(是否完成需求)
2、准确性:正确(用户需要的,与需求对比)
3、互操作性:产品与产品之间交互数据的能力(与其他的软件硬件的交互能力)
4、保密安全性:允许经过授权的用户和系统能够正常的访问相应的数据和信息,禁止未授权的用户访问.......(物理意义:是否安全;信息方面:信息的保密与安全性,是否可以访问到合法的可以访问到而数据与是否会被非法的访问)【安全性测试】:注册。登录,密码设置,网络是否留痕,配置,权限,跨站点脚本攻击,伪站点请求,数据库注入,协议,防火墙等,
5、功能性的依从性:国际/国家/行业/企业 标准规范一致性
可靠性:产品在规定的条件下,在规定的时间内完成规定功能的能力
可靠性的三个指标:平均正常运行时间,平均故障时间,平均无效时间间隔
1、成熟性:防止内部错误导致软件失效的能力(软件系统本身的问题)
2、容错性:软件出现故障,自我处理能力(收到外部攻击是是否可以容忍错误继续保持稳定)
3、易恢复性:失效情况下的恢复能力(发生问题是恢复到正常工作的能力)
4、可靠性的依从性
易用性:在指定使用条件下,产品被理解、 学习、使用和吸引用户的能力【性能测试
】吞吐量,CPU利用率等
1、易理解性:软件的提示信息,软件的提示按钮等。(尊重标准规范)
2、易学性:软件是否提供了学习使用手册
3、易操作性:
4、吸引性:软件系统吸引人的能力(标题党)
5、易用性的依从性:
效率性:在规定台条件下,相对于所用资源的数量,软件产品可提供适当性能的能力
1、时间特性:平均事务响应时间,吞吐率,TPS(每秒事务数)(快慢)
2、资源利用性:CPU 内存 磁盘 IO 网络带宽 队列 共享内存(运行某软件或模块占用的内存)
3、效率依从性:
软件维护性:"四规", 在规定条件下,规定的时间内,使用规定的工具或方法修复规定功能的能力(仅针对内存质量)
1、易分析性:分析定位问题的难易程度(软件出错后是否提供详细的文档,如日志等)
2、易改变性:软件产品使指定的修改可以被实现的能力(结构化强,高内聚,低耦合,全局变量少,软件系统出现问题后,修改对其他部分的影响)
3、稳定性:防止意外修改导致程序失效(问题修复后,系统是否可以平稳的运行)
4、易 测试性:使已修改软件能被确认的能力(专业,能够准确的测量)
5、维护性的依从性
软件可移植性:从一种环境迁移到另一种环境的能力
1、适应性:适应不同平台
2、易安装性:被安装的能力(安装过程简单)
3、共存性:(同类软件在同一系统)【兼容性】
4、易替换性(软件升级,打补丁)
5、可移植性的依从性:
软件度量分类:规模(软件工作产品的大小),工作量(完成各项软件工作产品和活动所用人时);进度(各项软件工作产品和活动开始饿结束时间);质量缺陷(在各项软件产品和活动中产生的缺陷数量)
五、 规模度量
EXAMPLE: