面向对象的应用程序框架框架提供的概念外文翻译资料
2022-12-25 13:10:32
英语原文共 13 页,剩余内容已隐藏,支付完成后下载完整资料
信息和软件技术
期刊主页:www.elsevier.com/locate/infsof
EXAF:面向对象框架提供概念的示例应用程序的搜索引擎
文章 信息 摘 要
文章历史:
2015年11月14日收到
2016年3月26日修订
2016年3月28日接受
2016年4月14日在线提供
关键词:
面向对象的应用程序框架框架提供的概念
示例应用框架理解代码搜索引擎
上下文:面向对象的应用程序框架(如Java Swing)提供了可重用的代码和设计,用于在软件应用程序中实现特定领域的概念,如上下文菜单。 因此,使用这样的框架不仅可以减少开发新软件应用程序的时间和成本,而且可以增加其可维护性。 然而,使用面向对象的应用程序框架的主要问题是它们庞大而复杂的API,并且通常不完整的用户手册。 为了缓解这些问题,开发人员经常尝试学习如何从可用的示例应用程序中实现他们想要的概念。 尽管如此,这又引入了另一个困难且耗时的挑战,它正在寻找适当的样本应用。
目标:为了解决这个难题,我们引入了EXAF(例子应用程序查找器),帮助开发人员找到实现他们期望的框架提供的概念的示例应用程序。
方法:大多数现有的框架理解方法只能帮助程序员熟悉所需框架的特定ne-grained API元素(如类和方法)的用法。 不过,我们的方法能够找到实现特定框架提供概念的示例应用程序。 为此,来自潜在语义索引(LSI)信息检索技术的EXAF概念。 我们在Microsoft上面使用24个概念评估了这种方法
.Net,Qt和Java Swing框架。
结果:根据我们的评估,EXAF的精确度超过79%。 此外,它还可以找到一些通用代码搜索引擎找不到的示例应用程序,例如SourceForge和Google Code中使用的应用程序。
结论:我们的评估结果表明,EXAF在实践中是有效的,并且会产生更好的搜索结果,因为它考虑了项目的各种工件,如用户评论和错误报告。
copy;2016 Elsevier BV保留所有权利。
介绍
软件重用是利用现有的软件或知识来构建新的应用程序[1]。 这可以帮助开发人员提高其软件系统的质量并降低软件开发的成本[2]。 面向对象的应用程序框架(如Eclipse和.Net)可以重用代码和设计[3]。 框架提供领域特定的概念,这是功能的通用单元。 通过编写实例化这些应用程序的代码开发基于框架的应用程序
lowast;通讯作者。 电话: 982166166648; 传真: 982166019246。
电子邮件地址:enoei@ce.sharif.edu (E. Noei),heydarnoori@sharif.edu (A. Hey-darnoori)。
网址:http://sharif.edu/~heydarnoori/ (A. Heydarnoori)
概念[4–6]。 例如,Eclipse框架提供了诸如查看器和编辑器之类的概念。 Eclipses Package Explorer和Java Editor是这些概念的实例。 因此,应用程序开发人员框架最重要的部分之一就是该框架的应用程序编程接口(API)[7]。 但是,现有的许多框架通常都有复杂和大型的API,并且通常缺乏适当的文档[8]。 为了解决这些问题,开发人员通常会尝试调查可用的示例应用程序以实现如何使用给定的API; 这是什么Gamma等人。[9] 称之为“猴子见/猴子做”规则。 尽管如此,一遍又一遍地寻找示例应用程序是一件令人恼火的工作。 另外,用户可能无法找到理想的示例应用程序。
为了解决上述问题,文献中提出了一些框架理解方法。 例如,
http://dx.doi.org/10.1016/j.infsof.2016.03.007
0950-5849 /copy;2016 Elsevier BV保留所有权利。
Tran等人[10] 挖掘API文档的结构和内容以找到相关方法。 Cubranic等人。[11] 提出一种方法来推荐与开发者当前正在进行的任务相关的一些工件。 模范[12] 使用由应用程序执行的API调用来搜索应用程序。 代码精灵[13] 允许程序员设计特定功能的测试用例。 然后,CodeGenie根据这些测试用例中的信息寻找一个示例实现。 当用户不熟悉框架时,设计这样的测试用例可能是一项乏味的任务。
大多数现有的框架理解方法只能帮助程序员熟悉所需框架的特定ne-grained API元素(如类和方法)的用法。 然而,没有适当的文档,它们都不会帮助新手开发人员找到合适的示例应用程序。 据“猴子见/猴”,如果缺乏足够的文件和手段,程序员试图看看可用的示例应用程序,以了解如何实现他们期望的框架提供的概念。
关于上述讨论,在使用应用程序框架时可能存在以下问题[14]:(i)大型复杂的API; (ii)缺乏足够的文件; (iii)现有文件可能不准确或不准确; (iv)制作适当的文档是一项艰巨且耗时的任务,它妨碍开发人员充分创建它们; (v)示例应用程序中实现的每个概念都不一定在文档中描述; (vi)新手程序员不熟悉使用特定框架的细节; (vii)找到合适的样本申请是一项艰巨的任务。 为了缓解这些问题,在本文中,我们提出了EXAF(例子应用程序Finder)帮助程序员找到合适的示例应用程序
在特定的框架之上实现他们想要的概念。
在我们的方法中,我们假设用户不是使用框架的专家[15]。 因此,用户不会在该特定框架的行话中知道所需概念的确切名称。 因此,我们使用潜在语义索引(LSI)技术来扩展用户提供的关键字[16]。 接下来,我们在托管站点的软件项目(例如SourceForge)中搜索相关示例应用程序1 和谷歌代码2,在扩展的关键字的帮助下。 为此,我们分析可用示例应用程序的不同构件,如用户评论和错误报告。 从这些文献中提取的信息中,我们可能会找到许多实现期望概念的示例应用程序。 最后,我们对结果进行排名并将其呈现给用户。 我们的评估显示,我们的方法的精确度超过79%,超过了Google Code和SourceForge提供的可用代码搜索引擎的精度。
我们在本文中提出的方法补充了我们之前关于FUDA的工作[4–6]。 FUDA根据示例应用程序在运行时收集的动态跟踪自动生成概念实现模板。 FUDA的概念实现模板是Java伪代码,总结了在特定框架之上实现所需概念所需的必要实施步骤。 因此,本文提出的工作
自动化FUDA手动查找示例应用程序的步骤。 这篇文章的贡献包括:(i)无论框架文档的质量和可用性如何,都应该提供框架提供的概念的示例应用程序; (ii)为FUDA提供解决方案以找到所需的示例
应用程序自动;
(iii)应用LSI信息检索技术,并在搜索过程中考虑代码评论和用户评论,以获得与Google等强大的通用搜索引擎相比在准确性和精确度方面更好的结果。
本文的其余部分安排如下。第2节 提供了EXAF如何工作的激励范例。第3节 介绍了EXAF的细节。 下一个,第4节 描述了我们的EXAF的实现。 之后,第5节 讨论评估方法和评估结果。第6节 对相关工作进行了概述,并将其与我们提出的技术进行了比较。 最后,第7节 总结该文件。
激励的例子
假设程序员想要在Java Swing框架之上实现上下文菜单。 假设这个程序员不是Java Swing的专家,因此不知道Java Swing中所需的概念的名称。 更具体地说,程序员并不知道“上下文菜单”在Java Swing中被称为弹出式菜单。 因此,只需查找“上下文菜单”一词,就可以减少在现有软件项目存储库中找到正确示例应用程序的机会。
EXAF通过将术语“上下文菜单”扩展到其他相关术语(如弹出菜单和qmenu)来解决上述问题。 为此,EXAF使用Stack Overow的页面3 网站作为创建其语料库的主要资源,然后在其上应用LSI信息检索技术。 这有助于EXAF将用户提供的关键字扩展到软件工程和编程领域。 另一方面,如果EXAF采用了像使用WordNet一样的替代方法[17],这是一个英语词汇数据库,它会得到不相干的术语,比如术语“上下文菜单”中的条例草案,菜肴和卡片。 这会导致EXAF产生不合适的结果。
EXAF不仅使用应用程序的描述,而且还通过评论查找适当的示例应用程序,以在特定框架之上实现所需的概念。 如果申请说明中未提及该概念的名称,则EXAF将查看评论。 例如,图。1 在SourceForge中显示一个示例项目,在评论中已经提到术语“上下文菜单”,但没有在该项目的描述中提及。 这个例子说明,如果不考虑评论,我们会错过这样的示例应用程序。 EXAF根据扩展的关键字和其他因素(如项目名称)对检索到的项目进行排名(请参阅第3.3节)。 因此,程序员将得到一个在Java Swing中实现“上下文菜单”的项目的排名列表。
为了说明EXAF的排名过程如何工作,我们使用
以下符号表示EXAF检索的概念“上下文菜单”的示例项目:lt;t,d,lt;rgt;gt;其中t是项目的标题,d是项目的描述,lt;rgt;是该项目的所有评论集。 现在,考虑以下两个例子:
示例1.假设检索以下两个示例应用程序:
- lt;Awesome context menu:这个项目通过一个非常友好的界面来实现上下文菜单,lt;empty;gt;gt;
- lt;商业管理助手:这个计划可以帮助管理者
想要管理[...]的难点,lt;我无法添加我的帐户名称,在上下文菜单中有一个选项[...]gt;gt;
EXAF使用BM25F的自定义版本对上述两个示例应用程序进行排名[18] (看到第3.3节 了解详情)。 这个
图1. SourceForge中的示例项目。 在用户的回顾中,可以看到术语上下文菜单,而在项目描述中没有提到关于它的任何内容。
图2. EXAF的使用场景 lt;c,fgt;是输入查询,其中c表示期望的概念,f是框架的名称; lt;prj1,prj2,...,prjngt;是检索到的示例应用程序的排名列表。
导致第一个项目返回第一个,第二个项目返回最后。 这是因为在第一个项目的标题和描述中都提到了“上下文菜单”,但仅在第二个项目的评论中提及。 在我们定制的BM25F版本中,项目的标题和描述被认为比该项目的评论更重要[19].
示例2.现在,假设返回以下两个示例项目:
-
-
lt;业务管理助理:这个程序可以帮助管理人员想出管理难点,lt;我无法添加我的账户名称,在上下文菜单中有一个选项[...]gt;gt;
剩余内容已隐藏,支付完成后下载完整资料
资料编号:[24650],资料为PDF文档或Word文档,PDF文档可免费转换为Word
-
lt;业务管理助理:这个程序可以帮助管理人员想出管理难点,lt;我无法添加我的账户名称,在上下文菜单中有一个选项[...]gt;gt;