软件 Sotware
对于什么是软件,似乎所有人都觉得定义是那么的显而易见。直觉上来看,只要砸在我们脚上能疼的,都算是硬件 hardware, 除此之外的都是 软件 Sotware。如果这样的话,使用软件工具设计的专用集成电路(Application-Specific Integrated Circuit ASIC)和基于模型生成的 C 代码算什么呢?
引用英国铁道安全标准委员会的定义(http://www.yellowbook-rail.org.uk),在 2007 年的工程安全黄皮书《Engineering Safety Management Yellow Book 3》中他们认为软硬件的不同在于“软件 Sotware 在本质上比硬件更加复杂”“as a rule of thumb,we suggest that if a device has few enough internal stored states that is practical to cover them all in testing, it may be better to regard it as hardware and to show that it meets its safety requirements by analysis of the design and testing of the completed device, including exhaustive testing of all input and state combinations 作为一个经验法测,我们建议如果一个系统(device)没有那么多的状态位,而且,这些状态位都可以在实际测试中覆盖的到,我们最好将它看成是一个硬件。我们可以通过分析设计和完全测试(所有输入和状态机组合的穷举测试 exhaustive testing)来证明它满足安全需要”。
我们后续文章更新中提到的 软件 Sotware都是以此定义为基础的。如果一个系统足够简单,而且这个系统能够进行穷举测试 exhaustive testing,我们就将它看成是硬件 hardware,反之才是 软件 Sotware。
需要提醒大家的是,这个定义有一定的局限性。我们平常接触到的汽车电子系统对于进行穷举测试(exhausive testing)来说,都太复杂了,所以都可以被看成 软件 Sotware。对于一些硬件组件,其实,从很多年以前开始就无法进行穷举测试(exhausive testing)了。例如一块 64kbit RAM(从现在的控制器来看,小的有些夸张)有 2 的 64 乘 1024 次方种可能状态,如果按照刚刚引用的铁道安全委员会的定义,它就成了 软件 Sotware,所以,这种情况下我们将忽略上述定义方法。
软件 Sotware还有另外一个容易经常被忽略的地方就是配置参数(configuration data)。欧盟的 EC 482/2008 明确定义了 软件 Sotware应该包含它的配置参数(configuration data):
“softwar means computer programmes and corresponding configuration data 软件 Sotware是指计算机程序和它相关的配置参数(configuration data)…””configuration data means data that configures a generic software system to a particular instance of its use 配置参数(configuration data)是指那些将通用 软件 Sotware进行专用化配置的数据“
2015 年 5 月 9 号一架土耳其的空客 A400M 军用运输机坠毁,多人遇难。后续调查中,一位空客集团高管在接受德国媒体(Handelsblatt)采访时表示,这次事故是由错误的软件配置引起的。这位高管还特别强调了”The error was not in the code itself, but in configuration settings programmed into the electronic control unit(ECU)of engines 代码本身没有问题,问题出在了发动机电子控制单元的参数配置上“
因为配置参数(configuration data)组合的问题,与程序一起进行配置参数(configuration data)的确认(Validating)并没有得到行业内深刻的认识。假如一个程序有 5 个配置参数(configuration data),每个配置参数(configuration data)有 3 种可能的值,那么在进行随机组合测试的时候,就有 3 的 5 次方(243)种不同的程序需要验证(verify). 验证(Verification)程序过程中配置参数(configuration data)的重要性已经被慢慢重视起来,在未来的几年也会有新的标准出现来涉及这个方面。
关注微信订阅号 autotechspace(汽车知识共享空间)获取更多实时内容。。。。