A fairly common issue with system development is that there can be a long delay when the initial requirements are made to when the actual development starts. One way of tackling these problems is the concept of prototyping. A prototype shows some aspects of the entire system, which can be in the form of a mock-up of the user interface.
Building a prototype is a much cheaper way to visually see the system's functionality and evaluate it rather than going straight into the development phase and finding issues. There are two approaches to prototyping:
Evolutionary prototyping
Throwaway prototyping
For this answer, we'll look at throwaway prototyping.
Throwaway prototyping is part of the development process of a prototype. They're made from the initial requirements, which the developers get tested and collect feedback from the end users. This enables us to refine the requirements early in the development phase.
The throwaway prototype model is useful when the project's requirements are vague. It's implemented by making prototypes of the project and gathering constructive feedback from the end user on whether they're content with the final product or not. The primary purpose of this is to reduce the project's overall risk. The phases of a throwaway prototype model are as follows:
Identification of requirements: This phase involves gathering the project's initial requirements. Most of the time, the users are evaluated in surveys or interviews to understand their expectations better.
Planning: The second phase of this model is creating a preliminary design and planning how the project will be carried out. The team plays a huge role in the project's success and being prepared for whatever comes your way will help resolve problems early.
Prototype: In this phase, an actual prototype is made, keeping the information collected in phases 1 and 2 as the base. It's usually a working model of the entire system on a small scale. The prototypes will then be introduced to the end users, who will test and evaluate them. Meanwhile, the team will collect feedback and update the requirements and needs.
Prototype enhancements: When the data of feedback from the users, the prototypes will go through phase 3 again and continue refining the prototype until it has reached the point where the users are satisfied.
Finalization: Once the prototypes have been finalized and all the issues have been addressed, the product is moved to its final stage and deployed to production. The system will then be maintained, keeping the feedback collected in mind.
Reduced time and costs: A typical project usually has multiple throwaway prototypes used to test different aspects of the project. Testing can be quite expensive within the development cycle since we have to fix all the errors and unneeded resources of the project. A prototype can help in this regard as it will cut the testing cost, saving the expense and time. The only downside is that by using this method, all hours of putting together the throwaway prototypes are lost, unlike the other software prototypes.
Flexibility: We can switch up the programming language within the throwaway prototype, which can be completely different from the main project. This speeds up development by eliminating complex languages and the processing time associated with them.
Throwaway prototypes and evolutionary prototypes are two terms that frequently appear in developmental cycles. Throwaway projects are primarily used for feedback purposes. When the prototype's use is complete, it's discarded. Developers can create throwaway prototypes for a single aspect of a project.
However, in evolutionary prototyping, we develop the system concept as the project progresses. We show the customer a portion of the system and continue to develop prototypes based on feedback.
Each prototype has its perks, and it's up to the developers to determine which prototype best meets their requirements.
If the project lacks a clear framework and systems, the throwaway prototyping model would be ideal. As long as we have a capable working team and focus on developing great prototypes, we'll be able to produce an end product that is both effective and highly functional for our customers.