论文部分内容阅读
近些年来,新兴的分形几何学在不断地发展,并且在一些研究领域中得到了广泛的应用,如计算机、地理、交通等等。分形几何的最基本特征是自相似性,即每个局部按照一定的比例放大后和整体相同,同时整体按一定比例缩小后又和局部是相同的。对于一段分为若干个模块的计算机程序,每个模块又可能被分为若干个更小的模块。由于每个模块放大后都是一段程序,因此,整个软件体在某种程度上具有一定的自相似性,可以将分形的理论应用到软件复杂度的研究当中。本文结合分形的本质及程序结构的特征,将分形理论应用到软件复杂度的研究当中,并结合实例说明软件分形复杂度的意义。主要工作如下:1.结合分形及程序的结构特征,给出盒子及盒图的定义,进而经过严格的数学推导提出软件分形复杂度的定义,给出算法思想和计算方法,并通过实例说明被测程序具有分形特征------标度不变性。2.根据软件分形复杂度的定义,设计并实现了一个能够度量程序分形复杂度的仿真工具,并编写了大量的测试用例以确保系统的正确性。3.对大量开源程序的分形复杂度进行计算,通过进一步的分析表明所得数值在某种情况下可以反映出程序在结构上的复杂程度,其度量结果是比较有效的,同时在某种程度上对传统软件复杂度度量法做出了一定的改进。4.对Linux内核中核心部分、内存管理部分、文件管理部分,Wireshark中的wIretap模块,以及《Windows程序设计(第五版)》中的经典源码进行了分形复杂度分析,根据计算统计结果说明各部分代码复杂性的高低。同时还发现了一类并不具有明显分形特征的代码段,它们具有相似的结构特征。5.对学生作业进行了分形复杂度分析,发现他们的编码风格不同,程序复杂性也各不相同。分形复杂度偏高,一是由于程序逻辑结构过于复杂,分支过多,造成可读性的下降;二是频繁出现函数调用会造成系统的开销。可以通过对编码风格的改进降低程序的复杂性。