我比较懒啊!!不过从今天开始,每天发布一条VC++ 6.0的开发问题,敬请关注!
静态分析
上一篇 /
下一篇 2010-03-03 21:48:29
/ 个人分类:软件测试
1编码规范检查——一切的基础
一个项目或者一个企业,如果要下决心实施软件质量,实施软件工程,第一步要做的就是软件编码规范。
编码规范是程序编写过程中必须遵循的规则,一般会详细规定代码的语法规则、语法格式等。企业实施怎样的编码规范,取决于很多个因素:
l 编程采用的语言,例如C、C++、JAVA、ADA等
l 项目的规范化程度。目前现成的C/C++编码规范有很多,例如前几年网络上比较流行的《华为公司编程规范》、《摩托罗拉C+编程规范》等。但项目不能完全照搬,应该根据自己所处的阶段,定制属于自己的规范,否则的话,会让程序员无所适从,严重打击程序员的积极性。
l 行业。不同的行业对软件的可靠性有不同的要求,例如航空/航天的嵌入式软件对代码的要求很高,而传统的windows平台应用软件则相对要宽松。
在嵌入式软件中,尤其是汽车行业,国际上目前流行的C语言编程规则为MISRA-C:2004,其中包括包括141条规则,其中121条是强制(Required)遵守的,20条是建议(Advisory)遵守的。详细信息可以参考其官方网站www.misra.org.uk
有了统一的规范后,测试工程师或者程序员自身,就可以实施编码规范检查了。
根据笔者的实践,要真正把编码规范贯彻下去,单单靠测试员程序员的热情,很难坚持下去,所以笔者建议借助于一些专业的工具来实施。在C/C++语言的编程规则检查方面,比较专业的工具有C++Test、LINT工具、QAC/QAC++等,这些工具通常可以和比较流行的开发工具集成在一起,程序员在编码过程中,在编译代码的同时即同时完成了编程规则的检查。
2静态质量度量——提高软件的可维护性
有了严格的编程规范,只能算是万里长征迈出了第一步。要提高软件的可重用性,以及软件的可维护性,还需要进一步的努力,即静态质量度量。
静态质量度量所依据的标准是ISO 9126。在该标准中,软件的质量用以下几个方面来衡量,即功能性(Functionality)、可靠性(Reliability)、可用性(Usability)、有效性(Efficiency)、可维护性(Maintainability)、可移植性(Portability)。
以ISO 9126质量模型为基础,可以构造质量度量模型。具体到静态测试,这里主要关注的是可维护性。
3代码错误检测——提高软件的靠性
在传统意义上认为,错误检测应该是动态的系统测试的范围。但在bug的成本上分析,有以下公认的结论。
bug发现的越晚,修正的成本就越高,测试阶段修正bug的成本是编码阶段的约4倍的关系。为了减少成本,bug被发现的越早越好。在编程阶段,静态的分析代码就能找到代码的bug,是很多人的梦想。这个梦想在21世纪初变成了现实。以PolySpacee、Klocwork、Coverity为代表的静态分析软件,实现了只要静态分析代码,就可以发现代码的bug,例如数组越界、除数为0、缓冲区溢出等,虽然还不是特别完美。
收藏
举报
TAG: