论文部分内容阅读
随着软件开发技术的不断发展,软件的功能需求也在不断充实与进步,不仅在数量和种类上更加丰富,而且在实现的细节上也越来越复杂。为了提高开发者的开发效率,许多软件库被开发出来以帮助开发者实现重复或相似的功能。伴随这个趋势,软件开发变得更依赖于现成的软件库,开发者们经常会使用各种搜索引擎和工具来寻找能够实现其功能需求的软件库以及库提供的API。为了帮助开发者更快的找到符合开发需要的API,研究者们进行了很多探索来向开发者推荐相关的库和API,以满足功能上的实现需求。然而,很少有研究关注在Android等事件驱动的开发框架下的开发过程中的一个特殊需求,即事件回调API的推荐需求。通过实证研究,在Android应用的开发过程中,开发者不仅需要知道调用哪些功能性的API来实现特定的功能,还需要知道将实现功能的功能性代码放在哪些事件回调函数或方法中,这些回调类型的API由开发者重写,并且会在特定事件触发时自动被Android框架调用。虽然研究者们为了推荐用来实现程序功能的功能性API做了很多努力与探索,但是很少有研究考虑到Android等事件驱动开发框架中对于事件回调型API的推荐需求。为了进一步说明以及满足这一需求,本文提出一个针对Android开发的API推荐引擎,它既能推荐开发者为了实现特定功能而调用的功能性API,也能推荐由开发者重写并在事件触发时执行功能性代码的事件回调API。本文工作的主要内容是构建特定领域内的API描述数据库,数据库内的数据展现了不同功能点与不同的功能性API以及事件回调API之间的对应关系。本文以Android官方的开发者教程以及Android SDK参考文档为数据源,通过对代码片段的领域特定分析技术以及对文本的自然语言处理技术从数据源资料中挖掘API描述信息来构建数据库。然后,本文通过比较基于TF-IDF值的文本相似度的方法来推荐相关的API。本文使用从Stack Overflow网站上收集的1500多个与Android开发相关的问题来对推荐引擎原型进行实验与评估。本文首先通过370个随机选取的问题组成测试数据集对实验关于数据库选择、查询文本处理方式设置的不同选项进行了测试与验证,从而选出最优配置选项,进而使用最优配置在1500多个问题组成的大型数据集上对本文提出的方法进行实验评估。实验结果表明,在Android等事件驱动的开发中,向用户推荐事件回调型API是可行的,而且本文提出的推荐引擎原型在推荐功能性API和事件回调API方面都能取得富有前景的效果。