国产化平台自主可控测试工具研究设计

2019-05-14 08:25沈雷左芸解群李翔
数字技术与应用 2019年2期
关键词:软件测试国产化

沈雷 左芸 解群 李翔

摘要:国产计算机系统的自主可控评价可从两方面考虑,一是知识产权自主可控;二是运行安全可靠。文章对国产计算机系统的自主可控评估方法开展研究。重点关注软件自主可控度的评价,对软件代码克隆检测、软件演化分析及溯源分析等方法进行分析,给出了软件自主可控测试工具的设计方案。

关键词:国产化;自主可控;软件测试

中图分类号:TP311 文献标识码:A 文章编号:1007-9416(2019)02-0154-05

1 概述

随着国家“自主可控”规划的推进,近年来国产软硬件得到快速发展。硬件方面,龙芯、申威、飞腾等国产处理器经历多个版本的改进升级,性能稳步提升,与国外主流处理器的差距越来越小。软件方面,以中标麒麟操作系统、锐华操作系统、达梦数据库为代表的国产基础软件也在军政各个行业得到广泛应用,自主可控计算机环境已经逐渐形成。

本文通过分析国产计算机环境的特点,提出一种自主可控测试工具的设计方案,用于对国产计算机系统软硬件自主可控程度进行测试。

2 自主可控发展背景及现状

数年前,我国军事装备的基础设备及其核心技术基本靠进口,无法从根本上保障信息的安全,国民经济和国防安全均存在安全隐患。因此,软硬件自主可控的国产化改进得到了国家的高度重视,随着“自主可控”规划的推进,国内自主可控计算机环境已经逐渐形成,国产关键软硬件产品已开始得到应用(表1)。

目前,国产计算機环境的应用面、规模相对较小,应对复杂装备环境时,兼容性、综合性能、可靠性验证不充分,缺乏有效的诊断分析工具、测试评估环境。如何确保国产化软硬件环境具有完全自主知识产权,真正做到安全可控,这给测试工作带来新的挑战。

3 国产计算机自主可控评估方法

单一软硬件的自主可控度主要由软硬件的设计实现方案决定,同一型号产品的自主可控评价结果应该是一个固定值。出于保密需要,测评人员往往无法获取某产品的详细设计实现方案,所以通常只能由厂商根据对应软硬件的评价模型计算结果,并发布到产品数据库。在具体评估项目中只需获取计算机中各软硬件的唯一性特征标识,包括型号+版本+其他唯一性标识(比如CPU的串码,软件序列号等),再通过数据库中查询匹配对应的自主可控结果。

对整机系统的自主可控评价(图1),可由组成系统的软硬件单品的自主可控度进行加权计算后获得。

本文第3节对软件自主可控测试技术进行了详细说明,第4节提出了自主可控测试工具的实现方案,第5节对关键技术做了简单介绍。

4 软件自主可控测试技术研究

现有的软件代码分析技术主要包括以下几类:

4.1 代码克隆检测与代码相似性分析

国产化系统软件很多源于Linux开源项目,代码相似性分析对国产软件评估有着十分重要的作用。

软件克隆研究包括克隆定义与分类、相似性分析、克隆管理以及相关的实例研究与工具开发等。对于代码克隆分类,较普遍认可的是Roy等人分为四类的提议[1]: 第一类指除空白和注释外完全相同的代码片段,也称为精确克隆; 第二类指除空白、注释以及变量名及常量值的变化外,语法结构完全相同的代码片段; 第三类指除包含第二类克隆所涉及差异外,还存在少量语句增加、删除、修改的代码片段,也称为近似克隆; 第四类指具有相同的语义,但采用不同语法形式的代码片段。前三类克隆从文本相似的角度进行划分,第四类则从功能相似的角度划分。

软件克隆检测包括两方面研究内容,即候选克隆片段的选取与候选克隆片段的相似性分析。候选克隆片段的选取是决定整体克隆检测速度的关键因素之一,一般可基于编程语言的语法结构选取克隆片段。候选克隆片段的相似性分析也是决定整体克隆检测速度的关键因素,可使用后缀树(suffix tree)和频繁子序列挖掘(frequent subsequent mining)算法等进行匹配检测,对于有向标记图形态的模型规范化表示,可使用子图同构(subgraph isomorphism)、特征向量(characteristic vector)[2]等技术进行检测。以色列技术学院的Yaniv David和Eran Yahav提出针对二进制代码的相似性分析技术,并成功应用于二进制代码搜索中。该技术将二进制代码抽象成程序流图,并通过流图相似性以判别软件相似性。有研究发现,一个程序片段与另一个程序片段可能存在特殊关联,并提出规则制导的克隆同步方法来实现对“异型同义”的克隆代码间的一致性维护。

4.2 软件演化分析

经过数年发展,国产化系统软件在不断改进完善中也演化出针对不同平台的多个版本。对演化历史的分析同样是一个值得关注的问题。

Harald Gall[3]等人提出一个三维直观表示方法来检测一个软件版本的历史信息。三维信息分别是:时间、软件系统结构、一种属性值。每个结构用版本序列号确定,并且拥有自己的属性值,这些属性值用颜色来表示,每个颜色模块与抽象分解模块连接。Tudor Girba[4]等人根据软件在运行过程中的一系列需求提出一个演化分析方法Hismo,其通过可视化的手段对软件历史行为进行建模,以表示软件演化的过程。Robbes[5]为软件中操作和信息的变化进行建模,以便从程序环境中快速找到影响系统的操作,这样就能够对软件的运行进行准确地监控,可以使开发者和研究者更好地利用和管理更为复杂的系统。

软件演化的另一个研究热点是在线演化。目前国产化软件中还未出现大规模在线演化的实例,此处不展开赘述。

4.3 软件溯源分析

4.3.1 基于软件来源追踪的软件溯源分析

为提升开发效率,软件构造过程中开发人员常常简单克隆互联网上开源代码,并作针对性修改。然而,上述软件来源与软件需求常常不能精确匹配,导致代码与软件需求间存在差异;软件经过反复修改后,其来源也常常变得不可追踪。针对软件来源追踪问题,以开源软件库为数据源,通过代码相似性搜索、机器学习等技术实现软件来源追踪框架,基于互联网搜索进行软件溯源和差异分析。

4.3.2 基于软件依赖关系的软件溯源分析

开源软件在为应用提供海量可复用制品和群体开发支持的同时,亦为其引入了额外的依赖复杂性和配置动态性。软件系统的可依赖性对可控性影响日益突出。同时开放环境下,软件组件的不可控将被放大至整个软件系统的不可控。可以从软件基本结构、构造方法着手,研究软件的多重复杂性、环境的不确定性及其对其它软件资源的强依赖性,保障软件可控地被开发、运行与演化。

4.3.3 基于軟件演化历史的软件溯源分析

在开放、动态、难控的互联网环境下,以用户为中心的软件应用需要主动感知和适应环境,并随着开放用户群体的需求变动而持续地演进。这就需要从软件的演化历史进行研究。通过搜集软件演化历史,阐明软件持续演进机理,发现软件及其组件演进规律,实现基于软件演化历史的软件溯源分析。

5 软件自主可控测试工具

5.1 源代码分析工具

源代码分析主要基于成熟的代码静态分析技术和运行时追踪技术,对软件关键代码进行静态分析和动态测试,掌握代码的基本质量情况和特征值,并录入进基准数据库。组成图如图2所示。

静态分析主要包含代码复杂度分析,静态拓扑结构特征分析,结构稳定性分析,系统基础结构分析等,同时,将发现的问题录入进缺陷库。此外,支持对二进制文件进行反汇编来进行特征值提取,并通过建立索引存入基准数据库,为溯源分析提供基准数据。

动态测试主要是通过插桩技术,在软件运行时检测软件行为。可借助insure++等工具完成动态测试。

源代码分析的代码质量等度量数据将存入软件度量库,软件代码分析得出的缺陷存入软件缺陷库,为代码缺陷管理提供支撑。

5.2 软件溯源分析工具

主要从软件来源追踪、依赖关系和演化历史三部分进行溯源分析。如图3所示。

来源追踪主要通过代码相似性搜索、机器学习等技术实现软件来源追踪框架,进而设计并实现基于互联网搜索的软件来源发现和差异分析的支撑工具原型,形成FOSS(Free and Open Source Software)基准数据库;在上述研究进展基础上,形成基于互联网搜索及代码相似性分析技术的软件溯源分析。

依赖关系,从软件基本结构、构造方法进行研究混源软件的依赖复杂性和配置动态性,通过搜索商用软件和第三方软件,形成商用软件基准库。研究软件的多重复杂性、环境的不确定性及其对其它软件资源的强依赖性,保障软件可控地被开发、运行与演化。

演化历史将历史项目构件通过代码分析后提取特征值和索引存入历史项目构件库,通过搜集软件演化历史,阐明软件持续演进机理,发现软件及其组件演进规律,实现基于软件演化历史的软件溯源分析。

5.3 可控性度量工具

建立一套软件可控性度量指标和分级准则,从代码知识产权可控(软件来源、软件复用程度、软件依赖关系)、质量可控、技术能力可控(软件工程能力)等方面建立指示器和度量元,并提供度量采集和分析方法。用户可通过对各项指标的加权计算值获得软件最终的可控性度量级别。如图4所示。

知识产权可控是软件可控性的关键,需要依靠溯源分析技术,对软件知识产权进行测试。利用代码相似度分析技术,解决与开源代码有关的管理、合规和安全等方面的问题。

5.4 基准数据库及搜索引擎

基准数据库由FOSS基准库、商用软件基准库、历史项目构件库、软件缺陷库和软件度量库五个基本库组成。如图5所示。

利用网络爬虫技术,从互联网知名开源社区中搜索下载FOSS开源软件,通过代码相似性搜索、机器学习等技术实现软件来源追踪框架,进而设计并实现基于互联网搜索的软件来源发现和差异分析的支撑工具原型,逐步建立FOSS基准数据库。在上述研究进展基础上,形成基于互联网搜索及代码相似性分析技术的软件溯源分析。

商用软件主要是针对COTS产品中提供的基础软件、中间件、第三方库文件等二进制分析,建立商用软件基准库,同时,收集该类产品中可能存在的软件缺陷,为商用软件方案选型和成本估算提供支撑。

历史项目构件通过代码分析后提取特征值并建立索引存入历史项目构件库,通过搜集软件演化历史,阐明软件持续演进机理,为发现软件及其组件演进规律,实现基于软件演化历史的软件溯源分析提供支撑。

6 关键技术

6.1 代码相似度分析

代码相似性进行分析可考虑以下三个方面:

(1)基于简单文本匹配算法的代码相似性分析。代码克隆检测是常见的代码相似性分析技术,其主要利用字符串匹配算法,计算代码间相似性,评判代码间是否互为克隆。项目拟从基本的克隆分析入手,结合互联网搜索引擎,搜索互联网代码并寻找高相似代码。

(2)基于树图相似性的程序相似性分析。由于软件在演化过程中常常被修改,导致克隆检测技术无法广泛应用于代码溯源过程中。为此,可以将程序抽象为语法树或者程序流图,并基于程序树、图相似性进行程序相似性分析。进一步的,研究将二进制代码抽象为程序流图,实现在二进制代码层次上的软件相似性检测。

(3)基于程序行为相似性的相似性分析。项目拟进一步拓宽相似性内涵,通过研究软件行为相似性发现软件根源。特别是,对于基于不同平台、采用不同语言开发的软件,经常也存在高度相似性。这里将抽象软件行为,分析软件相似行为及相似行为组合,从而确定软件相似性。

