随着神经网络等技术的快速发展, 人工智能被越来越多地应用到安全关键或任务关键系统中, 例如汽车自
动驾驶系统、疾病诊断系统和恶意软件检测系统等. 由于缺乏对人工智能软件系统全面和深入的了解, 导致系统时常发生严重错误. 人工智能软件系统的功能属性和非功能属性被提出以加强对人工智能软件系统的充分认识和质量保障. 经调研, 有大量研究者致力于功能属性的研究, 但人们越来越关注于人工智能软件系统的非功能属性.为此, 专注于人工智能软件系统的非功能属性, 调研了 138 篇相关领域的论文, 从属性定义、属性必要性、属性示例和常见质量保障方法几个方面对目前已有的研究工作进行系统的梳理和详细的总结, 同时重新定义和分析了非功能属性之间的关系并介绍了人工智能软件系统研究中可以用到的开源工具. 最后, 展望了人工智能软件系统非功能属性的未来研究方向和挑战, 以期为该领域的研究人员提供参考.关键词: 人工智能软件系统; 非功能属性; 质量保障; 神经网络中图法分类号: TP311中文引用格式: 叶仕俊, 张鹏程, 吉顺慧, 戴启印, 袁天昊, 任彬. 人工智能软件系统的非功能属性及其质量保障方法综述. 软件学报, 2023, 34(1): 103-129. http://www.jos.org.cn/1000-9825/6409.htm英文引用格式: Ye SJ, Zhang PC, Ji SH, Dai QY, Yuan TH, Ren B. Survey on Non-functional Attributes for AI-enabled SoftwareSystems and Quality Assurance Methods. Ruan Jian Xue Bao/Journal of Software, 2023, 34(1): 103-129 (in Chinese). http://www.jos.org.cn/1000-9825/6409.htmSurvey on Non-functional Attributes for AI-enabled Software Systems and QualityAssurance MethodsYE Shi-Jun, ZHANG Peng-Cheng, JI Shun-Hui, DAI Qi-Yin, YUAN Tian-Hao, REN Bin(College of Computer and Information, Hohai University, Nanjing 211100, China)Abstract: With the rapid development of neural network and other technologies, artificial intelligence has been widely applied in safety-critical or mission-critical systems, such as autopilot systems, disease diagnosis systems, and malware detection systems. Due to the lack ofa comprehensive and in-depth understanding of artificial intelligence software systems, some errors with serious consequences occurfrequently. The functional attributes and non-functional attributes of artificial intelligence software systems are proposed to enhance theadequate understanding and quality assurance of artificial intelligence software systems. After investigation, a large number of researchersare devoted to the study of functional attributes, but people are paying more and more attention to the non-functional attributes of artificialintelligence software systems. This paper investigates 138 papers in related fields, systematically combs the existing research results fromthe aspects of attribute necessity, attribute definition, attribute examples, and common quality assurance methods, and summarizes theresearch work on non-functional attributes of artificial intelligence software systems. At the same time, a summary and relationshipanalysis are presented on the non-functional attributes of artificial intelligence software systems. The open source tools that can be used inthe research of artificial intelligence software system are surveyed. Finally, the thoughts on potential future research directions andchallenges are summarized on non-functional attributes of artificial intelligence software systems, which, hopefully, will provide references* 基金项目: 国家重点研发计划 (2018YFC0407901); 江苏省自然科学基金 (BK20191297); 中央高校基本科研业务费 (B210202075)收稿时间: 2020-12-17; 修改时间: 2021-03-15, 2021-06-17; 采用时间: 2021-06-29; jos 在线出版时间: 2021-08-03CNKI 网络首发时间: 2022-11-15软件学报 ISSN 1000-9825, CODEN RUXUEW E-mail: jos@iscas.ac.cnJournal of Software,2023,34(1):103?129 [doi: 10.13328/j.cnki.jos.006409] http://www.jos.org.cn?中国科学院软件研究所版权所有. Tel: +86-10-62562563for researchers interested in the related directions.Key words: artificial intelligence software systems; non-functional attributes; quality assurance; neural network随着计算机硬件、云计算和移动互联等领域的重大突破, 人工智能 (artificial intelligence, AI) 被逐渐应用于包括癌细胞识别、农业土壤监测、广告精准投放、金融欺诈识别、信用评价以及自动驾驶汽车等 [1]安全关键或任务关键系统中. 本文将这类模拟人的某些思维过程进行学习、推理、规划、思考等智能行为的系统统称为人工智能软件系统. 人工智能软件系统具有较为复杂的结构, 如数字图片识别系统中一个简单的 4 层卷积神经网络就具有超过 13 000 个参数, 一些人类无法发现的微小扰动就有可能导致神经网络出现相反的判断. 不幸的是, 由于缺乏对人工智能软件系统的全面认识和评估标准, 导致在高风险应用中时常发生一些重大错误, 引起了人们对于人工智能软件系统质量保障问题的关注和研究.研究者从人工智能软件系统的分析、测试、验证等方面对人工智能软件系统的质量保障进行了探索 [2]. 依据测试、验证的结果, 研究人员可以有依据、有方向地提出保障思路. 当前, 针对人工智能软件系统相比传统软件存在的差异问题, 研究人员对传统软件测试方法进行改进和创新, 产生了各式各样的测试方法. 如 Pei 等人提出了一种深度学习系统白盒测试方法——DeepXplore[3], 该方法通过使用生成的测试用例对模型进行重新训练来提高模型的准确率, Pei 等人在实验中首次使用神经元覆盖率作为对抗性样本生成的度量指标, 同时他们以错误行为发现次数和训练数据污染抵抗能力作为模型度量指标; Cisse 等人引入一种名为 Houdini 的对抗性示例生成方法 [4], 该方法可基于语音识别、自然语言处理等应用模型的测试评估指标生成对抗性示例, 并且在实验中使用 PCKh(percentage of correctly detected keypoints)、结构相似性指数 (structural similarity index, SSIM) 和可感知性(perceptibility) 作为模型方法的度量指标; Kurakin 等人利用快速梯度符号法 (fast gradient sign method, FGSM)、基础迭代法 (basic iterative method, BIM)、最相似迭代法 (iterative least-likely class method, ILCM) 等算法生成对抗性样本 [5], Kurakin 等人还将所生成的对抗性样本打印并通过模拟真实世界中的目标分类场景进行测试, 并在实验中使用重构率 (destruction rate) 作为模型性能的度量指标.测试、验证等方法多样化的同时也产生了系统评估标准不统一的问题, 为此研究人员在基于传统软件评估指标基础上逐渐形成了人工智能软件系统的属性指标. 该指标的提出一方面加强了从业人员对人工智能软件系统的认知, 另一方面提高了人工智能软件系统的质量保障力度. 人工智能软件系统的软件属性是指其为帮助用户实现目标或处理问题所需要的条件, 也是人工智能软件系统及其组件要满足标准和规范所要具备的要求. 这些属性指标对人工智能软件系统的性能维护和质量保障起到指向性的重要作用, 具体可分为功能属性 (functional attributes,FAs) 和非功能属性 (non-functional attributes, NFAs). 其中功能属性描述系统功能, 它是指人工智能软件系统为实现用户需求和业务需求所必须具备的能力. 而非功能属性反映系统质量、特性和约束. 作为功能属性的补充, 非功能属性是依赖于功能属性而存在的属性, 它们紧密约束和限制着人工智能软件系统, 对系统的质量保障具有非常重要的作用.对人工智能软件系统使用非功能属性指标进行评估能指出系统存在的不足; 即人工智能软件系统需要在什么方面改进才能保障系统模型的质量. 当前研究中, 包括文献 [6,7] 在内的一些工作对人工智能软件系统的功能属性已进行一定程度的概括, 但尚且缺乏对非功能属性进行系统研究的相关工作. 为了填补这个空白, 本文将以人工智能软件系统非功能属性作为研究对象, 如图 1 所示, 详细地总结包含鲁棒性、安全性、数据隐私性、公平性、可解释性和可用性在内的非功能属性.目前王赞等人 [1]、Zhang 等人 [6]和 Vinayagasundaram 等人 [7]在针对人工智能领域的测试工作进行系统总结的同时, 对人工智能软件系统的非功能属性也进行了一定程度的讨论. 王赞等人从包括测试度量指标在内的多个角度来系统梳理深度神经网络测试的相关工作; Zhang 等人从范围更广的机器学习测试方面进行总结, 对机器学习测试流程、测试组件、测试属性和应用场景等部分作出总结; Vinayagasundaram 等人则从整个人工智能软件系统的体系结构角度对度量标准进行定义, 以衡量系统软件质量. 此外还有 Gilpin 等人 [8]和 Mehrabi 等人 [9]对人工智能软件系统的单个非功能属性进行系统地梳理和说明. 令人遗憾的是, 这几项相关工作的内容主要讲述人工智能研104 软件学报 2023 年第 34 卷第 1 期究领域的测试和人工智能的体系结构, 对人工智能非功能属性的研究并未形成系统、有效的覆盖性总结. 本文将关注人工智能软件系统的非功能属性. 如图 2 所示, 将从属性定义、属性必要性、非功能属性的示例以及常见质量保障方法几个方面系统地梳理人工智能软件系统中常见的非功能属性. 其中, 属性定义以文字描述和公式表示两种形式给出非功能属性的定义; 属性必要性讲述非功能属性在人工智能软件系统开发中的重要性; 属性示例中以汽车自动驾驶系统等例子来呈现非功能属性; 常见质量保障方法部分总结现有的人工智能软件系统非功能属性的质量保障方法和研究思路. 本文还将对非功能属性之间的关系进行定义和总结分析, 并展望人工智能软件系统非功能属性的未来研究方向和挑战, 以期为该领域的研究人员提供参考.为了对该研究问题进行系统的梳理和分析, 本文首先将“Non-Functional Attributes/Properties for ArtificialIntelligence”“Robustness/Security/Data Privacy/Fairness/Interpretability/Usability of Artificial Intelligence”等设为搜索关键词, 在国内外重要的学术搜索引擎 (例如 Google 学术搜索、Springer、DBLP、CiteSeerX、CNKI 等) 中检索出相关论文; 随后, 我们筛选并移除了与该综述问题无关的论文. 有 3 名熟悉人工智能软件系统的研究人员参与了这一过程, 并通过讨论来消除分歧; 接着, 通过查阅论文中的相关工作和研究人员的已发表的论文列表, 以及通过已搜索到的文献的引用和被引用获取更多相关论文; 本文最终确定并引用了有关论文 138 篇. 论文的发表时间概况如图 3 所示, 最终所选中的论文有 75 篇发表在 CCF 评级为 A, B 的各领域顶级期刊和会议上, 其中人工智能领域 (38 篇)、软件工程及系统和程序设计语言领域 (15 篇)、计算机科学理论领域 (1 篇)、网络与信息安全领域(18 篇)、计算机体系结构及平行分布计算和存储系统领域 (1 篇)、数据库及数据挖掘和内容检索领域 (1 篇)、人机交互与普适计算领域 (1 篇). 除此之外, 本文引用的文献还包括 arXiv (17 篇)、CCF 评级为 C 类会议期刊论文(7 篇)、软件学报 (2 篇)、其他 CCF 未收录的会议和期刊论文 (32 篇) 和相关书籍 (5 本). 图 4 展示了不同非功能属性的论文分布情况.棒性安全性数据隐私性公平性可解释性可用性人工智能软件系统功能属性图 1 人工智能领域常见非功能属性功能属性属性定义属性必要性属性示例常见质量保障方法 图 2 非功能属性研究范畴50411221 21 23 204030文献数量20100年份2000- 2016 2017 2018 2019 20202015图 3 论文发表时间概况棒性公平性可解释性安全性数据隐私性可用性14%15%20%11%23%17% 图 4 不同非功能属性研究工作占比叶仕俊 等: 人工智能软件系统的非功能属性及其质量保障方法综述 105本文第 1 节从属性定义、属性必要性、示例和常见质量保障方法几个方面对人工智能软件系统的非功能属性进行详细的总结梳理; 第 2 节对人工智能软件系统非功能属性进行归纳, 并对它们之间存在的关系进行探讨;第 3 节对本文所列举的人工智能软件系统非功能属性的现有工具或开源项目进行总结; 第 4 节总结全文, 并展望非功能属性的未来研究方向和挑战.1 人工智能软件系统非功能属性在人工智能软件系统发展前期, 人们过于关注人工智能软件系统的功能属性, 从而对于非功能属性的认知远远低于功能属性, 这不利于对人工智能软件系统的认知和保障工作. 近年来, 人们越来越关注非功能属性的研究,将其作为人工智能软件发展的新突破.常见的人工智能软件系统功能属性有正确性 (correctness) 和过拟合程度 (overfitting). 正确性是系统能够正确处理各种输入并产生正确输出的能力 (概率)[6]. 正确性的研究主要集中于数据 [10]、模型 [11]和统计方法 [12,13]这 3 个方面. 过拟合程度是衡量模型算法由于过度的拟合当前可用数据而导致无法很好地拟合未来数据或者可靠地预测未来结果的程度指标 [14]. 关于过拟合的研究主要集中于产生过拟合的原因 (复杂的模型 [15]、稀疏的样本 [16?18]) 以及模型过拟合验证 [19,20]两个方向.功能属性描述了人工智能软件系统所具有的实现各种需求的能力. 而非功能属性依赖于功能属性, 是系统特性和约束的表征. 人工智能软件系统常见的非功能属性有鲁棒性、安全性、数据隐私性、公平性、可解释性和可用性等. 本节将以属性定义、属性必要性、属性示例和常见质量保障方法 4 个方面对以上非功能属性进行详细的阐述.1.1 鲁棒性1.1.1 鲁棒性定义当前, 不同的研究对鲁棒性 (robustness) 有不同的定义.#(S )E(#(S ))(1) 鲁棒性在 IEEE 软件工程标准术语中定义为 [21,22]: “在无效输入或者压力环境下, 系统或者系统组件可以正确运行的程度.” 借鉴这一定义, 用公式 (1) 给出鲁棒性在人工智能软件系统中的定义; 假设 S 为人工智能软件系统;E(S) 是 S 的正确性; 是对人工智能软件系统 S 的任意组件 (例如数据、学习程序或者框架) 经过干扰后的系统, 则人工智能软件系统 S 的鲁棒性 r 就是 E(S) 和 之差的度量, 即:r = E(S ) - E(#(S )) (1)因此, 鲁棒性衡量了人工智能软件系统对干扰的抵抗能力.(2) Huber 从统计学的角度系统地给出了鲁棒性 3 个层面的概念 [23]:① 对于人工智能软件系统中所有学习模型的基本要求; 模型具有较高的精度或有效性;② 对于模型所出现的较小偏差, 只能对算法性能产生较小的影响 (主要是噪声, noise);③ 对于模型所出现的较大偏差, 不可对算法性能产生“毁灭性”的影响 (主要是离群点, outlier).(3) 对抗鲁棒性是鲁棒性的常见类别, 其主要利用对抗性输入来增强系统的鲁棒性. 参照 Katz 等人 [24]的工作可将对抗鲁棒性分为局部对抗鲁棒性和全局对抗鲁棒性如公式 (2), 公式 (3) 所示.首先是局部对抗鲁棒性, 假设: x 是人工智能学习模型 h 的一个测试输入; x’是通过对 x 进行对抗扰动而生成的另一个测试输入; h(x) 和 h(x’) 是 x、x’在模型 h 上的输出. 对于任意 x’如果满足公式 (2), 则称模型 h 在输入 x 处是 -局部鲁棒性的.?x’ : ||x - x’||p ≤ → h(x) = h(x’) (2)局部对抗鲁棒性要求在给定输入的领域内的所有样本都使用相同的标签进行分类. 换言之, 局部对抗鲁棒性所关注的是对一个特定测试输入的鲁棒性, 而全局对抗鲁棒性是针对所有输入的鲁棒性."全局对抗鲁棒性定义如下, 假设: x 是人工智能学习模型 h 的一个测试输入; x’是通过对 x 进行对抗扰动而生成的另一个测试输入; h(x) 和 h(x’) 是 x、x’在模型 h 上的输出. 如果任意的 x 和 x’满足公式 (3), 则称模型 h 是 -全局鲁棒性的:106 软件学报 2023 年第 34 卷第 1 期?x; x’ : ||x - x’||p ≤ → h(x) - h(x’) ≤ " (3)上述工作皆表明: 与正确性和过拟合程度不同, 鲁棒性是衡量系统在存在噪声干扰下的正确性 [6,25], 即一个具有优异鲁棒性的系统在噪声干扰下应该能够很好地抵抗干扰、保持自身性能.1.1.2 鲁棒性必要性鲁棒性是人工智能软件系统的一种重要非功能属性 [26,27]. 随着人工智能逐渐在决策和自主系统中扮演至关重要的角色, 例如在自动驾驶系统、恶意软件检测系统和医疗诊断系统中, 人工智能软件系统被发现在测试和应用中时常由于环境、输入等因素的变化导致系统出错. 正如 Hamon 等人的工作提出; 当前正在开发的人工智能系统距离实现自治系统所具有的最低鲁棒性、安全性要求还很遥远 [28]. 如何提高系统鲁棒性以减少系统出错成为亟待解决的问题.1.1.3 鲁棒性示例为更清楚地解释鲁棒性, 本文以汽车自动驾驶系统 (autonomous driving system, ADS) 为示例. PC Magazine 将自动驾驶汽车定义为“由计算机控制的自动驾驶的汽车”[29]. 自动驾驶系统被应用于汽车上来保证在无人操作情况下, 汽车能够感知周围环境并且安全行驶. 关于自动驾驶系统的研发试验始于 20 世纪 20 年代, 并于 1977 年成功在日本实验了第一款半自动汽车. 近年来, 快速发展的自动驾驶汽车呈现出实用化趋势.就在人们欣喜于汽车自动驾驶系统的市场化时, ADS 却经常暴露一些致命漏洞. 自动驾驶系统中的识别功能是汽车行驶过程中所做决策的重要依据之一, 包括了标志识别、人物识别和道路识别等. 但本田汽车公司所研发的汽车自动驾驶系统在一次测试中被发现; 日本拉面“天下一品”的商标和交通标志“禁止驶入”会被汽车错误识别为同一种标识; 在 2018 年亚利桑那州所发生的无人驾驶汽车致命事故 [30]中, 系统模型将行人错误地识别为物体,从而导致了错误的行驶决策. 本节所要研究的鲁棒性就是能够表示系统在干扰环境下维持本身正确性的属性.1.1.4 常见质量保障方法当前人工智能软件系统鲁棒性质量保障的主流方法为对抗学习, 依据现有的工作可以将对抗学习分为以下2 种.(1) 对抗性样本生成基于 Szegedy 等人 [31]和 Wang 等人 [32]的工作, 攻击者通常可以通过对少量正确标记的输入进行扰动来构造使系统错误输出的输入, 这些输入被称之为对抗性样本. 现有的方法大都是通过研究和构造对抗性样本来增强系统模型的鲁棒性 [33?35]. Carlini 等人 [36]依据距离度量方法创建了一组攻击样本, 该方法对当前多种防御方法具有很强的攻击能力; Tjeng 等人 [25]提出使用测试输入与其最接近的对抗示例之间的距离来衡量鲁棒性.(2) 对抗性学习训练这类方法通过在人工智能软件系统模型优化过程中