lol总决赛下注

登录 | 注册 | English

资讯中心

lol总决赛下注  >  资讯中心  >  产品动态

MISRA白皮书

       20世纪90年代初,汽车电子产品 的重要性日益凸显。电子产品中 的App也随之变得举足轻重。不论是从商业角度还是从安全角度考虑,保证App可靠性都是很有必要 的。如今,一辆汽 的 的App代码可扩展到百万行 的量级。保证App 的可靠性正面临着空前 的挑战。
       汽车工业App可靠性协会(MISRA),是在英国政府 的大力支撑下,由多家汽车工业 的企业代表组成,以应对汽车电子中日益增长 的App使用,并给嵌入式App 的发展提供引导。该协会针对App工程中出现 的问题不断发布新 的标准。
       该协会首先于1994年发布了“基于车辆 的App开发指南”。此指南为IEC 61508标准(“电气/电子/可编程电子安全相关系统 的功能安全”)中汽车行业标准 的前身。而ISO 26262标准(道路车辆功能安全)取代了此指南。协会建立至今,发表了一系列 的文件和指南,用以解决C和C++语言 的一些固有问题。

C 和 C++
       C和C++语言在嵌入式App开发领域使用非常广泛(VD C研究显示:受访企业 的嵌入式系统开发,70%在使用C语言,42%在使用C++语言)。C语言提供了一个广泛 的资源库,众多工具都支撑该语言,有着丰富 的开发库。
       C语言替代汇编语言发展成为应用程序语言,但从没有考虑过其是否适合用于安全关键环境。一个通过编译并完全符合ISO语言标准要求 的C程序,可能还会包含不可预测 的行为——在如汽车制动系统等应用程序中,此种情况显然是不可接受 的。大家可以通过限制语言 的使用大幅减少危险 的发生。这一直是MISRA编码准则 的基本目 的。

编码标准
       编码标准即定义一种统一编码方式。不同于可靠性、可移植性和可维护性等影响App质量 的重要属性,虽然编码风格属于个人喜好,但是在一个App项目中,统一 的编码风格也是一项重要约束。编码标准更为基本 的作用是定义一个更安全 的编程语言 的子集。通过制定一组规则,消除编码结构已知 的危险。
       C语言允许开发人员做很多本质上不正确 的事情,所以编写符合语言标准要求 的代码非常容易。但是这将导致程序失败(如崩溃)或者未定义 的行为。如访问数组或算术运算内存范围之外导致溢出。
       显然确定这样 的“bugs”是非常重要 的。其中一些可通过编译器识别出来,当然专门 的静态分析工具将更为有效。然而,编码标准 的主要目 的并非识别问题而是着重预防,它们劝诫开发人员不要犯这样显而易见 的“错误”。
       编码规则 的根本目 的是限制语言 的使用,用以避免开发人员做本质上是“错误”或者有潜在危险 的事情。例如,在C语言中函数 的声明和定义有两种不同 的方式。‘旧’(Kernighan和Ritchie即K&R)语法虽然现在仍然支撑,但是已经被‘函数原型’语法所取代。为避免误用和引入错误,在MISRA-C中禁止使用K&R语法。很多App缺陷可通过采取合理限制语言 的使用来避免。

MISRA编码准则
       MISRA编码标准简洁明了,在全球范围内公认为C和C++开发安全关键App 的基准。
       MISRA每个文档都包含一组编码规则,在文档前几章节会先容背景信息,对于开发健壮代码也是相当重要 的。该背景信息强调,对编码规则 的严格遵守只是成功 的App开发过程中 的一个要素,大家还需适当 的编译器和验证工具。

MISRA-C:1998
       编码标准于1998年由MISRA发布。两个MISRA成员——福特和路虎,要求PRQA帮助他们创建自己 的编码标准。通过这项工作,确定了版本一 的MISRA-C基础内容:“汽车电子App中使用C语言 的引导方针”。这个版本包含127个编码规则,并取得了立竿见影 的影响。13年后 的今天,它仍然被用在许多旧有系统 的维护中。

MISRA-C:2004
       MISRA-C在2004年推出了新版本,对之前 的版本进行了改进,并明确了该规则 的使用领域。与之前版本相比较,其结构有了很大 的改变,增加了一些额外 的规则,并保留了原始版本 的精髓。值得注意 的是,新版本将标题中“汽车行业App”修订为“关键系统”。这反映出MISRA-C已经广泛应用于汽车行业之外。

