您的位置:首页 > 其它

软件复杂性分析

2015-09-27 18:53 225 查看
1,目的:更好地对软件开发过程进行控制;

               提高软件的可靠性和可维护性;

               降低由复杂性引发软件错误的可能性;

               确保软件产品的质量;

               减少由软件设计方法和技巧使用不当而带来的复杂性。

2,产生原因(共6条):需求复杂、应用要求高;开发环境复杂;软件应用框架、结构及模型复杂;软件开发过程复杂;涉及人的智力和管理复杂;项目设计与验证复杂

3,模块复杂性:模块复杂性度量主要用来对模块中的数据流和控制流结构(或模块信息流结构)和模块之间互连的复杂程度等进行度量和评价。

        模块内部结构复杂性:主要有以上两种方法,McCabe度量和Halstead度量。

        模块接口复杂性:常用模块的扇入/扇出数量或信息的扇入/扇出数量来度量。

4,复杂性控制:模块复杂性控制、模块结构复杂性控制和软件总体复杂性控制。

5,规模度量元:规模度量元Line Count复杂度;难度度量元Halstead复杂度;结构度量元McCabe复杂度

         Halstead复杂度基本思想:根据程序中可执行代码行的操作符和操作数的数量计算程序复杂性。

        McCabe复杂度基本思想:程序的复杂性很大程度上取决于程序控制流的复杂性,单一的程序顺序结构最简单,循环和选择所构成的环路越多,程序就越复杂。

        McCabe复杂度计算方法:V=E-N+2P(E表示控制流图中边的数量;N表示控制流图中节点数;P表示连接组件数目,P为1);V=判定节点数+1;V=区域数。

       McCabe圈复杂度的应用(3点):指出在实际测试中检测的最少基本路径的数目;McCabe圈复杂度反映模块复杂性、软件缺陷数和发现它们并改正它们所需的时间之间的关系;V(G)可用做最大模块复杂性的定量指标,大量研究表明,V(G)到10是最大上限,超过这个值会使测试变得更复杂,软件错误率增加。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: