CN104335171B - 对编码竞争的实例化的方法和系统 - Google Patents

对编码竞争的实例化的方法和系统 Download PDF

Info

Publication number
CN104335171B
CN104335171B CN201380028258.6A CN201380028258A CN104335171B CN 104335171 B CN104335171 B CN 104335171B CN 201380028258 A CN201380028258 A CN 201380028258A CN 104335171 B CN104335171 B CN 104335171B
Authority
CN
China
Prior art keywords
group
storehouse
function
developer
annotation
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
CN201380028258.6A
Other languages
English (en)
Other versions
CN104335171A (zh
Inventor
S·巴拉苏布拉马尼安
K·R·沃克
B·M·奥康奈尔
R·汉密尔顿二世
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.)
Qindarui Co.
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN104335171A publication Critical patent/CN104335171A/zh
Application granted granted Critical
Publication of CN104335171B publication Critical patent/CN104335171B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/06Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本发明的实施例涉及将编码竞争实例化以解决程序模块中的问题。在典型实施例中,将在具有一组程序模块的程序代码文件中检测第一注释。第一注释通常指示对与该组程序模块中的至少一个程序模块相关联的功能的需求。响应于包括解决方案的现有库的缺乏,将接收在一组开发者当中将编码竞争实例化的指示以提供解决方案。响应于该指示,将把第二注释插入到程序代码文件中。可以随后将编码竞争实例化以识别具有提供解决方案的潜力的一组开发者库。基于编码竞争,可以随后识别并实现解决方案。

Description

对编码竞争的实例化的方法和系统
技术领域
本发明的实施例涉及程序模块开发。具体地,本发明的实施例涉及用于在联网计算环境(例如,云计算环境)中将编码竞争实例化以开发程序的方法。
背景技术
代码存储库通常是可搜索的、分类的和/或因特网可访问的位置,其中用户可以访问该位置以浏览、搜索和下载源代码或已编译的库代码。代码存储库的使用可以包括开源项目、专有开发项目、和/或创建供以后使用的库的项目。代码注释是可以添加到源代码中的特殊形式的语法元数据。可以对类、方法、变量、参数和/或代码包作注释。不同于评论,注释在它们可以嵌入由编译器生成的文件中这一方面是可操作的,并且可以被执行环境利用以便在运行时可取回。
然而,当确定在程序代码文件等中包含的一个或多个程序模块中存在问题(例如,运行时错误等)时,可能存在着挑战。具体地,现有的方法通常依赖于现有的解决方案和/或库来解决出现的问题。这样的方法可能无法针对每个问题的细节来定制解决方案。如此,可能无法完全和/或正确地解决问题。
发明内容
通常,本发明的实施例涉及编码竞争的实例化以解决对(例如,包含在程序文件中的)程序模块中的功能的需求。在典型实施例中,将在具有一组程序模块的程序代码文件中检测第一注释。第一注释通常指示对与该组程序模块中的至少一个程序模块相关联的特定功能(例如,针对问题的解决方案)的需求。响应于提供所述功能的现有库的缺乏,将接收在一组开发者当中将编码竞争实例化的指示。响应于该指示,将把第二注释(例如,包括编码竞争的一组属性)插入到程序代码文件中。可以随后基于该组属性将编码竞争实例化,以识别具有提供所述功能的潜力的一组开发者库。可以随后从该组开发者库中识别最佳地满足该组属性的开发者库。可以从开发者库获得并实现所述功能。
本发明的第一方面提供了一种用于在联网计算环境中将编码竞争实例化以开发程序模块的计算机实现的方法,其包括:在具有一组程序模块的程序代码文件中检测第一注释,该第一注释指示对与该组程序模块中的至少一个程序模块相关联的功能的需求;响应于包括所述功能的现有库的缺乏,接收在一组开发者当中将编码竞争实例化以提供所述功能的指示;将第二注释插入到程序代码文件中,该第二注释包括编码竞争的一组属性;基于该组属性将编码竞争实例化,以识别具有提供所述功能的潜力的一组开发者库;以及从该组开发者库中识别最佳地满足该组属性的开发者库。
本发明的第二方面提供了一种用于在联网计算环境中将编码竞争实例化以开发程序模块的系统,其包括:包括指令的存储介质;耦合到存储介质的总线;以及耦合到总线的处理器,该处理器在执行指令时使系统:在具有一组程序模块的程序代码文件中检测第一注释,该第一注释指示对与该组程序模块中的至少一个程序模块相关联的功能的需求;响应于包括所述功能的现有库的缺乏,接收在一组开发者当中将编码竞争实例化以提供所述功能的指示;将第二注释插入到程序代码文件中,该第二注释包括编码竞争的一组属性;基于该组属性将编码竞争实例化,以识别具有提供所述功能的潜力的一组开发者库;以及从该组开发者库中识别最佳地满足该组属性的开发者库。
本发明的第三方面提供了一种用于在联网计算环境中将编码竞争实例化以开发程序模块的计算机程序产品,该计算机程序产品包括计算机可读存储介质,以及存储在计算机可读存储介质上的程序指令,以用于:在具有一组程序模块的程序代码文件中检测第一注释,该第一注释指示对与该组程序模块中的至少一个程序模块相关联的功能的需求;响应于包括所述功能的现有库的缺乏,接收在一组开发者当中将编码竞争实例化以提供所述功能的指示;将第二注释插入到程序代码文件中,该第二注释包括编码竞争的一组属性;基于该组属性将编码竞争实例化,以识别具有提供所述功能的潜力的一组开发者库;以及从该组开发者库中识别最佳地满足该组属性的开发者库。
本发明的第四方面提供了一种部署用于在联网计算环境中将编码竞争实例化以开发程序模块的系统的方法,其包括:提供计算机基础设施,其可操作以:在具有一组程序模块的程序代码文件中检测第一注释,该第一注释指示对与该组程序模块中的至少一个程序模块相关联的功能的需求;响应于包括所述功能的现有库的缺乏,接收在一组开发者当中将编码竞争实例化以提供所述功能的指示;将第二注释插入到程序代码文件中,该第二注释包括编码竞争的一组属性;基于该组属性将编码竞争实例化,以识别具有提供所述功能的潜力的一组开发者库;以及从该组开发者库中识别最佳地满足该组属性的开发者库。
附图说明
根据结合附图给出的本发明的各个方面的以下详细描述,将更容易理解本发明的这些和其他特征,在附图中:
图1示出根据本发明的实施例的计算节点。
图2示出根据本发明的实施例的系统图。
图3示出根据本发明的实施例的图2的系统的更详细的图。
图4A和4B示出根据本发明的实施例的另一个方法流程图。
图5示出根据本发明的实施例的另一个方法流程图。
附图不一定按比例绘制。附图仅是示意性的表示,并非旨在描绘本发明的特定参数。附图旨在仅描绘本发明的典型实施例,并且因此不应被认为是对本发明的范围进行限制。在附图中,相同的标号表示相同的要素。
具体实施方式
现在将参考示出示例性实施例的附图在这里更充分地描述说明性实施例。然而,本公开可以以许多不同的形式实施并且不应被解释为局限于本文所阐述的示例性实施例。而是,提供这些示例性实施例使得本公开将是透彻和完整的,并且将充分地把本公开的范围传达给本领域技术人员。在以下描述中,熟知的特征和技术的细节可以被省略以避免不必要地使所呈现的实施例模糊。
在此所用的术语仅用于描述特定实施例的目的,并且并非旨在限制本公开。如在此所使用的,单数形式的“一”、“一个”和“该”旨在也包括复数形式,除非上下文另有明确指示。此外,术语“一”、“一个”等的使用并不表示数量的限制,而是表示至少一个所提及项目的存在。词语“组”旨在表示至少一个的数量。还应理解的是,当在本说明书中使用时,术语“包括”和/或“包含”指的是所陈述的特征、区域、整数、步骤、操作、元件和/或组件的存在,而并不排除一个或多个其他特征、区域、整数、步骤、操作、元件、组件和/或其组合的存在或附加。
本发明的实施例涉及编码竞争的实例化以解决对(例如,包含在程序文件中的)程序模块中的功能的需求。在典型实施例中,在具有一组程序模块的程序代码文件中检测第一注释。该第一注释通常指示对与该组程序模块中的至少一个程序模块相关联的特定功能(例如,针对问题的解决方案)的需求。响应于提供所述功能的现有库的缺乏,接收在一组开发者当中将编码竞争实例化的指示。响应于该指示,将第二注释(例如,包括编码竞争的一组属性)插入程序代码文件中。可以随后基于该组属性将编码竞争实例化,以便识别具有提供所述功能的潜力的一组开发者库。可以随后从该组开发者库中识别最佳地满足该组属性的开发者库。可以从该开发者库获得并实现所述功能。
现在参考图1,其示出计算节点的示例的示意图。计算节点10仅仅是适合的计算节点的一个示例,并且并非旨在暗示对本文所描述的本发明的实施例的用途或功能的范围的任何限制。无论如何,计算节点10能够被实现和/或执行在上文阐述的任何功能。
在计算节点10中,存在计算机系统/服务器12,其可与许多其他通用或专用计算系统环境或配置一起操作。可能适合于与计算机系统/服务器12一起使用的众所周知的计算系统、环境和/或配置的示例包括但不限于:个人计算机系统、服务器计算机系统、瘦客户端、厚客户端、手持或膝上型设备、移动设备、全球定位系统(GPS)、GPS使能设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费电子产品、网络PC、小型计算机系统、大型计算机系统、以及包括以上系统或设备中的任一个的分布式计算环境等。
可以在由计算机系统执行的诸如程序模块的计算机系统可执行指令的一般上下文中描述计算机系统/服务器12。通常,程序模块可以包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、逻辑、数据结构等。可以在任务由通过通信网络连接的远程处理设备执行的分布式计算环境中实践计算机系统/服务器12。在分布式计算环境中,程序模块可以位于包括存储器存储设备的本地和远程计算机系统存储介质中。
如图1所示,以通用计算设备的形式示出计算节点10中的计算机系统/服务器12。计算机系统/服务器12的组件可以包括但不限于一个或多个处理器或处理单元16、系统存储器28、以及将包括系统存储器28的各种系统组件耦合至处理器16的总线18。
总线18表示若干类型的总线结构中的任何一种的一个或多个,包括存储器总线或存储器控制器、外围总线、加速图形端口、以及使用各种总线架构中的任一种的处理器或局部总线。通过示例的方式而非限制,这样的架构包括工业标准架构(ISA)总线、微通道架构(MCA)总线、增强型ISA(EISA)总线、视频电子标准协会(VESA)局部总线、以及外围组件互连(PCI)总线。
计算机系统/服务器12通常包括各种计算机系统可读介质。这样的介质可以是可由计算机系统/服务器12访问的任何可用介质,并且其包括易失性和非易失性介质、可移除和不可移除介质。
系统存储器28可以包括易失性存储器形式的计算机系统可读介质,诸如随机存取存储器(RAM)30和/或高速缓冲存储器32。计算机系统/服务器12还可以包括其他可移除/不可移除、易失性/非易失性计算机系统存储介质。仅通过示例的方式,存储系统34可以被提供用于从不可移除、非易失性磁性介质(未示出,并通常被称为“硬驱”)读取和向其写入。尽管未示出,可以提供用于从可移除、非易失性磁盘(例如,“软盘”)读取和向其写入的磁盘驱动器,以及用于从诸如CD-ROM、DVD-ROM或其他光学介质之类的可移除、非易失性光盘读取或向其写入的光盘驱动器。在这样的实例中,各自可以通过一个或多个数据媒介接口连接到总线18。如下面将进一步示出和描述的,存储器28可以包括具有一组(例如,至少一个)程序模块的至少一个程序产品,其中所述程序模块配置成执行本发明的实施例的功能。
本发明的实施例可以被实现为计算机可读信号介质,其可以包括在其中体现有计算机可读程序代码的传播数据信号(例如,在基带中或作为载波的一部分)。这样的传播信号可以采用各种形式中的任一种,所述各种形式包括但不限于电磁、光学或其任何适合的组合。计算机可读信号介质可以是除了计算机可读存储介质以外的任何计算机可读介质,其可以传送、传播或传输由指令执行系统、装置或设备使用或与其结合使用的程序。
在计算机可读介质上体现的程序代码可以使用任何适当的介质传输,包括但不限于无线、有线、光纤电缆、射频(RF)等,或以上的任何适合的组合。
通过示例的方式而并非限制,具有一组(至少一个)程序模块42的编码竞争实例化程序/工具40以及操作系统、一个或多个应用程序、其他程序模块和程序数据可以存储在存储器28中。通常,编码竞争实例化40执行如本文所描述的本发明的功能。操作系统、一个或多个应用程序、其他程序模块和程序数据或者其某种组合中的每一个可以包括网络环境的实现。程序模块42通常执行如本文所描述的本发明的实施例的功能和/或方法。
计算机系统/服务器12还可以与下述通信:一个或多个外部设备14,诸如键盘、指点设备、显示器24等;使用户能够与计算机系统/服务器12交互的一个或多个设备;和/或使计算机系统/服务器12能够与一个或多个其他计算设备通信的任何设备(例如,网络卡、调制解调器等)。这样的通信可以经由I/O接口22进行。此外,计算机系统/服务器12可以经由网络适配器20与一个或多个网络通信,诸如局域网(LAN)、一般广域网(WAN)和/或公共网络(例如,因特网)。如图所示,网络适配器20经由总线18与计算机系统/服务器12的其他组件通信。应当理解的是,尽管未示出,但是其他硬件和/或软件组件可以与计算机系统/服务器12结合使用。示例包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动器阵列、RAID系统、磁带驱动器和数据归档存储系统等。
现在参考图2,其示出描述根据本发明的实施例的本文所讨论的教导的系统图。应当理解的是,可以在任何类型的联网计算环境(例如,云计算环境)内实践本文所陈述的教导。图2示出可以作为独立计算机系统或联网计算机系统实现的计算机系统/服务器12。在联网计算环境(例如,云计算环境)中实践本文所陈述的教导的情况下,每个客户端不需要具有编码竞争实例化引擎(引擎50)。而是,引擎50可以加载在服务器(例如,支付处理服务器)或与客户端通信(例如,无线地)的有服务器能力的设备上,以提供下文的编码竞争实例化功能。不论如何,如图所示,引擎50被示出在计算机系统/服务器12内。通常,引擎50可以作为图1的计算机系统12上的程序/工具40而被实现,并且可以实现本文所陈述的功能。如进一步示出的,(在一个实施例中)引擎50包括规则和/或计算引擎,其处理一组(至少一个)规则/逻辑52和/或提供下文的编码竞争实例化功能。通常,引擎可以作为集成开发环境(IDE)的一部分或与其结合来实现。
沿着这些思路,引擎50可以执行类似于通用计算机的多种功能。具体地,除了其他功能外,引擎50可以(除了别的以外):在程序代码文件54中检测第一注释56A,第一注释56A指示对与程序代码文件54相关联的问题58的解决方案66的需求;在至少一个计算机存储设备68中搜索包括解决方案66的现有库70;响应于包括解决方案66的现有库70的缺乏,接收在一组开发者当中实现编码竞争64以提供解决方案66的请求;将第二注释56B插入程序代码文件54中,该第二注释56B包括编码竞争64的一组属性(例如,标题、描述、开始日期、结束日期、联系人、奖励等);基于该组属性实现编码竞争64,以便(例如,从竞争开发者62A-N中)识别具有提供解决方案66的潜力的一组开发者库60A-N;从该组开发者库60A-N中识别最佳地满足该组属性的开发者库;从该开发者库中识别解决方案66;实现解决方案66以解决问题58;和/或提供奖励给与该开发者库相关联的至少一个开发者。应当理解的是,尽管图2示出解决方案和问题,但是也可以实现本文所陈述的教导以获得任何类型的功能(例如,不仅仅是针对“问题”的“解决方案”)。
现在参考图3,其示出程序40(图1)和/或引擎50(图2)的更详细的图。具体地,图3示出经由开发者IDE 100和竞争网络站点200实现的程序40/引擎50。在IDE 100内,竞争注释处理器110配置成/适于从程序代码文件中提取竞争相关注释。竞争管理器130利用竞争站点注册表(registry)120以获得可在其中公开请求的站点的列表。竞争管理器130还可以利用基于期望的搜索引擎150,以便检测竞争机会以及检测撤回机会。此外,竞争管理器130可以在确定已开发的库是否满足针对性能的开发者规范时利用性能分析器140。最后,竞争管理器130可以在竞争站点200内公开竞争。开发者可以与竞争站点200交互,以提供具有针对代码问题的解决方案的库。
说明性示例
该部分将描述根据下文的说明性示例的由引擎50执行的各种功能。
注释解析:假定这样的示例:用户正在寻找库以执行字符串的base 64(图2)编码。对于其应用,还假定用户希望来自库调用的返回结果也是字符串。为了启动搜索,用户可以把下述内容输入到他们希望作出库调用的代码中:
@Description(base64,decode)@Expect("hello").Returns("aGVsbG8=")
@Signature("public String<method>String")
以上指令集请求IDE调用对存储库的搜索以寻找包含术语“base64”和“decode(解码)”的方法。对于匹配方法,IDE可以随后缩减这样的方法:其是公用的,返回字符串对象,并且期待作为参数的单个字符串对象。此外,如果向该方法传递字符串“hello”,则从该方法返回的值应该是字符串“aGVsbG8=”。可以随后向用户呈现匹配方法以及那些方法所属的库的列表。如果IDE不能为所提供的注释找到匹配库,则开发者可能希望该库被新开发并经由竞争来交付。可以利用新注释来促进在下面的示例中如下所述的该过程:
@Description(base64,decode)
@Competition(title="Method to perform base64encoding of strings",description=<descrip>,start-date="mm/dd/yy",end-date="mm/dd/yy",contact="jdoe@company.com",fixed-cost="$1234")
@Expect("hello").Returns("aGVsbG8=")@Signature("public String<method>String")
编码竞争:在一个实施例中,该注释可以由开发者在声明与方法相关的所有注释时添加。在替代实施例中,在通过库搜索没有找到匹配时,IDE可以利用将搜索转化为竞争的选项来提示开发者。开发者添加@Competition注释以及(但不限于)以下属性:竞争的标题、竞争的描述、和/或开始及结束日期、成本(其可以是固定的或时间/材料)、联系人。此外,IDE附加开发者所提供的用于搜索的其他注释。
竞争机会检测:如果IDE不能为所提供的注释找到匹配库,那么IDE试图将搜索转化为竞争请求。在一个实施例中,IDE在未找到匹配的情况下在整个代码库中扫描附加方法,并将它们组合到单个竞争中。
竞争创建:开发者可以配置IDE向其发布请求的多个竞争站点。可替换地,开发者可以维护必须在多个竞争站点中创建请求的序列。例如,开发者可能希望在企业站点内首先公开请求。如果该请求持续预定义的量的时间保持公开而没有更新,那么必须在公共但开放的源站点内公开该竞争。最后,可以在所有竞争都被支付的商业站点内公开该请求。另外,开发者还可以指定当在下一个站点中创建一个竞争时,IED应该如何处理序列中的先前站点中的竞争(允许该竞争保持公开、或关闭该竞争)。
自动的竞争结果接受和合并:IDE周期性地在竞争站点中检查公开竞争状态。如果竞争指示其状态为结束,则IDE可以执行多个步骤。具体地,IDE可以:
(1)下载并对照开发者所指定的期望来测试在竞争中创建的库。在该步骤,IDE可以请求开发者提供附加测试数据。
(2)如果该库通过接受测试,则IDE可以自动地将该库合并到项目中并关闭竞争。
竞争撤回机会检测:IDE周期性地重复搜索哪些竞争当前是公开的。如果IDE找到先前没有找到的库匹配,则IDE向开发者通知撤回公开竞争的机会。
竞争移除/改善:开发者可以在项目的架构设计阶段期间定义组件以及随后的竞争。这使开发者能够请求针对一些工件(work piece)的竞争,同时使开发者集中注意力于其他领域。开发者可以随后在之后返回到注释部分,并且如果他们已经完成了项目的其他部分且代码还未得到开发,则他们自己开发代码。取决于开发者的动作,可以移除或修改编码竞争。如果开发者移除竞争标签,则系统从竞争站点移除竞争。在另一情景中,开发者可以用性能提高注释更新竞争标签,所述性能提高注释指定比当前实现快的百分比。例如,如果某人可以编写出运行速度比开发者自己的实现快20%的该模块部分,则开发者可以仍使竞争保持公开。可以用自动生成的微基准测试来测量执行时间和改善。
现在参考图4A和4B,其示出根据本发明的实施例的方法流程图。在步骤R1,确定是否检测到竞争机会。如果为否,则过程流向步骤R6。如果为是,则IDE在步骤R2将相关联的注释添加到竞争请求。在步骤R3,确定在项目中是否存在另外的竞争机会。如果为是,则过程返回到步骤R2。如果为否,则在步骤R4将竞争请求公布在竞争站点中。在步骤R5,确定附加竞争站点是否可用。如果为是,则过程返回到步骤R4。如果为否,则IDE在步骤R6在竞争索引(competition index)中扫描公开竞争,并且在步骤R7,确定是否存在公开竞争。如果为否,则可以结束该过程。如果为是,则IDE在步骤R8检查竞争站点上的竞争状态。在步骤R9,确定状态是否是结束。如果为是,则IDE在步骤R10从竞争站点获得开发的库,并在步骤R11就匹配而言对库进行评估。在步骤R16,确定是否已经满足库标准。如果为否,则IDE在步骤R17将竞争与结果报告一起返回给参与者/用户。如果为是,则IDE在步骤R18将该库包括在项目中并关闭竞争。在步骤R19,IDE向开发者通知竞争的结束。
在步骤R9,竞争具有未结束的状态,IDE将在步骤12搜索使用指定的期望的方法,并且随后在步骤S13搜索可用的存储库。在步骤S14,确定是否找到匹配。如果为否,则过程流向步骤R20。如果为是,则IDE在R15通知开发者以关闭竞争。在步骤R20,确定附加竞争是否在进行中。如果为是,则IDE在步骤R21从索引获得下一个竞争,并且过程返回到步骤R8。如果为否,则可以结束该过程。
现在参考图5,其示出根据本发明的实施例的另一个方法流程图(例如,由图2的引擎50实现)。如图所示,在步骤S1,在程序代码文件中检测第一注释,该第一注释指示对与程序代码文件相关联的功能的需求。在步骤S2,响应于包括所述功能的现有库70的缺乏,接收在一组开发者当中实现编码竞争以提供所述功能的请求。在步骤S3,将第二注释插入到程序代码文件中,该第二注释包括编码竞争的一组属性。在步骤S4,基于该组属性将编码竞争实例化,以便识别具有提供所述功能的潜力的一组开发者库。在步骤S5,从该组开发者库中识别最佳地满足该组属性的开发者库。
尽管在本文中被示出和描述为编码竞争实例化解决方案,但应当理解的是,本发明还提供了各种替代实施例。例如,在一个实施例中,本发明提供了计算机可读/可用介质,其包括计算机程序代码以使计算机基础设施能够提供本文所讨论的编码竞争实例化。在这方面,计算机可读/可用介质包括实现本发明的各种过程中的每一个的程序代码。应当理解的是,术语计算机可读介质或计算机可用介质包括程序代码的任何类型的物理实施例中的一个或多个。特别地,计算机可读/可用介质可以包括在一个或多个便携式存储制造品(例如,紧凑盘、磁盘、磁带等)上、在计算设备的一个或多个数据存储部分诸如存储器28(图1)和/或存储系统34(图1)(例如,固定磁盘、只读存储器、随机存取存储器、高速缓冲存储器等)上体现的程序代码。
在另一个实施例中,本发明提供了在预订、广告和/或收费基础上执行本发明的过程的方法。也就是说,诸如解决方案集成商的服务提供商可以提供编码竞争实例化功能。在这种情况下,服务提供商可以对诸如计算机系统12(图1)之类的计算机基础设施进行创建、维护、支持等,其中所述计算机基础设施为一个或多个用户执行本发明的过程。作为回报,服务提供商可以按照预订和/或收费协议从用户接收支付,和/或服务提供商可以通过将广告内容销售给一个或多个第三方而接收支付。
在另一个实施例中,本发明提供了用于编码竞争实例化的计算机实现的方法。在这种情况下,可以提供诸如计算机系统12(图1)的计算机基础设施,并且可以获得(例如,创建、购买、使用、修改等)用于执行本发明的过程的一个或多个系统并将其部署到计算机基础设施。在这方面,系统的部署可以包括下述中的一个或多个:(1)从计算机可读介质在诸如计算机系统12(图1)的计算设备上安装程序代码;(2)添加一个或多个计算设备到计算机基础设施;以及(3)合并和/或修改计算机基础设施的一个或多个现有系统,以使计算机基础设施能够执行本发明的过程。
如本文所使用的,应当理解的是,术语“程序代码”和“计算机程序代码”是同义的,并且表示旨在使具有信息处理能力的计算设备直接地或者在下述中的任一者或两者之后执行特定功能的指令集的采用任何语言、代码或记法的任何表达:(a)转换为另一语言、代码或记法;和/或(b)以不同材料形式再现。在这方面,程序代码可以体现为下述中的一种或多种:应用/软件程序、组件软件/函数库、操作系统、用于特定计算设备的基本设备系统/驱动器、等等。
适合于存储和/或执行程序代码的数据处理系统可以在下文中提供,并且可以包括通过系统总线直接或间接可通信地耦合到存储器元件的至少一个处理器。存储器元件可以包括但不限于在程序代码的实际执行期间采用的本地存储器、大容量存储装置、以及高速缓冲存储器,该高速缓冲存储器提供至少一些程序代码的暂时存储以便减少在执行期间必须从大容量存储装置取回代码的次数。输入/输出和/或其他外部设备(包括但不限于键盘、显示器、指点设备等)可以直接或通过居间设备控制器耦合到系统。
网络适配器也可以耦合到系统,以使数据处理系统能够通过居间的私有或公共网络的任何组合耦合到其他数据处理系统、远程打印机、存储设备和/或类似设备。说明性网络适配器包括但不限于调制解调器、电缆调制解调器和以太网卡。
已经出于说明和描述的目的呈现了本发明的各个方面的前述描述。其并非旨在是无遗漏的或者将本发明限制于所公开的精确形式,并且显然许多修改和变化是可能的。对本领域技术人员而言明显的这样的修改和变化旨在被包括在如随附权利要求所定义的本发明的范围内。

Claims (22)

1.一种用于在联网计算环境中将编码竞争实例化以开发程序模块的计算机实现的方法,包括:
在具有一组程序模块的程序代码文件中检测包含可操作的语法元数据并且由用户插入的第一注释,检测到第一注释后由所述用户启动对现有库的搜索,所述第一注释指示对与所述一组程序模块中的至少一个程序模块相关联的功能的需求;
响应于包括所述功能的现有库的缺乏,接收在一组开发者当中将所述编码竞争实例化以提供所述功能的指示;
将第二注释插入到所述程序代码文件中,所述第二注释包括所述编码竞争的一组属性;
基于所述一组属性将所述编码竞争实例化,以识别具有提供所述功能的潜力的一组开发者库;以及
从所述一组开发者库中识别最佳地满足所述一组属性的开发者库。
2.如权利要求1所述的计算机实现的方法,还包括:从所述开发者库中识别所述功能。
3.如权利要求2所述的计算机实现的方法,还包括:实现所述功能以解决问题。
4.如权利要求1所述的计算机实现的方法,所述一组属性包括下述中的至少一个:与所述编码竞争相关联的标题、描述、开始日期、结束日期、联系人、和奖励。
5.如权利要求4所述的计算机实现的方法,还包括:将所述奖励提供给与所述开发者库相关联的至少一个开发者。
6.如权利要求1所述的计算机实现的方法,其中所述计算机实现的方法是经由集成开发环境实现的。
7.如权利要求1所述的计算机实现的方法,还包括:在至少一个计算机存储设备中搜索包括所述功能的现有库。
8.一种用于在联网计算环境中将编码竞争实例化以开发程序模块的系统,包括:
包括指令的存储介质;
耦合到所述存储介质的总线;以及
耦合到所述总线的处理器,所述处理器在执行所述指令时使所述系统:
在具有一组程序模块的程序代码文件中检测包含可操作的语法元数据并且由用户插入的第一注释,检测到第一注释后由所述用户启动对现有库的搜索,所述第一注释指示对与所述一组程序模块中的至少一个程序模块相关联的功能的需求;
响应于包括所述功能的现有库的缺乏,接收在一组开发者当中将所述编码竞争实例化以提供所述功能的指示;
将第二注释插入到所述程序代码文件中,所述第二注释包括所述编码竞争的一组属性;
基于所述一组属性将所述编码竞争实例化,以识别具有提供所述功能的潜力的一组开发者库;以及
从所述一组开发者库中识别最佳地满足所述一组属性的开发者库。
9.如权利要求8所述的系统,所述存储介质还包括用于使所述系统从所述开发者库中识别所述功能的指令。
10.如权利要求9所述的系统,所述存储介质还包括用于使所述系统实现所述功能以解决问题的指令。
11.如权利要求8所述的系统,所述一组属性包括下述中的至少一个:与所述编码竞争相关联的标题、描述、开始日期、结束日期、联系人、和奖励。
12.如权利要求11所述的系统,所述存储介质还包括用于使所述系统将所述奖励提供给与所述开发者库相关联的至少一个开发者的指令。
13.如权利要求8所述的系统,其中所述系统是经由集成开发环境实现的。
14.如权利要求8所述的系统,所述存储介质还包括用于使所述系统在至少一个计算机存储设备中搜索包括所述功能的现有库的指令。
15.一种用于在联网计算环境中将编码竞争实例化以开发程序模块的计算机可读存储介质,在所述计算机可读存储介质上存储有程序指令,以用于:
在具有一组程序模块的程序代码文件中检测包含可操作的语法元数据并且由用户插入的第一注释,检测到第一注释后由所述用户启动对现有库的搜索,所述第一注释指示对与所述一组程序模块中的至少一个程序模块相关联的功能的需求;
响应于包括所述功能的现有库的缺乏,接收在一组开发者当中将所述编码竞争实例化以提供所述功能的指示;
将第二注释插入到所述程序代码文件中,所述第二注释包括所述编码竞争的一组属性;
基于所述一组属性将所述编码竞争实例化,以识别具有提供所述功能的潜力的一组开发者库;以及
从所述一组开发者库中识别最佳地满足所述一组属性的开发者库。
16.如权利要求15所述的计算机可读存储介质,还包括用于从所述开发者库中识别所述功能的程序指令。
17.如权利要求16所述的计算机可读存储介质,还包括用于实现所述功能以解决问题的程序指令。
18.如权利要求15所述的计算机可读存储介质,其中所述一组属性包括下述中的至少一个:与所述编码竞争相关联的标题、描述、开始日期、结束日期、联系人、和奖励。
19.如权利要求18所述的计算机可读存储介质,还包括用于将所述奖励提供给与所述开发者库相关联的至少一个开发者的程序指令。
20.如权利要求15所述的计算机可读存储介质,其中所述程序指令是经由集成开发环境实现的。
21.如权利要求15所述的计算机可读存储介质,还包括用于在至少一个计算机存储设备中搜索包括所述功能的现有库的程序指令。
22.一种部署用于在联网计算环境中将编码竞争实例化以开发程序模块的系统的方法,包括:
提供计算机基础设施,其可操作以:
在具有一组程序模块的程序代码文件中检测包含可操作的语法元数据并且由用户插入的第一注释,检测到第一注释后由所述用户启动对现有库的搜索,所述第一注释指示对与所述一组程序模块中的至少一个程序模块相关联的功能的需求;
响应于包括所述功能的现有库的缺乏,接收在一组开发者当中将所述编码竞争实例化以提供所述功能的指示;
将第二注释插入到所述程序代码文件中,所述第二注释包括所述编码竞争的一组属性;
基于所述一组属性将所述编码竞争实例化,以识别具有提供所述功能的潜力的一组开发者库;以及
从所述一组开发者库中识别最佳地满足所述一组属性的开发者库。
CN201380028258.6A 2012-06-13 2013-05-15 对编码竞争的实例化的方法和系统 Active CN104335171B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/495,267 2012-06-13
US13/495,267 US8875093B2 (en) 2012-06-13 2012-06-13 Instantiating a coding competition to develop a program module in a networked computing environment
PCT/IB2013/053980 WO2013186642A1 (en) 2012-06-13 2013-05-15 Instantiating a coding competition to develop a program module in a networked computing environment

Publications (2)

Publication Number Publication Date
CN104335171A CN104335171A (zh) 2015-02-04
CN104335171B true CN104335171B (zh) 2017-09-22

Family

ID=49757181

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201380028258.6A Active CN104335171B (zh) 2012-06-13 2013-05-15 对编码竞争的实例化的方法和系统

Country Status (4)

Country Link
US (1) US8875093B2 (zh)
CN (1) CN104335171B (zh)
DE (1) DE112013002953T5 (zh)
WO (1) WO2013186642A1 (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9223769B2 (en) 2011-09-21 2015-12-29 Roman Tsibulevskiy Data processing systems, devices, and methods for content analysis
US9317254B1 (en) * 2013-12-04 2016-04-19 Google Inc. Fault tolerance model, methods, and apparatuses and their validation techniques
US9135591B1 (en) * 2014-05-15 2015-09-15 Linkedin Corporation Analysis and assessment of software library projects
US9547482B2 (en) * 2015-06-02 2017-01-17 Sap Portals Israel Ltd. Declarative design-time experience platform for code generation
CN113138762A (zh) * 2017-07-27 2021-07-20 创新先进技术有限公司 Ui页面开发方法及装置

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102024347A (zh) * 2001-01-09 2011-04-20 托普科德公司 用于编码竞赛的系统和方法

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001290636A (ja) 2000-04-04 2001-10-19 Nec Corp ソフトウェア保守販売方法
US6658642B1 (en) * 2000-06-21 2003-12-02 International Business Machines Corporation System, method and program product for software development
US6874140B1 (en) 2000-07-31 2005-03-29 Microsoft Corporation Debug annotations
US7778866B2 (en) * 2002-04-08 2010-08-17 Topcoder, Inc. Systems and methods for software development
US7584458B2 (en) 2003-10-02 2009-09-01 Microsoft Corporation Source code annotation language
JP2005216233A (ja) 2004-02-02 2005-08-11 Nec Corp オープンソースソフトウェアのバグ修正システム
US7703075B2 (en) 2005-06-22 2010-04-20 Microsoft Corporation Programmable annotation inference
US8141036B2 (en) 2005-07-07 2012-03-20 Oracle International Corporation Customized annotation editing
US20070089085A1 (en) * 2005-10-13 2007-04-19 Atkin Steven E System and method for identifying and measuring adherence to software development requirements
US7987456B2 (en) 2006-01-24 2011-07-26 Microsoft Corporation Qualitatively annotated code
US20070250378A1 (en) * 2006-04-24 2007-10-25 Hughes John M Systems and methods for conducting production competitions
US9021416B2 (en) * 2007-05-16 2015-04-28 Accenture Global Service Limited Recommended application evaluation system
WO2009062033A1 (en) * 2007-11-09 2009-05-14 Topcoder, Inc. System and method for software development
JP4915362B2 (ja) 2008-02-14 2012-04-11 日本電気株式会社 静的検証ツールのアノテーション自動挿入方法
US20100030626A1 (en) * 2008-05-08 2010-02-04 Hughes John M Distributed software fault identification and repair
US20110307304A1 (en) 2010-06-11 2011-12-15 Microsoft Corporation Crowd-sourced competition platform
US8667456B1 (en) * 2011-04-20 2014-03-04 Google Inc. Cloud-based indexing for integrated development environments

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102024347A (zh) * 2001-01-09 2011-04-20 托普科德公司 用于编码竞赛的系统和方法

Also Published As

Publication number Publication date
DE112013002953T5 (de) 2015-03-05
WO2013186642A1 (en) 2013-12-19
CN104335171A (zh) 2015-02-04
US20130339920A1 (en) 2013-12-19
US8875093B2 (en) 2014-10-28

Similar Documents

Publication Publication Date Title
US9946537B2 (en) Integrated development environment-based repository searching in a networked computing environment
JP7371141B2 (ja) リアルタイムデータフロープログラミング言語のためのツールおよび方法
Pandita et al. {WHYPER}: Towards automating risk assessment of mobile applications
CN103164249B (zh) 用于脚本语言编译器的扩展机制
US10169471B2 (en) Generating and executing query language statements from natural language
US9690546B2 (en) Method and system for transitive traversal service discovery
CN104639420B (zh) 即时通讯的信息处理方法和系统
CN103853549B (zh) 用于在网络化计算环境中进行程序代码库搜索和选择的方法和系统
CN108153901A (zh) 基于知识图谱的信息推送方法和装置
CN104335171B (zh) 对编码竞争的实例化的方法和系统
US8793653B2 (en) Program code library selection in an integrated development environment
WO2017027868A1 (en) Configurable development platform integrating heterogeneous persistence systems
Gauthier et al. The computational thematic analysis toolkit
CN110060154A (zh) 基于区块链的作品存证方法、系统、装置及设备
Wang et al. Discovery and selection of semantic web services
US20160154886A1 (en) Accounting for authorship in a web log search engine
Qu et al. Do we need to pay technical debt in blockchain software systems?
Zhou et al. Hybrid API migration: A marriage of small API mapping models and large language models
Gu et al. MANSOR: a module alignment method based on neighbor information for scientific workflow
Mateos et al. A stitch in time saves nine: Early improving code-first web services discoverability
US9727652B2 (en) Utilizing dependency among internet search results
Curado Malta et al. State of the art on methodologies for the development of a metadata application profile
Veisi et al. AHL: model-driven engineering of android applications with BLE peripherals
Zarei et al. DISCO: WEB SERVICE DISCOVERY CHATBOT.
Mukherjee et al. " Medium" LMs of Code in the Era of LLMs: Lessons From StackOverflow

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20211119

Address after: USA New York

Patentee after: Qindarui Co.

Address before: USA New York

Patentee before: International Business Machines Corp.