BDS地面软件可靠性分析验证技术研究
2021-06-19刘晓萍王冬霞黄双临
刘晓萍,王冬霞,黄双临,郭 睿
(32021部队,北京100094)
0 引言
近年来,卫星导航系统服务精度与时效性逐步提高,其用途从单一军事领域逐渐向民用和科研领域发展,成为国家经济建设中重要的空间信息基础设施。越来越多的国家和地区,开始启动不同的卫星导航系统建设计划,并以此推动军事和经济实力的提高。
北斗卫星导航系统(BeiDou navigation satellite system,BDS)统经历了北斗卫星导航试验系统即北斗一号(BeiDou navigation demonstration system,BDS-1)、北斗卫星导航(区域)系统即北斗二号(BeiDou navigation satellite(regional)system,BDS-2)、北斗三号全球卫星导航系统(BeiDou-3 navigation satellite system, BDS-3),地面软件是支撑卫星导航系统精度指标实现和稳定运行的核心,若其在使用中发生失效(不可靠),会导致系统任务失败。因此,导航系统对地面软件的稳定运行有着严格的可用度要求[1-2]。
常规的软件测试,通常聚焦在软件代码实现之后,再开展具体的工作,而软件分析验证,则是贯穿于整个软件生存周期,从系统设计、需求分析、软件设计到软件代码实现,在各个软件研制阶段,均可开展独立分析验证[3-4]。本文首先分析了国内外研究现状及发展趋势,接着从系统、需求、设计及源代码四个层次,分析验证地面软件的可靠性,并提出了三种关键技术。
1 国内外软件可靠性研究现状及趋势
随着计算机技术的发展和系统规模、复杂度的提高,软件在系统控制中发挥着越来越重要的作用。在系统可靠性工程技术的发展过程中,人们逐渐认识到软件系统的高可靠需要通过专业技术予以保证。20世纪90年代,由于实际工程需求的不断提高,软件开发过程中出现了很多新概念、新技术和新模式,软件可靠性技术研究为适应这种工程需求的变化,开始针对特定领域、不同类型的软件,如导弹飞行控制系统、以及载人航天领域的运载火箭、飞船与国际空间站等系统使用的安全性关键软件等,结合其具体的领域特点和可靠性要求进行研究。从此,软件可靠性与安全性技术得到了广泛的关注和飞速发展,目前针对整个软件生存周期,已经初步形成了系统性的软件可靠性与安全性理论体系[5-6]。
1.1 国外软件可靠性研究现状及趋势
美国国家航空航天局(The National Aeronautics and Space Administration, NASA)很早就开展了针对高端嵌入式系统的软件可靠性和安全性方研究:2004年7月,发布了NASA-STD-8719.13B《NASA软件安全性标准》;1996年,发布了NASA-GB-1740.13-96 《安全性关键软件分析与开发手册》;2004年3月,发布了NASA-GB-8719.13《NASA 软件安全性手册》等标准。同时,由委托方、开发方和独立第三方组成的三方保证机制,开展软件质量、可靠性与安全性保证等工作[7]。
NASA尤其重视软件的可靠性安全性问题,于1991年底成立了独立验证与确认(independent verification and validation,IV&V)机构,该机构针对所有安全和任务关键软件的全生存周期产品开展独立的验证与确认,包括软件可靠性与安全性的分析验证工作,加强关键软件的可靠性保证。
近十年来,在实时嵌入式软件可靠性安全性分析验证技术应用方面呈现出以下趋势[8-9]:
1)由技术研究转向工程应用。NASA的IV&V机构在1996年以前,侧重于软件可靠性安全性保证技术研究,在所有确认项目中,只有不到3%的项目得到了独立的评价和独立验证。1996年4月以后,独立评价和独立验证与确认项目不断增加,2000年,独立评价和确认的项目,在所有确认项目中的占比达到了20%。2000年4月,将工作方向转移到应用领域,至2002年,独立评价和独立验证与确认项目所占比例已达 42%。目前 NASA全部的安全关键软件和任务关键软件都由该部门负责评价和验证。
2)更加强调软件分析验证工作。软件测试需在软件代码实现之后再开展具体的工作。而软件分析验证,则应贯穿于整个软件生存周期,包括系统顶层分析、客户需求分析、软件框架设计、软件详细设计和软件代码实现,在各个软件研制阶段,均应开展独立分析验证。独立验证与确认机构在2007年以后,将验证工作重点前移,加强在软件代码实现之前,对各研制阶段产品进行验证,取得了显著效果。前期验证工作发现的严重问题比例由 28%上升到了 82%。大多数严重问题,在软件研制阶段就被识别出来,并采取有效措施进行彻底地解决,而不是到后期,仅能采取有限的补救措施或者降低使用要求。
3)更加注重分析和测试技术的联合应用。由于测试验证的不充分与高成本,分析技术越来越重要。在系统的功能分析和设计阶段,就大力开展仿真验证与分析;常规状态下的功能验证,主要依靠要实际测试验证,辅助分析验证;异常状态下的功能验证,主要依靠仿真验证,辅助分析验证;小概率失效和/或软件危险失效验证,则主要依靠分析验证,辅助仿真验证。
4)更加注重跨领域技术合作和各阶段产品的质量把控。软件研制人员必须与相关领域的专业技术人员密切合作,因为大型复杂软件研制,需要可靠性、软件安全性、信息安全以及软件运行等多学科、跨领域的知识。例如针对国际空间站项目,NASA成立了9个专业团队,每个团队支持一个特定的子系统,分析人员涉及导航、制导与控制、人机接口、内部和外部系统、命令和控制、下一代生命支持、集成系统测试等专业领域。多专业、多领域、多系统的综合分析,共同保证软件系统可靠安全地运行。
从公布的项目来看,NASA大量的高端嵌入式系统项目,软件系统的研制水平和成功率都远高于国内。而且,NASA仍计划对更多的项目开展可靠性和安全性的独立验证与确认。随着技术的进步,可靠性和安全性分析验证技术将会在越来越多的领域发挥更大的作用。
1.2 国内软件可靠性研究现状及趋势
国内软件可靠性论证工作始于 20世纪 80年代,随着论证工作的不断深入与总结,积累了较为丰富的经验,其中GJB450-1988《装备研制与生产的可靠性通用大纲》、GJB1909-1994《装备可靠性维修性参数选择和指标确定要求》、QJ1408-1994《航天产品可靠性保证要求》以及原国防科工委制定的一系列标准、法规,对我国软件可靠性工作起到了极大的推动作用。后续 GIB450A-2004《装备可靠性工作通用要求》、GJB1909-2009《装备可靠性维修性参数选择和指标确定要求》、QJ1408-1998《航天产品可靠性保证要求》等标准的编制与颁布,进一步促进与完善了我国可靠性专业领域的发展。
近几年,软件的可靠性与安全性分析研究的趋势,主要集中在以下两个方面[10-11]:
1)软件可靠性和安全性分析技术研究。总装备部投入经费对软件安全性分析标准进行了追踪,于2004年发布了国家军用标准GJB/Z142-2004《军用软件安全性分析指南》,但该标准的规定属框架性规定,适用于对型号软件研制过程的概念、方法进行指导。
中国航天标准化与产品保证研究院从1993年起,相继组织翻译出版了《国外软件可靠性资料汇编》(R.M.S译文选 10)、《国外软件质量与可靠性标准汇编》(《质量与可靠性》资料汇编之十七)、《软件安全性》等,有力地推动了大型软件可靠性分析验证工作的开展。
2)软件可靠性和安全性验证技术的实际应用。软件可靠性和安全性验证技术已在航天弹、箭、星、船等多个型号的任务关键软件中进行了工程应用。特别是在921二期工程中,按照《921软件工程化技术标准》,在初样和试样阶段,开展了载人运载火箭的故障检测软件,全生存周期的可靠性和安全性验证分析,以便及时发现问题并反馈给设计人员进行修改和完善,为型号任务成功提供了软件保证支持,取得了良好的效果。
初样阶段,针对故障检测系统中两个箭上软件,开展了任务书、需求、设计和代码四个阶段的可靠性和安全性分析验证工作。试样阶段,除对两个箭上软件继续开展软件可靠性和安全性分析验证工作之外,还增加了两个地面软件的可靠性和安全性验证内容,在需求和代码层发现的问题最多,任务书层次之。
软件可靠性和安全性分析技术虽然已在航天弹、箭、星、船等多个型号的嵌入式软件中进行了工程应用,但是针对大型工程软件项目的可靠性分析,尚未进行深入研究。
2 BDS地面软件可靠性分析验证研究
BDS在工程实践过程中,运用软件工程方法对软件研制过程中的各阶段进行了较好的质量管理,但仍存在对软件可靠性因素设计考虑不足、验证测试不够深入与充分的问题[12-13]。
目前BDS地面软件可靠性分析验证主要以提升系统服务可靠性为目标,立足于系统、需求、设计、源代码四个层次,明确关键任务、失效模式、输入失效影响、时序失效影响等可靠性关键问题,提出了应用于网络实时环境的精密单点定位软件可靠性分析验证方法,为BDS持续优化升级、长期稳定运行奠定了坚实基础。
2.1 可靠性分析验证方案设计
分析地面软件特点,分别在系统、需求、设计、源代码四个层次上对软件进行可靠性分析,明确软件可靠性分析验证项目与方法,制定分析验证方案,整个工作包括三个层次四个内容,如图1所示。
图1 分析验证工作组成
各阶段的工作模式包括以下步骤:
1)软件背景介绍。软件设计人员介绍软件相关背景、研制技术要求等;
2)项目组制定实施方案。由系统或软件设计人员审查并提出改进意见,修改后形成预审稿,评审通过后方可启动软件可靠性分析工作;
3)四个层级可靠性分析验证。软件配置项的系统层、需求层、设计层和代码层的分析验证工作。
4)制定规范。根据以上内容制定软件规范,同时编写《软件研制总结报告》,组织评审验收,若评审未通过,则按评审结论重新分析,修改规范,直至评审通过。
2.2 系统层可靠性分析验证
开展软件系统层分析验证,通过对地面软件研制技术要求、软件系统规格说明和软件系统设计说明文档的分析验证,发现软件系统设计薄弱环节或缺陷,进而指导地面软件设计和测试。
地面软件系统层分析验证,主要采用任务分析、系统运行模式分析、失效模式分析三种方法完成:
1)任务分析。主要验证系统任务的定义及划分是否合理,任务的输入输出、接口、可靠性要求等内容是否定义明确、内容完整,是否与研制技术要求及相关文档要求一致;
2)系统运行模式分析。检查系统运行模式的描述是否完整,检查某一运行模式下执行的系统任务与技术要求、可靠性设计通用要求是否存在不一致,或是系统任务正确执行的条件是否具备等。
3)失效模式分析。通过分析造成系统失效的原因和产生的结果,寻找减轻系统失效危害的办法。失效模式分析是一种自底向上的分析方法,寻找底层故障在系统中的传播路径,并在传播路径途中设置容错、检测和监控,识别可能影响系统运行的单点故障,并按影响严重程度进行分级。
2.3 需求层可靠性分析验证
开展软件需求层分析验证,明确关键的软件运行模式、功能、输入和输出,验证软件关键功能定义的正确性和完备性,以及软件的关键等级,保证从系统可靠性要求转换和细化为软件可靠性需求的正确性与完备性,获得与软件功能相关的系统危险事件及其严重性等级。
地面软件需求层分析验证,主要采用内容完整性及一致性分析、运行模式分析、输入链路失效影响分析等三种方法:
1)内容完整性及一致性分析,是分析软件需求规格说明中的功能、性能、接口、可靠性要求等内容,是否符合相关软件工程标准要求,是否与任务书及相关文档要求一致,文字描述是否明确、完整;
2)软件运行模式分析,是分析是否存在潜在路径、使某运行模式下执行的软件功能与任务书要求不一致,或是不具备正确执行软件功能的条件,分析识别出关键模式和控制模式转换的关键输入;
3)输入链路失效影响分析,是分析输入链路上可能发生的故障,对失效处理遗漏或不足可能引发的危险。
2.4 设计层可靠性分析验证
开展软件设计层分析验证,明确软件设计层的运行模式、功能、输入和输出。地面软件设计层分
析验证,主要采用设计独立性分析、设计接口分析、设计逻辑分析等三种方法:
1)设计独立性分析的主要目的,是检查软件功能与模块、以及模块之间的关系,验证设计与需求的可追溯性,并确立关键/重要模块;
2)设计接口分析,是识别设计外部接口传输、内部接口一致性、中断及公共数据区使用等方面存在的问题与薄弱环节,为设计更改提供依据;
3)设计逻辑分析,是对照各模块流程图及执行逻辑,检查是否正确实现了要求的功能,是否存在冗余,算法是否考虑了异常情况的处理,是否对关键量进行了保护,是否符合相关的安全性要求。对于多个模块组合完成的复杂逻辑,结合模块调用关系图,分析其设计的路径、时序是否符合需求要求。
2.5 源代码层可靠性分析验证
开展软件代码层分析验证,通过对软件配置项的关键代码,审核代码实现的完整性、标准符合性,分析软件存在的薄弱环节,为后续的软件安全性评价提供依据。地面软件代码层分析验证,主要采用代码逻辑分析和运行模式转换分析两种方法:
1)代码逻辑分析。检测编码软件中的逻辑错误,评价代码程序所描述的运行顺序。主要分析各模块实现是否与设计要求一致、是否可以优化、是否存在多余语句等,对于需要多个模块组合执行才能完成的复杂逻辑,分析其执行路径、时序等是否符合设计要求;
2)运行模式转换分析。确定软件运行模式及其转换条件,保证代码对软件运行模式或状态转换条件及相关设计实现的正确性,标识实现运行模式转换的指令序列,检查其转换实现是否正确,分析转换后模式初值设置是否正确、是否符合设计要求。
3 关键技术及解决途径
BDS是我国自主研发的卫星导航系统,其地面软件的可靠性直接影响着系统的精度、可靠性与稳定性。因此,针对软件生存周期各阶段的系统、需求、设计、代码等进行可靠性分析,找出可靠性实现薄弱环节和隐患。
3.1 硬件/软件/系统交互失效分析技术
在系统运行过程中,地面软件各配置项之间、软件与外场站之间、软件与外部系统之间,以及软件与操作人员之间存在大量的信息交互。针对地面业务流程多、运行时间长、可靠性要求高的特点,为了完备地开展系统失效影响分析,硬件、软件或系统失效影响分析必须联合开展,因此,硬件/软件/系统交互失效分析技术,是实现地面软件高可靠性的关键技术之一。
该技术的主要解决措施为:
1)识别地面软件任务执行过程中,相关行为主体之间的协同时序、交互信息,以及可能发生的失效。具体解决途径如下:识别软件配置项,确认其运行环境,明确行为主体;梳理与软件配置项相关的系统任务,确认每一个软件配置项的输入输出交互信息、交互接口和交互的行为主体;根据行为主体及接口的类型,可能的故障原因,梳理软件配置项可能的交互失效。
2)确定失效影响严酷度类别判定准则。具体解决途径如下:确定软件配置项交互失效影响的软件输出、相关的其他软件配置项或系统,识别与某软件配置项交互失效相关的系统任务,在后续的分析中,按照失效影响程度确定严酷度类别。
3)应用该项技术,针对地面软件配置项和软件运行的服务器环境,综合考虑任务相关的系统运行模式等系统交互影响,在定义系统严酷度等级的基础上,系统分析发现故障模式,增加软件检错、容错、纠错设计。
3.2 系统运行及切换过程中故障识别技术
地面软件运行模式直接关系着卫星导航系统的运行模式,其切换指令及切换过程中的故障处理能力,直接影响着导航系统的定位导航授时精度。因此,为了识别运行模式、分析控制指令、分析模式间切换条件及存在问题,系统运行及切换过程中故障识别技术,是必须解决的关键技术之一。该技术的主要解决途径如下:归纳影响系统功能执行的输入;梳理、确认软件控制指令、系统配置参数的功能执行条件的影响,初步确定系统运行模式;对系统任务进行复核,明确任务失效严酷度等级,根据任务在上级系统中的作用和任务失效严酷度等级,来确定关键任务;标识每个运行模式,并说明各运行模式下系统执行的任务;说明模式间的所有可能切换条件,绘制运行模式切换图或给出模式切换矩阵;明确控制系统模式切换的关键输入,对发现的系统设计问题应填写系统设计问题单。
应用该技术,确定了控制指令是实现系统正常模式和自主模式切换的条件,通过控制指令分析模式切换,可发现指令方面的问题,并提出系统正常模式、自主模式条件下的不同任务要求。
3.3 代码潜在路径故障识别技术
在工程实践过程中,虽然软件研制各阶段均有严格的质量管理,并且经过第三方评测,但仍存在验证测试不够充分的问题,主要表现为代码潜在路径等深层次的软件可靠性问题。因此,为提高系统的可靠性,代码潜在路径故障识别技术是亟需解决的一项关键技术。
该技术的主要解决途径如下:
1)分析准备。分析人员首先了解系统背景、任务需求、设计说明等,提交分析的软件代码至少已通过开发方测试。
2)软件代码可靠性与安全性分析。进行软件代码可靠性与安全性分析,包括逻辑分析、运行模式分析。
3)代码更改可靠性与安全性分析。代码更改后,应进行更改影响分析,根据更改影响的范围,确定需要迭代更新的分析项目,更新相关的分析内容与分析结论。
4)编制分析报告。对于分析中发现的问题,应填写问题报告单,并反馈软件设计人员进行问题确认。分析工作完成后,应将全部的分析内容反映到文档中,形成软件代码可靠性与安全性分析报告。
应用该技术,挖掘了代码潜在路径引起的隐患和薄弱环节,为进一步优化过程、改进设计、排除缺陷,加强软件系统的可靠性、提高系统的稳定性,为进一步提高BDS的导航定位精度提供保障。
4 结束语
本文针对BDS地面软件,具体分析了可靠性验证技术的研究进展、研究内容、关键技术及解决途径。首先介绍了国内外软件可靠性研究现状,接着详细论述了从方案设计以及系统层、需求层、设计层、源代码等四个层次,具体分析讨论了 BDS地面软件可靠性分析验证研究内容,并指出了关键技术及解决途径。