载人航天软件质量控制和软件测试

发表于:2016-5-26 10:30

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:顾翔    来源:51Testing软件测试网原创

  载人航天的软件是高安全、高可靠性的软件,其需要严格的测试作为后盾,这与现在比较火爆的互联网软件测试还是有很大区别的。这里介绍一下航天软件质量控制和软件测试方法。
  说起载人航天,经过神舟五、六、七、八和九号每次发射在各大媒体的报道后,大家可能都有些了解。比如载人航天工程的八大系统:航天员、空间应用、载人飞船、运载火箭、发射场、测控通信、着陆场和空间实验室。其中,载人飞船系统和空间实验室系统是由航天科技集团公司第五和第八研究院为主负责研制;运载火箭系统由航天科技集团公司第一研究院负责研制;空间应用系统由中国科学院有关研究所为主负责研制;航天员、发射场、测控通信及着陆场系统由相关研究单位负责研制建设;测控通信设备主要由电子科技集团公司有关厂所负责研制。
  对于每个系统,又能分成多个分系统,再细分往下到设备、单机、单板…,层层分解到最下层,涉及到的软件是很多很多的。既有天上飞的,也有地面控制的,通信的…,小到几百行的引导程序,几千行的单板控制程序,大到百万行的数据汇接处理程序。
  对于整个载人航天的大工程,载人航天工程有如下整体特点:
  · 涉及学科领域广;
  · 参与人员多;
  · 工程认识差异大;
  · 结构复杂;
  · 协同实时性要求高。
  · 各系统的特点:
  · 工程任务不同;
  · 应用环境各异;
  · 工作模式多样;
  · 安全、可靠性要求高;
  · 系统间协同要求苛刻。
  软件的特点:
  · 软件类型多;
  · 软件运行平台多;
  · 软件安全关键等级高;
  · 软件实时性和安全及可靠性高;
  · 软件数量多、规模大。
  所以在质量管理上,也是要分类分级地针对不同的软件采用不同的管理制度。
  一、历史回顾
  在介绍之前,我们先来回顾一下中国航天工程的历史。
  载人航天工程以前代号是叫921工程,因为是1992年9月21日开始的。但是在整个载人航天工程里,真正把软件质量提出并且和硬件质量相等同的地位来看待,并不是一开始就重视的,这要追溯到1996年。
  1996年,欧洲航空航天局首次发射阿丽亚娜五型火箭,正好我国921工程的一批领导们前往现场参观发射,目的是学习先进国家的航天技术。然后发生了本书第7.3.5节介绍的事故。1996年6月4日,阿利亚娜五型火箭首次发射升空,发射40秒后,在大约3700米高空,火箭脱离飞行轨道发生了爆炸,四亿美金变成一个巨大的烟花。
  在不到一个月时间就迅速定位到了原因:软件复用时的数据溢出。在测量火箭水平速率的时候,把浮点转换成整形数。编写四型软件的时候,他们计算了这个速率不会超过16位有符号整形数,于是就用16位有符号整形数赋值了。可是五型火箭升级了,水平速率超过了这一数值,溢出的结果是变成负速度,然后就触发上面这个悲剧。
  这个事故给我国921工程的领导们的触动是相当大的,眼睁睁的看着欧洲人花了四亿美金研制的火箭,就这么炸了。前车之覆、后车之鉴,我国921的火箭还没有发射。基于我国的经济水平,一次爆炸都经不起。阿丽亚娜这么一炸,国内马上对症下药,总后装备部921办公室要求在921工程中全面实施软件质量控制。
  航天工程自身在软件工程上的经验也不太多,八十年代第一次和巴西合作中巴资源卫星项目的时候,在巴方的要求下才开始重视软件工程标准,在资源卫星这一个项目上实施了软件工程。后来断断续续也有一些项目管理的经验,但很多软件还是非常差的。由于的国际形势逼迫,又有阿丽亚娜这个事故在前面,加之总后装备部921办公室也发出了要求,没有人不敢不重视航空软件的产品质量。原航天工业总公司在1996年发布了《实施航天软件工程化管理要求》,实施"抓评测,促工程"的策略,建立了航天的软件评测体系:"一个中心,多个院级评测点,以及下面各所的评测点这样一个复杂的树状结构"。
  神舟一号是1999年发射的。在神舟一号,直到要上交文档的时候,按照刚建立起来的软件工程化管理要求一查,《软件设计文档》、《软件测试报告》等各个单位倒是都准备上了,但是再仔细一看,就知道全是后来补上的。
  "神舟"系列火箭一发接着一发地发,软件工程工作也一步接着一步地往下推。到现在,虽然也还是有一些文档是先做后补的,但基本上还是走上正轨了。
  2000年的时候,成立了航天领域的第一届软件专家组并作为常设机构,要求所有型号产品在出厂前必须开展软件专项评审。
  2001年,航天科技集团发文《航天型号实施软件工程的技术规定》(科质【2001】0077号),要求集团公司所有型号软件必须实施工程化工作管理。这就是现在航天软件工程非常重要的著名的77号文件。
  2005年,发布实施航天企业标准Q/QJA30-2005《航天型号软件工程化管理要求》2013年,这个标准进行改版。
  一直到现在为止,只要从航天出身的专家们讲到软件工程,十有八九会在PPT里会提到阿丽亚娜五型火箭,基本上可以看出阿丽亚娜这个事故给航天软件质量控制留下了多么深刻的印记。
  二、具体操作
  接下来,介绍一下具体航天软件领域是如何操作的。
  载人航天推动了航天的软件工程化的进展,航天中的诸多型号(不仅仅是载人航天,还有各种弹、箭、星、船等)也反向促进了载人航天的质量技术各个标准的改进。
  在质量管理方面,载人航天《软件研制工作管理规定》有这样的要求:
  · 软件列入工程产品配套表;
  · 软件按其关键程度分级管理;
  · 明确各级在软件研制过程中的职责;
  · 规定软件研制过程及各阶段要求;
  · 规定FPGA软件研制过程及各阶段要求;
  · 安全性与可靠性要求;
  · 软件安全保密性要求;
  · 验证与确认要求;
  · 第三方评测要求;
  · 外协与外购要求;
  · 软件在轨维护要求。
  2.1 软件列入工程产品配套表
  承认软件是产品,就是提升了软件的地位。既然作为工程产品,那就要按产品来管理,要有相关的质量要求。
  2.2 根据安全关键性等级,软件产品分为ABCD四个等级。
  这个直接影响到相关文档的要求和软件测试的要求。
  "投入最大精力,作最重要的事"。载人航天工程那么大,众多软件又参差不齐。比如:火箭发射场的空调通风也是有软件控制的,这个软件和发射点火的控制软件级别能一样吗?
  曾经听专家提过一句,大致意思是当时整个921工程里,最后在天上飞的软件,绝大多数是AB级的;地面运行的软件,也有小部分是AB级的。而且AB级代码虽然小规模的不少,大规模甚至巨大规模的也不是没有的。比如某个星上对接软件就号称百万行代码。最开始的时候只是模糊的分为AB级,CD级。因为当时对A级和B级的规定是一样的,都要做到覆盖率三个一百,也就是说,语句覆盖率,分支覆盖率,MC/DC覆盖率均达到百分之百,才可以提交给第三方进行软件测试。而C级和D级的没有这么多要求,不需要第三方软件测试,甚至不需要做单元测试。现在的新标准,把A级和B级在具体要求上区分得更仔细了,比如要求在A级上必须做集成测试。单元测试虽然A级B级都要求做MC/DC覆盖,高级语言必须做到目标码覆盖,但B级非嵌入式软件可以特批允许只做关键部分模块代码的目标码覆盖等。
  2.3 在软件研制中,各级各单位,有这么几个不同的职责角色
  从横向来看,所有的单位无非以下三种类型:
  · 软件交办方,行话里称为总体单位,类似于甲方的概念。这个是相对而言的,相对于单板来说,整机就是总体。相对于整机来说,分系统就是总体。相对于整个载人航天,总装就是交办方。
  · 软件承制方,就是具体干活的单位,也就是乙方。不管单板整机分系统,总都有对应的承制方。
  · 软件第三方评测机构,不管哪个单位开发的产品,只要是AB级的软件,或者部分C级飞行在天上的软件,都被要求被第三方做评测,只有拿到第三方评测报告才准予通过。
  换句话来说,除了不可达的代码,如说嵌入式代码里一些预置处理,为了保证发生事故后的软件还能回到起点的,正常逻辑不可达到的,航天里是AB级的软件要求是必须做到全覆盖的。没覆盖到的,要求给出说明原因,是不可达代码要求开发工程师去说明原因解释:为什么有不可达代码?如果是冗余没有用的代码就去掉;有用的比如像前面提及的就需要举个例子,进行解释。这个要求不止是航天,航空,铁路也是需要的。
  安全关键级别最高的,如铁路上的EN50128,SIL-4级软件也是要求100%的目标码覆盖。这就是按照软件安全关键级别划分的区别。比如铁路通信软件控制系统是SIL-4级,要铁路订票系统高。DO178B也是要求分级的,其中的A级标准其实要求就跟航天的A级差不多,跟铁路的SIL-4也差不多,作单元测试的时候,DO-178B-A也是要求单元测试的语句、分支、MC/DC都要达到100%的。
  接下来我们谈谈岗位职责。刚刚说到三种角色,交办方,承制方和第三方评测。对应的有:
  · 交办方负责系统设计分析,提交软件研制任务书,定制软件关键级别,提第三方评测任务书,审核承制方质量保证能力,组织软件验收和系统联试等。
  · 承制方负责软件开发、软件测试、产品保证和维护。
  · 第三方评测负责软件第三方评测,参与重要研制节点的质量控制,对被评测软件产品的质量负责,换句话来说,第三方评测给了通过的结论,就要承担质量连带风险。
  921办公司负责审核各评测机构的资质--大致类似CNAS的认证,但是比CNAS的实验室认证要严格一些。对于像探月、921等这些大型号都各自有各自的认证第三方评测机构。通过总体认证之后的评测机构才能接下来做该型号下面的软件评测,软件与软件之间的衔接是系统联试的范畴了,第三方评测一般只做到配置项级别。
  刚刚把横向的各角色说完,接着三大系统。纵向贯穿所有单位。
  · 型号指挥系统
  型号总指挥对整个大系统的质量、进度、经费、安全保密和研制队伍实行全面管理和调度。一般的会安排一名副总指挥来负责整系统软件研制的调度管理。然后层层往下分解,到每个对应的承制方单位都有对口的调度人员。
  · 型号设计师系统
  总设计师俗称总师,负责总体把握技术,一般的也要安排一名副总师来负责整系统软件的技术实施和管理。然后层层往下分解到对应的承制方单位,都有对口的设计师/主任设计师。
  · 型号质量管理系统
  负责质量管理,软件问题报告,质量问题归零。航天的每个承制方单位都有自己的质量处,质量数据每年除了供本单位使用,还要分型号分内容汇总到集团公司质量部。
版权声明:本文来源于51Testing会员投稿。51Testing软件测试网及相关内容提供者拥有51testing.com内容的全部版权,未经明确的书面许可,任何人或单位不得对本网站内容复制、转载或进行镜像,否则将追究法律责任。
21/212>
《2023软件测试行业现状调查报告》独家发布~

精彩评论

  • BinboNN
    2020-3-06 15:17:36

    前辈您好!看了您的文章获益匪浅!我也从事相关工作,想要拜读您的这本书中其他章节,学习更多的知识,请问书名叫什么,哪里能买?找了好久!非常感谢!

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号