收藏 分享(赏)

软件复杂性分析与质量评测.ppt

上传人:无敌 文档编号:642591 上传时间:2018-04-16 格式:PPT 页数:57 大小:692.50KB
下载 相关 举报
软件复杂性分析与质量评测.ppt_第1页
第1页 / 共57页
软件复杂性分析与质量评测.ppt_第2页
第2页 / 共57页
软件复杂性分析与质量评测.ppt_第3页
第3页 / 共57页
软件复杂性分析与质量评测.ppt_第4页
第4页 / 共57页
软件复杂性分析与质量评测.ppt_第5页
第5页 / 共57页
点击查看更多>>
资源描述

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

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

3、,程序结构就越复杂如对于代码,我们可以统计它们的操作符和操作数,然后以此为基础,计算程序的长度和体积等其中,操作符包括程序调用、数学运算符、以及有关的分隔符等,操作数可以是常数和变量等 设一个程序中出现的不同操作符 n1, 操作符出现的总数 N1设一个程序中出现的不同操作数 n2, 操作符出现的总数 N2设一个程序中出现的不同操作符和不同操作数之和 n=n1+n2简单程序长度 N=N1+N2,5/57,SUBROUTINE SORT(X, N)DIMENSION X(N)IF (N .LT. 2) RETURNDO 20 I=2, N DO 10 J=1, I IF (X(I) .GE. X(

4、J) GO TO 10SAVE=X(J)X(I)=X(J)X(J)=SAVE 10 CONTINUE20 CONTINUERETURNEND,操作符 计数1 语句末 72 数组下标 63 = 5 4 IF( ) 25 DO 26 , 27 程序末 18 .LE. 19 .GE. 110 GO TO 1n1 = 10 N1 = 28,操作数 计数1 X 62 I 53 J 44 N 25 2 26 SAVE 27 1 1n2 = 7 N2 = 22,一个简单程序的操作符和操作数,6/57,常用软件复杂性(续),Halstead复杂度(续)计算方法估算出的程序长度 N=n1log2(n1)+n2l

5、og2(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仅考虑程序数据流而不考虑程序控制流,不能真正反映程序复杂性,7/57,常用软件复杂性(续),McCabe复杂度程序复杂性很大程度上取决于程序控制流的复杂性单一的顺序程序结构最简单,循环和

6、选择所构成的环路越多,程序就越复杂将软件的流程图转化为有向图,然后以图论来衡量软件的质量有圈复杂度、基本复杂度、模块设计复杂度、设计复杂度和集成复杂度,8/57,常用软件复杂性(续),Line Count复杂度、 Halstead复杂度和McCabe复杂度等度量方法都是针对传统的结构化程序设计方法的当应用到面向对象程序设计方法时,不再适用于其中的某些概念,如类、继承、封装和消息传递等但在目前尚未找到专门针对面向对象的复杂性度量方法的情况下,这些传统的度量算法也能在一定程度上反映软件开发的复杂程度,9/57,McCabe圈复杂度,以程序流程图的分析为基础,通过计算强连通的程序图中线性无关有向环的

7、个数,建立复杂性的度量计算公式为:V(G)=m-n+2pV(G)是强连通有向图G中的环数m是G中的弧数n是G中的节点数p是G中分离部分的数目对于一个正常的程序来说,程序图总是连通的,即p=1,10/57,11/57,McCabe圈复杂度(续),McCabe圈复杂度的具体度量方法为了使之强连通,我们可以从出口点到入口点画一条虚弧我们常采用另一种计算方法来获得McCabe度量值对单入口单出口模块,计算程序中判断语句个数+1得V(G)值圈复杂度等于通过程序的最大线性无关路径数,它算出为防止出错需测试次数McCabe度量法实质上是对程序控制流复杂性的度量,它并不考虑数据流,因而其科学性和严密性具有一定

8、的局限性圈复杂性度量的原理可以适用于源代码可以避免引起可靠性问题的过度复杂可以使用该值驱动测试过程,以发现错误,12/57,McCabe基本复杂度,基本复杂度是用来衡量程序非结构化程度的非结构成分降低了程序的质量,增加了代码的维护难度,使程序难理解基本复杂度高意味着非结构化程度高,难以模块化和维护,易导致消除一个错误可能导致其他的错误计算方法将圈复杂度图中的结构化部分简化成一个点,计算简化以后流程图的圈复杂度就是基本复杂度优点衡量非结构化程度;反映代码质量;预测代码维护量,辅助模块划分;与所用的高级程序设计语言类型无关应用当基本复杂度为1,这个模块是充分结构化的当基本复杂度大于1而小于圈复杂度

9、,这个模块是部分结构化的当基本复杂度等于圈复杂度,这个模块是完全非结构化的,13/57,McCabe模块设计复杂度,Module Design Complexity (iv(G)模块设计复杂度是用来衡量模块判定结构,即模块和其他模块的调用关系软件模块设计复杂度高意味模块耦合度高,这将导致模块难于隔离、维护和复用 计算方法从模块流程图中移去那些不包含调用子模块的判定和循环结构后得出的圈复杂度,即模块设计复杂度不大于圈复杂度,通常是远小于圈复杂度 优点衡量模块对其下层模块的支配作用衡量一个模块到其子模块进行集成测试的最小数量是设计复杂度(S0)和集成复杂度(S1)计算的基础,14/57,McCab

10、e设计复杂度,设计复杂度Design Complexity (S0) 以数量来衡量程序模块之间的相互作用关系它提供了系统级模块设计复杂度的概况高设计复杂度的系统意味着系统各部分之间有着复杂的相互关系计算方法S0是程序中所有模块设计复杂度之和优点可应用于完整的软件,也可应用于任何子系统衡量代码的质量指出一个模块整体的复杂度,反映了每个模块和其内部模块的控制关系揭示了程序中模块调用的复杂度有助于集成复杂度的计算,15/57,McCabe集成复杂度,集成复杂度Integration Complexity (S1) 为了防止错误所必须进行的集成测试的数量表示就像圈复杂度是测试路径的数目,而集成复杂度是

11、程序或其子系统的独立线性子树计算方法一个程序的集成复杂度和一个模块的圈复杂度是非常相似的,必须计算对程序进行完全测试所需集成测试的数目S1的计算公式:S1=S0-N+1,N是程序中模块的数目优点有助于集成测试的实施量化集成测试工作且反映了系统设计复杂度有助于从整体上隔离系统复杂度,16/57,McCabe的其他复杂度,Number of Lines (nl)行数行数是模块中总的行数,包括代码和注释指出了模块的行数(即模块的规模),规模小的模块易于理解和维护 Normalized Complexity (nv)规范化复杂度规范化复杂度是圈复杂度除以行数:nv=v(G)/nl定义那些有着显著判定逻

12、辑密度的模块,这些模块相对于其他常见规范模块需要做更多的维护工作,17/57,McCabe的其他复杂度(续),Global Data Complexity(gdv(G)全局数据复杂度量化了模块结构和全局数据变量的关系它说明了模块对外部数据的依赖程度,同时度量了全局数据的测试工作,也描述了模块之间的耦合关系,能反映潜在的维护问题 Specified Data Complexity(sdv(G)局部数据复杂度量化了模块结构和用户局部数据变量的关系,同时度量了局部数据的测试工作,18/57,McCabe的其他复杂度(续),Pathological Complexity (pv(G)病态数据复杂度病态

13、数据复杂度衡量一个模块包含的完全非结构化成份的程度,标出向循环内部跳入的问题代码,而这些部分具有最大的风险度,通常需要重新设计计算方法:所有的非结构部分除去向循环内跳入的结构,转化为线结构,病态复杂度就等于简化以后流程图的圈复杂度优点:指出了可靠性的问题,降低了维护风险帮助识别极不可靠的软件,19/57,软件复杂性度量,模块复杂性度量模块复杂性度量是软件复杂性度量的基础,是一种曾一度被广泛使用的传统方法,主要有前面介绍的McCabe度量和程序长度(Halstead)度量两种方法软件结构复杂性包含两个方面模块结构的复杂性整个软件结构的复杂性,20/57,模块结构复杂性度量,用于对软件中的数据流和

14、控制流结构、模块信息流结构和模块之间互连的复杂程度等进行度量和评价力图反映模块内部结构复杂性,以及模块之间的调用关系(即接口复杂性)接口复杂性用模块的扇入/扇出数量或信息的扇入/扇出数量来度量,可表示成对应模块或子系统的扇入与扇出乘积的平方模块的扇入等于进入该模块的信息流与该模块的输入数据之和模块的扇出等于进入该模块的信息流与该模块的输出数据之和,21/57,总体复杂性度量,软件结构复杂性同模块复杂性之间常相互矛盾模块划分越小,功能越简单,模块复杂性就越小但模块之间的联系就越多,接口就越复杂,由此导致的模块结构复杂性就越大模块复杂性的增加意味着模块结构复杂性降低总体复杂性是模块复杂性、模块结构

15、复杂性,以及软件的重要度、调用频率等的综合,22/57,软件复杂性控制,模块复杂性控制模块化是结构化程序设计的基础,是软件的主要属性,而模块复杂性控制是软件复杂性控制的基础模块大小由其功能和性能决定,模块化不够或过分模块化都应得到有效的控制 适当地确定模块的大小和接口,使之保持适度的复杂性,这是模块复杂性控制的基本原则,23/57,改善模块复杂性,提高软件可靠性的模块设计原则,抽象化对于复杂软件的模块化分解,常常采用抽象的层次分解先用一些高级的抽象概念进行构造和理解,这些高级的概念又可用一些较低级的概念来构造和理解,如此进行下去,直至最低层次的具体元素模块化概念与抽象是一致的软件设计逐步推进,

16、软件结构中每个模块层次代表了软件抽象层次的一次精化软件结构的顶层模块控制了系统的主要功能,并且影响全局软件结构的低层模块完成对数据的具体处理用自顶向下、由抽象到具体的方式分配控制,从而精化软件设计,降低软件的复杂性,提高软件的可理解性、可测试性和可维护性,24/57,改善模块复杂性,提高软件可靠性的模块设计原则(续),信息隐蔽在模块功能和大小的确定及设计过程中,遵循信息隐蔽原则不仅有利于改善模块本身的杂性,也有利于降低软件的结构复杂性信息隐蔽意味着有效的模块化可以通过定义一组独立的模块来实现,这些独立的模块彼此间仅交换那些为了完成软件功能而必须交换的信息在软件测试和维护过程中,信息隐蔽也将提供

17、极大的好处大多数数据和过程对软件的其它部分而言是隐蔽的即使在调试和维护期间由于疏忽而引入了错误,一般不会波及到软件的其它部分,25/57,改善模块复杂性,提高软件可靠性的模块设计原则(续),控制模块结构复杂性模块独立开发具有单一功能且和其它模块之间没有更多相互作用的模块,使之保持独立性,是软件结构复杂性控制的基本要求模块化程度高的软件,功能和接口简单,易于得到“插件式”模块 这样的软件比较容易编制,尤其适用于不同成员分别编制独立的模块容易测试和维护,因为由设计和代码修改引起的副作用已得到限制,错误不容易蔓延可通过对模块的耦合性和内聚性的控制,来实现对软件结构的控制耦合性表示模块之间的相对独立性

18、,是影响软件复杂性的一个重要因素尽量使用数据耦合、少用控制耦合、限制公共耦合范围、完全不用内容耦合内聚是指模块功能的相对强度,用于衡量一个模块内部各个元素彼此结合的紧密程度,是信息隐蔽和局部化的自然延伸在软件设计中,虽然没有必要精确地确定软件的内聚性等级,但必须力争使所设计的模块具有高内聚性,并能识别出低内聚性,26/57,改善模块复杂性,提高软件可靠性的模块设计原则(续),模块结构复杂性控制扇入/扇出扇出是影响模块宽度的主要因素,扇出越大,模块越复杂可适当增加中间层次的控制模块,以降低模块的扇出扇出太小时,可对下级模块进一步分解或并到它的上级模块中去一个模块的扇出不能太大,也不能太小经验表明

19、,典型系统的平均扇出通常是3或4,上限是59模块的扇入越大,共享该模块的上级模块数就越多这是有好处的不能违背模块独立性原则,而一味地追求高扇入软件结构对扇入/扇出的要求是顶层扇出较多,中间层次的扇出应尽量减少,随着深度增加,争取更多的扇入,27/57,改善模块复杂性,提高软件可靠性的模块设计原则(续),模块结构复杂性控制软件接口接口复杂性是产生错误的根源。在设计软件接口时,应尽量使软件接口传递的信息简单,并与模块的功能一致通常,我们追求的设计是单入口、单出口模块这样不仅可以有效地防治模块之间的内容耦合,同时也便于降低接口的复杂性和冗余度此外,还有利于一致性的改善设计软件接口应尽量避免模块之间的

20、病态连接,杜绝转移进入或引用到一个模块的内部,28/57,改善模块复杂性,提高软件可靠性的模块设计原则(续),软件总体复杂性控制软件总体复杂性控制是一个系统工程它是在对软件的各种复杂性度量的基础上,在综合考虑软件开发成本、可靠性要求等一系列因素之后,对软件复杂性的一种平衡软件总体复杂性控制不仅是一种技术,更是一种艺术 它不仅需要技术、方法和工具,更需要软件设计人员的超水平智力发挥,29/57,软件复杂性总结,下述内容是形成软件复杂性的重要原因控制结构和数据结构复杂的程序会复杂跳转语句使用不当的程序会复杂非局部量较多的程序会复杂按地址调用参数比按值调用参数复杂模块及过程之间联系密切的程序会复杂嵌

21、套深度越大,程序越复杂循环结构复杂性大于选择结构和顺序结构的复杂性宽度是软件复杂性的主要形成原因它们构成了软件复杂性度量的基本度量准则集是软件复杂性控制的基本出发点,30/57,软件质量的概念,软件质量的定义现代质量管理中,“质量”被定义为“用户的满意程度”参照ANSI/IEEE Std 729-1983,软件质量又定义为:“与软件产品满足规定的和隐含的需求能力有关的特征和特性的全体”。或者:软件产品中能满足给定需求的性质和特性的总体,例如,符合规定说明软件具有所期望的各种属性组合的程度顾客或用户觉得软件满足其综合期望的程度软件的合成特性,它确定软件在使用中将满足顾客预期要求的程度M.J.Fi

22、sher将软件质量定义为:“所有描述计算机软件优秀程度的特性的组合。”所以计算机软件质量是软件的一些内部特性的组合,31/57,软件质量的主要特性指标,软件质量特性的定义通常,软件质量可由以下主要特性来定义功能性:软件所实现的功能达到它的设计规范和满足用户需求的程度;效率:在规定条件下,用软件实现某种功能所需的计算机资源(包括时间)的有效程度;可靠性:在满足一定条件的应用环境中,软件能够正常维持其工作的能力;安全性:为了防止意外或人为的破坏,软件应具备的自身保护能力能力;易使用性:对于一个软件,用户在学习、操作和理解过程中所做努力的程度;可维护性:当环境改变或软件运行发生故障时,为了使其恢复正

23、常运行所做努力的程度;可扩充性:在功能改变和扩充情况下,软件能够正常运行的能力;可移植性:为使一个软件从现有运行平台向另一个运行平台过度所做努力的程度重用性:整个软件或其中一部分能作为软件包而被再利用的程度软件质量特性是面向管理的观点,或者说是从使用者的观点引入的软件质量特性的实际价值就在于它体现了用户的观点,32/57,软件质量模型,Boehm在1976年首次提出了软件质量层次模型认为软件产品的质量基本上可从软件的可用性、软件的可维护性和软件的可移植性三个方面来考虑并将软件质量在概念上分解为若干层次,对于最低层软件质量概念引入量化指标,以便得到软件质量的整体评价Boehm等人将软件质量分为2

24、3个质量特性,它们是:可访问性、可说明性、准确性、可扩充性、通信性、完备性、简洁性、一致性、设备独立性、效率、人类工程、可读性、可维护性、可修改性、可移植性、可靠性、健壮性、自包含性、自描述性、结构性、可测试性、可理解性和可用性,33/57,软件质量模型(续),McCall等人将软件质量分解至能够度量的层次,提出FCM 3层模型软件质量要素(factor),衡量标准(criteria)和量度标准(metrics),包括11个标准,分为产品操作(product operation)、产品修正(product revision)和产品转移(product transition)ISO 9126将软

25、件质量总结为6大特性,每个特性包括一系列副特性,其软件质量模型包括3层高层:软件质量需求评价准则(SQRC)中层:软件质量设计评价准则(SQDC)低层:软件质量度量评价准则(SQMC)一般情况下,我们可以将软件质量特性定义成分层模型,34/57,软件质量度量FCM模型,35/57,软件质量框架模型(ISO 9126),软件质量模型就是一个将程序信息由底层到高层、由细节到概括的一个过程模型,它由简单、可测量的数据入手,最后分析概括出软件的特征,36/57,软件质量国家标准GB-T8566-2001G,质量特性功能度软件所实现的功能满足用户需求的程度功能性反映了所开发的软件满足用户表述或隐含需求的

26、程度,即用户要求的功能是否全部实现可靠性在规定时间和条件下,软件所能维持其性能水平的程度可靠性对某些软件是重要的质量要求,它除了反映软件满足用户需求正常运行的程度,且反映了在故障发生时能继续运行的程度,37/57,软件质量国家标准GB-T8566-2001G(续),易用性对于一个软件,用户学习、操作、准备输入和理解输出时,所做努力的程度易使用性反映了与用户的友善性,即用户在使用本软件时是否方便效率在指定的条件下,用软件实现某种功能所需的计算机资源(包括时间)的有效程度。效率反映了在完成功能要求时,有没有浪费资源,资源这个术语有比较广泛的含义,它包括了内存、外存的使用,通道能力及处理时间,38/

27、57,软件质量国家标准GB-T8566-2001G(续),可维护性在一个可运行软件中,为了满足用户需求、环境改变或软件错误发生时,进行相应修改所做的努力程度可维修性反映了在用户需求改变或软件环境发生变更时,对软件系统进行相应修改的容易程度一个易于维护的软件系统也是一个易理解、易测试和易修改的软件能够纠正或增加新的功能,或允许在不同软件环境上进行操作可移植性从一个计算机系统/环境转移到另一个计算机系统/环境的容易程度以上每一个质量特性都分别与若干子特性相对应,39/57,软件质量子特性,适用性(Suitability):与能否提供一组功能以及这组功能是否适合相关的软件属性准确性(Accurate

28、ness):与能否得到正确或相符的结果或效果有关的软件属性互操作性(Interoperability):与其它指定系统交互使用的能力有关的软件属性符合性(Compliance):与遵循和应用有关的标准、约定或类似规定有关的软件属性,40/57,软件质量子特性(续),可靠安全性(Safety):与避免可能引起死亡、伤害或职业病以及避免对设备或财产造成损坏或损失能力有关的软件属性保密安全性(Security):与防止对程序和数据进行偶然或故意的非法存取的能力有关的软件属性成熟性(Maturity):与软件故障引起的失效频度有关的软件属性容错性(Fault Tolerance):与在产生软件故障或违

29、反规定接口的情况下,保持软件与规定的性能级别的能力有关的软件属性,41/57,软件质量子特性(续),可恢复性(Recoverability):与在软件运行失效且需使其重新工作时,重建其性能级别和恢复直接受影响数据的能力有关的软件属性可理解性(Understandability):与用户为识别逻辑概念及其应用所作的努力有关的软件属性易学性(Learnability):与用户学习软件的应用(如操作控制、输入、输出)所作的努力有关的软件属性易操作性(Operability):与用户为掌握操作和操作控制所作努力有关的软件属性,42/57,软件质量子特性(续),时间行为(Time Behabior):与

30、响应和处理时间以及软件执行其功能的吞吐率有关的软件属性资源行为(Resource Behabior):与软件执行其功能时,所用资源的数量以及这些资源所占时间有关的软件属性易分析性(Analyzability):与为诊断缺陷或失效原因、或为标识需要修改部分所需努力有关的软件属性易改变性(Changeability):与进行修改、排错或适应环境的难度有关的软件属性,43/57,软件质量子特性(续),稳定性(Stability):与修改造成未预料效果所导致的风险有关的软件属性可测试性(Testability):与确认被修改软件所需努力有关的软件属性适应性(Adaptability):与软件无需采用有

31、别于为该软件准备的处理或手段就可以适应于不同的规定环境有关的软件属性易安装性(Installability):与将软件安装到指定环境所需努力有关软件属性,44/57,软件质量子特性(续),符合性(Conformance):与使软件遵循移植有关标准或约定有关的软件属性可替换性(Replaceability):与在规定应用其他软件的场合而应用此软件的可能性以及所需努力有关的软件属性,45/57,46/57,软件产品度量,一般说来,一项度量就是根据一实体的某个特定属性赋予其一个数值对软件,具有可度量属性的实体一般有:管理、过程、产品和资源目前人们常说的度量属于产品度量或软件度量,它是特定软件层面属性

32、的度量,如设计和编码等 软件产品度量用于对软件产品进行评价,并在此基础之上推进产品设计、产品制造和产品服务优化实质上是软件质量的度量,而软件的质量度量与其质量的周期密切相关软件产品度量主要针对作为软件开发成果的软件产品的质量而言,独立于其过程,47/57,软件质量度量模型,软件的质量由一系列质量要素组成每一个质量要素又由一些衡量标准组成,每个衡量标准又由一些量度标准加以定量刻划质量度量贯穿于软件工程的全过程以及软件交付之后交付之前的度量主要包括程序复杂性、模块有效性和总的程序规模交付之后的度量则主要包括残存的缺陷数和系统的可维护性方面,48/57,评估指标的选取原则,选择合适的指标体系并使其量

33、化是软件测试与评估的关键评估指标可以分为定性指标和定量指标两种理论上讲,为了能够科学客观地反映软件的质量特征,应该尽量选择定量指标并不是所有的质量特征可用定量指标进行描述,有时要采用一定的定性指标,49/57,评估指标的选取原则(续),在选取评估指标时,应该把握如下原则:针对性不同于一般软件系统,能够反映评估软件的本质特征,具体表现就是功能性与高可靠性可测性能够定量表示,可以通过数学计算、平台测试、经验统计等方法得到具体数据简明性易于被各方理解和接受完备性选择的指标应覆盖分析目标所涉及范围客观性客观反映软件本质特征,不能因人而异,50/57,评估指标的选取原则(续),注意:选择的评估指标不是越

34、多越好,关键在于指标在评估中所起的作用评估时指标太多,会增加结果的复杂性,甚至还会影响评估的客观性指标的确定一般是采用自顶向下,逐层分解,并在动态过程中反复综合平衡软件质量特性/子特性之间存在相互冲突,我们在设计软件质量时必须考虑利弊,全面权衡,根据质量需求,适当合理地选择/设计质量特性,并进行评价,51/57,软件质量度量方法,软件质量度量方法比较多,例如:Halstead复杂性度量法基本思路是根据程序中可执行代码行的操作符和操作数的数量来计算程序的复杂性操作符和操作数的量越大,程序结构就越复杂McCabe复杂性度量法其基本思想是程序的复杂性很大程度上取决于程序控制流的复杂性,单一的顺序程序

35、结构最简单,循环和选择所构成的环路越多,程序就越复杂,52/57,软件度量元,度量元举例All supported languagesCyclomatic number V(G)Comment frequencyNumber of nesting levelsNumber of execution pathsNumber of macrosNumber of function parametersNumber of instructionsNumber of GOTONumber of RETURNFan in/outetc.,Object-oriented languages Weighte

36、d Methods per ClassClass testabilityNumber of ChildrenNumber of AncestorsDepth of inheritance TreeCoupling between objectsMultiple inheritance indicatorFan in/out of a classClass comment frequencyClass CouplingNumber of redefined methodsetc.,V(G)=E-N+2E:流程图的边N:流程图的节点,53/57,54/57,源代码的度量过程,55/57,56/57,57/57,作业,简单介绍几款软件质量度量和评价的工具(在网上查找)学习Logiscope的软件质量评价模型,解释该质量模型的计算方法和具体应用方法,

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

当前位置:首页 > 企业管理 > 经营企划

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报