MISRA-C++:2008
       尽管C语言是安全关键系统 的主要编程语言,但是C++语言 的使用仍然保持了稳步增长。在这一背景下,在2008年推出了MISRA-C++。较之C,C++要复杂 的多。所以此编程规则中包含228条规则。

MISRA-C自动代码
       在系统开发中使用建模工具频率大幅增长。从模型自动生成代码 的过程灵活、快速。特别是使用建模工具给产品开发周期带来 的显著变化使得该优势更加明显。
       在遵循应用程序 的编码准则情况下自动生成 的代码可以说是混乱 的根源所在。因为手动代码开发准则并不总适合于自动生成代码。所以MISRA发布了适用于代码生成工具 的MISRA-C:2004规范。
       然而影响自动生成代码质量 的并非只是代码生成工具 的原因,也可能是在模型设计时就存在了问题。所以MISRA还出版了一些书籍,用来为在应用程序中使用如Simulink和TargetLink建模语言提供设计方案和风格指南准则。

MISRA-C3
       目前,MISRA-C仍然是基于C90语言标准(ISO9899:1990) 的,而不是后来 的C99标准(ISO/ IEC 9899:1999)。编译器供应商迟迟没有实施C99,是因为人们普遍认为,并不是所有经过修订 的标准就代表着进步。特别是可靠性作为一个重要 的考虑因素时。即便在今天,大多数嵌入式编译器不提供全面支撑所有 的附件功能。
       MISRA-C: 2004出版时,决定推迟基于C99语言标准日期。然而,MISRA-C工作组现已接近完成第三个版本 的准则修订。该版本旨在改善较早版本并解决C99 的问题。MISRA-C3 的草稿版已经在2012年年初供公众审核。

静态分析
       不幸 的是,在推行编码准则 的过程中面临着很多困难。据观察,许多企业投入相当大 的精力编制了一套编码准则,在实施过程中却因难以实行而被放弃。
MISRA编码准则是很难通过手动代码审查实现有效 的实行。传统 的代码检查会耗费大量时间,而且并不是很可靠。大多数 的编码规则适合于使用工具自动实行。
       虽然一些嵌入式编译器会提供一定程度 的规则检查,但是专用静态分析工具提供更为全面 的检查。通过静态分析工具不仅可确定具体违反规则 的地方,也可找出其他编码问题,源码度量计算,通过深度数据流分析确定代码运行时可能会出现 的错误。
       但并不是每一条MISRA规则都可通过工具自动实行。也有少数规则是解决文档问题或是规则框架,需要凭借主观判断 的。然而绝大多数 的MISRA规则可以非常有效地自动实行。
       静态代码分析是一种速度快,功能强大,可靠且可复用 的一种技术。每个程序员可单独使用,避免了手动代码审查中很容易出现 的争持现象。

总结
       从1998年发布版本一 的MISRA-C规则,MISRA凭借其良好 的声誉成为嵌入式App开发编码标准 的专家,业界 的翘楚。
       C和C++并不是开发安全关键代码 的理想语言,但是它们可通过定义一个安全 的语言子集并结合静态分析工具统一实行该规范,来保证代码 的可靠性。

有关PRQA和编辑
       PRQA与MISRA之间 的关系可追溯到20年前,MISRA-C和MISRA-C++ 的主要准则元素是来自PRQA自己 的编码标准。并且PRQA 的技术专家是MISRA-C和MISRA-C++工作组 的主要成员。PRQA 的静态分析工具——QA•C和QA•C++,在MISRA-C和MISRA-C ++依从性检查,以及许多其他有价值 的分析能力方面在 的诙勒槛⊥贰
       本文编辑Paul Burden是PRQA开发团队中专门负责QA•C工具 的高级成员,同时也是MISRA-C工作小组工作十年以上 的资深成员。
       PRQA在全球都设有办事处,为世界各地客户提供技术支撑。请访问其官方网站查询详细信息。
       Email: info@programmingresearch.com
       Web: www.programmingresearch.com
关于lol总决赛下注
企业概况
企业理念
企业资质
资讯中心
lol总决赛下注在全球
诚聘英才
校园招聘
实习生招聘
社会招聘
走进lol总决赛下注
常见问题
市场活动
在线研讨会
线下活动
微信课堂
用户社区
资料下载
lol总决赛下注月刊
用户留言
个人中心
PMT留言
相关链接
达索企业
IBM-中国
联系大家
电话:010-64840808
邮箱:market_dept@hirain.com
版权所有 ? lol总决赛下注_lol竞猜平台 京ICP备18000642号-1 京公网安备11010802017344号 网站地图 | 招聘信息 | 法律声明 | 隐私保护
XML 地图 | Sitemap 地图