This application is a continuation application claiming priority to Ser. No. 13/013,478, filed on Jan. 25, 2011. 
    
    
     BACKGROUND 
     The present application relates to the field of computers, and specifically to the use of computers in management of software design, coding and other work events, normally used in building software applications. Even more particularly, the present invention relates to the use of computers in creating events, scoring submitted designs and code, and rewarding event participants for submissions that meet an acceptance criteria. 
     BRIEF SUMMARY 
     A computer implemented apparatus and computer program product provides design, coding, and other work challenge events and competition events associated with building a software application. The apparatus includes a portal for communicating the events to potential participants and receives computer software designs and code submissions from selected participants. An event manager server creates the events. The apparatus includes a catalog of reusable code assets and a pricing calculator on the event manager server for pricing the event based on use of the catalog and based on results of previous events as determined by an analytics engine. Participants are selected using a selector subsystem. Computer code submitted by the selected participants is executed in a challenge server layer and also evaluated and scored. A design event may require creation of a formal document or use of a design tool such a Rational Software Architect available from International Business Machines Corporation of Armonk, N.Y. A payment application rewards participants according to the event specifications and the scoring results or other outcome meets the event specifications and a minimum threshold scoring result. 
     A major benefit of the present invention is that challenge and competition events are completed in short cycles. Research has shown that work that is properly broken down to a consumable level can be completed with the highest chance of success. Although, any cycle time may be used with the present invention, typically events are conducted in short cycles, usually of three to seven days duration using work specifications that have been broken down to a consumable level. 
    
    
     
       BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWINGS 
         FIG. 1  depicts an exemplary computer in which the present invention may be implemented; 
         FIGS. 2 a  and 2 b    are block diagrams showing the progression of a challenge event and a competition event respectively; and 
         FIG. 3  is a block diagram of one embodiment of the present invention. 
     
    
    
     DETAILED DESCRIPTION 
     As will be appreciated by one skilled in the art, aspects of the present invention may be embodied as a system or computer program product. Accordingly, aspects of the present invention may take the form of an entirely hardware embodiment, and entirely software embodiment (including firmware, resident software, micro-code, etc.) or an embodiment combining software and hardware aspects that may all generally be referred to herein as an “apparatus” “module” or “system.” Furthermore aspects of the present invention may take the form of a computer program product embodied in one or more computer readable storage mediums(s) having computer readable program code embodied thereon. 
     A computer readable storage medium may be, for example, but not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, or device, or any suitable combination of the foregoing. More specific examples (a non-exhaustive list) of the computer readable storage medium would include the following: an electrical connection having one or more wires, a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only (EPROM or Flash memory), a portable compact disc read-only memory (CD-ROM), an optical storage device, a magnetic storage device, or any suitable combination of the foregoing. In the context of this document, a computer readable storage medium may be any tangible medium that can contain, or store a program for use by or in connection with an instruction execution system, apparatus, or device. 
     Computer program code for carrying out operations for aspects of the present invention may be written in any combination of one or more programming languages, including an object oriented programming language such as Java, Smalltalk, C++ or the like and conventional procedural programming languages, such as the “C” programming language or similar programming languages. The program code may execute entirely on the user&#39;s computer, partly on the user&#39;s computer, as a stand-alone software package, partly on the user&#39;s computer and partly on a remote computer or entirely on the remote computer or server. In the latter scenario, the remote computer may be connected to the user&#39;s computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider). 
     Aspects of the present invention are described below with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems) and computer program products according to embodiments of the invention. It will be understood that each block of the flowchart illustrations and/or block diagrams, and combinations of blocks in the flowchart illustrations and/or block diagrams, can be implemented by computer program instructions. These computer program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks. 
     These computer program instructions may also be stored in a computer readable medium that can direct a computer, other programmable data processing apparatus, or other devices to function in a particular manner, such that the instructions stored in the computer readable medium produce an article of manufacture including instructions which implement the function/act specified in the flowchart and/or block diagram block or blocks. 
     The computer program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other devices to cause a series of operational steps to be performed on the computer, other programmable apparatus or other devices to produce a computer implemented process such that the instructions which execute on the computer or other programmable apparatus provide processes for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks. 
     With reference now to the figures, and in particular to  FIG. 1 , there is depicted a block diagram of an exemplary computer  102 , which may be utilized by the present invention. Note that some or all of the exemplary architecture, including both depicted hardware and software, shown for and within computer  102  may be utilized by software deploying server  150 . 
     Computer  102  includes a processor  104  that is coupled to a system bus  106 . Processor  104  may utilize one or more processors, each of which has one or more processor cores. A video adapter  108 , which drives/supports a display  110 , is also coupled to system bus  106 . System bus  106  is coupled via a bus bridge  112  to an input/output (I/O) bus  114 . An I/O interface  116  is coupled to I/O bus  114 . I/O interface  116  affords communication with various I/O devices, including a keyboard  118 , a mouse  120 , a media tray  122  (which may include storage devices such as CD-ROM drives, multi-media interfaces, etc.), a printer  124 , and external USB port(s)  126 . While the format of the ports connected to I/O interface  116  may be any known to those skilled in the art of computer architecture, in one embodiment some or all of these ports are universal serial bus (USB) ports. 
     As depicted, computer  102  is able to communicate with a software deploying server  150  using a network interface  130 . Network  128  may be an external network such as the Internet, or an internal network such as an Ethernet or a virtual private network (VPN). 
     A hard drive interface  132  is also coupled to system bus  106 . Hard drive interface  132  interfaces with a hard drive  134 . In one embodiment, hard drive  134  populates a system memory  136 , which is also coupled to system bus  106 . System memory is defined as a lowest level of volatile memory in computer  102 . This volatile memory includes additional higher levels of volatile memory (not shown), including, but not limited to, cache memory, registers and buffers. Data that populates system memory  136  includes computer  102 &#39;s operating system (OS)  138  and application programs  144 . 
     OS  138  includes a shell  140 , for providing transparent user access to resources such as application programs  144 . Generally, shell  140  is a program that provides an interpreter and an interface between the user and the operating system. More specifically, shell  140  executes commands that are entered into a command line user interface or from a file. Thus, shell  140 , also called a command processor, is generally the highest level of the operating system software hierarchy and serves as a command interpreter. The shell provides a system prompt, interprets commands entered by keyboard, mouse, or other user input media, and sends the interpreted command(s) to the appropriate lower levels of the operating system (e.g., a kernel  142 ) for processing. Note that while shell  140  is a text-based, line-oriented user interface, the present invention will equally well support other user interface modes, such as graphical, voice, gestural, etc. 
     As depicted, OS  138  also includes kernel  142 , which includes lower levels of functionality for OS  138 , including providing essential services required by other parts of OS  138  and application programs  144 , including memory management, process and task management, disk management, and mouse and keyboard management. 
     Application programs  144  include a renderer, shown in exemplary manner as a browser  146 . Browser  146  includes program modules and instructions enabling a world wide web (WWW) client (i.e., computer  102 ) to send and receive network messages to the Internet using hypertext transfer protocol (HTTP) messaging, thus enabling communication with software deploying server  150  and other computer systems. 
     Application programs  144  in computer  102 &#39;s system memory (as well as software deploying server  150 &#39;s system memory) also include a portal  148 . Portal  148  includes code for implementing the processes described below, including those described in  FIGS. 2-3 . In one embodiment, computer  102  is able to download portal  148  from software deploying server  150 , including in an on-demand basis, wherein the code in portal  148  is not downloaded until needed for execution to define and/or implement the invention described herein. In other embodiments, the portal is a web based application that is accessed from a client computer over a network using a web browser. Note further that, in one embodiment of the present invention, software deploying server  150  performs all of the functions associated with the present invention, thus freeing computer  102  from having to use its own internal computing resources to execute portal  148 . 
     The hardware elements depicted in computer  102  are not intended to be exhaustive, but rather are representative to highlight essential components required by the present invention. For instance, computer  102  may include alternate memory storage devices such as magnetic cassettes, digital versatile disks (DVDs), Bernoulli cartridges, and the like. These and other variations are intended to be within the spirit and scope of the present invention. 
     In  FIG. 2 a   , there is shown a block diagram depicting the progression of steps  210 - 222  performed during a challenge event. 
     In step  210  a detailed description of a challenge event is posted on a portal. A challenge event is also referred to as a component herein, and the detailed description is also referred to as a specification herein. The specification may include use of certain reusable code assets from a catalog posted on the portal. The specification also includes the results of a pricing calculator described below from an event manager server. 
     In step  212 , participants (also referred to herein as vendor players) propose their respective solutions and terms such as cost, schedule, or approaches to provide a design or code their solution or provide another outcome based on the selected event. Participants may accept the price in the specification or propose a higher or lower price. Other terms from the specification may also be changed in their proposal. A single participant is then chosen for each challenge event using a selector subsystem (not shown). An important consideration in making the selection is each potential participant&#39;s digital reputation. In every previous event, participants are evaluated on reliability, i.e., did they submit and submit on time? They are scored on adherence to specifications using a standard scorecard with a 0-100 rating scale. Additional elements are also scored, including frequency of reuse from the catalog, the type of events the participant is working on, and how recent their event history is. All of these elements become part of the participant&#39;s digital reputation which is continuously maintained, updated, and available for use by the selector subsystem. Reliability of both submissions and wins may be displayed by month as a time line graph in a digital reputation display. The digital reputation of participants may be stored in a database accessible by the challenge server layer. After producing the work, the chosen single participant then delivers his solution in step  214 . 
     In step  216 , a challenge server layer in communication with the portal, evaluates submitted computer code. For example, a static analysis of submitted computer code may be performed. The code is validated for quality and evaluated using objective criteria, such as a published scorecard. If fixes are required, the participant applies the fixes in step  218 . This process can iterate. Once the outcome (the submitted design or code) meets the specification and is validated for quality, it is accepted and is delivered to the client who originally requested the coding event. 
     In step  220 , compensation is distributed to the participant. The submitted code is added to the catalog of reusable assets. Compensation may be a payment in actual dollars (green dollars), a credit of billable hour, digital reputation credit, or any other type of compensation known in the art and agreed to by the participant at the time the participant is chosen for the challenge coding. The client is then billed for the challenge event in step  222 . 
     In  FIG. 2 b   , the steps of a competition event are shown. In step  250 , a detailed description (specification) of a competition event (component) is posted to the same portal used for challenge events as described above. The results from the same pricing calculator described above are included in the competition event specification. 
     In step  252 , approved participants (company staff) register to provide their solutions to the specification. Some or all of the approved participants may be the same individuals who participant in challenge event as described above. Other limitations may be placed on who may be participants, for example, participant may be limited to employees of a particular company or employees who are temporarily unassigned to other projects. The approved participants deliver their solutions according to a time schedule in the specification, in step  254 . 
     In step  256 , each of the submitted code solutions for a competition is evaluated by performing a static analysis of the submitted computer code. The quality is validated and each solution is scored using a published scorecard. A single best solution is selected as the winner of the competition. A second place winner may also be selected. Other winners may also be selected according to the competition event description. 
     If fixes are needed they are applied in step  258  and the winning software design or computer code is delivered to the client who requested the competition be held. 
     Compensation is distributed in step  260 . If more than one winner is selected, then more than one participant my receive compensation. As above, the compensation may be in the form of green dollars, billable hours credit, or any other form of compensation. The first place wining solution is added to the catalog of reusable assets. 
     In step  262 , the client is billed for the outcome (first place winning software design or computer code). 
     In  FIG. 3 , there is shown a system block diagram of the present invention. An engagement team  301  operates the system on behalf of one or more clients. The system includes an event manager server for creating the events. The engagement team uses block  303  to forecast demand for events and manage capacity by sourcing and supplying staff  304  for managing events. This may include procuring channel partners, as well as registering participants from suppliers  302 , for both challenge events and competition events in block  324 . Outcomes are delivered to clients by engagement team  301  from block  318 . 
     Rules for event specifications are developed and event staff trained using blocks  305  and  306  respectively. 
     A catalog of reusable assets is structured in block  307 . After each event, the delivered solution is added to the catalog in block  308 . Other code assets may be added in block  309 . 
     A project comprising one or more events is registered by block  310 . The event includes the results of pricing calculator  311  described below. The requirements in the specification of an event are validated in block  312 . However, block  312  may be bypassed by an event leader who is certified to operate events without assistance. 
     An event proceeds by dispatching a work request in block  313  and is executed in block  314  by event manager  323 . In block  315 , solutions are executed, evaluated for quality, and scored. 
     Selector subsystem  316  selects a winner for competition events. Final accounting, including compensating the participants(s) and billing the client, is preformed in block  317 . The solution is delivered to the client using block  318  by engagement team  301 . 
     The performance of the entire system is continually improved by gathering market intelligence in block  319  and by monitoring event performance in block  320 . Additional event types may be developed in block  321 . The event platforms, including the portal, the pricing calculator, and catalog, are managed in block  322 . In block  324 , overall performance of the system is analyzed and optimized. 
     In block  325 , the community of participants is promoted. In block  326 , the reputation of the participants is managed and its various compensation methods reviewed for improvement. 
     Pricing calculator  311  is an integrated capability of the event manager server that allows the client or event sponsor to enter characteristics about the event, such as the number of components, use case scenarios, or screens, and receive recommendations for sizing the event based on analytics captured from previous events. Pricing calculator  311  provides a total price for running the event based on size and components from reusable asset catalog  309 . Correctly sizing an event is very important to getting participants to register to work on the event. 
     As noted above, blocks  303  and  304  are important elements and are important features in managing events. A recommendation engine in the portal uses business analytics techniques to manage supply and demand, and to make recommendations for current and future events. Some of the data elements which may be captured by the recommendation engine include:
         event type and technology platform   event duration   event value in points, hours, and dollars   assets specified   number of business rules, use cases, classes, or objects in event specification   event registrants and digital reputations   submission scores   assets reused by participants   scores of delivered solutions
 
