嵌入式软件测试技术MISRA.pdf

上传人:b****1 文档编号:3211702 上传时间:2022-11-20 格式:PDF 页数:81 大小:582.55KB
下载 相关 举报
嵌入式软件测试技术MISRA.pdf_第1页
第1页 / 共81页
嵌入式软件测试技术MISRA.pdf_第2页
第2页 / 共81页
嵌入式软件测试技术MISRA.pdf_第3页
第3页 / 共81页
嵌入式软件测试技术MISRA.pdf_第4页
第4页 / 共81页
嵌入式软件测试技术MISRA.pdf_第5页
第5页 / 共81页
点击查看更多>>
下载资源
资源描述

嵌入式软件测试技术MISRA.pdf

《嵌入式软件测试技术MISRA.pdf》由会员分享,可在线阅读,更多相关《嵌入式软件测试技术MISRA.pdf(81页珍藏版)》请在冰豆网上搜索。

嵌入式软件测试技术MISRA.pdf

1嵌入式软件测试技术嵌入式软件测试技术(静态篇(静态篇-代码规则检查)代码规则检查)皮永辉皮永辉2012年8月2内容提要嵌入式软件静态测试技术嵌入式软件静态测试技术质量从代码抓起质量从代码抓起源代码分析技术概述源代码分析技术概述一切为了安全一切为了安全MISRA-C概述MISRA-C概述从细节做起从细节做起数据类型数据类型清晰无误的表达清晰无误的表达函数和表达式函数和表达式安全正确的指向安全正确的指向指针和数组指针和数组别犯路线错误别犯路线错误程序流程的规范做法程序流程的规范做法求人不如求己求人不如求己避免来自编译器的隐患避免来自编译器的隐患3嵌入式软件静态测试技术质量从代码抓起测试从需求开始质量从代码抓起测试从需求开始质量从代码抓起“优质”代码:

软件质量的基础“优质”代码:

软件质量的基础静态测试:

获取“优质”代码的重要手段静态测试:

获取“优质”代码的重要手段关于软件静态测试关于软件静态测试又称静态分析,也称源代码分析又称静态分析,也称源代码分析与动态测试相对应与动态测试相对应不运行被测代码,只对源代码本身进行分析不运行被测代码,只对源代码本身进行分析无需测试用例无需测试用例无需事先假设,没有预期性无需事先假设,没有预期性自动化,简单易行自动化,简单易行源代码分析技术的发展,使软件测试从要求功能性正确向如何获得高质量代码的方向发展源代码分析技术的发展,使软件测试从要求功能性正确向如何获得高质量代码的方向发展4早期静态分析技术早期静态分析技术“古老的”静态分析方法代码审查“古老的”静态分析方法代码审查直到现在,代码审查的方式仍在应用。

这种方式的确有利于提高代码的质量,最大的好处是简单易行,可以发挥人的主观能动性。

直到现在,代码审查的方式仍在应用。

这种方式的确有利于提高代码的质量,最大的好处是简单易行,可以发挥人的主观能动性。

对审查人员的要求较高对审查人员的要求较高经验表明,超过百万行的代码进行审查时,发现问题是很困难的经验表明,超过百万行的代码进行审查时,发现问题是很困难的人工方式有很大的局限:

耗时、易犯错、可靠性低人工方式有很大的局限:

耗时、易犯错、可靠性低对内缺乏可持续性,对外不具备权威性对内缺乏可持续性,对外不具备权威性基于词法/语法的代码分析基于词法/语法的代码分析自动扫描自动扫描能够区分有问题的词汇和语法缺陷能够区分有问题的词汇和语法缺陷会产生误报,没有考虑代码的语义会产生误报,没有考虑代码的语义编译工具的一种补充编译工具的一种补充质量从代码抓起源代码分析技术概述5新一代静态分析技术新一代静态分析技术基于规则的代码检查基于规则的代码检查以某种编程标准(规则)为依据分析源代码,发现其违反或不合规则的地方,并给出以某种编程标准(规则)为依据分析源代码,发现其违反或不合规则的地方,并给出“违规违规”的具体信息的具体信息规则是指导我们写出高质量代码的标准。

我们有理由相信符合规则的代码就是高质量、少缺陷的代码规则是指导我们写出高质量代码的标准。

