从DO-178C说开去
上个月发了篇GJB5000A的文章,引起了一些讨论。有些军工的朋友开始关注老丛讲桌,并提了些问题。几个朋友提到了DO-178C,希望我能介绍一下,也想了解下它和5000A(CMMI)的关系。十几年前做过几次DO-178B培训,简单整理下和大家做个概要分享。
提到DO-178就必须说下RTCA这个组织,它的全称是Radio Technical Commission for Aeronautics(航空无线电技术委员会), 虽然不隶属任何美国政府机构,这个有80多年历史类似于中国行业协会的组织具有很大的影响力,因为它有一个极为重要的会员,FAA(Federal Aviation Administration,美国联邦航空管理局)。它的使命是致力于航空系统的安全可靠,其重要工作之一是通过特别委员会建立相关规范标准。
FAA和RTCA:你办事我放心
因为RTCA属于协会性质,它建立的文档规范更多是提供指导,但仍然广泛被国际航空军品、民品采用,包括国内一些航空系统和设备开发的组织。
提到DO-178,还必须定义下所谓Safety-Critical Software (国内都翻译成“安全关键软件”,总觉得这个表达差点意思,也许应该翻成“安全性不可忽略的软件”,这样翻译虽然意思准确但不够雅):软件错误会造成生命损失或灾难性后果。航空软件显然符合这个条件。
如何能确认软件系统是符合安全性(CMMI所提质量属性的一种)要求呢?一般有两种做法,一种是提供充分的安全常见案例,证明所有应用场景都是满足安全要求的。还有一种就是大家熟悉的通过对开发过程提出要求增加对系统安全性的信心。5000A, CMMI,今天讲的DO-178C都属于后者。记得一次在雷神做培训,在讨论DO-178C时,一位质量人员对其价值做了很好的解释:“我们无法证明开发出的软件没有任何缺陷,但我们可以证明我们有多么努力!”十年过去了,至今我还记得这句话。
DO—178《航空机载系统和设备合格审定中的软件考虑》的历史和CMM差不多,DO-178于1982年发布,第一个升级版DO-178A于1985年发布,真正被广泛使用的DO-178B发布于1992年,比CMM晚了一年。最新的版本DO-178C则于2011年推出。
DO-178给出了含有计算机的机载系统和设备的研制工作而开发的
软件开发过程中应遵循的准则,它适用于机载系统和设备中软件的开发和软件的合格审定。可供机载系统和设备(含软件)开发者使用,也可供合格审定机构审查使用。和5000A(CMMI)相比,DO-178的要求更加明确具体。
DO-178B定义了五个安全级别,给出了66个航空软件系统开发的目标(指南),以保证系统的可靠性和安全性。安全级别最高的A级软件开发需要遵循所有目标要求,低级别的软件开发则需要遵循部分要求。这些目标(指南)分属三类过程:Software Planning Process, Software Development Process,和“Integral”Process。DO-178B对开发测试工具也有明确要求。DO-178B被FAA用来作为批准民品航空软件开发的依据。
DO-178B中的三大过程
如果你让我用一个词来概括DO-178B的话,那就是Traceability(可追溯性)!每一行代码都可以直接追溯到一个需求、一个测试用例,交付程序中不允许包含任何无关的代码。Dead code和deactivated code是DO-178B的词汇,Verification和Validation也是DO-178B中的重要概念。大家应该了解CMMI中需求双向跟踪实践的来源了(虽然其要求更加灵活),也知道VER和VAL的出处了.
关键是Traceability
经过多年努力,RTCA于七年前推出了DO-178C。DO-178B文档中提供的模型使用指导很少。新发布的DO-178C标准中的一个补充内容DO-331(Model Based Development and Verification Supplement)提供了关于在使用模型时工件和验证的指导。这些文档注重过程和目标验证,使得航空企业去决定如何最有效的将基于模型设计应用到整个软件开发生命周期。新版本还追加了另外几个技术支持文档: OO Technology and Related Techniques Supplement (DO-332), Formal Methods Supplement (DO-333) , Software Tool Qualifications (DO-330).
在升级过程中,重要争论焦点问题是,到底要个什么样的标准:Prescriptive标准,还是goal-based标准。显然后者占了上风。DO-178C在许多方面都做了很好的改进优于178B.
按DO-178要求开发软件是有代价的,有人做过调查,开发投入一般会增加50%到200%,而在一个成熟的CMMI2级或3级组织中推广DO-178,额外开发成本会增加30%-40%。 这也是为什么航空系统软件价格昂贵的原因。但就是有钱,估计也很难采购到一套空管系统。
前段时间和国内企业聊DO-178C时,听到了这样的说法:几年前我们也做了CMMI,但现在我们放弃了它,采用DO-178C。其实CMMI和178C并不矛盾,如果已经有了CMMI三级(5000A三级),完全可以在此基础上引入178C的内容。注意任何一个军工组织,不可能所有项目都是安全等级为A的,客户要求和ROI都是裁剪考虑的因素。如果先有178C,也完全可以引入5000A,使体系更加系统化,二者的关系是互补的。
借用CMMI2.0中Context-Specific的概念,也许5000B可以根据安全性特点,建立不同的要求。
存在必有其合理性,当系统安全性变成了软件开发的最重要考虑时,DO-178C代表了业界比较好的理解和实践。当然中国企业在使用时,也必须本地化,和5000A(或CMMI)融合好。相信要求开发商遵循DO-178C的客户,也会毫不犹豫的支付这些额外成本。
最后说明下,DO不是缩写,只是DOcument的前两个字母。
《从DO-178C说开去》来自互联网,仅为收藏学习,如侵权请联系删除。本文URL:http://www.bookhoes.com/783.html