面向API自动推荐的新型图模型及搜索算法研究

来源 :中国科学院大学 | 被引量 : 0次 | 上传用户:chao_huang
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
在计算机技术日益普及的现代社会中,软件系统中流程比比皆是,形式覆盖程序流程、办公工作流、业务流程以及服务集成等。随着建设流程的组件数量的快速增长和流程逻辑复杂性的提升,手工设计并调整流程变得越来越困难、费时、易错,甚至有时不切实际。这种需求催生了不同研究领域中的相关技术,如应用程序编程接口(API,Application Programming Interface)自动推荐和迁移、自动服务选择和组合以及Mashup混搭自动生成等技术。尽管这些技术产生的背景各异,它们却具有相似的目标:从海量的构件中搜索出满足给定需求的组合流程。  在典型的API自动推荐中,类似的问题是以对象实例化查询作为给定需求,类库中的API方法作为基本组件,组合生成API方法调用序列这样的程序流程。本文从API自动推荐这一领域入手,对上述流程组合问题进行了理论研究和图论问题抽象,并从图论的角度提出了通用算法。当前,针对此类需求的API自动推荐工具存在若干缺陷,主要表现为:(1)满足需求的方法调用序列常呈现为有向无环图(DAG,Directed AcyclicGraph)的形式,而不是一个简单的方法链条。传统方法基于经典图建模问题,而经典图上的可达性定义及其最短路径算法不能反映DAG的特征,因此无法保证推荐结果具有较高的准确率和查全率;(2)当软件类库演化时,已推荐出的方法调用序列常因API方法重构和软件架构调整而无法编译,需要进行改写以适应新的类库环境。目前,相关工作无法同时保证改写后的方法调用序列具有较高的准确率和代码重用率,难以提升开发人员的编程效率;(3)尚缺少对流程问题统一的理论抽象以及在此理论抽象基础上的通用算法,相关工作中的问题抽象及其算法难以推广,应用前景有限。本文针对上述问题展开了一系列研究,主要的工作和贡献如下:  1.提出标记图及其有向无环图(DAG)问题,为API自动推荐的研究工作奠定了坚实的理论基础。  为反映方法调用序列(流程)的本质特征,本文提出一种新的扩展图模型—标记图(Tagged Graph)。标记图包含节点、权值、边及其标记(Tag),基于该图我们定义了新的可达性使图模型能够刻画API方法的多个输入参数类型构成的前置条件(preconditions)以及DAG的组合逻辑。在分析API自动推荐和迁移形式化问题的基础上,研究提出用来支持更广泛意义的流程推荐问题的新的图论抽象—基于标记图的新问题:最优DAG问题,为后续的研究内容奠定基础。同时,我们研究分析了最优DAG问题和最短问题的异同,提出了最优DAG问题的其它两个变形问题:TopK DAG问题和动态DAG问题,用于API自动推荐和迁移。从应用的角度来看,新图论问题的研究成果对于基于SOA的业务流程管理、供应链管理、应用集成等应用领域中的软件/服务组合流程建模、正确性校验、运行时的性能优化等都具有显著的应用价值。  2.提出了基于标记图的Top K DAG搜索算法,以推荐满足对象实例化查询请求的方法调用序列。  借助标记图模型的结构及可达性质,提出了新的Top K DAG问题来建模方法调用序列的查询问题,并提出了关键路径松弛算法及DAG子图排序方法,指导开发人员选择正确结果。通过一系列对比实验对所提出的方法进行了系统化验证,实验结果表明,采用Top K DAG搜索算法的系统—APISynth获得了更高的查全率和准确率。  3.提出了基于标记图的动态DAG搜索算法,自动迁移因软件类库演化而失效的方法调用序列。  动态DAG搜索算法将动态变化的API,如新增的API、删除的API、接口变化的API以及服务质量(QoS,Quality of Service)变化的API映射为标记图中的变化节点。当软件类库演化时,该算法能高效的识别出标记图中那些受到变化API影响的节点,并且只替换失效DAG形式的方法调用序列中受到影响的节点以保留大多数未受影响的节点。我们在公开可获得的数据集,如Eclipse3.6和Eclipse4.4涉及的相关插件类库上对方法进行了实验评估。结果显示,采用动态DAG搜索算法的MISKeeper可以正确改写和迁移失效的方法调用序列,同时当开发人员使用我们的迁移方案时,能够保证较高的代码重用率,以提升其编程效率。
其他文献
信息时代极大丰富的信息资源以及人们在工作生活中日益广泛的移动,使得人们越来越希望能够随时随地的访问网络.移动通信网和互联网的融合发展将积极促进下一代全IP移动网络的
Internet正从一个主要用于交换和共享信息的网络演变成为一个开放软件协同环境,未来许多应用系统的构建将依赖于Intetnet上海量的、自治的软件实体间的有效协同。如何针对此类
自上个世纪90年代初期开始,软件体系结构受到了学术界广泛的关注与重视,并被认为将会在未来的软件开发中起到重要的作用。随着软件体系结构研究的发展,体系结构模型中对系统行为
2003年3月-2004年12月,公司申获并完成了基于组件的嵌入式地理信息系统(国家863)项目,扩大了GIS的应用范围,与此同时,移动通讯设备,尤其是智能终端设备和GPS设备的迅速发展为GIS的
数字地震记录格式问题在理论上是一个简单的、而在实践上却是一个复杂的问题。数字地震记录开始于70年代初期,随着数字地震观测技术的不断发展,数据格式问题日益引起越来越多
Ad Hoc网络是一个没有任何中心实体的自组网络,它依靠节点间的相互协作自行成网,借助多跳转发技术来完成有限距离的传输。Ad Hoc网络具有组网灵活性、支持移动性、易于迅速展开
程序漏洞攻击威胁严重。随着计算机的广泛应用以及internet的深入发展,计算机软件的功能变得越来越强,程序代码量也惊人地增长,庞大的软件巨无霸将不可避免地包含软件漏洞。漏洞
微博(例如Twitter和新浪微博)作为一种发展迅猛的在线社会网络(Online SocialNetworks,OSN),已成为当前重要的互联网信息分享和内容推荐平台,并引领了一种完全不同于传统的“口耳
随着网络与人们生活的联系日益紧密,网络服务的质量越发引起运营商和普通用户的关注。网络测试是发现网络潜在故障、检查网络安全性、验证网络性能的有效手段。网络流量生成系
随着移动通信技术和设备的革新,以及移动互联业务应用需求的增加,移动通信网络中的用户对无线传输速率的要求也在不断提高,从而导致基站的覆盖范围越来越小,需要部署高密度的基站