基于程序理解技术的软件复杂性分析技术的研究与应用

来源 :北京工业大学 | 被引量 : 0次 | 上传用户:buerzui
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
随着软件规模和复杂性的日益增长,人们对软件的复杂性进行分析和度量的要求越来越高,因此对软件复杂性分析技术的研究已成为软件工程学中的一个热点。迄今为止,国内对软件复杂性分析技术的研究尚未成熟,对软件复杂性的度量和评估的方法也不尽完善,在此基础上,本文提出了基于程序理解技术的软件复杂性分析技术的研究和应用的课题。   软件复杂性分析技术主要表现在对软件代码进行程序结构分析和关键字识别,以及在此基础上的软件复杂性分析和度量。其中最关键的问题是如何在分析代码的过程中,识别并统计可供复杂性度量的数据。针对这一问题,本文提出了一种基于程序理解技术实现软件复杂性度量的方法。该方法分析和研究了程序理解技术为软件复杂性度量提供数据方面的问题。在问题研究的基础上,设计了基于程序理解技术实现软件复杂性度量的模型,并提出了方法研究中要解决的关键问题以及问题的解决方案,最后本文对该方法的实现给出了相关的算法。   在对方法进行研究的过程中,本文研究和设计了基于程序控制流的数据遍历算法、基于抽象语法树的运算符匹配算法和基于抽象语法树的操作数统计算法,并对抽象语法树所包含的数据信息进行转换、存储、遍历和统计度量。   为了更好的实现本文的研究方法,笔者设计和开发了基于OINK(OINK是由Karl Chen和Scott McPeak开发的一款开源的程序理解工具,该工具针对程序代码进行分析,并应用了多种程序理解技术)的软件复杂度度量系统,该系统通过对OINK中程序理解技术的运用,实现了度量数据的统计,并在此基础上完成软件复杂性度量。因此在对该系统设计的过程中对需求分析进行了详细描述,合理设计了系统的构件图,层次结构模型以及逻辑结构模型,并实现了系统中复杂性分析的关键算法,数据的采集和存储以及人机交互功能。   为了应用和验证本文提出的基于程序理解技术实现软件复杂性度量的方法,文章的最后建立了基于OINK程序理解平台的软件复杂度度量系统的应用环境,并详细地设计了应用流程,对随机选取的代码文件进行了复杂度度量测试。结果分析表明了系统的度量结果和程序复杂性分析结果的一致性,从而证明了课题研究的方法的合理性和可行性。
其他文献
当今社会,计算机技术在给人们带来便利的同时也带来了一些安全隐患,诸如计算机病毒、木马和黑客等问题,不时地给人们的工作和生活带来的一定的困扰。而传统依靠病毒防护、防火墙
学位
在21世纪计算机技术飞速发展的时代,为提高农业生产管理水平,农业专家系统应运而生,使用专家系统与农业领域知识相结合解决农业生产中的问题成为了一种创新。玉米是我国的主
BDD作为布尔函数的一种等价表示形式,最初被成功应用在模型检测、系统验证等领域。由于BDD所具有的压缩表示特点,使其作为一种重要的数据结构得到了越来越广泛的应用,如知识
学位
随着通信技术的发展,移动无线网络在当前获得了长足的发展,诸如蓝牙,802.11(Wi-Fi)等技术正逐步得到了越来越广泛的应用。无线网络技术正逐步成长为信息获取的一个很重要的部分
近年来,随着网络规模的飞速增长,网络上的数据流也越来越多。但是,传统的路由算法不能充分利用现有的网络资源,从而造成了网络拥塞,这已成为制约网络发展和应用的瓶颈。因此,
聚类分析中簇确认方法可评估所得簇的“质量”,使所得聚类结果能更好地体现数据集的原始结构。IB方法通过给定源变量X和它的相关变量Y的联合概率分布p(x,y),来寻求X的压缩变
近几年来,随着人们生活水平的普遍提高,家用汽车已经成为众多家庭的主要出行工具。伴随着生活品质的上升,人们的安全意识也普遍提高,在家用汽车的选择上偏向于质量更好,安全
随着数字多媒体技术与计算机网络的迅猛发展,信息安全问题已经成为了当今社会的一个重点研究问题,密写技术应用到了社会及日常生活中的多个领域。密写技术研究的成果在社会及
随着计算机技术的飞速发展,软件系统越来越复杂,从而导致了“软件危机”。解决软件危机的最佳途径之一是复用技术。基于组件的软件开发是当前复用技术研究的热点,其中组件可
XML己成为Web上表示和交换数据的标准格式。随着XML技术的不断发展和完善,涌现出大量XML文档。如何有效管理大规模XML数据,如何对XML数据进行高效的查询,已成为当前数据库技
学位