软件测试大学教程 教学课件 作者 978-7-302-20655-2软件复杂性分析与质量评测.ppt

软件测试大学教程 教学课件 作者 978-7-302-20655-2软件复杂性分析与质量评测.ppt

ID:50516628

大小:692.50 KB

页数:57页

时间:2020-03-10

软件测试大学教程 教学课件 作者 978-7-302-20655-2软件复杂性分析与质量评测.ppt_第1页
软件测试大学教程 教学课件 作者 978-7-302-20655-2软件复杂性分析与质量评测.ppt_第2页
软件测试大学教程 教学课件 作者 978-7-302-20655-2软件复杂性分析与质量评测.ppt_第3页
软件测试大学教程 教学课件 作者 978-7-302-20655-2软件复杂性分析与质量评测.ppt_第4页
软件测试大学教程 教学课件 作者 978-7-302-20655-2软件复杂性分析与质量评测.ppt_第5页
资源描述:

《软件测试大学教程 教学课件 作者 978-7-302-20655-2软件复杂性分析与质量评测.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、1/57第6讲软件静态分析(二)软件复杂性分析与质量评测2/57软件复杂性概念软件复杂性对软件复杂性的定量描述,是软件复杂性分析和控制基础对象不同,描述软件复杂性的角度和方法不同越复杂的事物越容易出错,并带来问题根据软件结构,从数据流和控制流角度出发,结合软件的模块复杂度、结构复杂度及这两者的总体复杂度度量,来实现对软件复杂性的度量软件复杂性度量只是为软件复杂性的定量分析和控制提供依据根本目的是通过控制软件复杂性来改善和提高软件的可靠性设计过程是软件复杂性形成的根源最有效的办法是在软件设计过程中对软件复杂性进行有效控制,使之

2、保持在一合理的范围内3/57常用软件复杂性LineCount复杂度以程序的总代码行数作为程序复杂性的度量值软件物理规模的度量定义了具体的LineCount数据,例如注释行和空行协助指出难于理解的模块代码行数度量法是一种很粗糙的方法,在实际应用中很少使用4/57常用软件复杂性(续)Halstead复杂度Halstead软件科学理论也许是“最著名的和最完全的(软件)复杂度的综合度量”。它是软件科学提出的第一个计算机软件的分析“定律”提出一个基本假设,既一组基本度量元可以在代码产生后或一旦设计完成后对代码进行估算得到软件科学把定量

3、定理赋予了计算机软件的开发根据程序中可执行代码行的操作符和操作数的数量来计算程序的复杂性,操作符和操作数的量越大,程序结构就越复杂如对于代码,我们可以统计它们的操作符和操作数,然后以此为基础,计算程序的长度和体积等其中,操作符包括程序调用、数学运算符、以及有关的分隔符等,操作数可以是常数和变量等设一个程序中出现的不同操作符n1,操作符出现的总数N1设一个程序中出现的不同操作数n2,操作符出现的总数N2设一个程序中出现的不同操作符和不同操作数之和n=n1+n2简单程序长度N=N1+N25/57SUBROUTINESORT(X,

4、N)DIMENSIONX(N)IF(N.LT.2)RETURNDO20I=2,NDO10J=1,IIF(X(I).GE.X(J))GOTO10SAVE=X(J)X(I)=X(J)X(J)=SAVE10CONTINUE20CONTINUERETURNEND操作符计数1语句末72数组下标63=54IF()25DO26,27程序末18.LE.19.GE.110GOTO1n1=10N1=28操作数计数1X62I53J44N25226SAVE2711n2=7N2=22一个简单程序的操作符和操作数6/57常用软件复杂性(续)Halste

5、ad复杂度(续)计算方法估算出的程序长度N^=n1log2(n1)+n2log2(n2)重要结论之一是:程序的实际长度N与预测长度N^非常接近这表明即使程序还未编写完也能预先估算出程序的实际长度N程序体积V=Nlog2(n)程序级别L^=(2/n1)*(n2/N2)编程工作量E=V/L^智能级别I=L^*E语言级别L'=L^*L^*V编程时间(以小时记)T^=E/(S*f)这里S=60*60,f=18平均语句大小N/语句数程序中的错误数预测值:B=N*log2(n1+n2)/3000仅考虑程序数据流而不考虑程序控制流,不能真

6、正反映程序复杂性7/57常用软件复杂性(续)McCabe复杂度程序复杂性很大程度上取决于程序控制流的复杂性单一的顺序程序结构最简单,循环和选择所构成的环路越多,程序就越复杂将软件的流程图转化为有向图,然后以图论来衡量软件的质量有圈复杂度、基本复杂度、模块设计复杂度、设计复杂度和集成复杂度8/57常用软件复杂性(续)LineCount复杂度、Halstead复杂度和McCabe复杂度等度量方法都是针对传统的结构化程序设计方法的当应用到面向对象程序设计方法时,不再适用于其中的某些概念,如类、继承、封装和消息传递等但在目前尚未找到

7、专门针对面向对象的复杂性度量方法的情况下,这些传统的度量算法也能在一定程度上反映软件开发的复杂程度9/57McCabe圈复杂度以程序流程图的分析为基础,通过计算强连通的程序图中线性无关有向环的个数,建立复杂性的度量计算公式为:V(G)=m-n+2pV(G)是强连通有向图G中的环数m是G中的弧数n是G中的节点数p是G中分离部分的数目对于一个正常的程序来说,程序图总是连通的,即p=110/5711/57McCabe圈复杂度(续)McCabe圈复杂度的具体度量方法为了使之强连通,我们可以从出口点到入口点画一条虚弧我们常采用另一种计

8、算方法来获得McCabe度量值对单入口单出口模块,计算程序中判断语句个数+1得V(G)值圈复杂度等于通过程序的最大线性无关路径数,它算出为防止出错需测试次数McCabe度量法实质上是对程序控制流复杂性的度量,它并不考虑数据流,因而其科学性和严密性具有一定的局限性圈复杂性度量的原理可以适用于

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。