EEJournal

专题文章
现在就订阅

可确认的软件

试图理解数量令人眼花缭乱的语言和编码标准

害怕。

要非常害怕。

你开的那辆车?控制软件可能有一个漏洞,随时都可能把你介绍给那边那辆时速70英里的大卡车。那是140英里每小时的闭合速度。哦吼!

为你阅读这篇文章的电脑供电的电网?(或者如果你用电池的话,昨天就已经提供了,聪明的家伙?)当事情变得艰难的时候,不要指望它……有人肯定已经在你的冰箱里放置了电子定时炸弹,它会在凌晨2点01分,当酒店刚刚关门的时候,在你需要冰啤酒的时候,切断冰箱的电流。

你孩子正在玩的电子玩具呢?你不会想知道的。

收拾好所有东西,在树林深处找个小木屋,把你爱的人和事都收集起来,然后远离尘嚣,过上人们应该过的生活。

好吧,这需要一些修饰,但是,是的,我一直在写一本小册子来出售我最后得到的这个丑陋的小屋,到目前为止,没有人想要。而最好的推销方式就是恐惧。恐惧是可怕的。如果你能让人们相信他们处于危险之中,他们会做出最愚蠢的事情。就是把你所有的啤酒都倒出来,这样就没人能偷你的啤酒了。

事实上,你最应该害怕的是恐惧本身。(哇,这是个很棒的概念。我应该留到一些重要的场合……)

也就是说,想到像你和我这样的人——是的,你可以不寒而栗,我说的是“我”——现在正在编写运行几乎所有东西的软件,这有点发人深省。更糟糕的是,大部分代码都是用c编写的。我知道我在写C的时候做的事情并不总是很漂亮。

我的健康和幸福就靠这个吗?

但是,从好的方面来看,有人正在努力使我们的电子世界成为一个更安全的地方。至少在真正重要的地方是这样。(在手机上?就是时不时莫名其妙地重启的那个吗?在过去的几年里,我们曾经写过关于这个世界的点点滴滴,但从来没有从高处出发,试图衡量整个景观。

如果您认为这种格局可能已经演变成一套漂亮、整洁的组织,具有明确的议程和定义良好的边界,那么请三思。有人可能会决定成立一个电子玩具安全标准委员会,但这并不会阻止其他人成立一个完全不同的电子小物件安全标准委员会。(它们不是玩具:它们被放在架子上,永远不会被玩,而且价值更高嘿,不要碰它!!)或者是在亚美尼亚销售的玩具,我不知道,当然,这与在阿塞拜疆销售的玩具的标准不同。

这些都是我编的。以防你们不清楚。但你懂的。(我希望)。

因此,让我们走一走标准的世界,使软件在我们的世界中保持正直和狭窄。我在这里笼统地使用“标准”一词,因为并不是所有这些标准都得到了ansi认可的组织的正式批准。但他们仍然受到从业者的尊敬,所以我不会吹毛求疵。

说实话:当我开始涉足这个领域时,我发现不同组织和文件的数量几乎令人困惑。不管我认为我的清单有多完整,我总能找到另一个标准或组织,他们似乎从自己独特的角度来看待事情,没有真正的合理性:a)为什么需要一个不同的标准,b)为什么它和另一个标准之间的差异是有意义的。也许,在这些文档的核心深处可以找到这些信息,但这需要一些搜索(有时在英语以外的语言中…是的,我们承认这样的语言存在…)

我从VDC的分析师Chris romell那里得到了一些初步的指导,他帮我下了一些初步的订单。他们每年都会做一项研究,结果显示标准的使用越来越多,一半的受访者在他们当前的项目中使用某种标准,55%的受访者预计在两年内使用一种标准。确切地说,这意味着不同:对于编码标准,最大的一块(约36%)使用内部标准,其次是选择性地遵守正式标准(21%),然后是严格遵守(14%)。但只有不到20%的受访者根本没有使用任何编码标准

这与这个世界明显的模糊是一致的,所以这里的目的是调查标准以及一些试图帮助解决这一切的公司。毫无疑问,覆盖范围是不完整的,因为不可能推翻每一块岩石,而任何一块岩石都可能隐藏着另一家公司或组织。所以请随意在评论中补充或澄清。

首先,粗略地说,有四种不同的标准和四个略有不同的目标。

  • 第一个简单的是关于软件的“质量”:无论软件的目的是什么,都要消除错误。这些是编码标准。
  • 第二种是针对“安全关键”应用程序的编码标准,在这些应用程序中,问题可能导致伤害或生命损失(或严重的经济损失)。
  • 第三个是针对安全性的编码标准,确保您的代码不容易受到电子破坏。
  • 第四种方法与其他方法不同:它与编码本身无关,而是与证明你已经考虑了上面所需要的任何一种方法所需的过程有关。

当然,它们之间有重叠之处,所以这张整齐的清单只是我在这堆大杂烩上强加一些顺序的微薄尝试。

说到第一类,简单的质量,它本身并没有标准。Netrino写了一本关于嵌入式系统编程实践的书。高完整性c++是另一组推荐的面向质量的实践。

语言的选择可以是一个开始。如果你真的想对bug挑剔,那就简单点ANSI C可能不是你的首选,尽管这是大家都知道的,而且有很多。甚至c++也可以是一种改进(如果您忽略了C在c++程序中是合法的这一事实)。Java和Ada以他们自己的方式,试图创建不那么容易愚蠢的范例(尽管我敢打赌,如果有人没有必要的话,你会试图说服他们使用Ada……)。

这也是大多数工具可用的类别。甚至不包括各种各样的免费软件检查器和检查器,你可以从那里购买工具PRQACoverity从GrammaTech开始,只是为了根除可能有问题的代码。

安全和保障

大多数人都同意,好的代码是一件好事,而“最佳实践”有很多。但是,把忙碌的人们聚集在一起,花额外的时间来开发一些更正式的东西,通常需要的不仅仅是良好的意愿。防止飞机从天上掉下来是真正激励人们的事情。这导致了大量的努力,以限制编程语言的一些不那么严格的方面,以便在生命和肢体受到威胁的情况下使用。

你有证书C MISRA CMISRA c++,JSF++ AV, HIS (MISRA的德国汽车子集),JPL和IPA/SEC C(日语)。其中,MISRA占主导地位;它最初用于汽车行业,现在被用于其他地方(有时是选择性的)。有火花, Ada的一个子集和相关的Ravenscar Profile(现在是Ada 2005的一部分);Java世界有JSR-302。

还有一些安全关键协议和堆栈,如OSEK(我们熟悉的AUTOSAR就是基于OSEK),以及在架构级使用的ECU引擎控制单元和OIL OSEK实现语言。

公司有很多方法来解决这些标准。

  • 像LDRA, PRQA,和Coverity可以做认证检查。
  • 有些提供了帮助创建安全代码的开发环境。其中包括DDC-I和Adacore。
  • 还有一些操作系统和运行时环境的供应商瞄准了对安全至关重要的市场。其中包括Green Hills, Wind River, LynuxWorks和Atego/Aonix。
  • 还有一些设计环境从建模范例开始,通过设计来创建安全的代码。Esterel和Atego的Artisan在这里是值得注意的。
  • 最后,还有专门从事安全关键项目的服务公司。Atego的HighRely和IBM就是著名的例子。

对于安全性,使用常见弱点枚举或CWE该标准(又名ISO/IEC 15408)似乎最受关注。该标准有多个遵循级别。认证和服务也是这里的规则。Klocwork专注于安全性;Coverity和LDRA还执行安全分析。

关键在于过程

说到过程,有很多不同的转弯方式。从专注于行业的角度来看,您已经获得了铁路EN 50128。ISO 14971, IEC 62304和IEC 60601医疗。IEC 61508重型设备和能源。核能IEC 60880。ISO 26262汽车。IEC 61508工业自动化。特别是ISO 26262,随着它接近批准,工具供应商在汽车供应链的认证和新兴流程中获得了飞跃。

还有一个大难题:用于机载设备软件的DO-178B(转移到C),以及用于地面软件的DO-278,这些软件会影响空中人员的情况。以空中交通管制为例。

更一般地说,ISO 12207是通用的软件生命周期标准,ISO 15504就是从这个标准衍生出来的,通常被称为软件过程改进和能力确定,或SPICE(不要与电路模拟SPICE混淆)。

是的,这绝对是一个令人眼花缭乱的ISO/IEC数字。还有其他一些首字母缩写词和数字,我几乎找不到相关信息。

这些都与你如何编写软件有关。大部分都与需求甚至还有一个ReqIF需求交换格式。简单地说,每个需求都应该绑定到特定的代码,所有的代码都应该绑定到一个需求。将这一过程正式化是一件大事。

公司认证流程包括LDRA, Atego和MKS。

如果这一切看起来势不可挡,你看到最多的标签是MISRA和DO-178/278, ISO 26262占主导地位。所有其他的似乎都更加专业化或本地化。

这些组织所做的工作永远不会完成;标准一旦被批准,通常就过时了。因此,这是一种持续的努力,以跟上不断增加的改进(假设这些变化使事情变得更好)。坏消息是,这意味着必须不断修改工具和购买升级。这对制造工具和提供服务的公司来说是个好消息。这对每个人都有好处,希望有限数量的人必须跟踪所有的数据;如果他们做得很好,那么这些工具会让其他人的生活更轻松。

所以,虽然我应该担心所有这些将降低整体恐惧水平,并损害我出售那间愚蠢的小屋的机会,但只要人们继续思考其他可能出错的方法,我就应该没事。我并不真的担心。

哦,我相信你还没有naïve到认为软件是系统中唯一会引起问题的东西。人们同样擅长创造蹩脚的硬件。这将是未来讨论的主题。

*VDC研究,2010年软件和系统生命周期管理市场情报服务,第5卷:工程设计方法,过程和标准

相关公司链接:

AdaCore

Atego

Coverity

DDC-I

Esterel

GrammaTech

青山

IBM

Klocwork

LDRA

LynuxWorks

MKS

PRQA

WindRiver(现在是英特尔的一部分)

留下回复

有特色的博客
2023年2月3日
我写了第一篇文章《the Chiplet Summit》,摘自最近在圣何塞举行的Chiplet Summit,如果你还没看过,你可能应该先看看。会议的主题是:摩尔定律已死。我们只剩下包装了。正如我在最后的总结中所说的……
2023年2月2日
我们分享了对2023年高性能计算(HPC)的预测,包括边缘计算解决方案的增长以及人工智能和机器学习的兴起。文章“2023年五大高性能计算趋势”首先出现在“从硅到软件”....上
2023年1月30日
聪明地工作,而不是更努力地工作。大家不都是这么跟你说的吗?当然,这是很好的建议,... ...
2023年1月19日
你是否在调整表带或更换手表电池时遇到了问题?如果是这样,我是好消息的携带者....

有特色的视频

Synopsys 224G和112G以太网PHY IP OIF在ECOC 2022互操作

Synopsys对此

这段特色视频展示了Synopsys 224G和112G以太网PHY IP中长到达性能的四个演示,与第三方通道和serde互操作。

了解更多

特色粉笔谈话亚博里的电子竞技

在物联网世界中实现数据流动

逮老鼠的电子产品而且国巨集团

我们不断增长的物联网生态系统的核心是高性能半导体,但仅靠集成电路无法实现成功的物联网系统。在这一期的Chalk Talk中,Am亚博里的电子竞技elia Dalton与KEMET的Peter Blais和Pulse的Ryan Wenzelman讨论了被动组件对于成功的物联网框架的开发是如何至关重要的。他们仔细研究了物联网系统开发的射频、有线和配电方面,并调查了YAGEO集团如何通过广泛的无源组件推动物联网领域的创新。

点击这里了解更多关于脉冲电子物联网世界的信息

Baidu