软件质量模型,是软考中一道看似简单、实则暗藏大量陷阱的经典考点。它的正式出处是我国国家标准《软件工程 产品质量 第1部分:质量模型》(GB/T 16260.1-2006),该标准等同采用国际标准 ISO/IEC 9126,为软件产品定义了六个质量特性以及每个特性之下的若干子特性。这一整套"特性加子特性"的层级结构,就是软件质量模型的核心内容。
要理解这套模型的价值,必须先回答一个更根本的问题:软件质量到底是什么,以及我们能否用一套统一的标准去描述它。早期软件工程界对质量的认知是模糊的,人们知道软件有好坏之分,却说不清楚好坏体现在哪些维度。直到研究者把"质量"拆解成一组可以观察、可以度量、可以评价的特性,质量的讨论才从主观感受转向客观指标。GB/T 16260.1 所做的,正是把软件质量拆成功能性、可靠性、易用性、效率、可维护性、可移植性六大特性,并在每个特性下继续细分出子特性,从而形成一棵可逐层定位的质量分解树。
这套模型在结构上可以分为三个层次。最顶层是质量特性,即前面提到的六大维度;中间层是子特性,每个质量特性下面有三到五个子特性,用于把抽象的特性进一步具体化;最底层是度量元,用于对子特性进行定量测量。软考的选择题主要集中在顶层和中间层,也就是"某个子特性归属于哪个特性"这类辨析题。
GB/T 16260 并不是一个孤立的标准,而是一个标准族。第一部分负责定义质量模型,第二部分定义外部度量,第三部分定义内部度量,第四部分定义使用质量的度量。命题人有时会在这里设置陷阱,考察考生是否清楚"质量模型"与"质量度量"是两回事,前者回答"质量由哪些维度构成",后者回答"如何给这些维度打分"。
标准还把软件质量区分为内部质量和外部质量两个层面。内部质量是软件在开发过程中、尚未运行状态下,从其代码和设计等静态属性出发评价的质量;外部质量是软件在运行环境中,从其实际行为出发评价的质量。同一个质量特性,既可以从内部质量的角度考察,也可以从外部质量的角度考察。例如可维护性,从内部看可以考察代码结构的清晰程度,从外部看可以考察修改一处代码后系统是否仍然稳定。这一区分在选择题中偶有出现,命题人会问"某项度量属于内部度量还是外部度量",考生需要理解内部质量对应的是静态的、开发期的视角,外部质量对应的是动态的、运行期的视角。
理解软件质量模型的难点,不在于背诵六大特性的名字,而在于把握每个特性的度量对象和它们之间的边界。六个特性分别回答的是软件质量的不同侧面,一旦把它们的边界划清,绝大多数辨析题就能迎刃而解。
功能性回答的问题是"软件能否提供满足需求的功能"。它关注软件在指定条件下运行时,所提供功能满足明确需求和隐含需求的程度。功能性之下有五个子特性:适合性、准确性、互操作性、安全保密性以及功能性的依从性。其中适合性衡量功能是否恰好匹配需求,准确性衡量功能执行的结果是否精确,互操作性衡量软件能否与其他系统交换信息并协同工作,安全保密性衡量软件防止未授权访问的能力。
可靠性回答的则是另一个问题:"软件能否在规定的条件下持续稳定运行"。它关注的是时间维度上的表现,衡量软件在指定时间段内维持规定性能水平的能力。可靠性之下同样有子特性,包括成熟性、容错性和易恢复性。成熟性衡量软件因自身缺陷而失效的频率,容错性衡量软件在出现故障或违反规定输入时仍能维持运行的能力,易恢复性衡量软件失效后重建性能并恢复数据的能力。功能性与可靠性的根本区别在于:功能性关心"有没有"这个能力,可靠性关心"能不能一直保持"这个能力。
易用性回答的问题是"用户使用软件时付出的努力有多大"。它衡量软件被理解、学习、操作和吸引用户的程度,其子特性包括易理解性、易学性、易操作性和吸引性。易理解性衡量用户能否理解软件的逻辑概念和适用性,易学性衡量用户学会使用软件所需付出的努力,易操作性衡量用户操作和控制软件是否方便,吸引性衡量软件吸引用户的程度。
效率回答的则是"软件对资源的消耗是否合理"。它关注软件在规定条件下,其性能水平与所用资源量之间的关系,子特性包括时间特性和资源利用性。时间特性衡量软件响应和处理请求的速度,资源利用性衡量软件完成任务所需占用的资源数量。易用性与效率的区别可以用一句话概括:易用性讲的是"人觉得好不好用",效率讲的是"机器跑得快不快、省不省资源"。
可维护性回答的问题是"软件被修改的难易程度"。它衡量软件被改正错误、改进功能或适应环境变化的能力,子特性包括易分析性、易改变性、稳定性和易测试性。易分析性衡量诊断缺陷或定位待修改部分所付出的努力,易改变性衡量实施修改所付出的努力,稳定性衡量修改后软件保持稳定运行的能力,易测试性衡量修改后软件被验证的能力。这四个子特性恰好对应软件维护的完整闭环:先分析定位问题,再动手修改,修改后要保持稳定,最后还要能验证修改是否正确。
可移植性回答的则是"软件从一个环境迁移到另一个环境的能力"。它的子特性包括适应性、易安装性、共存性和易替换性。适应性衡量软件无需专门处理就能适应不同环境的能力,易安装性衡量软件在新环境中安装所付出的努力,共存性衡量软件与其他软件共享环境共同运行的能力,易替换性衡量软件替代其他软件或组件的能力。两者的区别在于:可维护性关注的是"同一环境内的修改",可移植性关注的是"跨环境的迁移"。一个软件可以很容易地被修改,却很难从 Windows 迁移到 Linux,反之亦然,这两类能力彼此独立,不可混为一谈。
软件质量模型的六大特性和二十余个子特性,构成了一个完整但容易混淆的分类体系。要真正掌握它,不能靠死记硬背,而要理解每个子特性归入某个特性的内在逻辑。
功能性之下的五个子特性,可以理解为"功能本身好不好用"的不同侧面。适合性看功能是否对口,准确性看功能是否精准,互操作性看功能能否协作,安全保密性看功能是否设防,而功能性的依从性看功能是否符合标准法规。这五个子特性的共同点是,它们都围绕"功能"这个核心展开。
可靠性之下的成熟性、容错性、易恢复性,可以理解为"软件面对故障时的三种姿态"。成熟性讲的是少出故障,容错性讲的是出了故障还能撑住,易恢复性讲的是撑不住之后能快速复原。三者构成了一条从预防、到抵抗、再到恢复的完整链条。
易用性之下的易理解性、易学性、易操作性、吸引性,对应的是用户使用软件的完整时间线。用户先要理解软件是干什么的,然后要学会怎么用,接着要能方便地操作,最后还要被软件吸引愿意继续用。
效率之下的时间特性和资源利用性,可以理解为"用多少代价完成任务"的两个侧面。时间特性看的是完成任务耗费的时长,资源利用性看的是完成任务占用的内存、处理器、带宽等资源。两者共同回答一个核心问题:软件是否在合理的资源约束下高效地完成工作。
可维护性之下的易分析性、易改变性、稳定性和易测试性,对应的是软件修改的完整流程,从定位问题、实施修改、保持稳定到验证结果。可移植性之下的适应性、易安装性、共存性和易替换性,则对应的是软件从一个环境搬到另一个环境的完整流程,从适应环境、完成安装、和平共处到替换旧系统。把这两组子特性放在一起对比记忆,归属关系就会清晰很多。
GB/T 16260 的第四部分单独定义了使用质量,它关注的是用户在实际使用环境中获得的综合体验,其度量指标包括有效性、生产率、安全性和满意度。使用质量与六大质量特性的区别在于视角不同:六大质量特性是从软件产品本身出发的"产品视角",使用质量是从用户实际使用结果出发的"用户视角"。命题人在考察这部分时,常要求考生区分"产品质量"和"使用质量"这两个概念。
GB/T 16260.1 依据的 ISO/IEC 9126 是一个较早期的质量模型。国际标准化组织后来推出了 ISO/IEC 25010,对质量模型做了升级,将特性扩展为八个,包括功能性、性能效率、兼容性、易用性、可靠性、安全性、可维护性和可移植性。最显著的变化有两个:其
本篇完!