6.2 基准数据库及搜索引擎

可以考虑从以下几个方面建立基准数据仓库:

(1)从互联网上搜索FOSS和可下载代码;

(2)测评过程中被测系统样本;

(3)测评过程中被测软件关键模块的代码评估结果;

(4)基于资产库中提取的缺陷和典型问题;

(5)COTS產品、第三方构件库等。

基于该基准数据库,设计数据结构,并建立索引机制,通过多重索引匹配定位技术,设计高性能的大规模数据量的搜索引擎,为实现百万级的代码检测提供支撑。

依据一定的相关度算法(如超链接算法)进行大量计算,创建倒排序的索引库。索引库建好后用户就可以通过提供的搜索界面提交关键词进行搜索,依据特定的排序算法返回搜索结果。因此,搜索引擎并不是对互联网进行直接搜索,而是对已抓取网页索引库的搜索,这也是能快速返回搜索结果的原因,索引在其中扮演了最为重要的角色,索引算法的效率直接影响搜索引擎的效率,是评测搜索引擎是否高效的关键因素。

7 结语

国产计算机的自主可控评价包括两方面,一个是知识产权方面的自主可控;另一方面是运行安全可靠。本文重点从知识产权的角度展开了分析。从运行安全的角度,软硬件的功能安全评价可参考GB20438(IEC61508),可以对软硬件进行失效分析,以及从实际应用中获取软硬件的平均无故障工作时间,计算缺陷/失效率后给出一个合理的可靠性评分。

应从系统开发生命周期的角度进行功能安全和信息安全的评价,测试过程中发现的问题可以作为评价的主要参考依据,如操作系统和数据库软件的常见漏洞是否提供补丁等。软硬件单品的自主可控评价应该结合知识产权和安全可靠两方面进行综合评价,既有完全知识产权又运行稳定可靠的产品才是真正意义上的自主可控。

参考文献

[1] 梁正平,程一群,谭佳加,马骁驰,等.软件克隆检测技术研究[J].计算机应用研究,2012,29(5):1623-1627.

[2] 舒翔.基于索引和序列匹配的代码克隆检测技术研究[D].杭州:杭州电子科技大学,2015.

[3] Gall H,Jazayeri M, Riva C. The use of color and third dimension. Visualizing software release histories[J].Software Maintenance.IEEE Press,1999.792584:99-108.

[4] Grba T,Ducasse S.Modeling history to analyze software ecolution[J].Journal on Software Maintenance and Evolution: Research and Practice,2006,18(3):207-236.

[5] Robbes R,Lanza M. A change-based approach to software evolution[J].Electronic Notes in Theoretical Computer Science,2007,166:93-109.

The Design of Testing Tools in Self-controlled Domestically-made System

SHEN Lei, ZUO Yun, XIE Qun, LI Xiang

(China Electronics Technology Group Corporation Thirty-two Institute, Shanghai  201808)

Abstract:The self-controlled domestically-made computer systems are evaluated in two aspects, the first is the self-controlled intellectual property right; the second is the safe and reliable operation. This paper focuses on the evaluation about domestically-made system. The evaluation mainly adopted the methods of software code cloning detection, software evolution and traceability analysis, and proposed the solution of self-controlled software testing tool.

Key words:domestically-made;self-controlled;software testing

猜你喜欢
软件测试国产化
特大型桥梁供电系统国产化改造探讨
元器件国产化推进工作实践探索
LNG接收站扩建工程低压泵国产化应用管理
ASM-600油站换热器的国产化改进
基于OBE的软件测试课程教学改革探索
基于国产化ITCS的卫星导航仿真研究
EXCEL和VBA实现软件测试记录管理
关于软件测试技术应用与发展趋势研究
智能电能表软件测试技术概述
加速尖端机床国产化