The recommendation engine uses this comprehensive outcome level data with business analytics techniques to provide:
   recommendations of participants who would be expected to perform well in an event   recommendations for participants of events that they should consider registering for   recommendations for participants of assets that may help them deliver an outcome more efficiently   success prediction of likelihood of a successful outcome based on event parameters   identifying changes to skills or resources  304  needed to meet forecasted demand for outcomes   alerts for troubled events
 
Various business analytics techniques known in the art may be used such as, but not limited to, computer algorithms in which the parameters are continuously adjusted based on current outcomes, or static models developed from historical data.
       

     The present invention is also used to produce other types of outcomes to support the software development and support lifecycle. These other outcomes are required elements on projects where software code and design is being produced, and therefore, the computer system (portal application) supports the delivery of these additional accessory outcome types in order to assemble a working software system. The portal application allows for a selection on event type, with multiple choices for the different types of software project outcomes represented. The portal allows for outcomes to be requested in the areas of test case creation, test case execution, system architecture deliverables, graphic designs, software component assembly, and idea generation. The scoring method for these types of outcomes is consistent with coding and design events, but the scorecard used and the evaluation criteria are specific to the type of outcome. 
     While there have been shown and described what are at present considered the preferred embodiments of the invention, it will be obvious to those skilled in the art that various changes and modifications may be made therein without departing from the scope of the invention as defined by the appended claims. For example, it will be obvious that some steps shown sequentially may be performed in parallel.
A method and system for managing a challenge event. At least two participants are selected to participate in the challenge event based on determining that the participants are expected to perform well in the challenge event. Selection of the participants utilizes data elements provided for managing the challenge event. Assets of computer code are provided to the participants for assisting the participants to deliver respective submissions as outcomes of participation by the participants in the challenge event. The challenge event is conducted with the participants.