CN103123582A - 用于软件支持的系统和方法 - Google Patents

用于软件支持的系统和方法 Download PDF

Info

Publication number
CN103123582A
CN103123582A CN2012103512089A CN201210351208A CN103123582A CN 103123582 A CN103123582 A CN 103123582A CN 2012103512089 A CN2012103512089 A CN 2012103512089A CN 201210351208 A CN201210351208 A CN 201210351208A CN 103123582 A CN103123582 A CN 103123582A
Authority
CN
China
Prior art keywords
software
program
software program
developer
design
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.)
Pending
Application number
CN2012103512089A
Other languages
English (en)
Inventor
J.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.)
Topcoder LLC
Original Assignee
Topcoder LLC
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 Topcoder LLC filed Critical Topcoder LLC
Publication of CN103123582A publication Critical patent/CN103123582A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)

Abstract

本发明提供用于软件支持的系统和方法。本发明的一种用于提供软件程序的更新版本的方法,包括:接收软件程序的副本、所述软件程序中的一个或多个错误的指示以及指示所述错误的错误数据;将所述错误软件程序和所述错误数据分发给程序员的分散团体;响应分发所述错误软件程序和错误数据而从程序员团体的子集的每一个接收所述软件程序的更新版本;以及从所述软件程序的所接收的更新版本中选择优选更新软件程序。本发明还提供了一种用于提供软件程序的更新版本的系统。

Description

用于软件支持的系统和方法
 本申请是申请人托普科德公司、申请日为2008年8月18日的同名中国专利申请No. 200680052977.1的分案申请。
有关申请的相互参照
本申请要求2005年12月19日提交的11/311911号美国申请和2005年1月14日提交的11/035783号美国专利申请的优先权。本申请通过引用将其完整地结合到本文中,并且涉及2003年4月7日提交的10/408402号美国专利申请、2002年4月8日提交的60/370937号美国临时专利申请以及2004年1月15日提交的60/536760号美国临时专利申请,通过引用将其完整公开结合到本文中。
技术领域
本发明涉及用于开发和分发软件的基于计算机的方法和系统,特别是涉及用于帮助软件的分布式开发的方法和系统。
背景技术
  在美国及其它地方,在工作场所和个人工作方面,计算机都已经成为人们日常生活的组成部分。这是因为通用计算机可编程来运行各提供不同的处理和组网功能的各种软件程序。计算机程序员开发计算机代码,并且在许多情况下还负责在计算机代码被发布到生产和/或商业环境时对它进行支持。一些公司雇用大量计算机程序员和支持支持人员代表公司开发和支持已发布代码。
一种方法是雇用大量程序员,“在公司内部”开发和支持软件。虽然这提供对编程人员的有效控制,但是发现、雇用和供养这种人员可能是成本高昂的。另外,当个体程序员离开公司时,也损失了许多技术和工业知识。备选地,许多公司通过顾问公司、第三方或签约员工“外包”其软件编程和支持活动。这种方法减轻了公司管理个体员工的负担,但是,工作的质量和一致性可能令人怀疑,并且综合来自众多外部供应商的挑战可能很大。
发明内容
  开发和部署软件的组织需要为生产软件提供高质量支持,同时确保使用适当的质量测量来实现对代码的任何变更。已经提出的改进软件开发和简化正进行支持的技术是代码重用和基于组件的设计。但是,即组织采用这类技术,它们仍然需要以可承受的方式向软件用户提供及时优质的支持。
  一般来说,本发明涉及提供基础设施、过程控制和人力,使用可重复的结构化模型来支持以前发布的软件,以便将软件支持从特定的低增值实践转换成可预测的流水线制造操作。一般来说,这个目标可使用竞争模型来实现,通过竞争模型,多个分散、不相关、有动机的开发人员各提交代码来修复错误软件程序,从其中选择最终的新功能软件程序。
  这种方法可应用于各种情况,甚至应用于第三方或其它软件开发公司开发了该软件、但公司希望在其它地方获得对程序的支持的情况。例如,顾问公司或海外编程工作室可能已经参与开发该软件。在另一个示例中,可能已经在公司内部开发了软件,但公司希望帮助其开发人员提供对程序的正进行的支持。在一些情况下,例如标题为“软件开发的方法和系统”的当前未决的共同转让的美国专利申请序号10/408402和标题为“软件开发的系统和方法”的美国专利申请序号11/035783中所述的多步软件开发制造过程可用来开发软件或者环境或其它软件的变更。但是,即使使用这类方法,也存在编程差错在一个或多个条件下导致开发程序失败的可能性。 
  在一个方面,接收软件程序中的错误(在这里用来指差错、故障、缺陷等以及按照规范或文档说明进行操作但是对于实际终端用户活动不是适当的、可接受的或者最佳的行为)的指示,并将错误行为的描述和错误程序(或者用于获得错误程序的副本的指导)传送给程序员的分散团体。作为响应,从程序员子集的每个接收软件程序的更新版本。将所接收的修改版本之一确定为优选更新软件程序。
  各种实施例可包括以下特征的一个或多个。错误软件程序可能起源于以前在其中部署程序的生产环境。软件程序可以是编码竞争、如在线竞争的结果,其中,例如程序员技能评级可从他们在编码竞争中的表现得出。作为其它示例,软件程序可以是软件组件、软件应用程序、组件的组合或者软件模块。在一些情况下,接收使错误软件程序失败的一个或多个测试用例。
可在接收软件程序的错误的指示之前、之后或者同时来接收错误软件程序的副本和/或错误的描述,并且可分析错误程序以便确定错误的原因。在一些实施例中,随错误程序来分发错误的描述。严重等级可伴随错误的指示和/或错误程序的分发。在一些情况下,还分发用来开发错误软件程序的软件规范和/或设计文档。在一些情况下,提供软件程序合格的一个或多个测试用例。
程序员的分散团体可包括(或者在一些情况下限制为)以前参与在线编程竞争的程序员,以及在一些实施例中包括已经取得高于预定最小评级的评级的那些程序员。程序员的分散团体可包括以前设计和/或开发错误软件程序的程序员。可对软件程序的更新版本的提交施加时限。关于将哪一个已提交的更新软件程序识别为优选更新软件程序的确定可基于已提交程序解决所指示错误的程度和/或接收提交的顺序。可编译使用错误软件程序的各方的列表,并且另外还可将优选更新软件程序分发给已识别方的一个或多个。
  该方法还可包括采用例如奖金、奖品和/或增加的评级来奖励发现了错误和/或提交了优选更新软件程序的程序员。在某个预定时间段之后,在接收到预定数量的提交时,或者在选择优选更新软件程序时,可拒绝错误软件程序的更新版本的提交。
一般来说,本发明的另一个方面涉及用于实现上述方法的系统。例如,一种用于提供软件程序的更新版本的系统包括通信模块,用于接收软件程序的错误的指示,将错误软件程序分发给程序员的分散团体,并响应该分发而从程序员子集的每个接收错误软件程序的更新版本以及用于测试所接收程序的一个或多个测试用例。该系统还包括:组件存储模块,用于存储错误软件程序的以前分发版本;以及测试模块,用于使用例如随软件程序的更新版本提交的测试用例来确定错误软件程序的优选更新形式。
  在本发明的这个方面的一个实施例中,系统还包括评级引擎,用于响应错误软件程序的所接收的更新版本而评定程序员的分散团体的成员的技能。在一些实施例中,该系统还可包括评审模块,允许分散团体的成员评审该团体的其他成员提交的错误软件程序的更新版本。储存库可用来存储所接收的更新版本,并且在一些情况下,可包括版本控制模块,以便维护软件程序的多个版本,其中之一可能是更新软件程序的优选版本。 
通过以下仅作为示例来说明本发明的原理的附图、详细描述和权利要求书,本发明的其它方面和优点会变得非常明显。
附图说明
   附图中,相似的参考标号在不同视图中表示相同的部件。附图也不一定按照比例绘制,而是重点一般在于说明本发明的原理。
  图1是根据本发明、具有服务器的分布式软件开发系统的一个实施例的框图。
   图2是根据本发明的一个实施例的软件开发域的一个实施例的框图。
  图3是流程图,示出根据本发明的一个实施例、在开发软件程序时执行的步骤。
  图4a是流程图,示出本发明的一个实施例的操作的概述。
  图4b是流程图,示出本发明的另一个实施例的操作的概述。
图5是框图,示出根据本发明的一个实施例、采用测试用例的多次提交所创建的软件测试环境。
  图6是例如图5所示的测试环境的一个实施例的更详细简图。
图7是帮助开发和/或测试软件程序、例如图1所示的服务器的一个实施例的框图。
图8是框图,示出根据本发明的一个实施例的软件版本环境。
具体实施方式
参照图1,在一个实施例中,分布式软件开发系统101包括至少一个服务器104以及一般表示为108的至少一个客户机108、108’、108”。如图所示,分布式软件开发系统包括三个客户机108、108’、108”,但这仅作为示范,并且预期可存在任何数量的客户机108。客户机108优选地作为在能够运行例如Microsoft Corporation(华盛顿,雷蒙德)开发的MICROSOFT WINDOWS系列的操作系统、Apple Computer(加利福尼亚,库珀蒂诺)开发的MACINTOSH操作系统、SUN MICROSYSTEMS开发的SUN SOLARIS和RED HAT, INC(北卡罗来纳,达姆勒)开发的GNU/Linux等操作系统的个人计算机(例如具有INTEL处理器或APPLE MACINTOSH的PC)上运行的软件来实现。还可在作为通用计算机或者只充当分布式软件开发系统中的客户机108的专用硬件装置进行操作的例如智能或非智能终端、网络计算机、无线装置、无线电话、信息设备、工作站、微型计算机、大型计算机或其它计算装置等硬件上实现客户机108。
一般来说,在一些实施例中,客户机108可由软件开发人员操作和用于参与各种软件开发活动。软件开发活动的示例包括但不限于软件开发项目、软件设计项目、测试软件程序、创建和/或编辑文档说明、参与编程竞争等等。客户机108还可由已经请求软件开发人员开发软件的实体(例如顾客)来操作。顾客可使用客户机108来评审软件开发人员开发的软件、公布开发软件程序的规范、测试软件模块、查看有关开发人员的信息以及本文所述的其它活动。客户机108还可由充当顾客与软件开发人员之间的中介的促进者来操作。
在各种实施例中,客户机计算机108包括网络浏览器116、客户机软件120或者它们两者。网络浏览器116允许客户机108采用网页请求(例如从服务器104)请求网页或其它可下载程序、小应用程序或文档。网页的一个示例是数据文件,它包括计算机可执行或可解释信息、图形、声音、文本和/或视频,它们可被显示、执行、播放、处理、流播和/或存储,并且可包含到其它网页的链接或指针。在一个实施例中,客户机108的用户向服务器104手动请求网页。备选地,客户机108采用网络浏览器116自动进行请求。市场出售的网络监测器软件116的示例是Microsoft Corporation提供的INTERNET EXPLORER、AOL/Time Warner提供的NETSCAPE NAVIGATOR或者Mozilla Foundation提供的FIREFOX。
  在一些实施例中,客户机108还包括客户机软件120。客户机软件120向客户机108提供允许软件开发人员参与、监控、帮助或观察以上所述软件开发活动的功能性。客户机软件120可通过各种方式来实现,例如,它可采取下载到客户机108并结合网络浏览器116运行的Java小应用程序的形式,或者客户机软件120可采取通过例如Java等多平台语言或者通过本地处理器可执行代码来实现的独立应用程序的形式。在一个实施例中,如果在客户机108上执行,则客户机软件120打开通过通信网络112到服务器104的网络连接,并经由那个连接与服务器104进行通信。客户机软件120和网络浏览器116可以是单个客户机-服务器接口124的组成部分,例如,客户机软件可作为网络监测器116的“插件”来实现。
通信网络112将客户机108与服务器104连接。通信可经由例如标准电话线、LAN或WLAN链路(例如T1、T3、56kb、X.25)、宽带连接(ISDN、帧中继、ATM)、无线链路(802.11、蓝牙等)等任何媒介进行。优选地,网络112可携带TCP/IP协议通信,并且网络浏览器116所进行的HTTP/HTTPS请求以及客户机软件120与服务器104之间的连接可通过这类TCP/IP网络来传送。但是,网络的类型不作限制,而是可使用任何适当的网络。可充当通信网络112或者作为通信网络112的一部分的网络的非限制性示例包括基于无线或有线以太网的内联网、局域网或广域网(LAN或WAN)和/或称作因特网的全球通信网络,它们可容纳许多不同的通信媒介和协议。
   服务器104与客户机108交互。优选地在具有足够存储器、数据存储装置和处理能力并且运行服务器类操作系统(例如SUN Solaris、GNU/Linux和MICROSOFT WINDOWS系列的操作系统)的一个或多个服务器类计算机上实现服务器104。还可使用除了本文所述之外的其它类型的系统硬件和软件,取决于装置的容量以及用户数量和用户库的大小。例如,服务器104可以是例如服务器群或服务器网络等的一个或多个服务器的逻辑组或者可以是该组的一部分。作为另一个示例,可存在可以相互关联或连接的多个服务器104,或者多个服务器可单独工作,但具有共享数据。在另一个实施例中并作为大规模系统中的典型情况,应用软件可通过组件来实现,其中不同的组件运行于不同的服务器计算机上、相同的服务器上或者某种组合上。
  在一些实施例中,服务器104还可包括竞争服务器,如标题分别为“编码竞争的系统和方法”和“用于帮助在线编码组件的装置和系统”的美国专利No.6569012和No.6761631中所述,通过引用将其完整地结合到本文中。
  在一个实施例中,服务器104和客户机108实现由一个或多个开发人员进行的软件程序的分布式软件开发,这些开发人员可以或者可以不与请求开发该软件程序的实体关联。软件程序可以是任何种类的机器指令,例如包括但不限于组件、类、库、应用程序、小应用程序、脚本、逻辑表、数据块或者它们的任一个或多个中的一个或多个的任何组合或集合。 
在一个实施例中,软件程序是软件组件。一般来说,软件组件是可以作为应用程序的可重用构件块的功能软件模块。组件可具有任何功能或功能性。只作为几个示例,软件组件可包括但不限于例如图形用户界面工具、小利息计算器、到数据库管理器的接口、精算表的计算、DNA搜索功能、对用于加工制造部件的制造数值控制机器的接口、公共/私有密钥加密算法以及用于登录并与主机应用程序进行通信的功能(例如保险调整和销售点(POS)产品跟踪)。在一些实施例中,组件为所需服务(例如通过通信网络112)相互进行通信。组件的一个具体示例是JavaBean,它是以Java编程语言编写的组件。组件也可用任何其它语言来编写,非限制性地包括Visual Basic、C++、Java和C#。
在一个实施例中,软件程序是应用程序。应用程序可由一个或多个软件组件构成。在一个实施例中,软件应用程序由以前使用本文所述方法开发的软件组件构成。在一些实施例中,应用程序完全包括新软件程序。在一些实施例中,应用程序包括新软件程序和以前开发的软件程序的组合。
参照图2,软件开发域204可用于向实体208提供高质量软件。一个或多个开发人员可通过各种方法从程序员的分散团体212中识别和/或选择,然后用于开发软件组件。例如,开发人员可以是组织、企业或者促进合作计算机编程和分布式软件开发的团体的雇员、顾问或成员,并且在一些情况下,开发人员可以相互没有其它正式或非正式关系。在一些实施例中,开发人员的一个或多个可充当负责组织和协调其它开发人员的工作的产品经理。产品经理还可规定例如但不限于项目的成本、项目安排和项目风险等条款。在一个实施例中,产品经理创建项目的项目计划,它可包括但不限于估计项目成本和安排、以及描述例如项目的范围和风险的要求文档。
在一些实施例中,开发人员可包括架构师、设计师、程序员、质量保证工程师以及其它软件开发职能,如Hughes等人的标题为“软件开发的方法和系统”的同时待审的10/408402号美国专利申请中所述,通过引用将其完整地结合到本文中。
在一个实施例中,软件开发域204包括通信服务器216、一个或多个结构化开发方法学220、软件开发软件224和评审委员会228。通信服务器提供通道,外部实体208、程序员团体212和评审委员会228通过该通道进行交互,例如以设计或者功能的形式提供文档说明、提交软件、提出和提供反馈、评审已提交软件以及可能评定已提交软件。在一些实施例中,通信服务器是如上所述的服务器104或者作为服务器104的组成部分进行操作,而在其它情况下,通信服务器可以是独立的服务器,它可由应用服务提供商(ASP)、因特网服务提供商(ISP)或其它第三方来操作和/或外购。
  结构化开发方法学220提供用于开发软件程序的框架。方法学220规定公共词汇、可交付的固定集合、开发阶段或步骤、步骤中的一个或多个的输入和输出以及开发过程的其它方面。例如,方法学220将开发过程分为体系结构和设计阶段以及开发和测试阶段。另外,在这个非限制性的具体示例中,在发起任何开发工作之前提交、评审和完成体系结构和设计阶段的输出,例如类图、测试用例、技术规范和其它设计文档。一旦选择和批准了设计文档的集合,设计文档用作对开发阶段的输入。在开发和测试阶段,开发人员根据设计文档来创建源代码、脚本、文档说明和其它可交付。通过在开始开发之前确保设计文档的高质量,向开发人员提供关于要求他们开发的内容的完整准确的表示。另外,通过使用结构化方法学,参与者(例如开发人员212、实体208)可有效地进行通信,以及各过程步骤的输出是已知的,并且可经过检验。通过提供公共定义、例如用例等的输入的已知集合、例如预计结果等的输出的已知集合,并帮助基于团体的开发,开发人员可实际有效地进行交互,因而减少产生优质软件所需的成本和时间。 
软件开发软件224提供用于实现方法学220以及开发人员在其中可进行开发、测试、提交和检验软件设计及软件程序中的一个或多个的软件开发环境的操作机制。在一些实施例中,如图所示,软件224的组件可驻留在服务器104上,而一些组件可包含在驻留于客户机上的客户机软件中,如上所述。软件开发软件224可选地可包括:一个或多个模块,例如开发库,开发人员从该库中可访问以前开发的组件和文档说明模板;文档说明特征,提供与编程条款、语法和功能有关的信息;编译器,还允许开发人员识别和纠正编程差错;以及甚至版本控制和代码管理功能。
图3提供例如使用以上所述的软件开发域204来开发软件的方法的一个实施例的概括说明。通信服务器216接收描述软件程序的预期功能的规范(步骤304),然后将它分发给程序员的分散团体212(步骤308)。团体212中的程序员的一个或多个根据规范中描述的功能性来创建详细描述程序的技术方面的设计,并且一旦完成,就在服务器104处接收设计(步骤312)。然后,已提交设计经过设计评审过程(步骤316),由此,一个或多个评审人员(例如软件开发领域的有技能的、有经验的人员和/或高评级的专业人员)将设计与规范进行比较,并且在规定功能性的实现以及符合结构化开发方法学220的方面评估提交品。可响应评估而选择作为提交品中“最佳作品”的设计(步骤320),以及如果存在足够质量的至少一个提交品,则可使所选设计是程序员的分散团体212可用的(步骤324)。多个程序员的每一个(或者在一些情况下的程序员小组的每一个)提交他们认为符合结构化开发方法学220的设计和要求的软件程序。在服务器104接收软件程序(步骤328),并且程序经过软件评审过程(步骤332),以便确定哪一个(哪些)已提交程序最好地符合分布式设计和结构化开发方法学220。一旦经过评审,将一个(或者在一些情况下多于一个,或者在没有程序具有足够质量时完全没有)程序识别为“胜出”提交(步骤336)。 
图4a提供以上所述的一般方法的一种可能实现。在部分这类实施例中,开发过程由促进者来监测和管理。促进者400可以是能够执行本文所述功能的任何个体、组或实体。在一些情况下,可根据例如取得关于以前提交的软件设计和/或程序的示范得分或者取得软件编程竞争中的高评级,从开发人员的分散团体208中选择促进者400。在其它情况下,促进者可由请求开发软件程序的实体(例如实体208)来指定或提供,从而监督设计和开发过程,以便进一步确保最终产品将符合规范。
最初,促进者400接收来自希望代表其开发软件程序、应用程序、组件或其它资产的实体(未示出)的输入。实体可以是期望使一个或多个计算机程序被设计和/或开发供内部使用或者作为它们预计市场出售的较大应用程序的部分的公司。在一些情况下,实体提供详细规范,而在其它情况下,可以仅提供功能要求的列表。促进者接收要求(步骤406)、规范(步骤408)的任一个或者在一些情况下从外部实体接收它们两者。但是,如果没有提供规范,或者如果规范需要修订以便符合方法学,则促进者可根据要求来编制规范(步骤410)。在一些情况下,可要求开发团体407(例如图2的开发团体212)的一个或多个成员编制规范,而在一些情况下,可提交多个规范,其中将提交之一选择作为将用于指导设计和开发工作的最终规范。
在一个实施例中,规范定义商业计划以及稳定的硬件和/或软件平台或者其它体系结构限制。例如,规范可定义网络装置、服务器以及支持项目和产品的开发及生产的一般基础设施。规范还可识别对组件进行编程所必须采用的语言或工具、软件组件的功能概述、边界条件、效率要求、计算机平台/环境要求、接口要求、性能标准、测试用例要求和/或组件的文档说明要求。在一些实施例中,规范可包括将要支付给提交符合规范的最佳设计和/或程序的设计人员的金额。
在一些情况下,向规范指定规范的促进者、实体或其它评估者认为根据规范来产生综合设计的难度的难度水平或者某个类似指示。在一些情况下,难度水平还基于被认为完成该任务所需的工作量以及完成该任务所分配的时间。难度水平可通过任何适当方式来表达,例如表示为数值度量(例如1至10的标度)、字母等级或者例如易、中等或难之类的描述。例如,用于设计复杂基因序列算法的规范可在1至10的标度上具有难度水平9,而可向执行文件中的特定文本的搜索的简单组件指定难度水平2。如果存在附加的实际限制,例如如果在两天之内需要搜索组件,则由于紧迫的时间限制可以可选地增加难度水平。在一些实施例中,可以至少部分根据与规范关联的难度水平来产生或调整对提交被选取设计的设计人员的奖励(例如金钱、技能评级等)。
  一旦接收到(或开发)规范,促进者400(或者在一些情况下为项目经理、评审委员会成员或者他们的某个组合)评审该规范以便根据开发方法学220来确定它是否满足完整规范的要求。方法学可包括帮助软件架构师、程序员和开发人员一致且有效地产生优质代码的最佳实践活动、模板、指导方针和标准。这样一种方法学的使用降低了重新思考和重新创建编程文档说明及构造的需要,因而减小项目持续时间、成本并增加质量和组件可重用性。
一旦完成,则将规范经由通信服务器212分发给一个或多个开发人员404、404’、404”(一般表示为404),他们可以是例如图2所示的团体212等的程序员的分散团体的成员。在一个非限制性示例中,开发人员404互不相关。例如,开发人员可以没有共同的雇主,可以在地理上分散于全球,以及在一些情况下以前没有相互进行交互。但是,作为团体212的成员,开发人员404可能已经参与一个或多个竞争,和/或以前已经提交了经过评审的软件制品。这种方法允许实体208获得对大量合格软件开发人员的访问权。
通信可通过例如网络112(图1)的通信网络进行,例如经由电子邮件、即时消息、文本消息、网络浏览器116可访问的网页上的公告、通过新闻组、传真或者其它任何适当的通信进行。在一些实施例中,规范的传送可伴随提交被选取软件设计的设计人员可得到的奖品、报酬或者其它褒奖的指示。在一些情况下,报酬金额和/或类型可随时间或随参与者数量增加或减小或者随这两个方面而改变。在一些情况下,可采用不同金额来奖励多个设计人员,例如对于最佳设计的较大奖励以及对于排名第二的较小奖励。接收奖励的设计人员的数量可基于例如参与设计项目的设计人员的数量或者其它类似属性。
可通过各种方式来选择规范的接收者。在一些实施例中,团体的成员可能已经表达了对于参与开发项目的兴趣,而在一些情况下,根据编码竞争、先前开发项目的先前表现或者测量软件开发人员的编程技能的其它方法来选择个体。例如,程序员的分散团体的成员可以是以前参与过在线编程竞争的程序员。在这样一种情况下,可能已经按照参与者的表现对其编程技能单独地、作为小组或者相对于其它程序员进行评定,并且评分可用来确定哪些程序员符合接收新规范的通知或者响应通知的条件。 
在一个实施例中,促进者400在各个参与者(外部实体208、开发人员404等)之间主持合作论坛,以便对设计特征进行确定、讨论或合作。合作论坛可由开发人员、顾客、预期顾客或者关心开发某个软件的其它人组成。在一个实施例中,合作论坛是在线论坛,其中参与者可公布意见、问题、建议或其它信息。在一些实施例中,只有论坛成员的子集才可向论坛公布建议。
在接收到规范时,一个或多个开发人员404各按照该规范来开发软件设计(步骤412、412’和412”)。软件设计的开发可使用任何适当的开发系统来进行,例如通过通信服务器216提供的软件开发软件224、开发人员404提供的开发环境或者它们的某个组合来进行。一旦开发人员404确保其设计满足规定规范,并且遵循结构化开发方法学220,则例如通过通信服务器216、传真、电子邮件、邮件或其它方法提交其设计。
为了确定哪一个设计将用作软件程序的设计,使用设计评审过程(步骤414)。这种设计评审可通过许多方式来进行。在一些情况下,促进者400可将评审过程委托给程序员的分散团体的一个或多个成员或者实体的被指定者。在一些实施例中,设计评审过程包括充当设计评审委员会的一个或多个开发人员404评审来自软件设计人员的设计提交。设计评审委员会优选地具有少量(例如少于十个)成员、如三个成员,但可以是任何数量。一般来说,仅为一个或少量相关项目、如三个项目组成评审委员会。在一些实施例中,可对于延长的时间组成评审委员会,但是人员配备的变化也可帮助保持质量。 
优选地,由促进者400和/或项目经理、评审委员会的成员和/或请求软件程序的外部实体来选择设计评审委员会成员的一个成员作为主要评审委员会成员。在一些情况下,促进者400或者促进者400的代表充当主要评审委员会成员。主要评审委员会成员负责协调和管理委员会的活动。
在一个实施例中,由设计评审委员会来判断软件设计的提交。在一些实施例中,主要评审委员会成员在由设计评审委员会的其它成员进行评审之前对设计提交品进行筛选,以便允许评审委员会的其他人仅评判提交品中的最佳作品。在一些实施例中,筛选过程包括根据提交品满足规范中概述的正式要求(例如提交的格式和元素)的程度来对它们评分。在一些实施例中,使用可以是文档、电子表、在线表格、数据库或其它电子文档的记分卡来记录得分。在一些情况下,设计评审委员会还可检验开发人员404的匿名性,使得无法根据他们的提交品来辨别其身份。
筛选评审可确定是否包括了设计的所需元素(例如类、使用情况、顺序图、组件规范、所需算法、stub(分支线)类和功能测试)。筛选评审还可确定这些元素看起来完整。例如,对于类图,特别是类定义,筛选评审可确定以下的任一个或全部:(1) 类定义提供类使用的描述性概述,(2) 已经创建子封装来分离功能性,(3) 类范围匹配类使用,(4) 存在例如继承和抽象等编程技术的正确有效使用,(5) 正确地使用接口,(6) 为组件定义适当的构造器,以及(7) 适当地使用类修改符,例如最终和静态。筛选评审还可例如相对于变量定义来确定:(1) 正确地定义变量范围,(2) 为效率与灵活性之间的平衡适当地定义类型赋值,以及(3) 采用初始值来定义所有变量。另外,对于方法定义,筛选评审例如可确定:(1) 正确地定义范围,(2) 适当地处理和使用异常,(3) 正确地使用修改符,(4) 使用返回类型,(5) 正确地定义方法自变量,以及(6) 要求中陈述的应用编程接口(API)是可用的。
筛选评审例如还可检验对于设计中的所有公开方法存在使用情况图,以及对于各使用情况存在顺序图。对于测试用例,筛选评审例如还可检验为每个顺序图提供功能测试用例,以及它们看起来适合于那些图。设计可采取多种形式,取决于所规定的程序。规范通常包括设计的要求。在一个实施例中,设计要求包括类图,它可通过统一建模语言(UML)、例如使用可向Gentleware AG(德国,汉堡)购买的Poseideon计算机辅助软件一种(CASE)工具来开发。设计要求还包括使用情况图和顺序图。设计要求还包括描述设计、所需算法的列表以及设计中的类的stub类的书面组件设计规范。设计要求还包括可用来测试程序的功能测试。在一个这种实施例中,功能测试是与JUnit测试基础设施兼容的测试。JUnit是用于测试Java软件的开源软件,可从www.sourceforge.net获得。
在一个实施例中,主要评审委员会成员通知设计评审委员会关于一个或多个提交品已经通过初始筛选过程(步骤416),然后设计评审委员会更详细地评估设计提交。在一些实施例中,设计评审委员会根据规范中记录的要求来评审提交品。在一些实施例中,设计评审委员会对提交品进行评分(步骤418)。在一些实施例中,使用可以是包括文档、电子表、在线表格、数据库或其它电子文档的任何形式的记分卡来记录得分。
在一些实施例中,把来自设计评审委员会的主要评审委员会成员和其它成员的得分及评审汇总为最终评审和得分。在一些实施例中,汇总可包括编译一个或多个文档中包含的信息。这种汇总可由设计评审委员会的主要评审委员会成员、其它成员来执行,或者在一个示范实施例中,汇总使用驻留在服务器104(图1)上的基于计算机的系统来执行。在一些实施例中,促进者400或主要评审委员会成员解决设计评审委员会的成员之间的矛盾或分歧。
在一个实施例中,将具有最高组合得分的设计选择作为将用于实现的胜出设计(步骤420)。将奖品、报酬和/或褒奖给予该设计人员。在一个实施例中,给该设计人员报酬的一部分被扣留,直到开发评审结束。例如,设计人员可在设计评审结束时收取75%报酬,并在代码评审之后被支付25%。对于其它已提交设计也可存在奖品、报酬和/或褒奖。例如,提交第二和第三最佳设计的设计人员也可收到报酬,在一些情况下可少于胜出设计人员的报酬。还可对技术的创造性使用、提交独特的测试用例或者其它这类提交品进行付费。在一些实施例中,软件开发人员可对指定给其设计、程序或其它提交品的得分进行争辩。
  在一些情况下,向所公布设计指定该设计的外部实体、促进者400或者某个评估者认为产生满足所选设计的要求的软件程序或组件的难度的难度水平或者某个类似指示。与对规范指定的难度水平相似,在一些情况下,对设计指定的难度水平还可包括被认为完成该任务所需的工作量以及完成该任务所分配的时间。在一些实施例中,可以至少部分根据与规范关联的难度水平来调整奖励给提交被选取设计的设计人员的褒奖(例如金钱、技能评级等)。 
在一些实施例中,除了评审提交之外,设计评审委员会还可识别在进入开发阶段之前应当包含到设计中的、对设计的有用修改。主要评审委员会成员记录附加要求,并将这个信息传送给提交该设计的设计人员404。在一个实施例中,主要评审委员会成员汇总来自评审委员会的意见。开发人员404可更新设计,并将它重新提交供设计评审委员会评审。这个过程可重复进行,直到主要评审委员会成员认为该设计已经满足所有必需的要求。
一旦设计评审委员会证实设计已经充分地解决了规范的要求,则主要评审委员会成员通知促进者400、产品经理或外部实体关于这样一种设计已经通过设计评审过程。然后,设计可被公布和/或分发给(步骤422)开发人员的团体407,以便请求符合该设计的软件程序的提交。例如,促进者400可使设计在网站上和/或实现的邮件列表中可得到,并请求根据该设计的组件。
在一个备选实施例中,并作为系统的灵活性的一个示例,实体开发软件设计,并将设计提供给促进者400作为直接对开发过程的输入。促进者400接收该设计(步骤424),并且可选地发起如上所述的评审过程,以便确认该设计满足结构化开发方法学220的标准。使用这种方法,希望保持对软件开发过程的设计阶段(例如体系结构、平台、编码标准等)的控制的实体可利用内部或其它资源、如商业和系统分析来开发符合其标准的设计,然后利用开发人员212的分散团体来开发最终产品。一般来说,这个备选方案在公司内部保持软件开发过程的设计方面,而“外包”开发过程的制造方面,使得开发域204可使用可重复的结构化开发方法和开发人员212的团体来开发软件程序。类似地,实体208可以仅要求开发域204的服务来开发软件设计,然后使用其它资源、如公司内部程序员或海外开发人员来开发代码。 
保持进、出开发过程的多个入口点和出口点所提供的灵活性允许外部实体逐个情况或者逐个阶段地判定是否由始至终(即规范至测试和支持)都利用开发域204,或者仅将域204用于该过程的特定阶段(即代码的开发、规范的编制、软件设计的开发、测试、支持等)。
仍然参照图4a,向程序员的分散团体的成员公开或提供被选取并批准的设计。如上所述,通过规范,可将设计发送给整个团体或者仅发送给该团体的所选成员。在将设计发送给所选成员的方案中,选择过程可基于非限制性地例如编程竞争中的过去表现、以前提交的软件程序的质量、投入设计的开发、或者通过促进者400、实体208、提交胜出设计的设计人员、其它设计人员或团体212的其它成员的特定请求等适当标准的任一个或者其组合。在一些实施例中,设计的传送可伴随提交被选取软件程序的开发人员和/或第二名可得到的奖品、报酬或者其它褒奖的指示。在一些情况下,报酬金额和/或类型可随时间或随参与者数量增加或减小而改变。 
各开发人员404开发满足被选取设计的要求的软件代码(步骤426、426’和426”),并且在完成时,例如向促进者400或服务器提交代码。如上所述,开发人员404可使用各种编码技术、语言和开发环境来开发软件,只要代码满足例如设计所规定的功能和体系结构方面以及结构化开发方法学220概述的质量和语法标准。在一些实施例中,开发人员404可使用通过通信服务器216所提供的软件开发软件224来协助开发任务。由于开发软件224和开发方法学220均保持在开发域204中,因此,方法学220的编码和质量控制要求中有许多可构建到软件224中,从而进一步协助开发人员404以有效方式来开发优质代码。
为了确定最终将哪一个软件程序选择作为待交付给实体208的程序,使用代码评审过程(步骤428),它可通过任何适当方式进行。在一些实施例中,代码评审过程包括充当代码评审委员会的一个或多个开发人员404评审来自软件开发人员的已提交软件程序。代码评审委员会优选地具有少量(例如少于十个)成员、如三个成员,但可以是任何数量。一般来说,代码评审委员会仅对于一个或少量相关项目、例如三个项目来组成,然后被解散,以便允许成员参与其它设计评审委员会、代码评审委员会或者本身作为设计人员和/或开发人员进行参与。在一些实施例中,可对于延长的时间组成评审委员会,但是人员配备的变化也可帮助保持质量。
优选地,由促进者404和/或项目经理、评审委员会的成员和/或请求软件程序的外部实体来选择代码评审委员会成员的一个成员作为主要代码评审员。在一些情况下,促进者400或者促进者400的代表充当主要代码委员会成员。主要代码评审委员会成员负责协调和管理委员会的活动。
  在一个实施例中,由代码评审委员会来判断软件程序的提交。在一些实施例中,主要代码评审委员会成员在由代码评审委员会的其它成员进行评审之前对代码提交进行筛选,以便允许代码委员会的其他人仅判断提交中的最佳作品、例如满足最小要求的那些提交。在一些实施例中,筛选过程包括根据提交满足所选设计中概述的正式要求(例如提交的格式和元素)的程度来对它们评分。在一些实施例中,使用可以是文档、电子表、在线表格、数据库或其它电子文档的记分卡来记录得分。
在一个实施例中,例如,对于软件代码,代码评审委员会成员或多个成员根据以下方面的程度来对代码进行评分:(1) 已提交代码解决组件设计文档中详细说明的功能性;(2) 已提交代码正确地使用所有所需技术(例如语言、所需组件等)和封装;(3) 已提交代码正确地实现所需算法;和/或(4) 已提交代码已经正确地实现(且没有被修改)设计中定义的公用应用编程接口(API),而无需附加的公共类、方法或变量。 
例如,对于源代码,筛选评审可确定以下的任一个或全部:(1) 清楚地注释所有公用方法;(2)包括所需标志,如“author”、“param”、“return”、“throws”和“version”;(3) 装载了版权标志;(4) 源代码遵循Java语言的标准编码惯例,例如Sun Microsysmtes发布的那些惯例;(5) 4空格缩进用来代替制表符缩进;以及(6) 在源代码中准确地表示类图中存在的所有类、方法和变量定义。代码评审例如还可检验对于设计中的所有公开方法存在单元测试用例,以及通过测试程序正确地识别各单元测试。
对于类定义,例如,评审员可根据如设计文档中的定义(包括例如修改符、类型和命名惯例)实现类的程度以及是否实现定义的类来评估代码。对于变量定义和方法定义,例如,评审员可确定如设计文档中的定义(包括例如修改符、类型和命名惯例)实现所有变量和方法的程度。对于关系,例如,评审员可确定实现正确地映射类关系的程度。
  评审员还可根据代码检查来评估代码。例如,评审员可确定代码中所定义的对象类型是预计使用的最佳选择的程度——例如“向量”类型是否应当用来代替“阵列”类型。评审员可确定存在任何不必要循环或者欠考虑的对象例示或变量赋值的程度。
评审员还可检查测试用例。对于测试用例,例如,评审员可确定以下方面的程度:(1) 单元测试用例完全测试方法和构造器;(2) 单元测试用例正确地利用建立和断开方法来配置测试环境;(3) 在指定目录中存在用于单元测试用例的文件;和/或(4) 单元测试用例在测试完成之后没有在文件系统中留下临时文件。 
评审员可使用测试用例、如开发人员404、其它开发人员、评审员、促进者400、实体208以及其它人所开发的测试用例对代码运行测试。评审员甚至还可通过进行准确性、失败和应力测试来对代码进行评分。准确性测试对提供有效输入时的所得输出的准确性进行测试。准确性测试还可验证配置数据。失败测试对于向组件提供无效输入、例如坏数据和不正确使用时正确的失败行为进行测试。应力测试通过测试性能和吞吐量等特性来对于高容量操作测试组件容量。将失败的测试包含在组件的评估中,例如作为得分减少。然后,评审员可根据这个评估来将整体得分指定给组件。
在一个实施例中,主要代码评审委员会成员通知代码评审委员会关于一个或多个提交已经通过初始筛选步骤(步骤430),然后代码评审委员会更详细地评估程序提交。在一些实施例中,代码评审委员会可根据所选设计中记录的设计要求来评审提交。然后,代码评审委员会可根据评估的结果对提交评分(步骤432)。在一些实施例中,使用可以是例如文档、电子表、在线表格、数据库或其它电子文档等任何适当的方式来记录得分。
  在一些实施例中,把来自代码评审委员会的主要代码委员会成员和其它成员的得分及评审汇总为最终评审和得分。在一些实施例中,汇总可包括编译一个或多个文档中包含的信息。这种汇总可由促进者400、代码评审委员会的主要代码委员会成员、其它成员来执行,或者在一个示范实施例中,汇总使用驻留在服务器104(图1)上的基于计算机的系统来执行。在一些实施例中,促进者400或主要评审委员会成员解决代码评审委员会的成员之间的矛盾或分歧。 
  在一个实施例中,将具有最高组合得分的软件程序选择作为胜出程序(步骤434),将它作为成品交付给外部实体208(步骤436)。在一些实施例中,将奖品、报酬和/或褒奖给予提交胜出程序的软件开发人员。对于其它已提交程序也可存在奖品、报酬和/或褒奖。例如,提交第二和第三最佳程序的程序员也可收到报酬,在一些情况下可少于胜出程序员的报酬。还可对技术的创造性使用、提交独特的测试用例或者其它这类提交品进行付费。在一些实施例中,软件开发人员可对指定给其程序、测试用例或其它提交品的得分进行争辩。
在一些实施例中,除了评审提交之外,代码评审委员会还可识别在分发之前应当包含到所选软件程序中的、对程序的有用修改。主要代码评审委员会成员记录附加要求,并将该信息传送给提交该代码的开发人员404。在一个实施例中,主要代码评审委员会成员汇总来自评审委员会的意见。开发人员404可更新程序,并将它重新提交供代码评审委员会评审。这个过程可重复进行,直到主要代码评审委员会成员认为该程序已经满足所有必需的要求,并且满足结构化开发方法学220中规定的标准。
在一些实施例中,已经交付给一个或多个实体208之后,软件可采用增强、交付后缺陷修复、附加功能性来更新,或者进行修改以便在附加计算环境或平台中进行操作。在这类情况下,域204提供以前分发的软件产品的跟踪和更新(步骤438),如Hughes等人于2003年4月7日提交的标题为“软件开发的方法和系统”的同时待审的10/408402号美国专利申请中所述,通过引用将其完整地结合到本文中。
  例如,在一个实施例中,实体委托开发软件组件,并且在完成该组件时,组件的版本1被分发给实体208。随后,第二实体208请求开发执行相同功能性的类似组件,但满足第二实体的具体请求,对该组件进行某些修改。例如,修改例如是对组件的改进(例如效率提高、更小的存储器要求)、删除(例如不需要的步骤或特征的删除)和/或增加(例如补充特征或功能的增加)。修改的另一个示例是将组件集成到另一个组件(例如更大的组件)中。响应修改组件的请求,组件的新版本(例如版本1.1)被开发并分发给第二实体208。在一个实施例中,向第一实体208发送陈述组件的更新版本是可用的这样的消息。在其它实施例中,用于开发组件的较新版本的成本可在希望接收新版本的原始组件(版本1)的接收者、以及发起开发新版本的实体之间共享。此外,在一些实施例中,通过许可/销售组件的第二版本的副本来补偿请求开发新版本的实体208。
参照图4b,在一个实施例中,雇用开发人员404的分散团体来提供软件程序的支持。可在外部实体208处的实现和部署期间、在实体208处的测试阶段中以及在部署后(即软件程序“在生产中”时)提供支持。在一些情况下,软件程序使用本文所述的系统和方法来开发,而在一些情况下,软件程序使用其它方法来开发,然后发送给促进者400,以便包含在软件库、组件存储器或者其它这种软件制品存储器和分布系统中。
软件程序由一个或多个外部实体208部署(步骤440)在例如生产环境、测试环境、开发环境或者其它计算环境中,其中预计软件程序按照前面描述的设计和开发规范进行操作。软件程序通常已经通过测试,并被认为是全功能的。 
在任何时间,外部实体208(或者在一些情况下的多个实体)识别软件程序中的一个或多个错误(步骤442)。例如,软件程序可以没有问题地进行操作,但无法产生预计输出。作为另一个示例,例如,如果软件程序缺少适当的数据输入校验来确保软件程序所使用的数据具有正确格式(例如整数、文本等),并且不包含无效值,则软件可能偶尔呈现错误行为。在其它情况下,软件程序可在典型操作下按照设计起作用,但是由于例如字段定义限制、堆栈限制和事务处理机制等设计选择,程序可能在遇到高容量操作时出错。在其它情况下,例如,如果没有显示所有有用信息,附加功能性是有帮助的,或者如果软件在其预计环境中的操作比预计或预期的要慢,则软件操作没有差错但不是最佳的。在又一些情况下,外部实体208可能不知道程序的任何错误,但希望使程序由软件开发人员的团体212进行“检验”,以便查找任何以前被忽视的错误以及确定对于找到的任何错误的最适当的修复。
在每种情况下,实体208编译尽可能多的错误数据(步骤444),如果它们正请求由软件开发人员的团体212进一步测试程序,则在一些情况下可能不进行这样的操作。作为示例,错误数据可包括差错消息、输入数据值、输出数据值、存储器转储和/或代码段。在一些实施例中,外部实体208提供与错误软件程序进行交互的全功能软件程序,以便除了以上所述的程序或组件级的“单元测试”之外还允许应用级的“系统测试”。在一些情况下,没有错误数据可以是可用的,并且实体只注意发生的失败或错误行为。然后,实体208将错误数据提供(步骤446)给促进者400,它将监督解决该错误。
一旦促进者400接收到关于软件程序没有按照预计方式进行操作的指示(步骤448)以及与那个失败关联的可用错误数据,则确认步骤可用来确定程序是否确实有错误。测试程序的一种方法是使用实体208所提供的错误数据来尝试重新创建该错误。在提供附加功能软件程序的实施例中,促进者可尝试操作包括许多软件程序的整个软件应用程序,以便观察错误程序如何与其它程序进行交互,其中错误软件程序只是应用程序的子集。在开发程序期间提交了多个测试用例的情况下(下面进行描述),可采用实体208所提供的错误数据再运行测试用例。在其中根据在促进者的监控下使用例如以上所述的方法编译的设计和开发规范来开发软件程序的情况下,那些文档用来确定软件程序是否满足原始设计和开发要求。如果促进者400确定软件程序正按照设计方式进行操作,则促进者将这种情况通知实体。
在一些情况下,可找到其它软件程序中的错误,然后使那些程序服从本文所述的方法。在其它情况下,软件程序可按规定进行操作,但是,程序的操作要求可能已经改变,或者在许多情况下最初没有考虑。可使用这些相同或相似的方法,将为了解决新要求(增强)而对软件程序进行的变更结合到软件程序中。但是,在一些情况下,促进者可决定对增强软件程序收取费用。费用可以是固定费用或者通过增强的复杂度和/或实现该增强所需的时间来确定的费用。这类费用可被记录在例如促进者400与实体208之间协商的支持服务合同中,或者在找到错误时一次性确定。
已经确定了存在错误(或者如上所述需要增强),促进者400公布程序(步骤452),以及在一些实施例中还公布与程序和错误有关的文档说明。文档说明可包括例如错误数据以及在一些情况下的描述错误的文档说明、程序的预计操作、设计文档、开发规范和程序的操作环境。其它信息、例如需要程序的任何更新版本的日期或时间以及提交被选取的更新版本的任何奖励(例如金钱)也可包含在公告中。在一些情况下,公告可以是程序员的整个分散团体可得到的,而在其它情况下,公告可限于具有例如最小技能评级或者某种已识别编程专门知识的团体的子集。还可使公告是最初使用以上所述方法来设计和/或开发该程序的个体(排他的或者加上团体的其它成员)可得到的。作为示例,可通过将软件程序的副本置于网站和FTP站点上、经由电子邮件分发程序或者它们的任何组合,来实现公告。 
开发人员404被通知(或查询)关于错误软件程序,并且识别为合格接收者的各方使用以上所述方法的一个或多个来接收程序(步骤454)。除了接收错误软件程序和相关文档说明、测试脚本、数据以及可用于识别和解决错误的其它信息之外,在一些情况下,开发人员还接收必须提交修改的最终期限,并且还可被通知关于提交优选修复的开发人员404可得到的一种或多种奖品(例如金钱、技能评级等)。开发人员404使用他们自己的编程/开发环境或者在一些情况下使用促进者404所提供的在线开发和测试环境,来分析和修改错误程序(步骤456),使得它不再有错误。当开发人员确信其修改解决了已识别错误(以及他们可能在接收程序之后识别的任何错误)时,他们向促进者400提交其修改程序(步骤458)供测试和分析。还可要求开发人员提交测试已识别错误的测试用例。在一些实施例中,例如使用下面描述的方法,对单个提交使用来自多个开发人员的测试用例。 
仍然参照图4b,促进者400接收修改程序的每一个(步骤460),并且根据一个或多个判定参数,主要评审委员会成员从开发人员所提交的程序中选择优选程序(步骤462)。选择过程可包括测试修改程序以确保已经解决以前识别的错误、测试程序的整体功能性和/或程序进行操作的速度。在一些实施例中,确立开发人员必须提交其修改以便供选择过程考虑的最终期限。在要求格外快速的周转时间的某些情况下,成功地解决了错误的第一提交被选择作为优选程序。一旦选择了优选程序,就将它重新分发(步骤464)给实体208,在其中将它部署(步骤466)以便在一个或多个生产环境中进一步测试和/或使用。在一些实施例中,优选程序还被分发给以前部署了该程序的其它实体,但是可以或者可以没有使用例如下面更详细描述的版本控制和分发系统以及方法识别错误。
一般来说,鼓励开发人员在进行编码时开发测试用例,使得他们可在编码时考虑限制和差错条件。可能有益的是,使用一个或多个或者所有其他提交者所开发的测试用例来测试已提交程序的每一个,以便覆盖尽可能多的差错条件。
  如上所述,在一些实施例中,除了提交完成的软件程序和/或更新软件程序之外,开发人员404还提交一个或多个测试用例。测试用例的目的是提供程序可能遇到的样本数据和预计输出,并且可将它的实际输出与预计输出进行比较。通过创建测试已识别错误的附加测试用例,开发人员确保该错误在以后偶尔被重新插入代码时将会注意到。通过提交多个测试用例,可单独地测试许多不同的情况,因此可识别特定处理差错或省略。例如,计算贷款的摊提表的程序可能需要例如利率、本金金额、支付水平以及支付频率等输入数据。各数据元素可能需要被校验,使得空集、零值、负数、小数、特殊字符等全部被核算,并且适当的误差校验和消息被调用。此外,应当检验数学计算,并且还应当检验例如长支付期、每日支付、极大或极小的本金金额和部分利率等极端输入值。在一些版本中,可开发一个测试用例来校验这些情况的每个,但是,在其它版本中,可能有益的是为每种差错提供单独的测试用例。在某些实施例中,则可将多个测试用例结合成更大的测试程序(例如脚本、外壳或者其它高级程序),并且并发或同时地运行。在程序被识别为错误软件程序时,该套测试用例使用例如使错误程序出错的测试数据、其中软件没有按照预计方式进行操作的操作环境或者识别为使程序出错的其它进程来测试更新程序。
应当理解,可以重新分配所述的任务。仅作为一个示例,以上所述由促进者执行的步骤448同样可由开发人员来执行。类似地,更新代码的评估可由一个或多个评审委员会或小组来执行。
参照图5,在一个说明性实施例中,响应以上所述的所传送软件设计和/或规范,开发人员404、404’和404”各分别向开发域204提交软件程序502、502’和502”。除了提交程序之外,开发人员404还提交一个或多个测试用例506、506’和506”。例如,当“开发人员1”404提交“程序1”502时,她还提交统称为506的“测试用例1A”和“测试用例1B”。“开发人员2”404’和“开发人员3”404”进行同样的操作,使得在全部三个开发人员404已经完成其提交之后,开发域204包括提交池508,其中包含三个已提交程序和六个测试用例。即使“开发人员1”404可能运行她针对其“程序”502所提交的“测试用例1A”和“测试用例1B”506,但是也有可能的是,“开发人员2”404’和“开发人员3”404”所提交的测试用例506’和506”分别解决了“开发人员1”404没有考虑到的情况或数据。因此,可能有利的是,在尝试识别每个已提交程序的所有可能错误时针对已提交程序的每一个运行所有开发人员所提交的每个测试用例。在一些版本中,已提交测试用例的子集可从提交池508中删除或者不使用,例如因为它们是重复的、不测试必要的特征或者是不正确的。如果是这样,则提交池508中的测试用例的子集可用来测试已提交程序。由于更严格地(即,使用许多开发人员所提交的一套测试用例)测试了程序,所得程序的质量可能比仅通过开发所选程序的那些开发人员进行测试的程序更高。 
参照图6,将提交池508中的测试用例应用于已提交程序502、502’、502”。在一些情况下,将池508中的所有测试用例应用于每一个已提交程序,而在一些版本中,仅使用已提交测试用例的子集。在一些实施例中,可通过针对某些程序运行第一测试用例将其从竞争中删除,使得后续测试用例不是必要的。在一些版本中,测试用例508对程序的每次应用产生得分604。然后可将测试用例508对已提交程序的每次应用的得分604制成表格并汇总成那个特定程序的组合或整体得分。一些测试用例具有比其它测试用例更高或更低的加权,使得特定测试用例的得分可以更表现出程序的整体质量,或者结果更有意义。在其它情况下,得分可以是二进制的——即通过的测试接收得分“1”,而失败的测试接收得分“0”。在一些实施例中,制表和汇总可在服务器104上自动进行。
在一些实施例中,根据其提交品的得分来评定提交设计和/或开发代码的开发人员。根据提交之前各开发人员的评分、所提交的设计或程序的指定难度水平以及进行提交的其它开发人员的数量来计算评分。应当理解,提交品可以是一个设计、程序或者其它计算机软件资产,或者在一些情况下是多个不同的资产。根据提交之前各开发人员的评分和恒定标准评分(例如1200)对每个开发人员计算技能评分,并根据其变更率和标准评分对各开发人员计算偏差。 
通过对于其它开发人员的提交品估计提交设计或程序的开发人员的提交品的预计得分,并对各开发人员的预计表现进行评级,来计算提交设计或程序的各开发人员的预计表现。可由评审员使用包括但不限于以上所述方法的任何数量的方法来对提交进行评分。
根据已提交软件的得分以及来自其它开发人员的提交品的得分(例如是对于同一程序还是具有相似难度水平的一个或多个其它程序),对各开发人员进行评级,并根据当前提交以及其它开发人员的评级来计算实际表现量度。在一些情况下,来自其它开发人员的、用于进行比较的提交品针对相同程序。在一些情况下,来自其它开发人员的、用于进行比较的提交品是具有相似难度或得分的提交品。
还可根据开发人员的数量、提交设计或程序之前各开发人员的评级、提交之前的开发人员的平均评级以及提交之前各开发人员的评级的变更率来计算竞争因子。
然后,各开发人员可使用他们的旧评级、竞争因子以及他们的实际得分与预计得分之间的差来使其表现被评定。这种表现评级可根据从开发人员接收的先前提交的数量来加权,并且可用来计算开发人员的新评级和变更率。在一些情况下,开发人员的表现对一个提交品的影响可被确定上限,使得任何一个提交对于开发人员的评分没有过大的影响。在一些情况下,开发人员的得分的上限可确定为最大值,使得存在最大可能的评级。通过对于其它开发人员估计各开发人员的预计表现,并对各参与者的预计表现进行评级,来计算各开发人员的预计项目表现。可由促进者400、实体208、评审委员会成员和/或自动地使用例如驻留在服务器104上的软件、使用任何数量的方法对提交和参与者进行评分。
   在Lydon等人的标题为“编码竞争的系统和方法”的6569012号美国专利中、例如在第15列第39行至第16列第52行以及第18列第65行至第21列第51行描述了评分方法学的一个这种示例,通过引用将其完整地结合到本文中。方法学在其中参照编程竞争来描述,因此可适用于对软件或硬件设计、数据模型、应用程序、组件以及作为使用以上所述方法学的结果所创建的其它工作产品的开发进行评定。
   在一个实施例中,外部实体208有兴趣接收开发的设计或代码并获得开发人员的评级,以及在一些情况下仅获得评级。例如,外部实体208可要求开发人员参与开发过程,只是使得对开发人员进行评级,并且可以对于更大价值的未来项目客观地评估他们的技能,或者确定哪些开发人员更有经验。此外,请求者可能有些关心开发的设计和代码,并且可能有某种兴趣将开发的知识财产用于其商业或其它方面。 
将使用上述过程获得高评级的人员用作设计评审过程中的设计评审员和/或代码评审过程中的代码评审员可存在极大的有益效果。进行代码评审的传统问题之一在于没有确立评审员的能力。由缺乏经验的开发人员进行评审可能导致不适当的评审。通过使用该过程仅选择具有充分技能(如通过该过程确定)的开发人员作为评审员,过程本身确保其成功。
  在一个实施例中,由组织之内的软件开发组来采用这个软件开发过程。使用这个过程来进行由该组所执行的开发。组中的各开发人员具有评级,并且开发人员进行工作以提高和/或保持他们的评级。具有高评级的开发人员可参与评审(例如设计评审过程或代码评审过程)。在一个实现中,开发人员对于取得高评分而收取附加利益和/或补偿。同样,开发人员可对于这样参与评审过程而收取附加利益和/或补偿。在这个示例中,请求者是产品或程序经理,负责指导软件开发。
   在另一个实现中,外部组织、如顾问可使用以上所述的系统和方法来评估及评定开发组的开发能力。这样,顾问可以不仅针对开发人员本身来对开发人员进行评级,而且还针对已经参与或正参与该系统的、附属其它组织的其它开发人员来对开发人员进行评级。评估员提供如上所述评估和报告的服务。这种方法的一个有益效果在于,如果评审员本身不是开发人员已知的,则知识财产的评分更可能无偏见,并且相对大量开发人员来比较任一个开发人员的技能提供了那个开发人员技能等级相对于他或她的同等的人的更准确表示。
参照图7,服务器104可包括多个模块和子系统,以便于软件规范、设计和程序的传送及开发。服务器104包括通信服务器704。通信服务器704的一个示例是网络服务器,它帮助通过网络112的HTTP/HTTPS和其它相似网络通信,如上所述。通信服务器704包括帮助程序员的分散团体212、外部实体208、促进者400和评审委员会的成员(统称作“用户”)之间的通信的工具。通信工具的示例包括但不限于实现开发人员404(例如聊天)、新闻组、在线会议和文档合作工具之间的实时通信的模块。促进者400和/或外部实体208还可使用通信服务器704来公布设计或规范以便分发给程序员的分散团体212。
另外,服务器104还包括例如帮助软件开发域204和设计及开发过程的软件开发环境702以及支持域204的子系统和模块。例如,服务器104可包括开发公布子系统708、管理子系统712、评审委员会子系统714、测试子系统716、评分子系统720、方法学数据库724和分发子系统728。
  在一个实施例中,开发公布子系统708允许系统的用户公布规范、提交设计、公布所选设计、提交软件程序和测试用例、以及公布所选软件程序供分发。公布子系统708根据用户职能来识别用户,并根据各自的安全和访问权限、项目当前所处的开发阶段等来确定可访问哪些功能。例如,如果特定项目处于设计阶段,则公布子系统708可确定发起项目的外部实体具有对规范的读/写访问权,并且可在必要时重新公布更新规范。促进者400可具有对规范的读访问权以及对于属于其它外部实体、他们可支持的其它规范的访问权。在一些实施例中,程序员的整个分散团体可能能够查看所有当前未决规范,但是,公布系统可将完全读访问权仅限于满足一个或多个技能或评分标准的那些开发人员,如上所述。一旦提交了设计,就可将对于已提交设计的访问权进一步仅限于评审委员会成员或者在一些情况下的过程的其它参与者。
开发公布子系统708还使服务器104或其它参与者能够与可能的开发人员进行通信,以便促进开发项目并扩大参与开发过程的程序员的团体。在一个实施例中,开发公布子系统708向可能的开发人员显示广告。在一个实施例中,广告使用文本、图形、视频和/或声音来描述项目。通信技术的示例包括但不限于在服务器的网站上公布这些广告、显示与项目有关的统计(例如支付给开发人员的计划提成费、参与这个项目的开发人员、每周可用的开发小时数)。另外,在一个实施例中,开发公布子系统708接受与开发项目关联的查询。在其它实施例中,开发公布子系统708向特定开发人员提出开发机会。开发公布子系统708可分析例如分散团体的各成员的评分、对以前开发项目的先前贡献、对以前组件开发项目的贡献的质量(例如根据给予各开发人员的提交品的得分,如上所述)以及开发人员参与的当前可用性。
服务器104还包括管理子系统712。管理子系统712是使用软件开发环境204来跟踪设计和开发项目的进度的模块。管理子系统712还帮助系统的新用户的登记,并根据用户对各个项目具有的职能向用户指定适当的安全和访问权限。在一些版本中,管理子系统712还可编译和跟踪软件开发环境204的操作统计以及系统的用户。例如,为了确定要奖励给提交胜出设计的开发人员的适当补偿,管理子系统712可评审以前完成的项目,并指定相似的现金奖励。类似地,在公布的设计或程序的难度水平极高的情况下,管理子系统712可评审与各个程序员有关的信息,以便确定在历史上对相似项目表现良好的那些开发人员。此外,管理子系统712可用来分析根据外部实体所提供的规范来开发操作程序所需的整体产出时间。这可帮助系统的用户来设置适当的可交付日期以及与新项目关联的成本。
  服务器104还包括评审委员会子系统714。评审委员会子系统714允许评审委员会成员、外部实体、促进者以及在一些情况下的分散团体的开发人员来评审来自其它开发人员的提交品,如上所述。在一个实施例中,通信服务器704、开发公布子系统708、管理子系统712、评审委员会子系统714、测试子系统、评分子系统和方法学数据库驻留在服务器104上。备选地,软件开发环境204的这些组件可驻留在其它服务器或远程装置上。
  服务器104还包括测试子系统716。测试子系统716实现已提交程序、应用程序和/或组件的测试。在一个实施例中,测试服务器708由评审委员会、促进者400和/或外部实体208用来评审、评估、筛选及测试已提交设计和软件程序。测试子系统716还可针对已提交程序的部分或全部来执行由开发人员404开发和提交的测试用例,如上所述。另外,测试子系统716可对组件或应用程序执行自动化测试,例如以便检验和/或测量存储器使用、线程使用、例如I/O使用和处理器负荷等机器统计。此外,测试子系统716可根据性能、设计和/或功能性来对组件评分。测试子系统716可以是用于同时测试多个程序的测试控制工具。
  服务器104还包括评分子系统720。在一个实施例中,评分子系统720根据来自测试子系统716的结果以及在一些实施例中的一个或多个编码竞争的各参与者的评级、以前的开发提交品或者它们两者来计算提交的得分。在其它实施例中,评分子系统720可根据开发人员对项目的贡献来计算开发人员的评级。 
  服务器104还包括方法学数据库724。方法学数据库724存储与结构化开发方法学220相关的数据。在一个实施例中,方法学220可规定从开发项目的一个阶段到下一个的转变所需的输入和输出。例如,方法学200可规定,为了完成项目的规范阶段并作为设计阶段,必须完成条款的校验列表。另外,方法学数据库724可存储可用作未来项目的模板的样本文档、设计和代码示例,从而对新项目施加标准化、可重复且可预测的过程框架。这种标准化降低与从事新软件开发项目关联的风险,缩短新开发项目的整体持续时间,并提高最终产品的质量和可靠性。
  服务器104还包括分发子系统728。分发子系统728可跟踪和存储与已经使用域204产生的软件产品相关的数据(例如规范、设计、开发程序)。在一个实施例中,分发子系统728包括与请求该产品的实体208有关的描述信息、域204的入口点和出口点、例如请求日期和交付日期等有效日期、以及参与开发产品的开发人员的姓名和/或昵称。分发子系统728还可包括与产品有关的详细功能信息,例如用于开发产品的技术、所支持的计算环境等。在一些实施例中,可更新或修补以前分发的软件产品,如上所述。在这类情况下,分发子系统728帮助可能具有产品的较早版本的实体或多个实体208的识别以及在适用的情况下的更新版本的后续传送和分发。在一些情况下,分发子系统728还可充当源代码管理系统,由此允许以前开发的软件产品的各个版本分支到具有共同起源的不同软件产品中。 
参照图8,在一个实施例中,第一公司808和第二公司810购买、许可或发起开发软件程序、组件或应用程序的版本1。在接收到程序之后,第二公司810修改程序816,采用修改箭头828示出。例如,修改例如是对程序816的改进(例如效率提高、更小的存储器要求)、删除(例如不需要的步骤或特征的删除)和/或增加(例如补充特征或功能的增加)。修改的另一个示例是将程序816集成到另一个程序、组件或应用程序中。响应该修改,组件816的版本1成为例如程序816’的版本1.1。在一个实施例中,远程更新跟踪模块812向服务器104传送陈述第二公司808已经修改组件816的消息。在其它实施例中,远程更新跟踪模块812则向服务器104传送(或者例如查询和传送)修改版本1.1,如箭头832所示。在接收到程序816’的版本1.1时,服务器104和/或开发小组成员能够通过例如执行图4a和图4b所示的步骤,来确定是否可将修改组件816’添加到组件存储模块804。在一个实施例中,在将程序816’的版本1.1添加到组件存储模块804时,版本1.1替换程序816的版本1。备选地,将组件816’的版本1.1作为另一个组件添加到组件存储模块804中。程序816’的替换或添加可根据相对于组件的版本1的变更量。另外,更新跟踪模块812可通知以前购买程序816的版本1的各顾客(即第一公司808)关于已经将更新版本1.1添加到组件存储模块804中。此外,在一些实施例中,通过许可/销售程序816’的第二版本的副本来补偿第二公司810。例如,对创建新程序的补偿可采取金钱补偿、奖品、对于将来软件购买的信用和/或评级点数的形式。 
可向程序员支付他们对软件程序进行的工作的费用。在一个实施例中,程序员接收基于他们对软件程序的贡献以及从许可或销售程序的副本中得到的收益的提成费。服务器104跟踪用于确定要支付给程序员的提成费金额的特定特性。在一个这种实施例中,费用是对提成费的预付款,表示在取得特定进展之前不支付提成费。
  在一个实施例中,服务器104跟踪总收益、程序员贡献、程序员提成费百分比、提成费池百分比、提成费池以及各软件程序和/或各程序的提成费。贡献例如是基于修复错误的预定量。在另一个实施例中,通过时间量、技能等级(由以前的得分、竞争评级、经验或者组合来确定)或者程序员对修复错误软件所进行努力的程度来确定程序员的贡献。在另一个实施例中,通过程序员贡献的有效性来确定贡献。程序员对特定软件程序的整体提成费的预计比例份额可以是固定金额(例如总提成费的5%)或者例如基于被修复错误的严重性的估算金额。在一些情况下,可将整个提成费从软件程序的原始开发人员重新分配给修复程序中的错误的程序员。在程序被变更、升级或者以其它方式被修改的情况下,可对修改版本的开发小组成员的提成费百分比进行调整,以便反映新的份额划分。
  虽然以上描述为独立的子系统和模块,但这只是用于示范,并且这些子系统和模块可以备选地组合成一个或多个模块或子系统。另外,以上所述子系统的一个或多个可设置成远离其它模块(例如在服务器场的另一个服务器104上执行)。
  虽然本文参照软件进行描述并且在相对于软件组件实现时有用,但是,合作开发产品可以是包含知识产权的任何种类的有形或无形物体。作为非限制性示例,技术可用于计算机硬件和电子设计或者例如体系结构、构造或园林设计等其它设计。可对其使用这些技术的其它非限制性示例包括开发所有种类的书面文档和内容,例如纸张或期刊(无论是在线还是书面形式)的文献和文章、研究论文、脚本、多媒体内容、法律文件等。

Claims (6)

1.一种用于提供以前发布的软件程序的更新版本的基于计算机的系统,包括:
通信服务器模块,用于从以前发布的软件程序的一个或多个终端用户接收所述软件程序中的错误的指示和/或错误的描述,
开发公布模块,用于将所述软件程序和所述错误的描述分发给程序员的分散团体,以及从所述程序员的分散团体的子集接收所述以前发布的错误软件程序的更新版本;
在线开发和测试环境,为所述程序员的分散团体的成员在分析和修改所述以前发布的程序时所使用;
评审委员会子系统模块,允许评审委员会成员、外部实体、促进者以及在一些情况下的分散团体的开发人员来评审来自其它开发人员的提交品;以及
储存库,用于存储所述以前发布的软件程序的优选更新版本。
2.如权利要求1所述的系统,还包括:评级引擎,用于响应所述错误软件程序的所接收的更新版本而对软件程序员的分散团体的技能进行评级。
3.如权利要求1所述的系统,还包括:评审模块,允许所述分散团体的成员评审由所述分散团体的其他成员所提交的所述错误软件程序的更新版本。
4.如权利要求1所述的系统,还包括:用于存储所述错误软件程序的所接收的更新版本的储存库。
5.如权利要求1所述的系统,还包括:版本控制模块,用于维护所述错误软件程序的多个版本。
6.如权利要求5所述的系统,其中,所维护的版本之一是所述错误软件程序的优选更新版本。
CN2012103512089A 2005-12-19 2006-11-14 用于软件支持的系统和方法 Pending CN103123582A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/311,911 2005-12-19
US11/311,911 US8776042B2 (en) 2002-04-08 2005-12-19 Systems and methods for software support

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CNA2006800529771A Division CN101395575A (zh) 2005-12-19 2006-11-14 用于软件支持的系统和方法

Publications (1)

Publication Number Publication Date
CN103123582A true CN103123582A (zh) 2013-05-29

Family

ID=38228687

Family Applications (2)

Application Number Title Priority Date Filing Date
CN2012103512089A Pending CN103123582A (zh) 2005-12-19 2006-11-14 用于软件支持的系统和方法
CNA2006800529771A Pending CN101395575A (zh) 2005-12-19 2006-11-14 用于软件支持的系统和方法

Family Applications After (1)

Application Number Title Priority Date Filing Date
CNA2006800529771A Pending CN101395575A (zh) 2005-12-19 2006-11-14 用于软件支持的系统和方法

Country Status (4)

Country Link
US (1) US8776042B2 (zh)
EP (1) EP1969460A2 (zh)
CN (2) CN103123582A (zh)
WO (1) WO2007078434A2 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110619235A (zh) * 2018-06-18 2019-12-27 松下电器(美国)知识产权公司 管理方法、管理装置及记录介质

Families Citing this family (54)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6569012B2 (en) * 2001-01-09 2003-05-27 Topcoder, Inc. Systems and methods for coding competitions
GB2374688B (en) * 2001-04-19 2004-12-29 Ibm A method and system for distributing software features to a computer
CN1679034A (zh) * 2002-04-08 2005-10-05 托普科德公司 用于对软件开发服务征求建议的系统以及方法
US20060248504A1 (en) * 2002-04-08 2006-11-02 Hughes John M Systems and methods for software development
US8776042B2 (en) 2002-04-08 2014-07-08 Topcoder, Inc. Systems and methods for software support
EP1891496A4 (en) * 2005-04-15 2011-11-30 Kt Freetel Co Ltd METHOD FOR DISTRIBUTING CONTENTS
US7707559B2 (en) * 2005-08-30 2010-04-27 International Business Machines Corporation Analysis of errors within computer code
WO2007084720A2 (en) * 2006-01-20 2007-07-26 Topcoder, Inc. System and method for design development
US20070220479A1 (en) * 2006-03-14 2007-09-20 Hughes John M Systems and methods for software development
KR100796374B1 (ko) * 2006-04-21 2008-01-21 (주) 디엠디 네트워크 기반의 정보기술 솔루션 개발관리 시스템 및 그방법
US20070250378A1 (en) * 2006-04-24 2007-10-25 Hughes John M Systems and methods for conducting production competitions
US20080052146A1 (en) * 2006-05-01 2008-02-28 David Messinger Project management system
US20080098109A1 (en) * 2006-10-20 2008-04-24 Yassine Faihe Incident resolution
US7584385B2 (en) * 2006-12-22 2009-09-01 Xerox Corporation Method and system for customer support
US20080167960A1 (en) * 2007-01-08 2008-07-10 Topcoder, Inc. System and Method for Collective Response Aggregation
US8010397B1 (en) * 2007-01-23 2011-08-30 Sprint Communications Company L.P. Enterprise infrastructure development systems and methods
US20080196000A1 (en) * 2007-02-14 2008-08-14 Fernandez-Lvern Javier System and method for software development
FR2913295B1 (fr) * 2007-03-02 2010-09-10 Sagem Comm Procede de telechargement dans un boitier recepteur/ decodeur de television.
US8073792B2 (en) 2007-03-13 2011-12-06 Topcoder, Inc. System and method for content development
US8621434B2 (en) * 2007-06-26 2013-12-31 Topcoder, Inc. System and method for distributed software testing
US9122762B2 (en) * 2007-07-18 2015-09-01 Ebay, Inc. Method and system to maintain a web page
US8006136B2 (en) * 2007-10-08 2011-08-23 Wurldtech Security Technologies Automatic grammar based fault detection and isolation
US9026394B2 (en) 2007-10-08 2015-05-05 Wurldtech Security Technologies Testing and mitigation framework for networked devices
US20090192849A1 (en) * 2007-11-09 2009-07-30 Hughes John M System and method for software development
US8484752B2 (en) * 2007-11-14 2013-07-09 Caterpillar Inc. Verifying authenticity of electronic control unit code
US8321933B2 (en) * 2007-11-14 2012-11-27 Caterpillar Inc. Securing electronic control unit code
US8881112B2 (en) * 2007-12-19 2014-11-04 International Business Machines Corporation Quality measure tool for a composite application
WO2009089447A1 (en) * 2008-01-11 2009-07-16 Topcoder, Inc. System and method for conducting competitions
EP2260385A4 (en) 2008-02-27 2017-08-30 Wurldtech Security Technologies Testing framework for control devices
WO2009105883A1 (en) 2008-02-27 2009-09-03 Wurldtech Security Technologies System and method for grammar based test planning
US20100030626A1 (en) * 2008-05-08 2010-02-04 Hughes John M Distributed software fault identification and repair
US7761357B2 (en) * 2008-05-23 2010-07-20 Oracle International Corporation Intercompany transfer profit tracking system
US8276122B2 (en) * 2008-09-24 2012-09-25 International Business Machines Corporation Method to speed up creation of JUnit test cases
US8943493B2 (en) * 2008-11-18 2015-01-27 Red Hat, Inc. Automation of application deployment
US20100299650A1 (en) * 2009-05-20 2010-11-25 International Business Machines Corporation Team and individual performance in the development and maintenance of software
US20110307802A1 (en) * 2010-06-10 2011-12-15 Shreyank Gupta Review of requests to modify contextual data of a programming interface
US20110307452A1 (en) * 2010-06-11 2011-12-15 Salesforce.Com, Inc. Performing code analysis in a multi-tenant database system
US8386504B1 (en) * 2010-07-06 2013-02-26 The Mathworks, Inc. System and method for file differencing with importance ranking
US9183122B2 (en) * 2012-09-14 2015-11-10 International Business Machines Corporation Automated program testing to facilitate recreation of test failure
US20140189649A1 (en) * 2013-01-01 2014-07-03 Redsource Intereactive, Llc Online Community-Based Expert Quality Assurance
US10325298B2 (en) 2013-01-22 2019-06-18 General Electric Company Systems and methods for a non-destructive testing ecosystem
EP2757468A1 (en) * 2013-01-22 2014-07-23 Siemens Aktiengesellschaft Apparatus and method for managing a software development and maintenance system
US20140289719A1 (en) * 2013-03-20 2014-09-25 Google Inc. Automatic version management
WO2014149590A1 (en) * 2013-03-21 2014-09-25 The Procter & Gamble Company Systems and methods for software development
US9342784B1 (en) * 2013-08-05 2016-05-17 VCE Company, Inc. Rule based module for analyzing computing environments
US20150086183A1 (en) * 2013-09-26 2015-03-26 Microsoft Corporation Lineage of user generated content
CN104360945B (zh) * 2014-11-18 2017-07-07 电信科学技术第十研究所 一种测试用例筛选的计算机实现的方法、计算机及系统
US20160149836A1 (en) * 2014-11-26 2016-05-26 Ecrio, Inc. Communication and Messaging Architecture for Affiliated Real-Time Rich Communications Client Devices
US9383976B1 (en) * 2015-01-15 2016-07-05 Xerox Corporation Methods and systems for crowdsourcing software development project
CN104899143B (zh) * 2015-06-15 2018-04-17 中国航空无线电电子研究所 提供数据挖掘的软件同行评审系统实现装置
IN2015CH03905A (zh) * 2015-07-30 2015-08-14 Wipro Ltd
US9811327B2 (en) 2015-12-21 2017-11-07 Quixey, Inc. Dependency-aware transformation of multi-function applications for on-demand execution
CN106227657A (zh) * 2016-07-18 2016-12-14 浪潮(北京)电子信息产业有限公司 一种虚拟化云系统的持续集成方法和装置
US11321644B2 (en) * 2020-01-22 2022-05-03 International Business Machines Corporation Software developer assignment utilizing contribution based mastery metrics

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020144255A1 (en) * 2001-01-09 2002-10-03 Anderson Thomas G. Distributed software development tool
US6658642B1 (en) * 2000-06-21 2003-12-02 International Business Machines Corporation System, method and program product for software development
CN1547700A (zh) * 2001-08-30 2004-11-17 �Ҵ���˾ 分发软件所用的集成管理系统和方法
CN1679034A (zh) * 2002-04-08 2005-10-05 托普科德公司 用于对软件开发服务征求建议的系统以及方法

Family Cites Families (127)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4525599A (en) 1982-05-21 1985-06-25 General Computer Corporation Software protection methods and apparatus
US5697844A (en) 1986-03-10 1997-12-16 Response Reward Systems, L.C. System and method for playing games and rewarding successful players
US5799320A (en) * 1989-08-23 1998-08-25 John R. Klug Remote multiple-user editing system and method
US5195033A (en) 1990-06-08 1993-03-16 Assessment Systems, Inc. Testing system including removable storage means for transfer of test related data and means for issuing a certification upon successful completion of the test
US5963916A (en) 1990-09-13 1999-10-05 Intouch Group, Inc. Network apparatus and method for preview of music products and compilation of market data
JPH05165610A (ja) * 1991-12-13 1993-07-02 Hitachi Ltd ソフトウェア開発環境の生成および保守方法
US5987149A (en) 1992-07-08 1999-11-16 Uniscore Incorporated Method for scoring and control of scoring open-ended assessments using scorers in diverse locations
US5565316A (en) 1992-10-09 1996-10-15 Educational Testing Service System and method for computer based testing
US5794207A (en) 1996-09-04 1998-08-11 Walker Asset Management Limited Partnership Method and apparatus for a cryptographically assisted commercial network system designed to facilitate buyer-driven conditional purchase offers
JP3776117B2 (ja) 1993-09-30 2006-05-17 エデュケーショナル・テスティング・サービス コンピュータによるテストを管理するための集中システム及び方法
US6085978A (en) 1994-08-17 2000-07-11 Metrologic Instruments, Inc. Holographic laser scanners of modular construction and method and apparatus for designing and manufacturing the same
US5779549A (en) 1996-04-22 1998-07-14 Walker Assest Management Limited Parnership Database driven online distributed tournament system
US6193610B1 (en) 1996-01-05 2001-02-27 William Junkin Trust Interactive television system and methodology
US6264560B1 (en) 1996-01-19 2001-07-24 Sheldon F. Goldberg Method and system for playing games on a network
US5823879A (en) 1996-01-19 1998-10-20 Sheldon F. Goldberg Network gaming system
US5835896A (en) 1996-03-29 1998-11-10 Onsale, Inc. Method and system for processing and transmitting electronic auction information
US5947747A (en) 1996-05-09 1999-09-07 Walker Asset Management Limited Partnership Method and apparatus for computer-based educational testing
US5995951A (en) * 1996-06-04 1999-11-30 Recipio Network collaboration method and apparatus
US5862223A (en) 1996-07-24 1999-01-19 Walker Asset Management Limited Partnership Method and apparatus for a cryptographically-assisted commercial network system designed to facilitate and support expert-based commerce
US5933811A (en) 1996-08-20 1999-08-03 Paul D. Angles System and method for delivering customized advertisements within interactive communication systems
US6293865B1 (en) 1996-11-14 2001-09-25 Arcade Planet, Inc. System, method and article of manufacture for tournament play in a network gaming system
WO1998043223A1 (en) 1997-03-21 1998-10-01 Educational Testing Service System and method for on-line essay evaluation
US6012984A (en) 1997-04-11 2000-01-11 Gamesville.Com,Inc. Systems for providing large arena games over computer networks
US6163805A (en) 1997-10-07 2000-12-19 Hewlett-Packard Company Distributed automated testing system
US5970475A (en) 1997-10-10 1999-10-19 Intelisys Electronic Commerce, Llc Electronic procurement system and method for trading partners
US6112049A (en) 1997-10-21 2000-08-29 The Riverside Publishing Company Computer network based testing system
US6088679A (en) 1997-12-01 2000-07-11 The United States Of America As Represented By The Secretary Of Commerce Workflow management employing role-based access control
US6267601B1 (en) 1997-12-05 2001-07-31 The Psychological Corporation Computerized system and method for teaching and assessing the holistic scoring of open-ended questions
US6010403A (en) 1997-12-05 2000-01-04 Lbe Technologies, Inc. System and method for displaying an interactive event
US6233332B1 (en) 1998-06-03 2001-05-15 Avaya Technology Corp. System for context based media independent communications processing
US6397197B1 (en) 1998-08-26 2002-05-28 E-Lynxx Corporation Apparatus and method for obtaining lowest bid from information product vendors
US6631404B1 (en) 1998-09-11 2003-10-07 Lv Partners, L.P. Method and system for conducting a contest using a network
US6636892B1 (en) 1998-09-11 2003-10-21 Lv Partners, L.P. Method for conducting a contest using a network
US6791588B1 (en) 1998-09-11 2004-09-14 L.V. Partners, L.P. Method for conducting a contest using a network
US6230146B1 (en) 1998-09-18 2001-05-08 Freemarkets, Inc. Method and system for controlling closing times of electronic auctions involving multiple lots
US6301574B1 (en) 1998-11-06 2001-10-09 Efirms.Com, Inc. System for providing business information
US6055511A (en) 1998-11-30 2000-04-25 Breault Research Organization, Inc. Computerized incentive compensation
US6513042B1 (en) 1999-02-11 2003-01-28 Test.Com Internet test-making method
US20020026321A1 (en) 1999-02-26 2002-02-28 Sadeg M. Faris Internet-based system and method for fairly and securely enabling timed-constrained competition using globally time-sychronized client subsystems and information servers having microsecond client-event resolution
US6295513B1 (en) 1999-03-16 2001-09-25 Eagle Engineering Of America, Inc. Network-based system for the manufacture of parts with a virtual collaborative environment for design, developement, and fabricator selection
US6963850B1 (en) 1999-04-09 2005-11-08 Amazon.Com, Inc. Computer services for assisting users in locating and evaluating items in an electronic catalog based on actions performed by members of specific user communities
US6434738B1 (en) 1999-04-22 2002-08-13 David Arnow System and method for testing computer software
US6174237B1 (en) 1999-05-21 2001-01-16 John H. Stephenson Method for a game of skill tournament
US6718535B1 (en) 1999-07-30 2004-04-06 Accenture Llp System, method and article of manufacture for an activity framework design in an e-commerce based environment
US6662194B1 (en) 1999-07-31 2003-12-09 Raymond Anthony Joao Apparatus and method for providing recruitment information
US6431875B1 (en) 1999-08-12 2002-08-13 Test And Evaluation Software Technologies Method for developing and administering tests over a network
US6356909B1 (en) 1999-08-23 2002-03-12 Proposal Technologies Network, Inc. Web based system for managing request for proposal and responses
AU7072900A (en) * 1999-08-24 2001-03-19 Elance, Inc. Method and apparatus for an electronic marketplace for services having a collaborative workspace
US6345239B1 (en) 1999-08-31 2002-02-05 Accenture Llp Remote demonstration of business capabilities in an e-commerce environment
US7139999B2 (en) 1999-08-31 2006-11-21 Accenture Llp Development architecture framework
US6427132B1 (en) 1999-08-31 2002-07-30 Accenture Llp System, method and article of manufacture for demonstrating E-commerce capabilities via a simulation on a network
US6606615B1 (en) 1999-09-08 2003-08-12 C4Cast.Com, Inc. Forecasting contest
US6532448B1 (en) 1999-11-19 2003-03-11 Insightful Corporation Contest server
US6341212B1 (en) 1999-12-17 2002-01-22 Virginia Foundation For Independent Colleges System and method for certifying information technology skill through internet distribution examination
AU3076801A (en) 1999-12-27 2001-07-09 Pitchware, Inc. Method and apparatus for a cryptographically assisted commercial network system designed to facilitate purchase and licensing
US20010039529A1 (en) 2000-01-07 2001-11-08 Hoffman Roger P. System and process for requesting a quotation
US20020046091A1 (en) 2000-01-11 2002-04-18 Robert Mooers Interactive incentive marketing system
US6578008B1 (en) 2000-01-12 2003-06-10 Aaron R. Chacker Method and system for an online talent business
US20010034631A1 (en) 2000-01-21 2001-10-25 Kiselik Daniel R. Method and apparatus for the automatic selection of parties to an arrangement between a requestor and a satisfier of selected requirements
US20010049648A1 (en) 2000-02-15 2001-12-06 Richard Naylor Electronic marketplace for auctioning non-exclusive rights in intangible property
US6907546B1 (en) * 2000-03-27 2005-06-14 Accenture Llp Language-driven interface for an automated testing framework
US20010049615A1 (en) 2000-03-27 2001-12-06 Wong Christopher L. Method and apparatus for dynamic business management
US6701514B1 (en) * 2000-03-27 2004-03-02 Accenture Llp System, method, and article of manufacture for test maintenance in an automated scripting framework
US7082474B1 (en) 2000-03-30 2006-07-25 United Devices, Inc. Data sharing and file distribution method and associated distributed processing system
US20010037281A1 (en) 2000-04-13 2001-11-01 Jason French Request for quote (RFQ) system and method
JP2001357232A (ja) 2000-06-12 2001-12-26 Fujino Jimusho:Kk アーティスト支援仲介システム
US20020077902A1 (en) 2000-06-30 2002-06-20 Dwight Marcus Method and apparatus for verifying review and comprehension of information
US20020019844A1 (en) 2000-07-06 2002-02-14 Kurowski Scott J. Method and system for network-distributed computing
US20020120501A1 (en) 2000-07-19 2002-08-29 Bell Christopher Nathan Systems and processes for measuring, evaluating and reporting audience response to audio, video, and other content
US6915266B1 (en) 2000-07-31 2005-07-05 Aysha Saeed Method and system for providing evaluation data from tracked, formatted administrative data of a service provider
US6604997B2 (en) 2000-08-17 2003-08-12 Worldwinner.Com, Inc. Minimizing the effects of chance
US20020038221A1 (en) 2000-08-31 2002-03-28 Tiwary Vivek John Competitive reward commerce model
US6952678B2 (en) 2000-09-01 2005-10-04 Askme Corporation Method, apparatus, and manufacture for facilitating a self-organizing workforce
US20020107972A1 (en) 2000-09-19 2002-08-08 Keane Kerry C. System and method for distributing media content
US6895382B1 (en) 2000-10-04 2005-05-17 International Business Machines Corporation Method for arriving at an optimal decision to migrate the development, conversion, support and maintenance of software applications to off shore/off site locations
US7162433B1 (en) 2000-10-24 2007-01-09 Opusone Corp. System and method for interactive contests
US7027997B1 (en) * 2000-11-02 2006-04-11 Verizon Laboratories Inc. Flexible web-based interface for workflow management systems
US20030233278A1 (en) 2000-11-27 2003-12-18 Marshall T. Thaddeus Method and system for tracking and providing incentives for tasks and activities and other behavioral influences related to money, individuals, technology and other assets
US6569012B2 (en) * 2001-01-09 2003-05-27 Topcoder, Inc. Systems and methods for coding competitions
WO2002056530A2 (en) 2001-01-12 2002-07-18 T Thaddeus Marshall Method and system for tracking and providing incentives for time and attention of persons and for timing of performance of tasks
US7672897B2 (en) 2001-01-24 2010-03-02 Scott Chung Method of community purchasing through the internet
US20030018559A1 (en) 2001-01-24 2003-01-23 Chung Scott Lee Method of producing and selling popular works of art through the internet
US20020156668A1 (en) 2001-02-16 2002-10-24 Morrow Martin E. Remote project development method and system
US7234131B1 (en) * 2001-02-21 2007-06-19 Raytheon Company Peer review evaluation tool
EP1402352A4 (en) * 2001-02-22 2010-08-25 Accenture Global Services Gmbh DISTRIBUTED DEVELOPMENT ENVIRONMENT FOR BUILDING INTERNET APPLICATIONS BY DEVELOPERS AT DISCONTINUED LOCATIONS
US7899721B2 (en) 2001-02-27 2011-03-01 Accenture Global Services Gmbh E-commerce system, method and computer program product
US20020124048A1 (en) 2001-03-05 2002-09-05 Qin Zhou Web based interactive multimedia story authoring system and method
USH2201H1 (en) 2001-03-19 2007-09-04 The United States Of America As Represented By The Secretary Of The Air Force Software architecture and design for facilitating prototyping in distributed virtual environments
US20020161696A1 (en) 2001-04-09 2002-10-31 Gebert Carol A. Corporate market
US20030009740A1 (en) * 2001-06-11 2003-01-09 Esoftbank (Beijing) Software Systems Co., Ltd. Dual & parallel software development model
US6993496B2 (en) 2001-06-22 2006-01-31 Boombacker, Inc. Method and system for determining market demand based on consumer contributions
US7416488B2 (en) 2001-07-18 2008-08-26 Duplicate (2007) Inc. System and method for playing a game of skill
LU90817B1 (fr) 2001-08-20 2003-02-21 Memba S A R L Outil de modélisation et de gestion de projets
US7603626B2 (en) 2001-09-10 2009-10-13 Disney Enterprises, Inc. Method and system for creating a collaborative work over a digital network
US20050223318A1 (en) 2001-11-01 2005-10-06 Automatic E-Learning, Llc System for implementing an electronic presentation from a storyboard
US6938048B1 (en) 2001-11-14 2005-08-30 Qgenisys, Inc. Universal task management system, method and product for automatically managing remote workers, including automatically training the workers
US6859523B1 (en) 2001-11-14 2005-02-22 Qgenisys, Inc. Universal task management system, method and product for automatically managing remote workers, including assessing the work product and workers
US7155400B1 (en) 2001-11-14 2006-12-26 Qgenisys, Inc. Universal task management system, method and product for automatically managing remote workers, including automatically recruiting workers
US20030115570A1 (en) * 2001-12-13 2003-06-19 International Business Machines Corporation Development environment for building software applications that mimics the target environment
US7386831B2 (en) * 2002-01-09 2008-06-10 Siemens Communications, Inc. Interactive collaborative facility for inspection and review of software products
US7162198B2 (en) 2002-01-23 2007-01-09 Educational Testing Service Consolidated Online Assessment System
US7131071B2 (en) 2002-03-29 2006-10-31 Siebel Systems, Inc. Defining an approval process for requests for approval
US20060248504A1 (en) 2002-04-08 2006-11-02 Hughes John M Systems and methods for software development
US7778866B2 (en) 2002-04-08 2010-08-17 Topcoder, Inc. Systems and methods for software development
US8776042B2 (en) 2002-04-08 2014-07-08 Topcoder, Inc. Systems and methods for software support
US8589861B2 (en) 2002-11-06 2013-11-19 Code Valley Corp Pty Ltd Code generation
US20040167796A1 (en) 2003-02-21 2004-08-26 Arteis, Inc. Systems and methods for network-based design review
US20050114829A1 (en) 2003-10-30 2005-05-26 Microsoft Corporation Facilitating the process of designing and developing a project
US20060015840A1 (en) * 2004-03-31 2006-01-19 Wendall Marvel Parameter-based software development, distribution, and disaster recovery
US7207568B2 (en) 2004-04-07 2007-04-24 Nascar, Inc. Method of conducting a racing series
US7870014B2 (en) 2004-10-08 2011-01-11 Accenture Global Services Gmbh Performance management system
US20070146360A1 (en) 2005-12-18 2007-06-28 Powerproduction Software System And Method For Generating 3D Scenes
WO2007084720A2 (en) 2006-01-20 2007-07-26 Topcoder, Inc. System and method for design development
WO2007098105A2 (en) 2006-02-21 2007-08-30 Topcoder, Inc. Internet contest
US20070220479A1 (en) 2006-03-14 2007-09-20 Hughes John M Systems and methods for software development
US8224696B2 (en) 2006-04-17 2012-07-17 Yahoo! Inc. Automated reward management for network-based contests
US20070250378A1 (en) 2006-04-24 2007-10-25 Hughes John M Systems and methods for conducting production competitions
US20080052146A1 (en) 2006-05-01 2008-02-28 David Messinger Project management system
US10783458B2 (en) 2006-05-01 2020-09-22 Topcoder, Inc. Systems and methods for screening submissions in production competitions
WO2007143091A2 (en) 2006-06-02 2007-12-13 Topcoder, Inc. System and method for staffing and rating
US20080167960A1 (en) 2007-01-08 2008-07-10 Topcoder, Inc. System and Method for Collective Response Aggregation
US20080196000A1 (en) 2007-02-14 2008-08-14 Fernandez-Lvern Javier System and method for software development
US20080281616A1 (en) 2007-02-27 2008-11-13 Cameron Johnson Innovation system
US8073792B2 (en) 2007-03-13 2011-12-06 Topcoder, Inc. System and method for content development
US7840413B2 (en) 2007-05-09 2010-11-23 Salesforce.Com, Inc. Method and system for integrating idea and on-demand services
US8621434B2 (en) 2007-06-26 2013-12-31 Topcoder, Inc. System and method for distributed software testing
US20090203413A1 (en) 2008-02-13 2009-08-13 Anthony Jefts System and method for conducting competitions

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6658642B1 (en) * 2000-06-21 2003-12-02 International Business Machines Corporation System, method and program product for software development
US20020144255A1 (en) * 2001-01-09 2002-10-03 Anderson Thomas G. Distributed software development tool
CN1547700A (zh) * 2001-08-30 2004-11-17 �Ҵ���˾ 分发软件所用的集成管理系统和方法
CN1679034A (zh) * 2002-04-08 2005-10-05 托普科德公司 用于对软件开发服务征求建议的系统以及方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110619235A (zh) * 2018-06-18 2019-12-27 松下电器(美国)知识产权公司 管理方法、管理装置及记录介质

Also Published As

Publication number Publication date
US8776042B2 (en) 2014-07-08
WO2007078434A8 (en) 2008-02-14
CN101395575A (zh) 2009-03-25
EP1969460A2 (en) 2008-09-17
WO2007078434A2 (en) 2007-07-12
US20060184928A1 (en) 2006-08-17

Similar Documents

Publication Publication Date Title
CN103123582A (zh) 用于软件支持的系统和方法
Aloini et al. Modelling and assessing ERP project risks: A Petri Net approach
US7778866B2 (en) Systems and methods for software development
Petersen et al. Choosing component origins for software intensive systems: In-house, COTS, OSS or outsourcing?—A case survey
Koziolek Automated improvement of software architecture models for performance and other quality attributes
CN101091173A (zh) 用于软件开发的系统和方法
US20030163357A1 (en) Method and apparatus for an information systems improvement planning and management process
Bhargava et al. Software Engineering: Conceptualize
Raffo et al. Moving up the CMMI capability and maturity levels using simulation
Yiftachel et al. Resource allocation among development phases: an economic approach
Gomillion The co-creation of information systems
Smith et al. Process of Measuring the Maintainability of Commercial Off-the-Shelf (COTS) Based Systems: A Complexity Approach
Huang Software quality analysis: A value-based approach
Arora et al. Towards Developing an Open-Infrastructure for Assessing the Progress, Success, and Impacts of CyberInfrastructure Projects
AU2024203441A1 (en) Rapid prototyping model
Jewell Performance Engineering and Management Method—A Holistic Approach to Performance Engineering
Akgün Assessing application lifecycle management potentials: An exploratory industrial case study
Moser Improving the software quality assurance process in academic software development with gamification and continuous feedback techniques
Koskinen et al. Evaluation of software evolution options
Zambrana et al. SMC/AXE
Anderson et al. Army Workshop on Lessons Learned from Software Upgrade Programs
Dumke et al. Software Process Measurement and Control
TING ISO/IEC JTC 1/SC 7
Haug et al. Summaries of PIE reports
Rouwette et al. Improving operations management by synthesizing participant knowledge and system data

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C02 Deemed withdrawal of patent application after publication (patent law 2001)
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20130529