This invention relates to methods and a
system for developing
software. In one embodiment, a method for developing
software includes communicating a specification for the design of a
software program to a first plurality of developers, in response to the specification, receiving a design from a subset of the developers to a subset of the developers, facilitating a
design review process for scoring the designs, selecting one design based on its
score, communicating the selected design to a second plurality of software developers, in response to the design, receiving software programs from a subset of the second plurality of developers, facilitating a software
review process for scoring the programs, and selecting one program based on its
score. In another embodiment, a method for the
distributed development of software includes providing a
software development system to a distributed
community of developers, the
system including
software development software that utilizes a structured development methodology, a communication
server, and a review board for determining the quality of submitted software; accepting a request to create a software program; and facilitating the development of the program by a subset of the distributed
community of developers using the
software development system.