In software development, a prototype is a basic working model of a product or information system, usually built for demonstration purposes or as part of the development process. In the systems development life cycle (SDLC) Prototyping Model, a basic version of the system is built, tested, and then reworked as necessary until an acceptable prototype is finally achieved from which the complete system or product can now be developed. In prototype-based programming, a prototype is an original object; copying the prototype creates new objects. In hardware design, a prototype is a “hand-built” model that represents a manufactured (easily replicable) product sufficiently for designers to visualize and test the design.
Software prototyping, an activity during certain software development, is the creation of prototypes, i.e., incomplete versions of the software program being created. A prototype typically replicates only a few aspects of the features of the eventual program, and may be completely different from the eventual concept. The conventional purpose of a prototype is to allow users of the software to evaluate developers’ proposals for the design of the eventual product by actually trying them out, rather than having to interpret and evaluate the design based on descriptions.
Software prototyping has two major types: the throwaway prototyping, which refers to the creation of a model that will eventually be discarded rather than becoming part of the final delivered software. After preliminary requirements gathering is accomplished, a simple working model of the system is constructed to visually show the users what their requirements may look like when they are implemented into a finished system. Evolutionary Prototyping, which is quite different from Throwaway Prototyping, the main goal when using Evolutionary Prototyping is to build a very sinewy prototype in a structured manner and constantly refine it. The reason for this is that the Evolutionary prototype, when built, forms the heart of the new system, and the improvements and further requirements will be built.
Software prototyping has some benefits, which include: the software designer and implementer can obtain feedback from the users early in the project. The client and the contractor can compare if the software made matches the software specification, according to which the software program is built. It also allows the software engineer some insight into the accuracy of initial project estimates and whether the deadlines and milestones proposed can be successfully met.
Software prototyping reduces time and costs. TechSpire make use of prototyping to improve the quality of requirements and specifications provided by customers. Because changes cost more to implement as they are detected later in development, the early determination of what the user really wants can result in faster and less expensive software.
Software prototyping can also improve and increase user involvement. Prototyping requires user involvement and allows them to see and interact with a prototype allowing them to provide better and more complete feedback and specifications. The presence of the prototype being observed by the user prevents many misunderstandings and miscommunications that occur when each side believe the other understands what they said.