System and method for software development
AssigneeTopCoder, Inc.
InventorJohn M. Hughes
Life of this patent
Estimating the term…
Loading patent…
AssigneeTopCoder, Inc.
InventorJohn M. Hughes
Estimating the term…
This invention relates to a method and apparatus for developing software. In one embodiment, a method for facilitating the distributed development of software components includes providing a skill rating for software developers, communicating specifications for a software component to a subset of the developers, receiving submissions from the developers, scoring the submissions, and selecting one submission to be included in a software repository. In another embodiment, a method for compensating a software developer includes soliciting software developers for the submission of computer software components, receiving software components in response to the solicitation from the developers, evaluating the received software components, selecting one or more of the submissions for potential distribution to the public, and allotting the proceeds from the distribution to the developers.
A method for facilitating the distributed development of software programs comprising:
A method for compensating software developers comprising:
A system for facilitating the distributed development of software programs comprising:
Dependencies are inferred from the claim text.
Drawings are temporarily unavailable. Open the PDF at USPTO
From the US filing history. Foreign family members aren’t listed.
Backward citations are indexed for grants only.
Arrangements for software engineering: software maintenance or management
Arrangements for software engineering: software design
Resource planning, allocation, distributing or scheduling for enterprises or organisations: scheduling, planning or task assignment for a person…
Scheduling, planning or task assignment for a person or group: skill-based matching of a person or a group to a task
Term end not estimated
This invention relates to computer-based methods and systems for developing and distributing software and, more particularly, to methods and systems facilitating the distributed development of software.
In the United States and elsewhere, computers have become part of people's everyday lives, both in the workplace and in personal endeavors. This is because a general-purpose computer can be programmed to run a variety of software programs each providing different processing and networking functions. Computer programmers develop computer code. Some companies hire large numbers of computer programmers to develop code on the company's behalf.
One approach is to hire large numbers of programmers and develop software “in house.” While this affords significant control over the programming staff, finding, hiring, and maintaining such a staff can be cost prohibitive. Furthermore, as individual programmers leave the company, much of the technical and industrial knowledge is also lost. Alternatively, many companies “outsource” their programming through consulting firms, or contract employees. This approach relieves the company of the burdens of managing individual employees, however the quality of the work is often suspect, and the challenges of integrating work from numerous outside vendors can be significant.
In the drawings, like reference characters generally refer to the same parts throughout the different views. Also, the drawings are not necessarily to scale, emphasis instead generally being placed upon illustrating the principles of the invention.
FIG. 1 is a block diagram of an embodiment of a distributed software development system having a server according to the invention.
FIG. 2 is a block diagram of one embodiment of a distributed software development team according to the invention.
Referring to FIG. 1, in one embodiment, a distributed software development system 101 includes at least one server 104, and at least one client 108, 108′, 108″, generally 108. As shown, the distributed software development system 101 includes three clients 108, 108′, 108″, but this is only for exemplary purposes, and it is intended that there can be any number of clients 108. The client 108 is preferably implemented as software running on a personal computer (e.g., a PC with an INTEL processor or an APPLE MACINTOSH) capable of running such operating systems as the MICROSOFT WINDOWS family of operating systems from Microsoft Corporation of Redmond, Wash., the MACINTOSH operating system from Apple Computer of Cupertino, Calif., and various varieties of Unix, such as SUN SOLARIS from SUN MICROSYSTEMS, and GNU/Linux from RED HAT, INC. of Durham, N.C. (and others). The client 108 could also be implemented on such hardware as a smart or dumb terminal, network computer, wireless device, information appliance, workstation, minicomputer, mainframe computer, or other computing device, that is operated as a general purpose computer or a special purpose hardware device solely used for serving as a client 108 in the distributed software development system 101.
Generally, in some embodiments clients 108 can be operated by software developers and are used by software developers to participate in software development. Clients 108 can also be operated by customers of the software developed by the software developers. In various embodiments, the client computer 108 includes a web browser 116, client software 120, or both. The web browser 116 allows the client 108 to request a web page (e.g. from the server 104) with a web page request. An example of a web page is a data file that includes computer executable or interpretable information, graphics, sound, text, and/or video, that can be displayed, executed, played, processed, streamed, and/or stored and that can contain links, or pointers, to other web pages. In one embodiment, a user of the client 108 manually requests a web page from the server 104. Alternatively, the client 108 automatically makes requests with the web browser 116. Examples of commercially available web browser software 116 are INTERNET EXPLORER, offered by Microsoft Corporation of Redmond, Wash., and NETSCAPE NAVIGATOR, offered by Netscape Communications Corporation of Mountain View, Calif.
In some embodiments, the client 108 also includes client software 120. The client software 120 provides functionality to the client 108 that allows a software developer to participate in a coding competition. The client software 120 may be implemented in various forms, for example, it may be in the form of a Java applet that is downloaded to the client 108 and runs in conjunction with the web browser 116, or the client software 120 may be in the form of a standalone application, implemented in a multi-platform language such as Java or in native processor executable code. In one embodiment, if executing on the client 108, the client software 120 opens a network connection to the server 104 over the communications network 112 and communicates via that connection to the server 104. The client software 120 and the web browser 116 may be part of a single client-server interface 124; for example, the client software can be implemented as a “plug-in” to the web browser 116.