|
|
|
|
移动端

1.6.4 产品级度量:通用度量

《软件测试基础教程》第1章软件测试的基本知识,本章作为一个导引,其目的在于让读者熟悉与软件测试相关的基本概念,建立起全书的框架。在本书后续章节中将要详细阐述的问题,首先在这里被提了出来。读完这章之后,读者就能够在软件测试和软件质量方面提出一些有意义的问题。本节为大家介绍产品级度量:通用度量。

作者:王峰/郭长国/陈振华 等译来源:机械工业出版社|2011-09-16 21:18

技术沙龙 | 6月30日与多位专家探讨技术高速发展下如何应对运维新挑战!


1.6.4 产品级度量:通用度量

产品级度量与具体的产品相关,如某种编程语言的编译系统。在做一些涉及产品质量的决定时(如“这个产品能够向用户发布了吗”),可以用到这些度量。

存在大量与产品复杂性相关的度量。在这里,介绍两种复杂性度量:圈复杂度和Halstead度量。

圈复杂度是Thomas McCabe在1976年基于程序控制流提出的。假设程序P的控制流程图(CFG)G包含N个结点、E条边、p是G中的强连通分支数,则圈复杂度V(G)计算如下:

V(G)=E-N+2p

注意,程序P可能包含多个子程序。计算公式V(G)中的p只计算了从主程序可以到达的那些子程序。V(G)就是控制流图G的复杂度,而G代表了从主程序可以到达的那个子程序。另外,V(G)并不是整个程序的复杂度,实际上,它只是程序P中对应G的那个子程序的复杂度(参见练习1.13)。V(G)的值越大,说明程序的复杂性越高,程序就比V(G)值小的更难理解和测试。建议V(G)的值不要超过5。

现在著名的Halstead复杂性度量是由Maurice Halstead教授在其专著《Elements of Software Science》中首次提出的。表1-2列出了部分有关软件科学的度量。采用软件规模(S)和功耗/工作量(Effort,记为E,指开发一个软件所需的人/努力——译者注),利用下面提出的估计公式,估算在软件开发活动中出现的缺陷数量(B):

 
表1-2 Halstead关于程序复杂性和工作量的度量
 
为了验证Halstead软件科学度量,业界进行了广泛的试验性研究。采用上述估计公式的一个好处在于,它有利于管理层规划测试资源。例如,如果B的值较大,要在规定的期限内结束测试过程,就得多分配点测试人员和测试资源。然而,现在的程序设计语言,比如Java和C++,并不完全适合于Halstead复杂性度量,而人们往往使用下文将要介绍的针对面向对象语言专门设计的度量(也可参考练习1.14)。
【责任编辑:云霞 TEL:(010)68476606】

回书目   上一节   下一节
点赞 0
分享:
大家都在看
猜你喜欢

读 书 +更多

JAVA并发编程实践

本书既能够成为读者的理论支持,又可以作为构建可靠的、可伸缩的、可维护的并发程序的技术支持。本书并不仅仅提供并发API的清单及其机制,...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