CN101739335B - 建议的应用评估系统 - Google Patents

建议的应用评估系统 Download PDF

Info

Publication number
CN101739335B
CN101739335B CN2009102054096A CN200910205409A CN101739335B CN 101739335 B CN101739335 B CN 101739335B CN 2009102054096 A CN2009102054096 A CN 2009102054096A CN 200910205409 A CN200910205409 A CN 200910205409A CN 101739335 B CN101739335 B CN 101739335B
Authority
CN
China
Prior art keywords
application
logic
api calls
concept
source code
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN2009102054096A
Other languages
English (en)
Other versions
CN101739335A (zh
Inventor
M·格雷查尼克
谢青
付辰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Accenture Global Services Ltd
Accenture International LLC
Original Assignee
Accenture Global Services GmbH
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Accenture Global Services GmbH filed Critical Accenture Global Services GmbH
Publication of CN101739335A publication Critical patent/CN101739335A/zh
Application granted granted Critical
Publication of CN101739335B publication Critical patent/CN101739335B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/36Software reuse
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design

Abstract

本发明涉及建议的应用评估系统。具体地,本发明涉及一种代码评估工具,其极大地减小了验证应用实现了期望的功能性的时间、成本和其他资源花费。该工具是搜索、导航和可视化工具,其接受高层处理概念作为输入以识别、排名并返回建议的应用的代码。软件开发人员可以使用该工具来验证建议的应用满足功能需求。该工具提供了有效的方式来改进应用逻辑的评估以验证该应用满足规定的功能需求并且实现期望的高层处理概念。

Description

建议的应用评估系统
相关申请的交叉引用
本申请要求2008年11月10日提交的美国专利申请序列号12/268,168的优先权,其是2007年5月16日提交的美国专利申请序列号11/804,030的部分继续申请,通过参考二者的全部内容而将其并入在此。
技术领域
本公开内容涉及评估标识为实现期望的功能性的应用。具体地,本公开涉及搜索、导航和可视化工具,其接受高层处理概念作为输入,该输入驱动应用的多层搜索以验证应用的逻辑确实实现了期望的功能性。
背景技术
软件专业人员广泛认识到:应用经常未能实现如应用描述和应用的项目总结所描述的功能性。软件专业人员使用各种不足以胜任的技术来减小用于验证应用实现了具体的功能性的时间、金钱和其他成本。软件专业人员将API调用视为高层处理概念的抽象形式,并且为验证应用实现了期望的功能性,仅搜索特定API调用的存在。例如,API调用可以被识别和/或描述为实现下拉菜单功能性,尽管底层逻辑实际上可能并不包括递送下拉菜单的功能性所必需的逻辑。当前的逻辑评估技术和工具需要大量资源和用户经验以便精确地验证应用实现了支持高层处理概念的功能需求。现代化的搜索引擎并不能保证由搜索引擎所标识的应用的逻辑实际实现了如项目总结以及应用的文档所描述的功能性。
软件专业人士认为:在高层处理概念(例如,反映在应用的描述中的意图)和在应用逻辑中发现的低层实现细节(例如,API调用和实际运行时行为)之间的失配是验证应用实现特定功能性的重要技术挑战。在将应用放置到软件库的过程中,软件专业人士意图撰写关于应用的有含义的描述。应用的描述和应用的实际行为之间的失配代表了“词汇表问题”的一个例子,其声明没有单个单词或短语能够最佳地描述编程概念。
在软件开发的螺旋模型中,客户向开发团队描述高层处理概念,并且客户和开发团队一起识别支持高层处理概念的需求。此外,开发团队基于需求来开发原型,并且开发团队向客户演示原型以接收反馈。原型试图接近于新应用的期望的高层处理概念(例如,特征和能力),这是客户期望开发团队构建的。来自客户的反馈通常导致原型和原始需求的改变,如客户反复地精炼他们的行为。如果客户对需求做出了大量改变,开发团队通常将丢弃该原型并且构建新的原型,则将重复另一轮精炼反复。重复地构建原型而不重用现有的应用逻辑使组织在浪费的项目资源和时间方面开销很大。部署应用而没有充分地评估和验证应用的逻辑实现了期望的功能性将进一步令软件开发复杂。
开发团队发现评估和验证应用的逻辑接近于高层处理概念以及软件逻辑资源需求的任务是密集的。在应用部署的环境中,软件开发专业人士认为此类应用逻辑是高度相关应用逻辑(HRAL)。许多应用库(例如,开源库和由客户内部所维护的源控制管理系统)包含成千上万不同的现有应用(例如,潜在的高度相关应用(HRA))。不幸的是,开发人员发现验证应用的逻辑是很困难的,这要归因于在搜索应用、评估和验证应用的逻辑实现了特定的功能性中所涉及的时间和花销。
开发人员为了将软件系统从开发的一个阶段转移到另一个阶段而必须支出的智力努力量可以被认为是“认知距离”。例如,使用当前的搜索工具,开发人员为了验证应用实现了期望的功能性而支出显著的智力努力。许多开发人员使用搜索引擎,该搜索引擎识别作为搜索查询的一部分输入的关键字和在应用中找到的词之间的精确匹配。应用可以包括描述、应用逻辑注释、程序变量名和应用的变量类型。此类搜索引擎实际上增加了验证应用的难度,这要归因于包含在应用中的糟糕的信息质量,以及无法减小验证应用的逻辑实现了期望的功能性所需的认知距离以及其他因素。另外,许多应用包括对应用的不完整的、误导的和不准确的描述。因此,即使关键字与应用描述中找到的词匹配,也不能确保搜索引擎将识别实际实现了期望功能性的应用逻辑(例如,高度相关应用逻辑(HARL))。
有效的软件评估技术减小了系统的初始概念(例如,明确并隐含地描述了应用的特征和能力的高层处理概念)、验证分立的需求和应用的产品实现之间的认知距离。不幸的是,当前的应用评估工具缺少减小涉及验证应用逻辑以识别HARL的认知距离的能力。
例如,应用描述可以指示:当事实上应用使用压缩作为一种加密的原始形式时,应用包括加密特征。开发人员输入作为关键字的“加密”(例如,作为高层处理概念和特定需求)可能浪费宝贵的时间来审阅包含应用的不正确描述的逻辑的搜索引擎结果,并且最终丢弃该结果,因为应用未能满足加密需求。在确定应用未能满足需求之前,开发人员必须定位和检查宣称实现了加密的应用逻辑的分段。在确定应用是不相关的之前,开发人员可能要花费少量项目开发预算资源和显著的时间量来分析应用。在认为该应用的逻辑作为HRAL是合格的之前,开发人员甚至可能要观察应用的运行时行为以确保该行为匹配客户所期望的高层处理概念,并且满足支持高层处理概念的需求。当前的评估工具缺少用来辅助开发人员快速识别出在支持客户所描述的高层处理概念中的需求。
一些评估工具返回代码片断(例如,应用逻辑的分段),然而,代码片断并没有给出足够的背景或上下文来辅助开发人员快速评估和验证逻辑,并且此类评估工具需要开发人员投入显著的智力努力(例如,认知距离)以理解代码片断的更宽范围。其他的一些现有方法和工具基于开发人员所工作的应用逻辑的上下文来取回代码片断,但尽管这些方法和工具改进了开发人员的生产率,但它们并没有从作为输入的高层处理概念返回高度相关应用逻辑。
长期存在对这样的系统和方法的需要,即有效地评估和验证应用逻辑以识别出HRAL和可部署应用的系统和方法。
发明内容
建议的应用评估系统(RAE)提供了一种快速和有效地评估建议的应用的逻辑以便验证建议的应用实际实现了高度相关应用逻辑(HRAL)的方式。RAE的一种实现包括机器可读介质和存储在该机器可读介质上实现RAE区域逻辑的逻辑。RAE区域逻辑可操作用于获得建议的应用(例如,高度相关应用(HRA))以便进行评估。建议的应用可以以用于建议的应用的源代码的形式供应给RAE,或以其他的形式供应。
RAE区域逻辑提供了概念查询显示区域,其显示用于找到建议的应用的主题、概念和查询的词语。RAE区域逻辑提供了概念分布显示区域,其显示建议的应用之一的建议应用表示。建议的应用表示包括标识主题、概念和词语之一的潜在实现位置的概念分布定位符。RAE区域逻辑呈现响应于概念分布定位符之一的选择的源代码显示区域。源代码显示区域显示源代码的一部分,该源代码的一部分包括用于概念分布定位符之一的选择的潜在实现位置。RAE区域逻辑呈现显示在执行查询时所生成的元数据的元数据显示区域。
在一个实现中,使用可执行示例存档系统(Exemplar)来标识建议的应用(例如,HRA)。Exemplar识别API调用在其处实现高层处理概念的应用逻辑中的位置(例如,概念分布定位符)。使用Exemplar,开发人员输入作为输入(例如,初始查询关键字)的高层处理概念(例如,工具栏、下载、智能卡),并且Exemplar使用信息取回和程序分析技术来取回在应用中实现高层处理概念的HRA。Exemplar也可以接受描述高层处理概念的各种类型的输入(例如,概念文本标识符、概念可视标识符、概念音频标识符,以及可以用于识别出高层处理概念的任意其他感官标识符)。Exemplar使用第三方库、软件开发软件包和其他中间件的帮助页面和帮助文档以产生API调用名的列表,Exemplar接着使用它来扩展初始查询(“查询扩展”)以识别出应用的高度相关应用逻辑。Exemplar确定应用逻辑和API调用逻辑的行为并且对API调用进行排名。
Exemplar使用描述API调用的帮助文档或其他受信的源来扩展查询。应用提供商通常为他们的应用提供帮助页面和帮助文档,开发人员认为它们是可靠和受信的源。具体地,开发人员考虑受欢迎并且广泛使用的应用的帮助页面和帮助文档的应用提供商信任源,其由大的开发团队编写、在严格的测试和最佳的开发实践之下制成,并且由使用不同论坛(例如,用户组)来提供关于文档反馈的其他开发人员使用。开发人员信任关于包括在应用库中的应用描述的帮助文档,因为应用提供商通常比包括在应用库中的应用描述提供更为冗长和准确的帮助文档。开发人员也相信帮助文档,因为许多不同的人和审阅过程通常用于产生帮助文档。
Exemplar查询扩展增加了识别逻辑匹配的可能性,该逻辑匹配验证了逻辑是高度相关应用逻辑,并且通过扩展初始查询以包括在帮助页面和确定具有与开发人员在初始查询时原始使用的关键字类似含义的其他帮助文档中找到的新的关键字、元数据和语义信息。Exemplar扩展初始查询以包括具有反映(在许多情况下,清楚明白地)应用的特定行为的API调用名。Exemplar通过帮助页面和帮助文档来识别API调用,从而定位包含展示期望的语义的API调用的应用逻辑。Exemplar提供用户接口,开发人员可以使用该用户接口直接导航到各种位置,以确定HRA如何实现高层处理概念。
Exemplar可以根据在HRA中找到的每个API调用所实现的高层处理概念的数目来对HRA进行排名,或基于其他排名度量来进行排名。换句话说,由于API调用实现高层处理概念,所以由HRA所实现的高层处理概念越多,则更与HRA相关并且指派给HRA的排名越高。Exemplar考虑包括在查询中用于代表在逻辑上连接的概念的关键字。通常结构化为语句的问题形成查询的基础,开发人员从其抽取关键字以形成查询。例如,考虑查询“发送接收安全XML”。在查询代表了多个概念(例如,发送安全XML)之间的关系的情况下,则关系应用存在于实现相应的应用逻辑中的概念的API调用(例如,加密、处理或解决XML格式化内容,并且发送内容的API调用)之间。应用逻辑通常保留概念、软件反映模型概念的实例并且称为连接性试探之间的关系(例如,控制流链路和数据流链路)。Exemplar基于分析实现包括在查询中的概念的API调用的连接性试探来计算HRA排名。Exemplar使用程序分析算法,并且计算控制流图(CFG)以及数据流图(DFG)来分析API调用的连接性试探。
RAE提供了一种快速和有效地评估建议的应用的逻辑的方式,从而验证建议的应用实现了高度相关的应用逻辑(HRAL)。
在检查下面的附图和详细描述时,本发明的其他系统、方法和特征对于本领域技术人员来说将是明显的,或将变得明显。意图在于所有的附加系统、方法、特征和优势将包括在该说明书中,包括在本发明的范围内,并且由下面的权利要求书来保护。
附图说明
通过参考下面的附图和描述可以更易于理解本公开。附图中的组件没有必要按照比例,重点在于图示出本发明的原理。此外,在附图中,类似的编号指代整个不同示图中的相应部分或元件。
图1图示出建议的应用评估系统(RAE)配置。
图2示出了Exemplar数据流示图。
图3图示出可以用于输入原始查询的Exemplar查询接口。
图4示出Exemplar系统原型和应用开发(EPAD)项目区域。
图5示出更为详细的Exemplar系统的示图。
图6示出Exemplar系统的其他特征。
图7示出用于两个不同的潜在相关应用的API图形。
图8示出Exemplar系统可以采取的以获得相关应用列表的动作。
图9示出Exemplar系统试探性排名引擎可以采取的以对潜在相关应用指派应用试探性相关性排名的动作。
图10示出选择逻辑和应用创建逻辑可以采取的以生成新的应用的处理。
图11示出建议的应用评估系统(RAE)。
图12示出建议的应用评估区域。
图13示出建议的应用评估区域的例子。
图14示出了RAE区域逻辑可以采取的以评估建议的应用的处理。
具体实施方式
建议的应用评估系统(RAE)解决了如下的技术问题,即提供工具以便轻易地和快速地评估建议的应用,从而验证建议的应用实现了特定功能性。在一个实现中,RAE可以评估从可执行示例存档系统(Exemplar)获得的建议的应用。
Exemplar提供了这样的一种工具,其接受高层处理概念作为查询,以便识别、确定行为、排名并返回HRA的应用逻辑。Exemplar解决了困难的词汇表问题的实例,当用户和开发人员以不同的词语来描述处理概念时会存在该词汇表问题。Exemplar不限于在针对应用描述和与应用逻辑一起包括的注释所进行的查询中使用的基础关键字匹配。因此,当应用是高度相关时,并且其中当查询包括了与开发人员用于描述应用逻辑和API调用逻辑的词语不同的关键字时,Exemplar仍会返回作为高度相关应用的应用。
Exemplar将高层处理概念(例如,使用关键字表达的)与在帮助文档或其他受信描述性源中找到的各种API调用的描述进行匹配。因为典型的应用从若干不同库调用API调用,所以使用不同词汇表的若干不同人员将经常编写与API调用关联的帮助文档。不同词汇表的丰富性增加了找到匹配以及产生潜在相关应用和API调用的长列表的概率。搜索帮助文档或其他受信描述性源产生了附加的益处。例如,包括API调用的帮助文档通常指示应用逻辑在何处实现了API调用。因此,Exemplar可以将开发人员引导到应用逻辑中的位置,在该位置处,API调用实现了高层处理概念。开发人员接着可以确定应用逻辑和API调用逻辑的相关性。换句话说,开发人员可以确定应用逻辑和API调用逻辑实际上是否支持高层处理概念。
尽管将描述Exemplar和RAE的特定组件,但是与Exemplar和/或RAE一致的方法、系统和制品也可以包括附加的或不同的组件。例如,处理器可以实现为微处理器、微控制器、专用集成电路(ASIC)、离散逻辑或其他类型电路或逻辑的组合。类似地,存储器可以是DRAM、SRAM、闪存或任意其他类型的存储器。实现下面所描述的程序和处理的逻辑可以(例如,作为计算机可执行指令)存储在例如光盘或磁盘或其他存储器的计算机可读介质上。备选地或附加地,逻辑可以实现在实体之间传送的电磁或光信号中。此类信号的例子是承载物理层以太网信号的TCP/IP分组,其包括程序源代码或可执行程序。标记、数据、数据库、表格和其他的数据结构可以被分离地存储和管理,可以被并入到单个的存储器或数据库中,可以被分发,或可以以许多不同的方式来进行逻辑地和物理地组织。程序可以是单个程序的一部分、单独的程序或在若干个不同的存储器和处理器之间分布。此外,程序或程序的任意部分可以以硬件来实现。
图1图示出与建议的应用评估系统(RAE)128通信的Exemplar系统环境100(“Exemplar环境”100)。Exemplar系统100可以包括Exemplar原型和应用开发(EPAD)用户接口102、帮助内容处理器104和帮助内容106。Exemplar系统100还包括API调用字典108、扩展搜索引擎110、逻辑库112、试探性相关性排名引擎114和逻辑分析器116。图1中示出的任意或所有的元件可以共处一处或是分布式的,并且通过一个或多个网络118(例如,因特网)来进行通信。
在一个实现中,EPAD用户接口102、扩展搜索引擎110、试探性相关性排名引擎114和逻辑分析116形成Exemplar环境100内的Exemplar系统124。Exemplar系统124可以包括附加的或不同的组件。Exemplar系统124可以通过作为外部系统的网络118(例如,因特网)来与帮助内容处理器104、帮助内容106、API调用字典108和逻辑库112以及其他系统通信。
逻辑库112可以包括应用逻辑120和API调用逻辑122。Exemplar系统124接受高层处理概念(例如,“发送安全XML”)作为输入并且产生输出,该输出识别出开发人员可以使用哪个应用逻辑120和API调用逻辑122对实现高层处理概念的新应用构建原型和进行开发。在一个实现中,Exemplar环境100利用多个存储设备(例如,不同盘驱动器上的多个数据库)实现帮助内容106和逻辑库112,以及与来自各种可用源(例如,本地或远程帮助数据库、网站、知识交换、文档库或其他源)的帮助内容106、应用逻辑120和API调用逻辑122对接。
在一个实现中,帮助内容处理器104可以实现为web爬虫(crawler),其遍历可用的应用库,并且下载帮助内容106(例如,应用描述),以及逻辑库112内容(例如,应用逻辑120和API逻辑122)。帮助内容处理器104可以执行帮助内容106和逻辑库112内容上的全文编索引。帮助内容处理器104可以进一步产生包括多组集合(有序列表的形式)的API调用词典108,该多组集合将从API调用的描述选择的词语与API调用的名称进行联系。
上面的描述使用了应用逻辑120和API调用逻辑122的例子。这些类型的逻辑例如可以是程序源代码(例如,C或C++代码)。然而,Exemplar环境100可以搜索、分析和确定许多其他类型的逻辑的相关性。例如,逻辑库112可以包括以可视化编程语言表达的程序或程序组件,该可视化编程语言使用图形程序元素以及文本和图形符号的空间布置。可视化编程逻辑可以包括基于图标的逻辑、基于形式的逻辑、基于示意图的逻辑或其他类型的可视化表达。可视化表达可以与数据流语言、基于流程的编程、域特定建模或其他编程范例一致。
在一个实现中,Exemplar环境100和RAE 128存在于RAE环境126中。RAE 128包括RAE用户接口生成逻辑130,其包括RAE区域逻辑132。RAE区域逻辑132包括概念查询显示逻辑134、概念分布显示区域136、源代码显示区域138和元数据显示逻辑140。在下面将进一步详细描述RAE 128的多个方面。
图2示出Exemplar数据流框图200。Exemplar系统124接收高层处理概念作为输入以创建原始查询202,Exemplar系统124可以将其转发到帮助内容处理器104。帮助内容处理器104可以通过匹配被执行以搜索帮助内容106的原始查询202中发现的高层处理概念(例如,“发送安全XML”)中的词语而从API调用词典108产生基础API调用列表204。
扩展搜索引擎110可以组合原始查询202和基础API调用列表204以形成扩展查询206。扩展搜索引擎110可以使用扩展查询206来执行扩展搜索以搜索整个逻辑库112,从而获得扩展的搜索结果208。在一个实现中,逻辑库112可以向试探性相关性排名引擎114返回扩展的搜索结果208。扩展的搜索结果208可以包含由试探性相关性排名引擎114使用逻辑分析器116分析的潜在相关应用210和潜在相关API调用212的列表。在一个实现中,试探性相关性排名引擎114可以包括逻辑分析器116。逻辑分析器116可以包括例如ANTLR(“用于语言识别的另一工具”)的解析器生成器,其从可以从提供对生成数据流图和控制流图支持的www.antlr.org获得。
逻辑分析器116可以返回如下详细讨论的连接性排名214,以进一步确定应用试探性相关性排名216和API调用试探性相关排名218。试探性相关性排名引擎114向EPAD用户接口102返回应用试探性相关性排名216和API调用试探性相关性排名218。扩展搜索引擎110可以向EPAD用户接口102返回相关应用列表220和相关API调用列表222。Exemplar系统124可以将应用试探性相关性排名216指派给在相关应用列表220中找到的一个或多个相关应用,以指示每个相关应用如何更接近地支持由原始查询202所表示的高层处理概念。类似地,Exemplar系统124可以将API调用试探性相关排名218指派给在相关API调用列表222中找到的一个或多具相关API,以指示每个相关API调用如何更接近地支持由原始查询202所表示的高层处理概念。
在一个实现中,RAE区域逻辑132获得连接性排名214、应用试探性相关排名216、API调用试探性相关排名218、相关应用列表220和相关API调用列表222。RAE区域逻辑132可以使用连接性排名214、应用试探性相关性排名216、API调用试探性相关性排名218、相关应用列表220和相关API调用列表222来提供建议的应用评估区域,如下面详细讨论的,以便评估从Exemplar 124获得的建议的应用。
图3示出了可以用于输入原始查询202的Exemplar查询接口300。原始查询202可以表示例如“压缩解压缩ZIP文件”的高层处理概念,如文本录入域302所示。利用帮助文档106、API调用词典108和逻辑库112中所描述的各种API调用,若干个开发人员可以以不同的方式来实现示例的高层处理概念“压缩解压缩的ZIP文件”302。用户例如可以使用如下拉框、菜单或用户输入域的接口元素来指定搜索精炼准则304。搜索精炼准则304可以指定感兴趣的逻辑类型(例如,C、C++、JAVA、或其他类型的逻辑),可以指定所搜索的信息源(例如,仅搜索已编译的帮助文件、或*.doc文件),或指定其他的搜索准则。Exemplar搜索接口300可以包括用于执行原始查询202的图形用户接口元素(例如,搜索按钮306)。
表1以代表高层处理概念“压缩解压缩ZIP文件”302的结构化查询语言语句(SQL)的形式示出了原始查询202的例子。表1示出:原始查询202将搜索帮助内容106(例如,JAVA帮助文档)来识别基础API调用列表204。
  表1-原始查询202
  SELECT基础API调用FROM Java帮助文档
  WHERE这些文档中的词语=压缩或解压缩或ZIP或文件。
表2示出由Sun微系统有限公司所发布的Java帮助文档的片断所代表的帮助内容106的一个示例,其描述从Java.util包导出的类的功能性。Java.util包定义当开发人员与多组对象工作时可使用的多个类,主要是集合类。参考表2,帮助内容处理器104可以识别类ZipEntry与原始查询202的部分匹配。帮助内容处理器104可以搜索帮助内容106,并且识别表3中示出的用于ZipEntry类的帮助文档的片断。
Figure G2009102054096D00121
Figure G2009102054096D00131
表3示出针对ZipEntry类的两种不同方法(例如,getCompressedSize以及setMethod)的描述,其包括在高层处理概念“压缩解压缩ZIP文件”302中找到的短语压缩和解压缩。基础API调用列表204可以包括getCompressedSize和setMethod方法。
Figure G2009102054096D00141
Figure G2009102054096D00151
表4示出扩展查询206的两个等同形式的例子,该扩展查询206使用来自原始查询202的基础API调用列表204,将原始搜索从帮助内容106(例如,Java帮助文档)扩展到逻辑库112。表4声明A示出可以包括在基础API调用列表204中的getCompressedSize和setMethod。表4声明B示出了作为嵌套查询的扩展查询206,其中原始查询202和基础API调用列表204(getCompressedSize和setMethod)驱动外部查询来针对潜在相关应用210搜索逻辑库112,以便获得扩展查询结果208,该扩展查询结果208包括潜在相关应用210和潜在相关API调用212。通过将执行的搜索瞄准于逻辑库112以便获得具有包括潜在相关应用210和潜在相关API调用212的高概率的应用逻辑120,扩展查询206可以改进原始查询202。
  表4-扩展查询206
  A.SELECT潜在相关应用FROM逻辑库WHERE API调用在以下中这些应用的源代码文件=getCompressedSize或setMethod。
/********上述的SQL声明也表达如下**********/B.SELECT潜在相关应用FROM逻辑库WHERE API调用在以下中这些应用的源代码文件={SELECT基础API调用FROM Java帮助文档
  WHERE这些文档中的词语=压缩或解压缩或ZIP或文件}。
表5示出扩展查询206的两种等同形式的另一个例子,通过组合原始查询202和基础API调用列表204来形成扩展查询206,其将原始搜索从帮助内容106(例如,Java帮助文档)扩展到逻辑库112。表5声明A示出与原始查询202合并的getCompressedSize和setMethod(例如,基础API调用列表204)。表5声明B示出了作为嵌套查询的扩展查询206,其中原始查询202和基础API调用列表204(例如,getCompressedSize和setMethod)驱动外部查询来针对潜在相关应用210搜索逻辑库112,以便获得扩展查询结果208,该扩展查询结果208包括潜在相关应用210和潜在相关API调用212。通过将执行的搜索瞄准于逻辑库112以便获得具有包括潜在相关应用210和潜在相关API调用212的高概率的应用逻辑120,扩展查询206可以改进原始查询202。
  表5-扩展查询206
A.              SELECT潜在相关应用FROM逻辑库WHERE API调用位于以下中这些应用的源代码文件=getCompressedSize或setMethod或压缩或解压缩或ZIP或文件/********上述的SQL声明也表达如下。**********/B.SELECT潜在相关应用FROM逻辑库WHERE API调用在以下中这些应用的源代码文件={
  SELECT基础API调用FROM Java帮助文档WHERE这些文档中的词语=压缩或解压缩或ZIP或文件}或压缩或解压缩或ZIP或文件。
表6示出从包括潜在相关API调用212(例如,getCompressedSize)的逻辑库112(例如,潜在相关应用210)提取的逻辑片断的例子。
  表6-潜在相关应用210(例如,提取的逻辑片断)
Public static void addFilesToExistingZip(File zipFile File[]files)Throws IOException{//获得临时文件File tempFile=File.create TempFile(zip File.getName(),null);//删除它,否则你不能将你的现有的zip命名成它。tempFile.delete();int sz=zipFile.getCompressedSize()Boolean renameOk=zipFile.renameTo(tempFile);if(!renameOK&&sz==-1){throw new RuntimeException(“不能将文件“+zipFile.GetAbsolutePath()+”重命名为“+tempFile.getAbsolutePath())”;}byte[]buf=new byte[1024];
图4示出Exemplar系统124原型和应用开发(EPAD)项目区域400。EPAD项目区域400包括相关应用列表显示区域402、相关API列表显示区域404、试探性相关排名结果显示区域406、逻辑显示区域408和应用创建显示区域410。相关应用列表显示区域402包括Exemplar系统124基于扩展查询206搜索结果所生成的相关应用列表220。相关应用列表220可以包括相关应用逻辑414的相关应用标识符-1412(例如,程序名、库标识符、文件名、或其他程序指示符)。用户可以选择由箭头416所指示的任意标识符以在逻辑显示区域408中显示相关应用逻辑414(例如,程序的源代码)。EPAD用户接口102可以包括键盘、鼠标、麦克风(或其他传感器)、游戏杆、游戏板、或供用户与EPAD项目区域400交互的其它。
相关的API列表显示区域404可以包括由Exemplar系统124基于原始查询202返回的相关API调用列表222。相关API调用列表222可以分别包括相关API调用逻辑-2424和相关API调用逻辑-1422(例如,功能调用的源代码)的相关API调用标识符-1418(例如,功能调用名)和相关API调用标识符-2420。EPAD项目区域400可以提供由箭头426所指示的、可由用户选择的相关API调用标识符-1418和相关API调用标识符-2420,以便在逻辑显示区域408中显示并高亮相关API调用逻辑-1422和相关API调用逻辑-2424。在一个实现中,逻辑显示区域408可以高亮相关应用逻辑414、以及相关API调用逻辑-1422以及相关API调用逻辑-2424,从而用户可以进一步确定逻辑与由原始查询202所代表的高层处理概念的相关性。
在图4中示出的试探性相关排名结果显示区域406可以包括应用相关性阈值428、API调用相关性阈值430、数据流图432、控制流图433和API调用图434。试探性相关性排名结果显示区域406可以显示试探性相关性排名引擎114信息,以辅助用户来确定用户选择的逻辑的相关性。正如将在下面详细描述的,试探性相关性排名引擎114可以基于在相关应用逻辑414中找到的相关API调用(例如,相关API调用逻辑-1422和相关API调用逻辑-2424)的数目,来与由Exemplar系统124所确定的其他相关应用逻辑436相比较地确定相关应用逻辑414的应用试探性相关性排名216。例如,高层处理概念例子“压缩解压缩ZIP文件”302可以完全实现在相关应用逻辑414中,但也可仅部分地实现在其他相关应用逻辑436中。结果是,试探性相关性排名引擎114可以为相关应用逻辑414指派比其他相关应用逻辑436更高的应用试探性相关性排名216。在另一个实现中,试探性相关性排名引擎114可以基于分析从扩展查询206和扩展搜索结果208所导出的语义(其建立了相关API调用逻辑-1422、相关API调用逻辑-2424以及相关应用逻辑-1414的行为)来确定相关API调用逻辑-1422和相关API调用逻辑-2424的API调用试探性相关性排名218。
在图4中示出的应用相关性阈值428和API调用相关性阈值430可以由用户选择和/或以系统默认值进行预先配置。在另一个实现中,Exemplar系统124可以基于多个因素(例如,由原始查询202所表示的高层处理概念的复杂性以及由扩展搜索结果208所标识的潜在相关应用210和潜在相关API调用212的数目)来确定应用相关性阈值428和API调用相关性阈值430。Exemplar系统124可以使用应用相关性阈值428和相关性阈值430来分别进一步精炼相关应用列表220和相关API调用列表222。在一个实现中,应用相关性阈值428和相关性阈值428可以确定潜在相关应用210必须满足以便被包括在相关应用列表220上的应用试探性相关性排名216值。API调用相关性阈值430也可以确定潜在相关API调用212必须满足以便包括在相关API调用列表222上的API调用试探性相关性排名218值。例如,为1的应用相关性阈值428可以指示低的相关性需求(例如,需要松散相关的应用,以及低的应用试探性相关性排名216),并且允许大量的潜在相关应用210成为合格的相关应用(例如,相关应用逻辑-1414)。在另一个例子中,为10的应用相关性阈值428可以指示高的相关性需求(例如,需要高度相关的应用,以及高的应用试探性相关性排名216),并且允许少数的潜在相关应用210成为合格的相关应用。试探性相关性排名引擎114也可以使用数据流图432和控制流图433来确定应用试探性相关性排名216和API调用试探性相关性排名218,并且可视化地描述相关应用逻辑414、相关API调用逻辑-1422和相关API调用逻辑-2424之间的关系,如下面更进一步详细地描述的那样。
相关API调用逻辑-1422和相关API调用逻辑-2424可以是用户可选择的(由箭头442所指示),并且向用户提供以选择的逻辑来生成新的应用440的能力。为此,EPAD项目区域400可以为用户选择相关API调用逻辑-1422和相关API调用逻辑-2424以便生成新的应用440来实现点击、拖放功能。通过合并用户可选择的其他相关应用逻辑436、相关API调用逻辑-1和相关API调用逻辑-2,EPAD项目区域400可以构建新的应用400。应用创建显示区域410还可以识别针对由原始查询202所表示的高层处理概念的需求444。例如,开发人员可能期望识别和确认用于实现高层处理概念(例如,“发送安全XML”)的需求444。在一个实现中,Exemplar可以基于帮助内容106来生成需求文档和最终用户文档并且识别支持新的应用440的需求444,所述帮助内容106涉及用于构建新的应用440的其他相关应用逻辑436、相关API调用逻辑-1以及相关API调用逻辑-2。
图5示出了更为详细的Exemplar系统124的示图。Exemplar系统124包括用于与Exemplar系统124内部和外部的各种资源、存储器506和处理器508通信的通信接口504。处理器508可以执行各种下面所述的逻辑。存储器506可以包括EPAD用户接口102,其使用接口逻辑510来生成Exemplar查询接口300,以及EPAD项目区域400。接口逻辑510可以包括图形库、窗口渲染调用以及其他用户接口逻辑,这些用户接口逻辑可操作用于显示接口元素、接收输入、和将输入传送到Exemplar系统124中的任意特定程序逻辑。
存储器506还可以包括扩展搜索逻辑514。上面的表5中示出了扩展查询206,其中搜索逻辑514通过合并原始查询202和基础API调用列表204来形成扩展查询。更具体地,扩展搜索逻辑514合并原始查询202和基础逻辑结果516来形成扩展查询206,并且使用扩展查询206来执行扩展的搜索。基础逻辑结果516可以包括基础API调用列表204,其包括零个或多个基础API调用标识符(例如,基础API调用标识符-1518),以及基础应用列表520,其包括零个或多个基础应用标识符(例如,基础应用标识符-1521)。扩展的搜索逻辑514由此获得扩展的搜索结果208。扩展的搜索结果208可以包括潜在相关应用210和潜在相关API调用212,其包括零个或多个潜在相关应用标识符-1522和零个或多个潜在相关API调用标识符(例如,潜在相关API调用标识符-1524和潜在相关API调用标识符-2526)。
图6示出Exemplar系统124的其他特征。存储器506也可以包括具有试探性相关性排名逻辑602的试探性相关性排名引擎114,其生成应用试探性相关性排名216和API调用试探性相关性排名218。阈值逻辑604可以把应用相关性阈值428和API调用相关性阈值430应用到应用试探性相关性排名216和API调用试探性相关性排名218,来确定潜在相关应用210和潜在相关API调用212是否有资格被包括在相关应用列表220和相关API调用列表222中。换句话说,阈值逻辑604可以实现比较逻辑来确定何时潜在相关逻辑作为相关逻辑是合格的。
存储器506也可以包括分析器逻辑606,处理器508执行其以分别识别出潜在相关应用210和潜在相关API调用212的应用元数据608和API元数据610。应用元数据608的例子包括应用描述、应用逻辑注释、应用参数名和现有的应用的应用参数类型。类似地,API元数据610的例子包括API描述、API逻辑注释、API参数名和API参数类型。
分析器逻辑606可以生成数据流图432和控制流图433以获得API调用图434。API调用图434可以包括代表潜在相关API调用212的节点(例如,节点-1612和节点-2614)以及潜在相关API调用212之间用于指示数据流的数据流边(例如,数据流边616)。图7提供了附加的例子。分析器逻辑616可以确定对应于潜在相关应用210内的潜在相关API调用212之间的连接数量的数据流边计数618。具有“n”个节点的图在节点之间具有n(n-1)条边。数据流边计数618提供了对数据流图432的连接性的程度的洞察。如下面详细所讨论的,分析器逻辑606也可以向节点之间的边指派链路值620。在一个实现中,基于公共API参数626,分析器逻辑606可以确定潜在相关API调用212之间的每个连接的连接性排名214(例如,强连接性排名622和弱连接性排名624),如下面所详细讨论的。
图6进一步图示出存储器506可以包括选择逻辑628和应用创建逻辑630。处理器508可以执行选择逻辑628以允许用户来选择相关应用逻辑414以及相关API调用逻辑(例如,相关API调用逻辑-1422和相关API调用逻辑-2424),以开发新的应用440。在另一个实现中,选择逻辑628可以向用户提供拖放点击功能性以便选择其他应用相关逻辑436来与相关API调用逻辑-1422和相关API调用逻辑-2424合并,从而构建新的应用440。处理器508可以执行应用创建逻辑630,以便通过识别用于获得对应于用户选择的其他相关应用逻辑436、相关应用逻辑414、相关API调用逻辑-1422和相关API调用逻辑-2424的帮助内容106,来识别针对由原始查询202所表示的高层处理概念的需求444。在一个实现中,应用创建逻辑使用其他相关应用逻辑436、相关应用逻辑414、相关API调用逻辑-1422和相关API调用逻辑-2424来形成查询,以便获得描述需求444的帮助内容106。应用创建逻辑630可以从对应于用户选择的其他相关应用逻辑436、相关应用逻辑414、相关API调用逻辑-1422和相关API调用逻辑-2424的帮助内容106来生成定制的需求。
图7示出针对两种不同潜在相关应用(例如,潜在相关应用A和潜在相关应用B)的API调用图434。试探性相关性排名引擎114基于潜在相关API调用212的数目、连接性排名214和指派给分别包括在潜在相关应用A和潜在相关应用B中的潜在相关API调用212之间的每个连接的链路值,为潜在相关应用A指派比潜在相关应用B更高的试探性相关性排名216。
在一个实现中,逻辑分析器116产生API调用图434。逻辑分析器116可以分别识别出潜在相关应用210和潜在相关API调用212的应用元数据608和API元数据610,从而分析潜在相关API调用212之间的数据流路径和连接性。逻辑分析器116可以向试探性相关性排名引擎114提供应用元数据608和API元数据610。在可替换的实现中,试探性相关性排名引擎114可以识别应用元数据608和API元数据610,并且可以使用逻辑分析公式、规则和等式来产生数据流图432和控制流图433,从而获得API调用图434。数据流图432、控制流图433和API调用图434可以表示为数学结构。作为比较潜在相关API调用212之间的数据流和控制流的结果,逻辑分析器116可以获得API调用图434。
在一个实现中,逻辑分析器116可以对潜在相关应用210执行控制流分析以获得控制流图433,并且对控制流图433执行数据流分析以获得数据流图。数据流图432、控制流图433和API调用图类似地包括节点和边。通过作为解析潜在相关应用210结果在逻辑上将潜在相关应用210划分成代表包括API调用的逻辑的节点,逻辑分析器116可以获得控制流图433。逻辑分析器116可以将潜在相关应用210的解析过的逻辑指派给指派的节点直到逻辑分析器116识别出潜在相关API调用或分支逻辑(例如,if-then、switch-case和do-while)为止,并且添加指派的节点到控制流图433。当程序包括多个潜在相关应用210时,逻辑分析器116可以将针对每个潜在相关应用所生成的控制流图433合并进单个控制流图433中。通过将控制流图433中的边与数据流图432中的边进行比较,逻辑分析器116可以获得API调用图434。例如,当控制流图433包括数据流图432不包括的边时,逻辑分析器116可以不在相应的API调用图434中包括该边。然而,当控制流图433包括数据流图432也包括的边时,则逻辑分析器116可以在API调用图434中包括该边。
在一个实现中,逻辑分析器116可以接收用户输入以确定API调用之间的特定依赖性。例如,当潜在相关应用210使用函数指针(例如,使用在C、C++语言中的指针类型)来引用潜在相关API调用212和哈希表(例如,将密钥与值关联的数据结构),从而存储代表在API调用之间传送的数据元素的对象时,逻辑分析器116可以接收用户输入以确定API调用之间的依赖性,因为逻辑分析器116可能在当事实上仅有一个或有限集的有效依赖性存在时以其他方式解释API调用之间的多个可能依赖性。
在另一个实现中,逻辑分析器116可以分析潜在相关应用210和潜在相关API调用逻辑212的数据流路径(例如,下面讨论的节点间的边)(例如,链路试探性),从而确定潜在相关API调用212之间的每个连接的连接性排名214。在一个实现中,试探性相关性排名引擎114可以基于代表在潜在相关应用210中找到的不同潜在相关API调用212的节点712-720所代表的API调用的总数目“n”、等于n(n-1)(例如,数据流边计数614)的潜在相关API调用212之间的连接(例如,边712-720)总数目、连接的质量(例如,强连接或弱连接)、以及潜在相关API调用212之间的链路类型(例如,环形链路、单链路或没有链路),确定在图7中示为潜在相关应用A的潜在相关应用210的应用试探性相关性排名216。
应用元数据608和API元数据610可以描述在潜在相关应用210内的不同的潜在相关API调用212(例如,节点702-710)之间的数据流路径。例如,逻辑分析器116可以确定在潜在相关应用210和潜在相关API调用212内找到的公共API参数626和逻辑分支(例如,if-then-else),从而产生数据流图432、控制流图433和API调用图434。也如图7所图示出的,逻辑分析器116识别每个潜在相关API调用212(例如,702-710以及722)的函数(例如,K(x)、J(x)、S(y)、P(y)、F(x)和G(z)),以确定连接性排名214。
在一个实现中,逻辑分析器116向潜在相关API调用212(例如,节点712-720)之间的每个连接指派权重Wi(例如,连接性排名214)。根据多个因素,逻辑分析器116可以向弱连接指派为0.5的权重而对强连接指派为1.0的权重。例如,边712、边716和边720可以代表由节点对702和710、702和704以及706和708(例如,分别为函数对K(x)和F(x)、K(x)和J(x)以及S(y)和P(y))所代表的潜在相关API调用212之间的弱连接。跟着上面的例子,其中K(x)和F(x)共享公共API参数626、但两个函数都未产生公共API参数626的值,则逻辑分析器116可以为由边720所代表的节点对702和710之间的连接性排名214指派为0.5的弱连接权重。指派给节点对(例如,702和710)的弱连接可以指示节点对实现由原始查询202所代表的高层处理概念的低相对概率(例如,相比较于其他节点对的连接性排名)。逻辑分析器116可以使用其他试探性分析方法和工具来确定是否给连接性排名214指派弱连接。
备选地,边714和边718可以代表潜在相关API调用212之间的强连接,该潜在相关API调用212由节点对702和708、以及704和706所代表(例如,分别是函数对K(x)和P(y)、以及J(x)和S(y))。逻辑分析器116可以确定当函数J(x)产生J(x)和S(y)都共享的变量y时,则由边714所代表的节点对704和706可以指派强连接性排名622。指派给节点对(例如,704和706)的强连接可以指示节点对实现了由原始查询202所代表的高层处理概念的高相对概率(例如,相比较于其他节点对的连接性排名)。逻辑分析器116可以使用其他试探性分析方法和工具来确定是否给连接性排名214指派强连接。
逻辑分析器116可以给潜在相关API调用212之间的每个连接指派链路值L(例如,链路值620)。例如,Exemplar系统124可以对于其中环路链路(例如,边712-718形成环路)存在于潜在相关API调用212(例如,节点702-708)之间的情况下指派链路值L等于1。Exemplar系统124可以对于其中单链路(例如,边720)存在于潜在相关API调用212(例如,节点702-708)之间指派链路值L等于0.5。在另一个实现中,Exemplar系统124可以对于其中没有链路(例如,边720)存在于潜在相关API调用212(例如,节点722代表不具有与潜在应用210中的其他潜在相关API调用连接的潜在相关API调用212)之间指派链路值L等于0。可以使用额外的、不同的或更少的权重。试探性相关性排名引擎114可以使用指派给潜在相关API调用212之间每个连接的连接性排名214和链路值620来根据下式确定应用试探性相关性排名216:
Σ i = 1 n ( n - 1 ) WiLi n ( n - 1 ) , 其中i范围从1到n(n-1)。(等式1)
逻辑分析器116可以基于连接性排名214和指派给包括潜在相关API调用212的每个边的链路值620来确定针对潜在相关API调用212的API调用试探性相关排名218。例如,其中m代表包括特定节点的节点对(例如,702和704、702和708、以及702和710)的数目,并且包括该节点的边(例如,712、718和720)的数目等于m(m-1),并且针对每个连接性排名214的指派的值以及针对包括节点的每个边的链路值620分别代表W和L,可以根据上面的等式1来确定针对节点的API调用试探性相关性排名218,其中m替代n:
Σ j = 1 m ( m - 1 ) WjLj m ( m - 1 ) , 其中j范围从1到m(m-1)。
图8示出Exemplar系统124可采取的以获得相关应用列表210的动作。Exemplar系统124可以使用接口逻辑510来接收代表高层处理概念(例如,“发送安全XML”)的原始查询202(802)。帮助内容处理器104可以使用原始查询202来执行原始搜索(804)以获得包括基础逻辑结果516(例如,基础API调用列表204或基础应用列表520)的原始搜索结果。基础逻辑结果516可以包括基础逻辑(例如,API调用)标识符(806)。Exemplar系统124可以将原始查询202与基础逻辑列表的任意部分进行组合以形成扩展查询(808)。扩展的搜索逻辑514可以执行扩展查询206以获得包括潜在相关应用210列表和潜在相关API调用212列表的扩展搜索结果(810)。潜在相关逻辑列表可以标识潜在相关逻辑。分析器逻辑606可以针对逻辑库112来分析由潜在相关应用标识符所标识的潜在相关逻辑(812)。试探性相关性排名逻辑602可以使用连接性排名214和链路值620、使用等式1或其他的方程式来确定针对潜在相关应用210和潜在相关API调用212的应用试探性相关性排名216和API调用试探性相关性排名218(814)。试探性相关性排名逻辑602可以使用阈值逻辑604来应用应用相关性阈值428和API调用相关性阈值430,以确定潜在相关应用210和潜在相关API调用是否分别满足应用相关性阈值428和API调用相关性阈值430(816)。试探性相关性排名逻辑602可以将潜在相关应用210添加到相关应用列表220,其中该潜在相关应用210满足应用相关性阈值428(818)。试探性相关性排名逻辑602可以确定包括在扩展搜索结果208中的每个潜在相关应用210和潜在相关API调用212的应用试探性相关性排名216和API调用试探性相关性排名218(820)。
图9示出Exemplar系统124试探性排名引擎114可以采取的以将应用试探性相关性排名216指派给潜在相关应用210的动作。分析器逻辑602可以分析在逻辑库中找到的潜在相关应用210和潜在相关API调用212(904)。分析器逻辑602可以生成和分析用于生成和分析API调用图43(908)的数据流图432和控制流图433(906)。分析器逻辑602可以使用数据流图432、控制流图433和API调用图来确定包括在潜在相关应用210中的潜在相关API调用的链路值650,并且将连接性排名214指派给潜在相关API调用之间的每个连接(910)。试探性相关性排名逻辑602可以确定每个潜在相关应用210的应用试探性相关性排名216(912)(例如,如上面所讨论的,可以根据等式1来确定应用试探性相关性排名216和API调用试探性相关性排名218)。试探性相关性排名逻辑602可以确定包括在扩展搜索结果208中的每个潜在相关应用210和潜在相关API调用212的应用试探性相关性排名216和API调用试探性相关性排名218(914)。
图10示出选择逻辑和应用创建逻辑所采取的以生成新的应用440的处理。EPAD项目区域400可以使用选择逻辑624来检测从相关API调用列表222选择相关API调用标识符(例如,由从相关API调用标识符-1418和相关API调用标识符-2420到相关API调用逻辑-1422和相关API调用逻辑-2424所绘制的箭头所指示的)(1002)。EPAD项目区域400可以呈现实现相关API调用的相关API调用逻辑(例如,相关API调用逻辑-1422和相关API调用逻辑-2424)(1004)。EPAD项目区域可以使用选择逻辑624来检测相关API调用逻辑(例如,相关API调用逻辑-1422和相关API调用逻辑-2424)和其他相关应用逻辑436的选择以生成新的应用440(1006)。EPAD项目区域可以提供选项来生成新的应用440,即,使用应用创建逻辑626,接着选择相关API调用逻辑(例如,相关API调用逻辑-1422和相关API调用逻辑-2424)和其他相关应用逻辑436来生成新的应用440(1008)。Exemplar系统124也可以识别由原始查询202所代表的高层处理概念的需求444。在一个实现中,Exemplar系统124可以基于帮助文档106来生成需求文档和最终用户文档,该帮助文档涉及被合并以生成新的应用440并且识别需求444的其他相关应用逻辑436、相关API调用逻辑-1422和相关API调用逻辑-2424。
图11示出建议的应用评估系统(RAE)128。在一个实现中,RAE 128包括与网络118通信并用于与RAE 128内部和外部的各种资源、存储器1104和处理器1106通信的通信接口1102。处理器1106可以执行RAE 128和/或Exemplar124的任何逻辑。存储器1106可以包括RAE用户接口生成逻辑130,其生成如图12中所示出的RAE用户接口1202,并且使用RAE区域逻辑132。
RAE区域逻辑132可以包括图形库、窗口渲染调用和其他用户接口逻辑,这些逻辑可操作用于显示接口元素、接收输入和将输入传送到RAE 128中的任何特定程序逻辑。RAE区域逻辑132可以进一步包括概念查询显示逻辑134、概念分布显示逻辑136、源代码显示逻辑138和元数据显示逻辑140。概念查询显示逻辑134可以包括原始查询202和/或扩展查询206的主题1108、词语1110和概念1112。概念查询显示逻辑134接收来自Exemplar的主题1108、词语1110、概念1112、原始查询202和扩展查询206,并且生成RAE用户接口1202中的窗口(如结合图12更为详细描述的),其将主题呈现为用于验证建议的应用功能性的可选择焦点选项。
概念分布显示逻辑136可以包括建议的应用1118的建议的应用表示1116(例如,HRA)。在一个实现中,建议的应用1118包括基于原始查询202和/或扩展查询206从Exemplar获得的相关应用逻辑414和相关API调用逻辑(例如,422和424)。建议的应用表示1116包括概念分布定位符1120,其标识主题、概念和词语之一的潜在实现位置。Exemplar标识应用逻辑中的位置(例如,概念分布定位符),其中API调用在该位置处实现高层处理概念。概念分布显示逻辑136生成建议的应用的可视化。概念分布显示逻辑136例如可以产生概念分布显示区域1206,其显示模块、源代码文件、头文件、库文件,或其他建议的应用源文件的一个或多个。概念分布显示逻辑136进一步在建议的应用源文件内定位实现由操作员所选择的主题1108、词语1110、概念1112、原始查询202和扩展查询206的API调用。概念分布显示逻辑136可以以概念分布定位符1120来表示每个位置,例如具有通过建议的应用源文件的超链接功能性的实水平线,其位于API调用存在于源文件的位置处。其他概念分布定位符1120可以用作例如三角形(例如,圆形、方形)以及(例如,字体、图形(例如,直线或指针)、颜色和/或声音)。
概念分布显示逻辑136可操作以接收概念分布定位符选择1122。概念分布显示逻辑136可以将概念分布定位符选择1122传送到源代码显示逻辑138。如下面更为详细描述的,源代码显示逻辑138产生用户接口上的源代码显示区域,其显示选择点处的实际代码。结果是,操作员可以评估该代码以确定该代码实际是否实现从概念查询显示区域所选择的搜索短语。
源代码显示逻辑138可以包括建议的应用1118的源代码部分1124。源代码部分1124可以包括针对选择的概念分布定位符1122的源代码(例如,高亮的概念1126)的潜在实现位置。源代码显示逻辑138接受来自概念分布显示逻辑136的概念分布位置选择1122。作为响应,源代码显示逻辑138取回在选择点处的建议的应用代码并且呈现源代码以便在源代码显示区域中审阅。此外,概念分布显示逻辑136高亮显示器中的源代码组件,例如匹配从概念查询显示区域选择的概念的源代码中的API调用。因此,操作员可以审阅源代码以确定该源代码是否实际实现了从概念查询显示区域选择的概念。源代码显示逻辑138可以包括只读和编辑模式,其允许源代码显示逻辑138响应于由开发人员在评估建议的应用1118过程中所输入的源代码编辑1128。
元数据显示逻辑140可以包括基于主题1108、词语1110、概念1112、原始查询202和扩展查询206的建议的应用1118的应用元数据608和API元数据610。元数据显示逻辑140也可以包括基于主题1108、词语1110、概念1112、原始查询202、扩展查询206和/或建议的应用1118的概念查询统计1130和语义信息1132。在一个实现中,作为基于分析从扩展查询206和扩展搜索结果208所导出的语义来确定相关API调用逻辑-1422和相关API调用逻辑-2424的API调用试探性相关性排名218的结果,概念查询统计1130和语义信息1132由试探性相关性排名引擎114确定。
图12示出RAE区域逻辑132可以操作以显示的建议的应用评估区域1202。RAE区域1202可以包括概念查询显示区域1204、概念分布显示区域1206、源代码显示区域1206和元数据显示区域1210。概念查询显示区域1204单独或组合地显示原始查询202和/或扩展查询206的主题1108、词语1110、概念1112。概念查询显示区域1204可以进一步包括复选框和/或其他选择GUI元素,从而操作员可以从概念查询显示区域1204选择主题1108、词语1110和概念1112。
概念分布显示区域1206显示建议的应用1118的建议的应用表示(RAR)1212和1214。例如,RAR 1212可以代表包括main()函数的源代码文件,而RAR 1214可以代表具有从所谓的JPEG到BITMAP转换例程的源代码文件。建议的应用表示1212和1214包括由概念分布显示逻辑136插入的概念分布定位符1216、1218、1220、1222、1224和1226,其标识单独或组合的主题1108、词语1110、概念1112、原始查询202和扩展查询206的源代码文件中的潜在实现位置。概念分布定位符1216、1218、1220、1222、1224和1226可以使用不同的标识符(例如,字体、图形(例如,直线或指针)、颜色和/或声音)来标识概念分布定位符与原始查询202和扩展查询206的主题1108、词语1110、概念1112之间的关系。源代码显示区域1208包括高亮概念1126(例如,1228和1230)。在一个实现中,高亮概念1126(例如,1228和1230)包括标识符(例如,字体、颜色和/或声音)以标识高亮概念1126和概念分布定位符(例如,1216、1218、1220、1222、1224和1226)之间的关系。RAE区域逻辑132可以使用字体、颜色和/或声音(例如,音频队列)来指示主题1108、词语1110、概念1112、概念分布定位符(例如,1216、1218、1220、1222、1224和1226)和高亮概念1126之间的关系,如箭头1232和1234所指示的。
在一个实现中,响应于选择原始查询202和/或扩展查询206的特定主题1108、词语1110、概念1112和/或元素,建议的应用表示(1116、1212和1214)和/或概念分布定位符(例如,1216、1218、1220、1222、1224和1226)被显示。换句话说,建议的应用表示(1116、1212和1214)和/或显示在概念分布显示区域1206中的概念分布定位符(例如,1216、1218、1220、1222、1224和1226)可以响应于在概念查询显示区域1204中所做出的选择。
图13示出如在显示器中示出的建议的应用评估区域1202的例子。建议的应用评估区域1202包括概念查询显示区域1204、概念分布显示区域1206、建议的应用表示1214和元数据显示区域1210。概念查询显示区域1204提供短语选择元素1302,操作员可对其进行选择以便选择感兴趣的概念供在建议的应用中验证。概念分布显示区域1206示出实现所选择的短语的其他源代码组件和API调用的位置。在图13所示出的例子中,使用概念分布定位符(虚线(例如,1304)按比例定位在构成建议的应用的源代码文件的图形表示内)来指示位置。这些源代码文件被标记为图13中的建议的应用代码(RAC)文件1(RAC1)、RAC2、RAC3、RAC4和RAC5。
建议的应用表示1214示出在特定源代码文件中的特定概念位置处的源代码,如由操作员所选择的。因此,当操作员例如选择RAC1和概念分布定位符1304时,概念分布显示逻辑136通过取回概念位置处和周围的RAC1源代码来做出响应。概念分布显示逻辑136在建议的应用表示1214区域中显示取回的代码。此外,概念分布显示逻辑高亮Exemplar的搜索技术确定的、涉及概念查询显示区域1204中所示的搜索短语的代码段。如在图13中所示,例如,概念分布显示逻辑136高亮(使用下划线)作为与在概念查询显示区域1204中的选择的搜索短语“length”和“create”相关的源代码组件“new”和“.set”。
图14示出RAE区域逻辑132可以采取的以评估建议的应用的处理。RAE区域逻辑132获得供评估的建议的应用(1402)。在一个实现中,RAE区域逻辑132从Exemplar124获得供评估的建议的应用,其中建议的应用1118是HRA。概念查询显示逻辑134显示执行以识别建议的应用的原始查询202和/或扩展查询206的主题、概念和词语(1404)。概念查询显示逻辑134在概念查询显示区域中显示主题、概念和词语。概念分布显示逻辑136在概念分布显示区域1206中显示建议的应用1118的表示,包括概念分布定位符1120(1406)。概念分布定位符1120识别执行用于识别建议的应用1118的查询的主题、概念和词语。当从概念分布显示区域1206选择概念分布定位符1120时(1408),源代码显示逻辑138在源代码显示区域中显示由概念分布定位符1120所标识的建议的应用的源代码1124的一部分(1410)。元数据显示逻辑140显示在执行查询时所生成的元数据,该查询被执行以识别出建议的应用(1412)。开发人员可以使用RAE 128来评估建议的应用和源代码的一部分以验证建议的应用是高度相关的应用(1414)。通过从概念分布显示区域选择另一个概念分布定位符,开发人员可以选择另一个建议的应用来评估(1416)。
RAE 128极大地减小了与评估建议的应用关联的时间、成本和其他资源花费。RAE 128产生以高层处理概念开始的相关结果。软件开发人员在成功评估时可以将高度相关应用部署到生产中。
此外,注意到,系统实施执行可以代表底层物理对象的数据的电子转换。例如,通过增加搜索短语定位符并且高亮与搜索短语匹配的相关代码,RAE区域逻辑可视地转换源代码。此外,RAE可以实现为特定的机器。例如,特定的机器可以包括用于实施如上所述的RAE区域逻辑的CPU、存储器和软件库。
已经描述了多个实现。然而,将理解到在不偏离本发明的精神和范围的情况下可以做出各种修改。因此,其他实现也在下面的权利要求书的范围内。

Claims (10)

1.一种用于评估应用的设备,包括:
用于获得供评估的建议的应用的装置,其中所述建议的应用包括源代码;
用于呈现概念查询显示区域的装置,所述概念查询显示区域显示短语,基于所述短语来执行用于识别所述建议的应用的查询;
用于呈现显示所述建议的应用的建议的图形的应用表示的概念分布显示区域的装置,其中所述建议的应用表示包括概念分布定位符,其中每个概念分布定位符图形地标识所述短语的潜在实现位置;以及
用于响应于选择所述概念分布定位符之一来呈现源代码显示区域的装置,其中所述源代码显示区域显示所述源代码的一部分,所述源代码的一部分包括所述概念分布定位符之一的选择的所述潜在实现位置。
2.根据权利要求1所述的设备,进一步包括:用于在所述概念查询显示区域中显示搜索短语和搜索短语选择器的装置。
3.根据权利要求1所述的设备,进一步包括:用于在所述建议的应用表示中显示多个源代码文件表示的装置。
4.根据权利要求3所述的设备,其中基于实现了所述建议的应用的各个源代码文件来生成所述多个源代码文件表示。
5.根据权利要求1所述的设备,进一步包括:用于在所述源代码显示区域中显示所述源代码的一部分中高亮的短语的装置。
6.一种用于评估应用的方法,包括:
获得供评估的建议的应用,其中所述建议的应用包括源代码;
呈现概念查询显示区域,其显示短语,基于所述短语来执行用于识别所述建议的应用的查询;
呈现显示所述建议的应用的建议的图形的应用表示的概念分布显示区域,其中所述建议的应用表示包括概念分布定位符,其中每个概念分布定位符图形地标识所述短语的潜在实现位置;以及
响应于选择所述概念分布定位符之一来呈现源代码显示区域,其中所述源代码显示区域显示所述源代码的一部分,所述源代码的一部分包括所述概念分布定位符之一的选择的所述潜在实现位置。
7.根据权利要求6所述的方法,进一步包括在所述概念查询显示区域中显示搜索短语和搜索短语选择器。
8.根据权利要求6所述的方法,进一步包括在所述建议的应用表示中显示多个源代码文件表示。
9.根据权利要求8所述的方法,其中基于实现了所述建议的应用的各个源代码文件来生成所述多个源代码文件表示。
10.根据权利要求6所述的方法,进一步包括在所述源代码显示区域中显示所述源代码的一部分中高亮的短语。
CN2009102054096A 2008-11-10 2009-10-23 建议的应用评估系统 Active CN101739335B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/268,168 2008-11-10
US12/268,168 US9021416B2 (en) 2007-05-16 2008-11-10 Recommended application evaluation system

Publications (2)

Publication Number Publication Date
CN101739335A CN101739335A (zh) 2010-06-16
CN101739335B true CN101739335B (zh) 2013-11-20

Family

ID=42097208

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2009102054096A Active CN101739335B (zh) 2008-11-10 2009-10-23 建议的应用评估系统

Country Status (4)

Country Link
US (1) US9021416B2 (zh)
EP (1) EP2196905A1 (zh)
CN (1) CN101739335B (zh)
CA (1) CA2678978C (zh)

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9021416B2 (en) 2007-05-16 2015-04-28 Accenture Global Service Limited Recommended application evaluation system
US9009649B2 (en) * 2007-05-16 2015-04-14 Accenture Global Services Limited Application search tool for rapid prototyping and development of new applications
US9659265B2 (en) * 2009-10-12 2017-05-23 Oracle International Corporation Methods and systems for collecting and analyzing enterprise activities
US20120047483A1 (en) * 2010-08-20 2012-02-23 Sap Ag Smart Web Service Discovery
US9058612B2 (en) * 2011-05-27 2015-06-16 AVG Netherlands B.V. Systems and methods for recommending software applications
US8832655B2 (en) * 2011-09-29 2014-09-09 Accenture Global Services Limited Systems and methods for finding project-related information by clustering applications into related concept categories
KR20130065802A (ko) * 2011-11-30 2013-06-20 삼성전자주식회사 키워드를 이용한 애플리케이션 추천 시스템 및 방법
CN103455559B (zh) * 2011-12-27 2016-11-16 北京奇虎科技有限公司 一种应用自动推荐的方法及装置
EP2817737A4 (en) * 2012-02-22 2015-10-07 Nokia Technologies Oy ADAPTIVE SYSTEM
US8875093B2 (en) * 2012-06-13 2014-10-28 International Business Machines Corporation Instantiating a coding competition to develop a program module in a networked computing environment
US20140189572A1 (en) * 2012-12-31 2014-07-03 Motorola Mobility Llc Ranking and Display of Results from Applications and Services with Integrated Feedback
US9934002B2 (en) * 2013-10-30 2018-04-03 Entit Software Llc Technology recommendation for software environment
US20150186463A1 (en) * 2013-12-31 2015-07-02 International Business Machines Corporation Identifying changes to query results system and method
KR102190813B1 (ko) * 2014-03-25 2020-12-14 한국전자통신연구원 코드 추천 및 공유 시스템 및 방법
US20160196204A1 (en) * 2015-01-04 2016-07-07 International Business Machines Corporation Smart Validated Code Searching System
US10437894B2 (en) * 2015-05-07 2019-10-08 TCL Research America Inc. Method and system for app search engine leveraging user reviews
US9733927B2 (en) * 2015-11-11 2017-08-15 International Business Machines Corporation Detection of software or hardware incompatibilities in software packages
US10395301B2 (en) * 2016-04-29 2019-08-27 Stitch Fix, Inc. Method, medium, and system for using a combination of batch-processing and on-demand processing to provide recommendations
US10671510B1 (en) * 2016-06-24 2020-06-02 Intuit, Inc. Techniques for evaluating collected build metrics during a software build process
US10261891B2 (en) 2016-08-05 2019-04-16 International Business Machines Corporation Automated test input generation for integration testing of microservice-based web applications
US9905044B1 (en) 2016-08-25 2018-02-27 General Electric Company Systems and methods for functional imaging
US10620790B2 (en) * 2016-11-08 2020-04-14 Microsoft Technology Licensing, Llc Insight objects as portable user application objects
US10083029B2 (en) * 2016-11-09 2018-09-25 Red Hat, Inc. Detect application defects by correlating contracts in application dependencies
US10360082B2 (en) * 2017-01-19 2019-07-23 International Business Machines Corporation Analysis of application programming interface usage for improving a computer system
US10795648B2 (en) * 2017-11-30 2020-10-06 Google Llc Systems and methods of developments, testing, and distribution of applications in a computer network
US11132180B2 (en) * 2018-01-05 2021-09-28 Microsoft Technology Licensing, Llc Neural-guided deductive search for program synthesis
CN111078989B (zh) * 2018-10-18 2024-03-22 阿里巴巴集团控股有限公司 一种应用程序的推荐方法、装置、及电子设备
US11157384B2 (en) * 2019-06-27 2021-10-26 Intel Corporation Methods, systems, articles of manufacture and apparatus for code review assistance for dynamically typed languages
CN111666216B (zh) * 2020-06-05 2024-01-23 中国银行股份有限公司 一种智能合约分析方法及装置
US11675582B2 (en) 2021-07-15 2023-06-13 Kyndryl, Inc. Neural networks to identify source code

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1489044A (zh) * 2003-08-21 2004-04-14 上海交通大学 基于多代理的交互式Web服务调度方法
CN1705947A (zh) * 2003-10-24 2005-12-07 微软公司 服务发现及发布

Family Cites Families (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6065035A (en) * 1996-06-13 2000-05-16 Microsoft Corporation Method and system for procedure boundary detection
US6931625B1 (en) * 1999-10-05 2005-08-16 Borland Software Corporation Method and system for collapsing a graphical representation of related elements
AU2001235940A1 (en) * 2000-02-23 2001-09-03 Eyal, Yehoshua Systems and methods for generating and providing previews of electronic files such as web files
US7039648B2 (en) * 2000-12-28 2006-05-02 Softlib Ltd. Method and software system for creating customized computerized libraries
US20020170032A1 (en) * 2001-03-14 2002-11-14 International Business Machines Corporation Method, system and computer program for deriving and applying quality of service specifications in a component-based development environment
US6816855B2 (en) * 2001-03-29 2004-11-09 International Business Machines Corporation Building software statements such as search queries to a tabular database through a user-interactive computer display interface
US20030056192A1 (en) * 2001-05-24 2003-03-20 Burgess Allen G. Source code analysis system and method
US20030065650A1 (en) * 2001-10-03 2003-04-03 Annand Ritchie I. Method and query application tool for searching hierarchical databases
US7240340B2 (en) * 2002-08-12 2007-07-03 Microsoft Corporation System and method for browse information parsing without compilation
US8676853B2 (en) * 2003-02-27 2014-03-18 Hewlett-Packard Development Company, L.P. System and method for software reuse
US7472118B2 (en) * 2003-12-05 2008-12-30 Microsoft Corporation Systems and methods for improving information discovery
US7941439B1 (en) * 2004-03-31 2011-05-10 Google Inc. Methods and systems for information capture
US8041701B2 (en) * 2004-05-04 2011-10-18 DG FastChannel, Inc Enhanced graphical interfaces for displaying visual data
US20050262056A1 (en) * 2004-05-20 2005-11-24 International Business Machines Corporation Method and system for searching source code of computer programs using parse trees
US20070299825A1 (en) * 2004-09-20 2007-12-27 Koders, Inc. Source Code Search Engine
US7890919B1 (en) * 2004-10-27 2011-02-15 Adobe Systems Incorporated Automatic component update and integration
US7788248B2 (en) * 2005-03-08 2010-08-31 Apple Inc. Immediate search feedback
US7529744B1 (en) * 2005-06-30 2009-05-05 Symantec Corporation Search interface server and storage management
US8566789B2 (en) * 2005-08-25 2013-10-22 Infosys Limited Semantic-based query techniques for source code
US7698695B2 (en) * 2005-08-31 2010-04-13 International Business Machines Corporation Search technique for design patterns in Java source code
US7747613B2 (en) * 2005-10-31 2010-06-29 Yahoo! Inc. Presentation of differences between multiple searches
US9311400B2 (en) * 2005-11-15 2016-04-12 Sap Se Method and system for providing time-dependent search results for repetitively performed searches
US8862572B2 (en) * 2006-02-17 2014-10-14 Google Inc. Sharing user distributed search results
US20070250810A1 (en) * 2006-04-20 2007-10-25 Tittizer Abigail A Systems and methods for managing data associated with computer code
EP2084603A4 (en) * 2006-04-26 2010-05-05 Tata Consultancy Services SYSTEM AND METHOD FOR EXTRACTING MODEL-BASED SERVICES
US20070256054A1 (en) * 2006-04-28 2007-11-01 Paul Byrne Using 3-dimensional rendering effects to facilitate visualization of complex source code structures
US9009656B2 (en) * 2006-05-02 2015-04-14 International Business Machines Corporation Source code analysis archival adapter for structured data mining
US20080046407A1 (en) * 2006-08-16 2008-02-21 Microsoft Corporation Application search interface
US7631294B2 (en) * 2006-09-19 2009-12-08 Black Duck Software, Inc. Notification system for source code discovery
NO326041B1 (no) * 2007-02-08 2008-09-01 Fast Search & Transfer As Fremgangsmate til administrasjon av datalagring i et system for soking og gjenfinning av informasjon
US20080244505A1 (en) * 2007-03-27 2008-10-02 Shrage Smilowitz System and Method for Programming
US8122433B2 (en) * 2007-04-23 2012-02-21 International Business Machines Corporation Software documentation manager
US7752207B2 (en) * 2007-05-01 2010-07-06 Oracle International Corporation Crawlable applications
US9021416B2 (en) 2007-05-16 2015-04-28 Accenture Global Service Limited Recommended application evaluation system

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1489044A (zh) * 2003-08-21 2004-04-14 上海交通大学 基于多代理的交互式Web服务调度方法
CN1705947A (zh) * 2003-10-24 2005-12-07 微软公司 服务发现及发布

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Jeffrey Stylos等.Mica: A Web-Search Tool for Finding API Components and Examples.《IEEE》.2006,195-202页. *

Also Published As

Publication number Publication date
EP2196905A1 (en) 2010-06-16
US20090138898A1 (en) 2009-05-28
CA2678978A1 (en) 2010-05-10
US9021416B2 (en) 2015-04-28
CN101739335A (zh) 2010-06-16
CA2678978C (en) 2016-08-16

Similar Documents

Publication Publication Date Title
CN101739335B (zh) 建议的应用评估系统
US9009649B2 (en) Application search tool for rapid prototyping and development of new applications
US9298453B2 (en) Source code analytics platform using program analysis and information retrieval
CA2702937C (en) Nlp-based content recommender
US20170337261A1 (en) Decision Making and Planning/Prediction System for Human Intention Resolution
US20060242180A1 (en) Extracting data from semi-structured text documents
US20040163043A1 (en) System method and computer program product for obtaining structured data from text
US20150286943A1 (en) Decision Making and Planning/Prediction System for Human Intention Resolution
Babur et al. Hierarchical clustering of metamodels for comparative analysis and visualization
US7376937B1 (en) Method and mechanism for using a meta-language to define and analyze traces
López et al. Modelset: a dataset for machine learning in model-driven engineering
WO2022089188A1 (zh) 一种代码处理方法、装置、设备及介质
KR101877828B1 (ko) 인공지능 기반의 사용자 인터페이스 통합 플랫폼 시스템
Ángel et al. Automated modelling assistance by integrating heterogeneous information sources
Cotter et al. Automated detection of architecture patterns in MBSE models
Bouillet et al. A tag-based approach for the design and composition of information processing applications
Yano et al. Labeling feature-oriented software clusters for software visualization application
JP2014102625A (ja) 情報検索システム、プログラム、および方法
Nonnen et al. Locating the Meaning of Terms in Source Code Research on" Term Introduction"
Chen et al. Employing a parametric model for analytic provenance
Jeschke et al. Developing accessible applications with user-centered architecture
US20160092458A1 (en) System for automatically generating wrapper for entire websites
CN109614467B (zh) 一种基于片段相似度的知识关联与动态组织方法和系统
JP2000293537A (ja) データ分析支援方法および装置
CN112199557A (zh) 一种发明内容推荐工具、电子设备及计算机可存储介质

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
ASS Succession or assignment of patent right

Owner name: ACCENTURE GLOBAL SERVICES GMBH

Free format text: FORMER OWNER: ACCENTURE INTERNATIONAL GMBH

Effective date: 20101208

Owner name: ACCENTURE INTERNATIONAL GMBH

Free format text: FORMER OWNER: ACCENTURE GLOBAL SERVICES GMBH

Effective date: 20101208

C41 Transfer of patent application or patent right or utility model
COR Change of bibliographic data

Free format text: CORRECT: ADDRESS; FROM: SCHAFFHAUSEN, SWITZERLAND TO: LUXEMBOURG, LUXEMBOURG

Free format text: CORRECT: ADDRESS; FROM: LUXEMBOURG, LUXEMBOURG TO: DUBLIN, IRELAND

TA01 Transfer of patent application right

Effective date of registration: 20101208

Address after: Dublin, Ireland

Applicant after: ACCENTURE GLOBAL SERVICES Ltd.

Address before: Luxemburg Luxemburg

Applicant before: Accenture international LLC

Effective date of registration: 20101208

Address after: Luxemburg Luxemburg

Applicant after: Accenture international LLC

Address before: Schaffhausen

Applicant before: ACCENTURE GLOBAL SERVICES Ltd.

C14 Grant of patent or utility model
GR01 Patent grant