基于代码依赖分析的软件可追踪技术研究

来源 :南京大学 | 被引量 : 0次 | 上传用户:AABBCCPANJIANHUA
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
软件可追踪性(Software Traceability)是指软件系统在开发全生命周期中,能够生成和维护各类软件制品(例如需求和代码)在系统功能上的关联关系(也称作追踪线索)的一种能力。软件可追踪性的主要目的是当软件制品随版本变化而发生变化时,可以通过追踪这些关联关系来帮助开发人员确定软件制品功能变化的范围及影响。当前可追踪性的工程实践方法仍然是以人工实现为核心的一套围绕需求-代码矩阵生成、维护与验证的软件质量保障机制,从而造成了软件可追踪性分析耗时、费力、易错。同时,软件开发流程迭代加速、软件开发方法面向维护与演化、软件系统技术复杂性增高等趋势更加深了开发人员对软件可追踪性自动化分析的依赖。因此,研究需求到代码的可追踪性自动化分析成为软件工程学术领域最具代表性与挑战性的工作之一。一般而言,在学术界,大多数可追踪性关联关系的生成与维护是通过自动化地选择需求和代码中两个主要的信息维度来分析和实现的,即软件系统内的文本(如需求规约和源代码文本)与代码元素之间的依赖关系(如函数调用和数据依赖关系)。同时,可追踪性自动化分析方法还需要通过在可追踪性的追踪线索生成(Trace Recovery)、维护(Trace Maintenance)、验证(Trace Validation)三个应用场景下的验证来说明该分析方法的实践有效性。因此,对该领域研究的主要问题可以表述为:(1)如何从需求和代码这两类处于不同抽象层次、且具有不同数据格式的软件制品中选择相关信息,从而既精确又完整的生成和维护可追踪性;(2)如何评估这些信息在不同的可追踪性自动化分析应用场景中的有效性。然而,当前主流的可追踪性自动化分析技术主要关注可追踪性的生成问题,缺乏对可追踪性维护与验证的支持。且其分析手段主要侧重于基于文本的词法分析,往往忽略了代码元素之间的依赖关系这一维度,从而导致当前可追踪性自动化分析极度依赖于软件制品内嵌文本的质量。部分综合考虑了代码依赖关系的可追踪性自动化分析技术也有着分析的代码依赖关系类型单一(主要是函数调用)、分析算法较为简单等不足。因此,当前软件可追踪性自动化分析存在着对可追踪性应用场景支持不足、分析方法精度较弱、用户对工具结果缺乏信心等问题。针对上述研究现状,我们首先通过实验验证了以函数调用和数据依赖为代表的代码依赖分析与可追踪性自动化分析之间所存在的强关联性。以此发现为基础,我们在实践中逐步提出了以代码依赖关系紧密度分析为代表的一系列代码依赖关系分析方法,并与具体的可追踪性应用场景相结合,从而为可追踪性的追踪线索验证、生成、维护三个不同应用场景分别提出了一个基于代码依赖的自动化分析方法。三个方法的评估实验表明,我们提出的代码依赖分析有效地改进了三个可追踪性应用场景下的自动化分析,充分展示了代码依赖对于软件可追踪性自动化分析的重要意义。本文具体工作如下:·提出并验证了代码依赖分析与可追踪性自动化分析之间所存在的强关联性。我们首先设计实现了一个动态分析工具以捕获高质量的函数调用与数据依赖关系。基于捕获的两类代码依赖关系,通过衡量目标函数的追踪线索与其“邻居”函数(通过直接的函数调用或数据依赖与目标函数交互的函数)的追踪线索是否一致的方式来验证函数调用与数据依赖是否有助于理解软件可追踪性。相关实验结果表明,函数调用与数据依赖都有助于理解和分析软件可追踪性,且二者在功能上相互补充。·提出了一种基于函数调用与数据依赖分析来验证一个已知软件可追踪性质量的自动化方法。在之前提出的衡量邻居函数及其追踪线索的基础上,我们进一步提出了逆向数据类型频率(inverse data type frequency, idtf)算法来排除通过共享公用数据类型与被评估函数相关联的邻居函数,以提升方法的准确性。相关实验结果表明:(1)该方法能够有效的指出已知可追踪性中存在的不一致;(2)该方法对已知可追踪性中所存在的错误与缺失、已知可追踪性的粒度等客观因素有着较强的适应能力。·提出了一种将函数调用与数据依赖分析与信息检索技术相结合来生成软件可追踪性的自动化方法。基于之前的研究,我们进一步提出了代码依赖关系紧密度(Closeness)这一指标来衡量两个代码元素(如类或函数)在功能上的相似性,并与当前主流的基于信息检索(Information Retrieval)技术分析文本信息的可追踪性生成技术相结合,设计并实现了一个追踪线索生成的自动化分析方法TRICE (Traceability Recovery based on Information retrieval and ClosEness analysis)。相关实验结果表明TRICE能够显著地优于单纯基于信息检索的可追踪生成工具和其它混合了信息检索和代码依赖关系分析的追踪线索生成方法。·提出了一种基于代码变更上的紧密度分析来识别过时需求的自动化方法。通过分析代码变更来识别因系统演化而产生的过时需求可以被视作一类特殊的可追踪性维护技术。我们实现的分析方法SPRUCE (SuPport Requirement Update based on ClosEness analysis)能够有效地从变更代码元素以及与变更代码元素紧密关联的未变更代码元素中抽取文本信息来描述变更代码的功能,并通过信息检索技术将抽取的信息与系统中的需求进行匹配,从而发现受此次代码变更影响而导致的过时需求。相关实验结果表明SPRUCE能够显著地优于未使用紧密度分析的基线方法,并更好地应对包含多个功能变更的代码变更。
其他文献
随着经济发展和化石燃料短缺、环境污染严重的矛盾日益尖锐,电动汽车(Electric Vehicle,EV)的发展和普及将成为必然趋势。大规模无序充电的电动汽车接入电网充电将给电网带来强
国家推行就近入学政策是为了保障适龄儿童、少年接受基本的教育,而学生选择理想的学校是为了接受更高质量的教育。择校既是学生受教育权的重要内容,也体现了受教育权的平等性
门静脉高压症(portal hypertension,PH)是指由多种病因引起的门静脉系统压力升高的一种临床综合征。其中肝硬化是PH最常见的病因。PH作为慢性肝病的主要并发症,对患者的预后
目的检测重度低龄儿童龋(severe early childhood caries,s-ECC)进展过程中唾液多肽表达水平的变化。方法纳入3~5岁s-ECC儿童、无龋儿童各6名。分别于基线、基线后一个月及基
综合浙江经济上半年的数据,可以得出结论,寸土寸金和要素价格间断性地上涨是接下来浙江发展一个长久的趋势。同时,欧债危机对浙江外贸的远期影响又不得不防,而投资、需求、收
微博以其独特的传播优势,赋予了人们以广阔的话语空间,任何人在任何时候都可以将自己的所知、所想通过微博平台进行发布,同时将判断信息的真实性和可靠性的责任交给了每个微
回 回 产卜爹仇贱回——回 日E回。”。回祖 一回“。回干 肉果幻中 N_。NH lP7-ewwe--一”$ MN。W;- __._——————》 砧叫]们羽 制作:陈恬’#陈川个美食 Back to yield
云计算通过网络提供各种服务,这种开放式的模式在方便用户访问和使用的同时,也带来了潜在的安全隐患,导致来自云计算内部或者外部的攻击日益增多。云计算中,虚拟机或者用户之
长久以来,IS0一直把促进国际货物贸易和服务贸易作为标准化和相关活动的主要目标。WT0认识到国际标准在全球市场中的作用,IS0也非常重视加强与WT0的合作以实现共同的目标。IS0
介绍了基于经典Hertz弹性接触理论的解析计算方法和有限元仿真分析法。实例计算结果表明,在轴承工况相同的条件下,两种分析方法得到的接触特性参数的一致性较好,但各有特点。