软件检验中的六性要求探讨

2021-08-14 19:52赵智伟王猛周辉安娜
计算机与网络 2021年13期

赵智伟 王猛 周辉 安娜

摘要:针对大型复杂软件可靠性低、重大任务运行过程中出现软件故障的问题,从软件的全生命周期角度研究软件可靠性设计方法;从软件可靠性检验、软件维修性检验、软件保障性检验、软件测试性检验、软件安全性检验和软件环境适应性检验等方面探讨软件六性检验方法。针对软件可靠性检验,从软件失效、功能剖面、失效模式和影响度分析、可靠性定义、可靠性模型选择和指标分配,涵盖了软件需求、概要设计、详细设计及测试设计等不同阶段,最后以实例进行验证。

关键词:关键件;失效模式;可靠性模型;六性检验

中图分类号:TP393 文献标志码:A 文章编号:1008-1739(2021)13-70-4

Discussion on Six Properties of Software Inspection

ZHAO Zhiwei1, WANG Meng2, ZHOU Hui3, AN Na4

(1. Unit 91917, PLA, Beijing 102401, China;

2. Military Representative Office of the Equipment Department of PLA Rocket Force Stationed in Langfang, Langfang 065000, China;

3. Military Representative Office of the Military Representative Bureau of Equipment Development Department of CMC Stationed inShijiazhuang, Shijiazhuang 050081, China;

4. The 54th Research Institute of CETC, Shijiazhuang 050081, China)

Abstract:In view of low reliability of large and complex software and software fault in running, the design of software reliability isstudied. The inspection method of six properties of software is discussed, from the view of software lifetime, including softwarereliability, maintenance, safeguard, testing and safety and environments adaptability. Aiming at the software reliability, the softwarefault and software function profile and fault mode, effect analysis, reliability definition, reliability model choice and indexes allocationcover the software requirement, online design, detailed design and testing design. At last, the verification is done by using the instance.

Keywords:key module; fault mode; reliability model; six properties inspection

0 引言

軟件是各个系统的必要组成部分,也是各系统的核心功能所在,随着 SDN/NFV 的出现,软件定义网络及硬件功能软件化、虚拟化,软件的地位和作用越来越突出。同时软件直接面向各级各类运维人员,是网络整体运行状态的呈现者,为大型任务网可靠高效运行保驾护航,为重大任务的顺利完成提供技术支撑,因此研制高可靠性高质量的软件势在必行,研究探讨软件六性检验、提升软件质量和可靠性具有重要意义。

1 软件可靠性检验

软件可靠性检验主要包括软件复杂度、软件冗余、软件健壮性、软件避错和软件程序可读性检验。

1.1 软件复杂度检验

软件复杂度检验主要关注层次结构、模块化设计、服务化设计等方面:

①体系架构检验:检验软件是否有体系架构设计图,针对大型复杂软件,重点检验是否进行体系架构的层次性分解。

②功能剖面设计检验:是否进行软件功能分解,是否封装为软件模块,软件模块的分解图、软件的关键件和重要件是否确定,软件的功能剖面是否具备,软件功能剖面是否进行了功能模块标识、功能模块说明;是否将软件功能剖面进行了功能执行概率分解,执行概率与软件可靠度是否进行了分解和匹配。

③服务化设计检验:是否将软件模块进行了服务化封装,服务化的软件模块是否采用标准的服务接口进行消息交互。

④软件失效分析:是否描绘了软件失效模式与影响分析表,细化为软件模块的失效模式、失效原因、失效影响和严重程度,对整个软件的失效影响概率。

⑤关键件重要件的失效模式及故障恢复:在软件功能模块化分解之后,提取对软件系统有重大影响的模块,确定为关键件或重要件,分析失效模式以及故障快速处理手段和方法。

⑥可靠性指标分配:将系统可靠性指标进行了分配和分解,确定软件系统的可靠性三要素,即规定的条件、规定的时间和规定的功能。

规定的条件指软件的运行环境,涉及软件系统运行时所需的各种支持要素,如支持硬件、操作系统、其他支持软件、输入数据格式和范围以及操作规程等。不同的环境条件下软件的可靠性是不同的。具体地说,规定的环境条件主要是描述软件系统运行时计算机的配置情况以及对输入数据的要求。

规定的条件还指软件的用法,一个软件的可靠性随着用法的不同而不同。有些用法可以揭露软件的故障,有些则不能揭露软件的故障。因此如何定义软件的用法,以及如何度量软件用法对软件失效的影响,是软件可靠性设计中的一个主要问题。

规定的时间指软件的工作周期,软件可靠性是时间的函数,失效的概率随着系统工作周期的增长而增加。软件可靠性只是体现在运行阶段,所以将运行时间作为规定的时间的度量。运行时间包括软件系统运行后工作与挂起(开启但空闲)的累计时间。由于软件运行的环境与程序路径选取的随机性,软件的失效为随机事件,所以运行时间属于随机变量。

规定功能指软件不出现失效。如果一个系统不能完成其规定功能,就说明它已经失效。规定的功能通常在软件需求规格说明书中定义,软件可靠性与规定的任务和功能有关。由于要完成的任务不同,软件的运行剖面会有所区别,则调用的模块就不同(即程序路径选择不同),其可靠性也可能不同。

软件系统可靠性模型确定,可按照系统可靠性设计选用串联模型、并联模型和权联模型。在此基础上进行软件系统可靠性指标分配。

1.2 软件冗余检验

软件冗余检验主要有以下 3 个方面:

①系统主机备份:对于可靠性要求极高的软件,如航天系统,一定要检验相关软件是否支持或采用主备热备、主备冷备、双机热备、多机热备模式部署,确保软件无故障运行,保证重要信息和数据的实时正确存储备份。

②重要模块备份:针对系统功能强大复杂、软件模块众多的系统的检验,尤其是航天类系统,要重点检验关键软件模块是否有备份,备份方式是热备份还是冷备份。

③信息冗余:针对大型复杂系统,数据库是重要的信息存储方式,因此对数据库要重点检验,一是关注数据库的选型方面是否选择可靠性较高的数据库,二是检验数据库是否具备实时自动备份和异地存储备份功能。

1.3 软件健壮性检验

在软件健壮性检验中,重点关注如下方面:

①在界面检验中,检验时重点关注软件界面是否需要输入的地方均采用下拉列表框设计,尽量减少编辑框,软件界面是否对输入数据的有效性及合理性进行设计,数据输入范围(最大值、最小值、合理值、非法值)等是否有相应提示或错误输入限制。

②软件数据健壮性方面:重点检验软件是否采用数据实时自动备份等方式,针对重要数据的误删除操作是否有信息备份恢复机制。

1.4 软件避错检验

在软件避错检验中,主要关注如下方面:

①需求檢验:是否有明确的功能需求、性能需求、接口需求、环境需求、安全需求和人机界面需求。

②设计检验:是否有详尽的概要设计、详细设计、接口设计和数据库设计文档,是否与需求说明直接一一对应。界面设计检验重点针对界面的友好性、界面输入限制和错误提示。

③测试检验:重点检验是否有规范准确测试标准、规范,测试大纲、测试用例、测试报告,测试用例是否遍历所有的测试项目,是否涵盖功能、性能及接口等,测试用例是否具有正常值、边界值、异常值等边界测试。

1.5 软件程序可读性检验

检验软件代码是否进行了标注和解释说明,代码注释率是否达到软件规模的 15%,针对软件模块级的注释,是否有模块功能、模块接口说明;针对函数级的注释,是否有函数功能、函数输入、函数输出、参数解释的说明。

2 软件维修性检验

软件不同于硬件,其维修性通常定义为针对软件模块的故障定位,同时软件运行正常与否也取决于软件所运行的硬件平台、支撑软件、应用软件、安装部署、软件架构设计方式等多个方面。为提高软件的维修性水平,拟采取以下维修性措施:

①软件运行载体选用的硬件平台均为通用的、稳定的、成熟的 PC 机和服务器设备,选用在国产关键软硬件应用推进计划中安排的国产服务器中的一种,内部都采取了模块化和标准化设计,便于检查、维修和更换故障模块;

②软件运行载体整体结构和设备内部结构布局合理,能够实现视觉可达、实体可达,并提供充足的操作空间,最终保障维修的可达性;

③软件架构采用松耦合、紧内聚的模块化设计方法来提高系统的可扩展性和易用性,便于在软件发生故障时迅速定位和修复软件;

④在软件数据库设计过程中考虑到数据备份和恢复功能,能够在数据丢失、损坏的情况下方便恢复,加快修复速度。

3 软件保障性检验

保障性是系统设计特性和计划的保障资源能满足平时战备和战时使用要求的能力。为提高软件系统的保障性,从软件保障、技术保障、人员保障和售后保障 4 个方面进行保障性设计:

①软件保障:软件运行的支撑软件,如操作系统、数据库系统和办公软件等支撑软件都使用自主软件或通用软件,能够保障软件产品质量和供给。

②技术保障:是否拥有较为完善的质量控制手段和健全的质量体系。在产品研制、交付时,要求提供足够的技术保障资料,便于软件系统的使用和维护,具有持续改进和升级完善能力。

③检验是否拥有完善的管理体制和技术队伍,能够提供良好的人员保障。

④售后保障:对用户进行系统、严格的培训,使用户达到原理清晰、操作合理、维护及时。技术服务分为两阶段,第 1 阶段,软件系统交付用户前,对用户进行技术咨询、技术培训,使用户对订购系统的技术状态具有全面了解;第 2 阶段,软件系统交付用户后,对用户在使用操作过程中出现的各类技术问题进行讲解,并协助用户解决使用过程中出现的各类技术问题和进行必要的升级维护。

4 软件测试性检验

软件系统的测试性设计主要从可测性设计、接口测试性、自身测试性、界面测试性方面进行设计,包括以下内容:

①可测试性设计:对软件的功能测试、性能测试、标准符合性测试、容错测试、压力测试、安全性测试及运行测试等方面进行设计。

②接口測试性:软件设置有对外接口模块检测功能,实时监测对外模块状态,并将结果动态发布呈现至软件界面。同时将模块异常记录写入数据库,方便用户浏览历史数据排查故障。

③自身检测:软件具有 CPU、内存、硬盘使用率实时监测功能。实时提示用户当前主机的工作状态,方便用户了解主机情况。

④界面设计检验:软件界面是人机交互的桥梁,软件界面输入操作提示、输入变量范围提示、输入信息合法性检查、界面删除操作提示及软件操作帮助详细指南等。

5 软件安全性检验

软件系统安全性检验主要包括以下几个方面:

①用户认证和权限控制:系统具有操作员认证和权限控制措施,防止非法用户登录网络管理系统或进行越权操作。

②管控误操作控制:加强对重要操作的控制,防止用户的误操作,具有一定的误操作撤销和恢复能力。

③管控信息存储安全:加强对数据库的访问控制,防止非法访问数据库;同时对于重要的网管信息,采用加密方式存储到数据库或数据文件中。

④管控运行平台安全:对操作系统进行合理配置,关闭不必要的协议、停止未用服务和工具,及时更新和升级操作系统。

⑤管控信息安全传输:加强系统间接口协议、外部接口协议和消息交互中间件信息传输协议的安全设计。

⑥数据备份:提供便捷的数据备份恢复方法。

⑦安装卸载:提供便捷的软件安装、卸载方法,提供可视化向导式操作说明,防止误卸载。

6 软件环境适应性检验

软件环境适应性检验主要测试软件是否具备跨操作系统跨平台运行能力,既能运行在 Windows 操作系统上,也能运行在国产化中标麒麟操作系统上。是否具备支持多型数据库能力:oracle 数据库、达梦数据库及金仓数据库等。

7 结束语

高质量的软件要严格遵守软件的六性设计,对软件的各个设计环节进行设计,只有经过详尽设计的软件,其质量才能保证,才能保证整个系统的高效可靠运行。然而随着网络规模的扩大和复杂性日益提高,软件规模和复杂性也与日俱增,而且随着 SDN/NFV、大数据、云计算、人工智能等新技术的出现,软件形态和先进性也都发生着变革,因此软件的可靠性设计任重而道远,需要在现有基础上进一步深入研究。

参考文献

[1] 张彤,吴世荣.基于 SNMP 计算机网络流量监控系统研究[J].计算机技术与发展,2011,21(1):88-91.

[2] 徐鹤,王汝传.一种 P2P 流量监控系统的设计及实现[J].计算机技术与发展,2009,19(10):6-10.

[3] 赵英,黄九梅,董小国,等.网络流量监控系统的设计与实现[J].计算机应用,2004(S1):32-33.

[4] 张卫东,王伟,韩维桓.网络流量测量与监控系统的设计与实现[J].计算机工程与应用, 2005,41(32):160-163.

[5] 方木云,李锐.软件可靠性评估研究[J].微机发展,2002(1):11-13.

[6] LEINWEBER D. Stupid Data Miner Tricks: Overfitting theS&P500[J].The Journal of Investing,2007,16(1):15-22.

[7] LOVEMAN G W. Diamonds in the Data Mine[J].HarvardBusiness Review,2003(5):109-113.

[8] KEVJN L.Big Data and Strategic Intelligence[J].Intelligenceand National Security,2016,31(4):619-635.

[9] RAGHUPATHI W,RAGHUPATHI V.Big Data Analytics inHealthcare: Promise and Potential[J].Health InformationScienceand Systems,2014,2:3.

[10] COHEN J,DOLAN B,DUNLAP M,et al. MAD Skills: NewAnalysis Practices for Big Data[C]//Proceedings of theVLDB Endowment.New York:VLDB,2009:1481-1492.