类型转换类规则问题浅析.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
类型转换类规则问题浅析

类型转换类规则问题浅析   摘要:论文阐述了类型转换所要遵守的规则,介绍此类问题的表现形式、种类,规则检查时的分析要点,并列举了一则航天型号软件中所发生的案例来说明类型转换可能产生数值误差,以及引发的代码质量问题。论文可用于指导航天型号软件代码规则检查 关键词:编码规范;规则检查;类型转换 1.背景 软件编码规范是程序在编写过程中必须遵守的规则标准,实施什么样的编码规程取决于很多因素,航天型号项目所采用的编码规程最重要的就是软件的可靠性和安全性,编码规程使得开发人员在编程时和测试人员在测试时有章可循,减少因编程语言的因素而导致的错误,降低存在隐患的语言特征可能导致的风险,提高软件质量 2.代码规则检查方法 软件静态测试包括代码审查、静态结构分析、代码质量度量和代码规则检查等,是指不运行被测程序本身,仅通过分析或检查源程序的语法、结构、过程、控制流、数据流、接口和表达式等来测试程序代码的正确性。其中代码规则检查根据各项标准,从代码的安全性、可移植性、可维护性、可测试性等方面,分析查找出程序的欠缺和不足以及错误之处,发现违背程序编写标准的问题,找出程序中不安全、不明确和有歧义的模块,例如语言使用规则变量命名检查、类型检查、函数的声明和定义中使用的标识符不匹配,在函数体内使用外部变量声明,不允许的递归、未使用过变量的变量、数组的初始化不完整等 代码规则一般分为强制项规则和建议项规则,可以由人工进行,充分发挥人的逻辑思维优势,也可以借助软件工具自动进行。根据测试方面的经验可以得出,在测试过程中,静态测试比动态测试更有效率,以最小的代价更多更快速地找到问题,通常能够发现不少于70%的编码设计缺陷和程序逻辑问题。代码检查非常的耗费时间,很大程度上依赖于测试人员的知识储备、经验积累以及细心程度,而代码规则检查则依据相关标准和规范,一般由测试工具执行生成检查报告,常用工具包括QAC/QA C+、Testbed、logiscope等,这些工具可以很好地和软件开发工具以及测试工具集成在一起,程序员在编程过程可以同时完成编程规则的检查,测试人员在测试过程中能更全面检查出违反编程规则的代码。航天型号软件通常采用的标准有GJB2725A、航天型号软件c语言安全子集、探月工程探测器系统C语言编程规范等,可以极大的提高测试效率,减少错误的出现概率,确保软件研制质量和可靠性,提高软件研制工程化水平 3.类型转换规则 代码规则检查中一项重要的规则就是关于类型转换方面的要求,类型转换包括隐式类型转换、强制转换、用?舳ㄒ宓淖?换和使用帮助程序类的转换。隐式转换是一种安全类型的转换,不会导致数据丢失,如果要存储的值无需截断或四舍五人即可适应变量,则可进行隐式转换,不需要任何特殊的语法。强制转换是显示地通知编译器需要类型转换,要使用强制转换运算符,必须使用强制转换的情况是在转换中可能丢失信息或者其他原因转换可能不成功。另外,编程人员可以自定义一些特殊的方法来执行用户定义的转换,从而使不具有基类一派生类关系的定义类型之间可以显式和隐式转换 程序员在软件编写时经常会使用类型转换,类型转换一方面提高了编程的灵活性,另一方面,也带来了一定的安全隐患,使用不恰当会导致软件异常。因此类型转换一般遵守以下几条原则:禁止将类型长度较小的指针强制转换为类型长度较大的指针、禁止对指针变量使用强制类型转换赋值、有符号和无符号之间不得隐式转换、宽类型不得向窄类型隐式转换、整型和浮点类型之间不得隐式转换、函数参数不得隐式转换、函数的返回表达式不得隐式转换、复杂表达式不得隐式转换等。 1

文档评论(0)

linsspace + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档