In computer software development, there is a method called prototyping. It involves  constructing prototypes or incomplete testing versions of what you intend to have as a final product. The incomplete versions are tested by developers (alpha), then the public (beta) and finally released as official versions of the software or application being developed. Each stage of testing is punctuated by improvements intended to mature the software.