在嵌入式开发中,嵌入式系统软件的代码质量标准远高于游戏、照片编辑器和其他软件,这不是秘密。在硬件失控导致了很多悲剧的情况下,需求增加了,最多的情况是,大量的钱都是白白花掉的。
例如,法国的Arianespace公司就因员工10年的工作损失、70亿美元的损失以及查明谁犯了错误的令人厌烦的审判程序而逍遥法外。该公司在商业基础上提供太空发射服务,它的阿丽亚娜4号火箭已经成功发射了100多次,然而,下一个型号阿丽亚娜5号在第一次发射时就爆炸了。由于软件错误,火箭在起飞40秒后被摧毁。确切地说,导致这一结果的原因有几个:
开发人员重新使用了Ariane 4的软件模块,然而,Ariane 5的操作条件与第四款不同。
l Ariane 5系统检测到错误,但无法正确处理。
l 第五种型号的错误模块没有正确测试。
MISRA标准旨在提高嵌入式系统程序的安全性、可移植性和可靠性。MISRA最初是为汽车工业制造的。然而,如今这些标准被用于医疗器械开发、电信、军事项目等。在嵌入式开发中,它们基本上是开发软件时要遵循的一套规则和建议。
然而,MISRA并不是万能药。你不应该把它看作是一个从错误中拯救软件的灵丹妙药。为了最大限度地减少出现bug的风险,必须将MISRA与其他软件分析和检查方法(包括静态代码分析)一起使用。静态代码分析器是用于检测源代码中的错误和潜在漏洞的工具。使用静态代码分析器将帮助您发现大多数程序员都不知道的错误模式,它也有助于检测错误,这些错误在代码审查期间并不容易发现。此外,一些静态分析器支持MISRA,因此您可以节省检查代码是否符合标准的时间。
然而,仅仅使用静态代码分析器检查一次项目,修复错误并忘掉它是不够的。你应该明智地使用它。如果一个分析器被用于一个大型项目,它可能会发出很多警告。但您不应该急于修复它们——暂时隐藏分析器的消息,关注在进一步嵌入式开发过程中出现的新消息就足够了。其他警告可能被视为技术债务,您可以随时修复。然而,将MISRA与分析器一起使用最不痛苦的选择是在开发之初就开始使用它们。