Software prototyping involves prototyping software applications that represent the functions of the product before development.
Prototypes may not contain the definite logic of the original software.
A prototype is a functional software model with some features. The prototype does not always contain the precise logic that will be used in the actual software application and is an additional overhead that must be taken into account when estimating costs.
Prototyping is used to provide customers an opportunity to evaluate developer suggestions and test them before implementation.
Designing a software prototype consists of different phases:
This part demands knowledge of basic product requirements, especially those related to the user interface. At this stage, more complex details of the internal design and external issues such as performance and security can be ignored. Customers are also interviewed to learn their expectations about the system.
In this phase, a draft is made and a system with the basic requirements is shown. The details may differ from the final product. However, this simple design helps to create the main system.
The developed prototype is shown to customers and other major project participants. Feedback is collected in an organized manner and used to further improve the product being developed.
Using the final prototype, the end product is made. It is completely tested and put into production. The system is regularly maintained to minimize downtime and avoid major malfunctions.
Rapid prototyping is also known as throwaway prototyping because prototypes are only fit for brief periods of time. It may pass through various feedback, revision, and assessment cycles during this phase. When all collaborators are satisfied, it becomes the standard for designers and developers to apply.
Once the exact conditions are noted, the prototype is rejected and the actual system is developed with a very clear understanding of the user requirements.
Extreme prototyping is mainly applied for web development.
Prototypes developed here are progressively improved based on client feedback until final approval. This will save time and work. This is because developing a prototype from scratch for every interaction in the process can sometimes be frustrating.
This pattern is useful for projects that use new technologies and are not yet well known. It is also used in complicated projects where each characteristic needs to be tested at least once. This is helpful when requirements are unstable or not well understood initially.
With incremental prototyping, the final product is broken down into several smaller prototypes and developed independently. Finally, different prototypes are combined into one product. This design helps lessen feedback time between customers and the developer.