论文部分内容阅读
由于软件库能够给软件开发带来便利,复用软件库已成为软件复用的一种重要的途径。为了帮助程序员正确地使用软件库,大多数软件库均提供在线文档,有的软件库提供指导软件库使用的书籍,有些软件库还提供专门的论坛以供讨论其用法。软件库的在线文档、相关书籍和论坛能够帮助程序员系统地学习和掌握软件库的用法。然而,随着软件库的数量和规模的不断增长,许多程序员需要针对具体的编程任务学习相关软件库的用法。为了帮助程序员在这一情况下理解并正确地使用软件库,本文提出一种软件库时序规约的挖掘与推荐方法,此方法包括两个主要步骤:1)时序规约的挖掘,其目标是针对各种软件库挖掘丰富的时序规约:2)时序规约的推荐,其目标是针对程序员面临的编程任务,向其推荐相关的时序规约。具体而言,本文的主要工作如下:
(1)针对时序规约的挖掘,提出三种新的时序规约挖掘技术和一种辅助挖掘技术。第一种技术基于客户代码分析完成时序规约的挖掘,此技术综合利用聚类和序列挖掘,能在挖掘的过程中获得时序规约适用的编程上下文。在此技术之上,提出一种辅助挖掘技术,此辅助技术通过在获取软件库函数的调用序列时进行过滤来帮助挖掘强制性时序规约。第二种技术基于软件库源代码分析完成时序规约的挖掘,此技术不依赖于客户代码,可适用于能够获得源代码的软件库。第三种技术基于软件库文档分析完成时序规约的挖掘,此技术利用自然语言处理,能够挖掘隐含在多个软件库方法的描述信息中的时序规约。针对软件库的实际情况分别采用以上时序规约挖掘技术,可以获得丰富的时序规约。本文还通过实验分别验证了以上技术在挖掘时序规约方面的有效性。
(2)针对时序规约的推荐,提出一种将时序规约推荐和代码推荐有机结合的时序规约推荐技术,其目的是利用代码弥补时序规约过于抽象的不足,并利用时序规约辅助有效代码的定位。本文还通过实验验证了此技术的有效性。
(3)基于本文提出的软件库时序规约的挖掘与推荐方法,实现了一个名为MAPO的工具,并基于此工具对本文所提方法进行了验证。其结果表明,本文所提方法能有效地帮助程序员学习软件库的用法,从而减少在编程任务中引入的缺陷数。