基于RuleWizard的定制规则在核电软件中的应用

2016-04-14 13:49陈晓凡
电脑知识与技术 2016年5期

陈晓凡

摘要:核电软件作为我国的新兴产业,对于我国的科学发展以及核电品牌的树立具有非凡的作用。该文主要介绍了基于Rulewizard的定制规则在核电软件中的应用,实现了核电软件编码规范由人工走查方式向自动化检测的转变。该方法将测试人员从重复、低效的工作中解脱出来,对其他不同的新兴软件行业也具有一定的参考作用。

关键词:Rulewizard;编码规范;核电软件

中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2016)05-0055-02

Abstract: As China's new nuclear power software industry, for our scientific development of nuclear power and establish a brand with extraordinary effect. In this paper, based on custom rules Rulewizard application software in nuclear power, nuclear power to achieve the transition from the manual software coding standards Walk way to automate testing. This method testers from repetition, inefficient work freed for other different emerging software industry also has a certain reference.

Key words: Rulewizard; coding standards;nuclear software

1 概述

为加快推进核电技术的发展与创新,我国决定引进具有世界先进水平的AP1000三代核电技术,并通过建设三门和海阳2个依托项目,组织对关键技术的消化吸收攻关和研发,走出一条消化吸收再创新的核电自主发展的新道路[1]。消化-吸收-再创新发展模式的根本目标是形成具有自主知识产权的核电技术及品牌[2],而实现核电软件自主化的关键是设计自主化,包括设计能力、设计手段和设计工具的自主化。相比硬件自主化水平的提升,我国核电软件自主化水平发展相对比较薄弱,同时,由于核电信息化程度和管理效率方面的落后使得自主化软件发展远落后于核电发达国家。核电软件自主化发展滞后,严重影响国内核电行业的核心竞争力和核电研发企业的可持续发展能力。因此,大力推动自主化软件的发展对核电先进研发体系建设和核电技术自主创新发展都具有重要意义[3]。

但自主开发软件需要长期坚持研究和经验积累才能具备。核电自主软件依然是我国核电先进研发体系建设的薄弱环节。如何加强和加快适合我国核电技术需要的具有自主知识产权的软件研发,以推动核电技术的可持续发展,已成为摆在核电研发企业面前的重要任务[4]。核电软件的核心最直观的体现就是代码,推动核电软件的正规化、可持续发展化必须首先推动代码的规范化。

在核电软件研发的道路上,我们不再只关注“量”的积累,而开始强调“质”的飞跃,而软件测试就是软件质量保证的一种诉求,是质量保证过程中所依赖的主要活动之一[5]。

测试作为保证“质”的重要手段,参与软件开发的全生命周期过程。具体如图1所示:

其中编码实现对应的单元测试又可分为单元静态测试和动态测试,其中静态测试作为软件代码测试的基础项,可以在不执行软件代码的基础上对程序进行缺陷检测。据有关数据统计,代码中的缺陷60%以上可以通过代码审查(包括互查、走查、会议评审等形式)发现出来[5]。

2 核电规范

编程规范是有许多程序员在编程实践中经过长时间积累的经验教训,经过一些计算机领域的专家进行反思,总结出来的一系列程序员在编程中应该遵守的规则[6]。不同领域的编码规范都不尽相同,例如较权威的有如下所示:

1)MISRAC

汽车工业软件方面的C语言编码规范,称为MISRA-C:1998,于1988年由MISRA发布。MISRA-C:1998包括了127条C语言编码规范,规则编号从1一直编到127(包括93项强制规则和34项建议规则)。2004年新版本发布,称为MISRA-C:2004。许多重要的建议项的变更,规则也被重新编号。总共分为21个类,包括“开发环境”、“运行错误”等,总共141项规则(121项强制要求和20项建议要求)。MISRA C++由MISRA C++委员会于2008年发布,包含了246条规则。采用类似MISRAC的技术编写,集成了大量C++相关的标准,适用于苛刻性系统。

2)GJB5369-2005 编程规范

GJB5369-2005是由航天科工集团公司提出,航天科工集团公司二院所起草,于2005年发布的一套国家航天软件军用标准。它是依照MISRA C:1988和LDRA2000年的《 MISRA C Checking》并结合航天型号软件特点经过补充和剪裁而形成,共有15个类别,138项规则(98项强制要求和40项建议要求)。