我们有理由相信符合规则的代码就是高质量、少缺陷的代码通过找出通过找出“不合规则不合规则”的代码剔除可能的缺陷的代码剔除可能的缺陷提高产品的可移植性、可靠性、可读性提高产品的可移植性、可靠性、可读性除明显的错误外,一般不深入分析缺陷除明显的错误外,一般不深入分析缺陷重在重在“预防预防”,影响深远,影响深远质量从代码抓起源代码分析技术概述6新一代静态分析技术新一代静态分析技术基于结构的质量分析基于结构的质量分析从分析代码结构入手从分析代码结构入手结构的复杂程度:

代码的结构的复杂程度:

代码的“量量”结构的良好程度:

代码的结构的良好程度:

代码的“质质”客观分析代码质量客观分析代码质量预测缺陷,评估风险,计算工作量和生产率预测缺陷,评估风险,计算工作量和生产率为质量改进指明方向为质量改进指明方向基于算法的缺陷分析基于算法的缺陷分析使用算法技术对程序运行时的状态和行为进行预测,检查源代码中的错误和缺陷,并标明问题区域使用算法技术对程序运行时的状态和行为进行预测,检查源代码中的错误和缺陷,并标明问题区域算法本身决定了发现错误的效率,有可能误报。

算法本身决定了发现错误的效率,有可能误报。

重在重在“治病治病”,效果立显,效果立显质量从代码抓起源代码分析技术概述7新一代静态分析技术新一代静态分析技术三招“打造”高质量的代码代码规则检查代码规则检查预防为主预防为主代码质量分析代码质量分析强身健体强身健体代码缺陷分析代码缺陷分析检查治疗检查治疗质量从代码抓起源代码分析技术概述8代码规则的作用代码规则的作用对可靠性和正确性的强制要求,对语言使用的规则说明对可靠性和正确性的强制要求,对语言使用的规则说明避免使用未定义的、不明确的语言特性避免使用未定义的、不明确的语言特性限制特定库、特定结构的使用限制特定库、特定结构的使用防止编译器的错误防止编译器的错误防止一般编程错误防止一般编程错误提高预防性编程实践提高预防性编程实践限制程序的复杂性限制程序的复杂性提供统一的编程风格和命名规范提供统一的编程风格和命名规范标准体系认证过程所必备标准体系认证过程所必备CMM/CMMI、DO178-B、ISO9000-3等CMM/CMMI、DO178-B、ISO9000-3等源代码分析技术概述代码规则检查9代码规则检查的意义代码规则检查的意义避免程序员对编程语言的不正确使用避免程序员对编程语言的不正确使用这些错误不是动态测试能解决的这些错误不是动态测试能解决的预防错误或缺陷预防错误或缺陷在软件工程中更早地找出问题在软件工程中更早地找出问题问题发现得越早,付出的代价就越小问题发现得越早,付出的代价就越小统一编码风格统一编码风格提高产品的可移植性、可靠性、可读性提高产品的可移植性、可靠性、可读性减少对个体程序员的依赖减少对个体程序员的依赖由由“人治人治”走向走向“法治法治”由事后检测向质量控制发展实现软件产品生产的工业化、标准化实现软件产品生产的工业化、标准化源代码分析技术概述代码规则检查10嵌入式编程标准嵌入式编程标准CMISRAC汽车制造业嵌入式C编程标准C+JSFC+联合攻击战斗机C+编程标准HICPP(HighIntegrityC+)高可靠性高可靠性C+编程标准MISRAC+汽车制造业嵌入式C+编程标准行业标准GJB5369航天型号C语言安全子集源代码分析技术概述代码规则检查11MISRAC概述MISRAC概述关于MISRAMISRA标准,为什么MISRA-C2规则一览嵌入式软件静态测试技术一切为了安全12关于MISRA关于MISRAMISRA=TheMotorIndustrySoftwareReliabilityAssociation汽车工业软件可靠性联合会汽车工业软件可靠性联合会源自于英国政府1990年成立的“安全IT”计划的一个项目1994年正式独立出来,总部在英国1994年正式独立出来,总部在英国致力于协助汽车厂商开发安全可靠的软件,其主要成果就是MISRAC/C+标准MISRA常设一个指导委员会,目前成员是:

福特汽车(Ford)福特汽车(Ford)捷豹路虎(JaguarLandRover)捷豹路虎(JaguarLandRover)莲花公司(LotusEngineering)莲花公司(LotusEngineering)米拉汽车设计(MIRALtd)米拉汽车设计(MIRALtd)里卡多公司(Ricardoplc)里卡多公司(Ricardoplc)TRW汽车电子TRW汽车电子利兹大学(TheUniversityofLeeds)利兹大学(TheUniversityofLeeds)一切为了安全MISRAC概述13MISRA标准,为什么MISRA标准,为什么在汽车电子和实时嵌入式应用中,C的使用越来越体现出广泛性和重要性。

