2.1.2 软件质量模型
软件质量模型用以描述影响软件质量的行为及特性,主要有Boehm、McCall、ISO共3类软件质量模型。ISO/IEC 14598和ISO/IEC 9126以分层方式定义了软件质量特性及其影响质量特性的子特性,基于每个质量特性及其子特性,测量软件的内部、外部及使用属性,确认并评价软件内部、外部及使用质量水平。
质量特性及子特性为软件质量测量和评价提供了一致的术语,为软件质量需求及过程能力之间的综合权衡提供了统一框架。使用软件的产品属性如功能性、性能效率、可靠性等刻画软件质量时,所反映的就是软件产品质量。当软件在特定环境及场景下运行时,所表现出来的行为就是软件的使用质量。在对软件质量进行测量时,着重强调标准的依从性,当对所有质量特性及其子特性进行测量时,应遵循相关标准、规程、约定以及与标准的符合程度。
2.1.2.1 使用质量模型
使用质量是用户使用软件系统的结果而非软件系统自身的测量属性。ISO/IEC 9126-1将使用质量定义为:满足目标用户和支持用户的使用要求,是软件系统广义的质量目标。软件系统的功能性、可靠性、有效性、可用性决定目标用户在特定场景中的使用质量,支持用户所关注的则是基于可维护性和可移植性的质量。可用性是软件系统效能及交付能力的外在呈现及核心质量特性,功能性、可靠性、安全性、有效性、维护性、移植性服务服从于可用性。基于用户视角,在特定的使用场景中,所体验到的是软件质量特性的总体,关注的重点并非软件的结构和行为(内部质量和外部质量),而是用户体验及交付能力的呈现、用户价值的实现。使用质量模型由有效性、效率、满意度、抗风险能力、周境覆盖等特性构成。软件使用质量模型如图2-4所示。
图2-4 软件使用质量模型
使用质量模型将软件系统对相关人员的影响特征化,由软件质量、人员属性、使命任务及使用环境共同决定。即便软件系统实现了内部、外部质量目标,但如果用户不满意,不能得到用户和市场的认同,即认为该系统未实现其质量目标。也就是说,对于一个软件系统,即便满足产品测度准则的要求,但并不足以确保其符合外部测度准则,而满足其质量特性的外部测度准则也并非足以保证符合使用质量准则的要求。此乃以用户为关注焦点的现代质量观,是基于能力战略的软件测试的核心思想。一般地,用户关注的典型质量特性如下:
(1)功能完备,性能优良,实现用户需求,超越用户期望。
(2)良好的人因工程,人机界面友好,操作简便,维护方便,给用户以美妙的体验。
(3)用户手册、支持文档、在线帮助、智能支持等功能完备准确,清晰易懂,使用方便。
(4)使用中不发生死机以及用户能感知的缺陷、运行缓慢等现象。
(5)运行过程中若发生问题,能够容易地排除或实现降功能使用。
2.1.2.2 产品质量模型
内部质量是软件系统质量特性的总体,由需求分析、软件设计、编码实现赋予,由设计评审、软件测试验证和确认。产品质量模型由与软件系统的静态属性、动态属性密切相关的功能性、效率、兼容性、易用性、可靠性、安全性、可维护性和可移植性8个质量特性及一系列子特性构成。软件产品质量模型如图2-5所示。对于每个特性及子特性,可以测量软件系统的一组属性,以确定其所达到的质量水平。
图2-5 软件产品质量模型
(1)功能性是指软件系统所实现的功能,达到设计要求(满足用户需求的程度),强调完备性、正确性和适合性。
(2)效率是指在确定的使用环境及任务场景中,软件系统对操作使用所表现出的时间特性,如响应速度;实现特定功能时资源的利用情况,如CPU占用时间、内存占用率等。若局部资源占用率高,则意味着存在性能瓶颈;当对并发用户数等进行测试和度量时,需要考虑系统的可伸缩性。
(3)兼容性包括共存性和互操作性两个子特性。共存性是指软件系统同系统平台、子系统及第三方软件等兼容的能力;对于特定软件系统,还包括国际化、本地化需求适宜性处理的能力;互操作性要求系统功能之间能够有效对接,涉及API和文件格式等。对于不同的平台系统,兼容性表现为适配性。
(4)易用性是指用户学习、使用及输入准备、输出理解的难易程度,如安装简单、界面友好、操作简便、维护方便,且能够适用于残疾人、老年人等特殊用户群体。
(5)可靠性是指在规定的时间内和条件下,软件系统正常工作(不发生失效)的能力。工程上通常使用平均失效时间(Mean Time To Failure,MTTF)、平均无故障间隔时间(Mean Time Between Failure,MTBF)等指标度量软件系统的可靠性。
(6)安全性是指在确定的条件下,确保软件系统登录、操作使用、数据传输、数据存储等安全的能力,包括用户身份认证、数据加密和完整性校验、关键操作防护、安全漏洞检测等技术措施,关键操作应具有完整的日志或记录,以支持对不同用户角色进行操作的审查。其包括保密性、完整性、抗抵赖性、可核查性、真实性等子特性。
(7)可维护性是指软件系统投入使用之后,当错误发生或用户需求、运行环境等发生变化时,能够进行修改的程度及升级的能力,包括模块化、可重用性、易分析性、易修改性、易测试性等子特性。
(8)可移植性是指软件系统从一个系统或环境移植到另一个系统或环境的难易程度,或一个系统和外部条件共同工作的容易程度。其包括适应性、易安装性、易替换性等子特性。