而核电软件作为一项新兴的软件行业,与汽车工业软件和航天软件是不完全一样的软件种类,这也代表着其无法完全套用现存的编码规范。因此在核电软件的开发中,我们也不断地在提出和完善适合于本行业的编码规范,并在内部实施和使用。由于非常具体的编码规范检查项可能涉及核电软件的保密内容,在本文中不再具体展开。但是我们依旧可以了解到核电软件编码规范的重要性。

3 引入自动化的检测工具Rulewizard

最初核电软件编码规范测试是采用人工走查的方式进行,程序员将开发好的代码交由测试人员,测试人员再通过逐行扫描的方法找出代码中违反规范的地方。当软件规模比较小时,采用人工走查的方式勉强能在规定时间内完成测试任务,但随着核电软件的急速发展,代码的数量级也成指数倍增长,此时,传统的人工走查方式耗费大量的人力物力不说,还存在极高的误报率和漏报率[7]。因此,针对核电软件规范开发对应的自动化的检查工具,将测试人员从非常繁琐且包含大量重复劳动的任务中脱离出,并将更多的精力用来发现后续测试环节中的缺陷就显得尤为重要。

目前绝大部分静态扫描工具都内嵌了MISRAC和GJB5369-2005 等各个行业或者企业比较权威的规范标准。但是能够支持用户自定义编码规范的不多,我们从各种层面分析,最终采用Rulewizard工具用于核电软件编码规范自动化检测的设计和实现。

Rulewizard是Parasoft公司旗下的一款可以用于定制编码规范检测的工具,既内嵌了比较权威的国际通用的标准规范,也提供用户自定义编码规范检查项的功能。Rulewizard是目前发现唯一一款既提供图形化界面开发又支持添加Python代码块进行规则定义的工具,具体见图2、图3所示(图3源于图2中Method方法的内容)。

Rulewizard规则通常由以下元素组成:

节点 — 规则基本构造块。他们可以是表达式、变量、常数,函数或语句。

指令 — 定义节点的编程元素和节点的概念,以及定义两个结点之间应满足的条件。

输出 — 在结果窗口中显示每次违反的信息。

属性 — 规则的属性,包括作者、标题、规则编号和规则描述。

其中,基本规则只包含父节点、输出和属性。更复杂的规则包括父节点、多个指令节点以及节点之间一系列的条件关系、输出和属性。

4 结束语

核电软件作为我国的新兴产业,对于我国的科学发展以及核电品牌的树立具有非凡的作用。本文主要介绍了基于Rulewizard的定制规则在核电软件中的具体应用,实现了核电软件编码规范由人工走查方式向自动化检测的转变。核电专用软件集成研发过程中得到的数据经验和成果,具有传承性[8]。自动化的编码规范检测既提高了测试效率、降低核电软件中潜在的风险,又可以让后人少走弯路,对新兴软件行业的发展具有一定的参考作用。

参考文献:

[1] 林诚格. 非能动安全先进核电厂AP1000[M]. 北京: 原子能出版社, 2008:4-15.

[2] 孙汉虹. 第三代核电技术AP1000[M]. 北京: 中国电力出版社, 2010: 1-5.

[3] 赵飞云, 于浩, 贺寅标, 等. CAE 分析技术在三代核电设备国产化中的任务和方向[J]. 计算机辅助工程, 2011, 20(3): 85-87.

[4] 赵飞云, 叶成, 姚彦贵. 自主化软件在核电先进研发体系中的作用[J]. 计算机辅助工程, 2015, 05: 71-75.

[5] 朱少民. 全程软件测试[M]. 北京: 电子工业出版社, 2014: 14-15, 181.

[6] 皮基庆. 一种C语言静态代码检测工具的研究与实现[D]. 北京: 北京邮电大学, 2015: 27.

[7] Chess B, McGraw G .Static analysis for security[J]. IEEE Security & Privacy,2004, 2(6): 76-79.

[8] 赵飞云, 叶成, 姚彦贵. 自主化软件在核电先进研发体系中的作用[J]. 计算机辅助工程, 2015(5): 71-75.