这主要取决于C语言在嵌入式行业的应用优势:

C可用于硬件操作。

对多数微处理器来说,C往往是最佳甚至是唯一的选择。

C可用于硬件操作。

对多数微处理器来说,C往往是最佳甚至是唯一的选择。

C对高速、底层、输入/输出操作等提供了很好的支持。

而这些特性是许多汽车嵌入式系统的基本特性。

C对高速、底层、输入/输出操作等提供了很好的支持。

而这些特性是许多汽车嵌入式系统的基本特性。

由于嵌入式系统日益复杂,高级语言C较之汇编语言显然更为适合。

由于嵌入式系统日益复杂,高级语言C较之汇编语言显然更为适合。

相对于其他一些高级语言,C能够产生较少的代码和较少的RAM密集性(RAM-intensive)。

相对于其他一些高级语言,C能够产生较少的代码和较少的RAM密集性(RAM-intensive)。

不断增长的可移植性需求。

市场竞争要求可以通过移植到新的和/或低成本的处理器,以降低硬件成本。

不断增长的可移植性需求。

市场竞争要求可以通过移植到新的和/或低成本的处理器,以降低硬件成本。

不断增长的自动产生C代码的需求,以及对开放系统和主机环境(hostedenviroments)的兴趣。

不断增长的自动产生C代码的需求,以及对开放系统和主机环境(hostedenviroments)的兴趣。

一切为了安全MISRAC概述14MISRA标准,为什么MISRA标准,为什么没有任何一种编程语言能够确保它的最终执行过程会和程序员的预期完全吻合没有任何一种编程语言能够确保它的最终执行过程会和程序员的预期完全吻合程序员的失误这是常有的事。

错误发生时,C往往能容忍书写错误书写错误算法理解错误算法理解错误C语言非常灵活,可以写出风格和表达截然不同的文章C语言非常灵活,可以写出风格和表达截然不同的文章程序员对语言的误解误会语言构造的作用误会语言构造的作用没有正确理解编程语言的全部内容没有正确理解编程语言的全部内容一切为了安全MISRAC概述15MISRA标准,为什么MISRA标准,为什么程序员对编译器的误解C语言中许多地方是未经完善定义的,其实际行为取决于编译器的解释,可能与程序员的预期完全不同C语言中许多地方是未经完善定义的,其实际行为取决于编译器的解释,可能与程序员的预期完全不同“未定义行为未定义行为”可能会随着编译器的改变而改变可能会随着编译器的改变而改变某些情况下其行为甚至在同一个编译器内也会根据上下文而发生变化某些情况下其行为甚至在同一个编译器内也会根据上下文而发生变化编译器的错误编译器也是软件,也有缺陷编译器也是软件,也有缺陷对于C的一些难以理解的地方,编译器的编写者很容易错误地解释和实现对于C的一些难以理解的地方,编译器的编写者很容易错误地解释和实现操作平台的差异尽管语言一样,但在不同的目标平台上表现不一样尽管语言一样,但在不同的目标平台上表现不一样运行时错误也许语言本身并没有问题,但某些特殊的数据会在代码运行时产生错误也许语言本身并没有问题,但某些特殊的数据会在代码运行时产生错误一切为了安全MISRAC概述16MISRA标准,为什么MISRA标准,为什么所以,在安全相关系统中使用所以,在安全相关系统中使用C语言需要相当小心。

语言需要相当小心。

MISRA的建议:

的建议:

首先,只能使用在ISO标准中定义的语言。

因此排除了以下方面的使用K&RCK&RCC+C+C的私有扩展C的私有扩展其次,不要使用所有的C语言特性而且,必须对语言的使用加以限制,避免那些确实可能产生问题的地方,直到它是可以应用的另外,汇编语言不再适合于安全相关系统,在某些方面可能更糟,不建议使用一切为了安全MISRAC概述17MISRA标准,为什么MISRA标准,为什么MISRAC标准为人们提供了标准为人们提供了C语言使用的限制子集语言使用的限制子集MISRAC:

1998(MISRAC1)基于ISO9899:

1990基于ISO9899:

1990“ProgramminglanguagesProgrammingla

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试认证 > IT认证

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1