回顾一下ISO25010软件产品质量模型所定义的8个特性。
软件的8大特性是:
1. 功能适用性
2. 易用性
3. 兼容性
4. 运行效率
5. 可靠性
6. 安全性
7. 可维护性
8. 可移植性
![c917ed0f1dd7865edccf5f9dac8f5e1d.png](https://i-blog.csdnimg.cn/blog_migrate/bea6cc1fe72f0efe39b394fb1dc4be7e.jpeg)
(网络盗图,侵权删除)
前文针对软件的3个特性进行了说明,下面继续对另外5个特性大类进行讨论。
运行效率(performance efficiency)
![f1bfed4a43d620d734077f014996cb13.png](https://i-blog.csdnimg.cn/blog_migrate/25d6f70178bc3959fc80e0a0c7788044.jpeg)
(网络盗图,侵权删除)
软件的运行效率不单单是一句“流畅”就能够描述的,它指的是在规定的条件下,相对于所利用的资源数量来说,软件所能提供性能的程度。
严格来说,软件的资源利用,包括了其他的软件产品、系统资源、硬件配置、外设配置、各种材料等等。存储介质,传输介质都是能够对软件的运行效率产生比较大的影响的。
运行效率这个特性也是被分为3个子特性来描述的。
时间特性(time behavior)
软件在规定的条件下,产品执行其功能时,能够提供适当的相应和处理时间以及吞吐率的能力。也就是完成一个指令或者用户的功能需求的响应时间。app的打开时间,网页的访问时间,输入数据到得到返回结果的时间,都用时间特性来衡量。
资源利用性(resource utilization)
它是指在特定条件下,软件产品执行其功能时,使用合适的资源数量和类别的能力。
资源利用方面即包括了软件方面的接口、吞吐量,也包括了硬件的cpu占有率、内存占有率等。
容量(capability)
一个软件产品或者软件系统参数最大限度满足要求的程度。
参数可以包括存储的项目数、并发用户、通信带宽、事务吞吐率、数据库的大小等。
天猫双十一、12306,这都是对软件的容量有着极高的要求的场景。
可靠性(reliability)
![4af99cae20ceb2594845aaf970fd8ffe.png](https://i-blog.csdnimg.cn/blog_migrate/2e2b123cd01072425009eea17b45ce93.jpeg)
(网络盗图,侵权删除)
可靠性指的是在规定的时间以及条件下,软件产品所能维持其正常的功能操作、性能水平的程度。
一般的衡量可靠性指标是平均无故障时间,平均恢复时间,平均失效间隔时间。
软件的可靠性,是很重要的特性,对这个特性的衡量,并不是说不允许出现软件失效,而是要在规定的场景下满足规定的条件。可靠性在软件特性里,是有四个子特性的。
成熟性(maturity)
软件产品为了避免由软件中错误而导致失效的能力。它是一种内部的接口防范规则。
成熟性主要是指软件产品避免自身产生的错误、自身模块之间的出现的故障而导致的软件失效。子系统、模块、单元模块的设计人员需要仔细分析和自身有关系的子系统、模块、单元,识别出来这些接口上可能会传递的错误。
在模块代码中,需要对这些可能产生的错误预先做出预防,规避可能产生的错误导致自身的失效。而且,在实际的操作中,也要将可能产生的上下游错误尽数考虑,并体现在日志记录中,方便调试时的故障定位。
比方说经常会遇到的接口参数传递时会产生的字段空置,如果不进行非空判断或者空值检查,就很有可能会引起模块抛出空指针,进而导致软件失效。
容错性(fault tolerance)
软件出现故障或者违反指定接口定义的情况下,软件产品维持规定的性能级别的能力,也包括了是小防护能力。它是一种外部的接口防范规则。
容错性主要是指软件和外部的接口进行通信时,软件设计人员需要充分的分析外部接口可能产生的错误,然后在设计时,对这些可能发生的错误进行一一防范或者规避,防止这些由外部传入的错误导致软件自身发生失效。
可用性(availability)
系统、产品或者组建在需要使用时,可操作的和可访问的程度。
可用性可以在系统、产品或者组建处于升级状态期间,通过总时间的比例进行评估。因此可用性时成熟性(管理失败的频率)、容错性、可恢复性(每次失败后的故障停机时间)的组合。
比如对于网站应用来说,成熟性是指该网站能够持续访问的时间长短,而可用性则是网站可访问的时间占总时间的比例。
易恢复性(recoverability)
软件产品在实际的使用过程中,因为各种因素的影响,必然会出现失效的情况,那么易恢复性所衡量的,就是当软件失效发生时,软件产品重新建立规定的性能级别并且恢复受到影响的数据的能力。这个指标不仅要考虑恢复的程度,也要考虑到恢复的速度。
比如说文本编辑软件,当计算机系统发生故障时,编辑器有可能会发生失效,而此时系统逐渐恢复了正常后,编辑器是否能够从失效中恢复,比如“未响应”这种常见的失效,而恢复后的编辑器,是否丢失了已经录入的内容,这些就是易恢复性来衡量的。
安全性(security)
![62991a98a3c3a261a7c38c9cc0769d5d.png](https://i-blog.csdnimg.cn/blog_migrate/d91af1845eaf1e531bc3ddee0bd0f46e.jpeg)
(网络盗图,侵权删除)
安全性是众多对隐私要求高的软件最重要的特性。安全性指的是产品或者系统在保护信息和数据的前提下,方便人员或其它产品、系统对信息和数据访问的程度。
安全性在特性里拥有5个子特性。
保密性(confidentiality)
软件产品或系统确保数据只能被拥有权限进行访问的用户访问的程度。
保密性是防止信息泄露给非授权个人或实体,信息只能被授权用户使用的特性。
现在的保密技术主要包括如下几种:
- 防侦收:使得攻击者侦听不到有用的信息。
- 防辐射:防止有用的信息从各种途径辐射出去。
- 信息加密:这是常见的方式,在加密下,经过密钥的控制,用加密算法对信息进行处理,即使攻击者得到了信息,也会因为没有密钥,无法揭秘信息的内容。
- 物理加密:使用物理手段,在信息的保护时,采取限制、隔离、掩蔽、控制等措施。
完整性(integrity)
软件产品、系统或者组件防止未经过授权修改计算机程序或者数据信息的程度。
完整性是在信息的存储以及传输过程中,需要保持数据不被偶然或者蓄意的增删改、伪造、重放、更改序列、插入语句等破坏和丢失的特性。它是一种面向信息的安全性,它要求保持信息的原样,要确保数据信息正确的生成以及传输和接受并且存储。
与保密性不同,保密性要求信息不能泄露给未授权的人,而完整性则要求信息不能受到各种因素的破坏。一般的,会影响信息完整性的因素有:设备故障、传输误码、处理误码、存储误码、定是稳定度或精度引起的误码、干扰因素造成的误码、人为攻击系统、计算机病毒破坏等。
而一般的保证信息完整性的手段主要有:
- 协议:通过各种安全协议,可以有效地检测出被复制的信息、被删除的数据、失效的字段以及被修改的内容。
- 纠错编码方法:可以完成检错和纠错功能的方法。比较简单的纠错编码方法有奇偶校验法。
- 密码校验:这种方式是防止篡改和传输失败的重要手段。
- 数字签名:可以保证信息的真实性。
- 公证:申请网络管理或者第三方中介机构证明数据的真实性。
不可抵赖性(non-repudiation)
指的是操作命令已下达,软件动作或者事件可以证明已经发生了,这样的事件或者动作不能被否定的程度。
所以不可抵赖性也被称为不可否认性。在信息系统进行信息交互的过程中,确信参与者的真实同一性。利用信息源证据可以防止发信方否认已发送的信息,利用递交接受证据可以防止收信方事后否认已经接受了信息。
可核查性(accountability)
指的是用户或者一个实体在进行了操作后,可以追溯到唯一的操作实体的程度。
简单说就是谁做了什么,在之后可以精准的找到这个操作者的程度。
真实性(authenticity)
指的是用户或者一个实体,他的身份是可以被证明的。
早些年实行的火车票实名制、手机号码实名制,就是为了保障用户信息的真实性。
可移植性(portability)
![50c3fdd839831e1f4fe2b9d8176a8773.png](https://i-blog.csdnimg.cn/blog_migrate/d589cecd022fa6a3f76c2da819572cf4.jpeg)
(网络盗图,侵权删除)
一个软件产品或系统或者组件从一种硬件、三方软件或者其他的操作系统和使用环境转移到另一个环境的有效性和效率的程度。
它包含3个子特性:
适应性(adaptability)
软件产品无需采用有别于为考虑该软件的目的而准备的活动或者手段就可能适应不同的指定环境的能力。也就是软件系统无需做任何变动就能适应不同运行环境的能力。
适应性的例子,比如说java开发的软件,因jvm这样的虚拟层的思路,所以java在各个平台各个系统里的适应性都很强。
易安装性(installability)
易安装性指的是软件产品在制定环境中被安装的能力。
如果是个人软件,安装的操作者是用户,鉴于水平的高低,那么易安装性就可能会导致用户对适应性以及易操作性的体验感。
易替换性(replaceability)
易替换性指的是一个软件产品在相同的操作环境下,替代另一个用途相同的软件产品的能力。
可维护性(maintainability)
![c336a0c66eead3adeb3db6017f79a704.png](https://i-blog.csdnimg.cn/blog_migrate/e0a5363c0f7f9628b252dd011e1898f0.jpeg)
(网络盗图,侵权删除)
指的是软件的维护者可以对软件进行修改的有效性和效率的程度。
这种修改,包括了对软件的纠正、改进或者软件对环境、需求和功能的升级变化,也包括软件的升级和更新的安装。
可维护性包含了5个子特性:
模块化(modularity)
模块化指的是软件由各个组件组成,改变一个组件会对其他组件的影响程度。
开发同学常听到的“解耦”,就是这个根据这个特性。
可复用性(reusability)
指的是软件的程序可以被重复调用的程度。
大部分的软件程序代码,都会被严格的控制重码率,因为软件体量如不加控制,必然会影响性能,也会对可维护性造成较大影响。一般的,比如参数校验这种小功能,会在设计阶段就分类,所有用到该参数的都调用此方法,会降低许多的冗余代码书写。
易分析性(analyzability)
指的是评估软件产品在改变其各个部分中的一个或者多个功能,或者诊断软件中的缺陷或失效原因或者识别待修改部分的有效性和效率的程度。
比较贴合测试工作的易分析性体现的场景,就是软件所产生的日志,日志记录要精简,并且能切中要害,对于发生问题,能够快速的使得分析人员找到问题所在是必须要考虑的。
易修改性(modifiability)
好的代码不是看起来简简单单功能强大,而是能够让人快速读懂所实现的功能。易修改性指的是软件可以有效和高效的修改,并且不会引入缺陷或者影响现有软件质量的程度。
易测试性(testability)
易测试性指的是软件产品的能力能够被确认的程度。
易测试性也叫做可测试性,当软件发生故障并隔离、定位其故障的能力特性,在一定的时间和成本前提下,软件能够进行测试设计并执行测试的能力。
一般的可测试性包括可操作性、可观察性、可控制性、可分解性、简单性、稳定性还有易理解性。实际的软件设计中,通常考虑软件的可观察性和可控制性。
![e8a08308fa3e83c34f965d1f2c783917.gif](https://i-blog.csdnimg.cn/blog_migrate/e33dc85c6c904c3a125058df9c82113e.gif)
(网络盗图,侵权删除)
以上就是对于ISO25010软件产品质量模型所定义的8个特性以及31个子特性的介绍。
在IT行业工作,尤其是开发岗位以及测试岗位,工作内核必不可少的要绕着这些特性展开,如果不了解,可能就会产生许许多多的bug,所以,希望业内看客重视,当然啦,只是浅显的介绍,以了解为主。