A prototype is a working model that is functionally equivalent to a component of the product. The purpose of a prototype is to allow users of the software to evaluate proposals for the design of the eventual product actually trying them out, rather than having to interpret and evaluate the design based on descriptions. This model reflects an attempt to increase the flexibility of the development process allowing the client to interact and experiment with working representation of the product. The developmental process only continues once the client is satisfied with the functioning of the prototype.
The prototype methodology allows developers to create only the prototype of the solution to demonstrate its functionality to the clients and make necessary modifications before developing the actual application. The best feature of this software development methodologies is that it solves many issues which often occur in a traditional waterfall model.
Prototyping Model Phases
Prototyping Model has following six phases as follow:
Step 1: Requirements gathering and analysis
A prototyping model starts with requirement analysis. In this phase, the requirements of the system are defined in detail. During the process, the users of the system are interviewed to know what is their expectation from the system.
Step 2: Quick design
The second phase is a preliminary design or a quick design. In this stage, a simple design of the system is created. However, it is not a complete design. It gives a brief idea of the system to the user. The quick design helps in developing the prototype.
Step 3: Build a Prototype
In this phase, an actual prototype is designed based on the information gathered from quick design. It is a small working model of the required system.
Step 4: Initial user evaluation
In this stage, the proposed system is presented to the client for an initial evaluation. Customer and end user examine the prototype and provide the feedback on additions/ changes. It helps to find out the strength and weakness of the working model. Comment and suggestion are collected from the customer and provided to the developer.
Step 5: Refining prototype
If the user is not happy with the current prototype, you need to refine the prototype according to the user’s feedback and suggestions. Using the feedback both specifications and the prototype can be improved. Negotiation about what is within the scope of the contract/ Product may be necessary. If changes are introduced then a repeat of step #5 and #4 may be needed.
This phase will not be over until all the requirements specified the user are met. Once the user is satisfied with the developed prototype, a final system is developed based on the approved final prototype.
Step 6: Implement Product and Maintain
Once the final system is developed based on the final prototype, it is thoroughly tested and deployed to production. The system undergoes routine maintenance for minimizing downtime and prevent large-scale failures.
Types of Prototyping Models
Four types of Prototyping models are:
i. Rapid Throwaway prototypes
ii. Evolutionary prototype
iii. Incremental prototype
iv. Extreme prototype
1. Rapid Throwaway Prototype
Rapid throwaway is based on the preliminary requirement. It is quickly developed to show how the requirement will look visually. The customer’s feedback helps drives changes to the requirement, and the prototype is again created until the requirement is baselined.
In this method, a developed prototype will be discarded and will not be a part of the ultimately accepted prototype. This technique is useful for exploring ideas and getting instant feedback for customer requirements.
2. Evolutionary Prototyping
Here, the prototype developed is incrementally refined based on customer’s feedback until it is finally
accepted. It helps you to save time as well as effort. That’s because developing a prototype from scratch
for every interaction of the process can sometimes be very frustrating.
This model is helpful for a project which uses a new technology that is not well understood. It is also
used for a complex project where every functionality must be checked once. It is helpful when the
requirement is not stable or not understood clearly at the initial stage.
3. Incremental Prototyping
In incremental Prototyping, the final product is decimated into different small prototypes and
developed individually. Eventually, the different prototypes are merged into a single product. This
method is helpful to reduce the feedback time between the user and the application development team.
4. Extreme Prototyping:
Extreme prototyping method is mostly used for web development. It consists of three sequential phases.
i. Basic prototype with all the existing page is present in the HTML format.
ii. You can simulate data process using a prototype services layer.
iii. The services are implemented and integrated into the final prototype.
Best practices of Prototyping
Here, are a few things which you should watch for during the prototyping process:
• You should use Prototyping when the requirements are unclear
• It is important to perform planned and controlled Prototyping.
• Regular meetings are vital to keep the project on time and avoid costly delays.
• The users and the designers should be aware of the prototyping issues and pitfalls.
• At a very early stage, you need to approve a prototype and only then allow the team to move
to the next step.
• In software prototyping method, you should never be afraid to change earlier decisions if new ideas need to be deployed.
• You should select the appropriate step size for each version.
• Implement important features early on so that if you run out of the time, you still have a worthwhile system
Advantages of the Prototyping Model
Here, are important pros/benefits of using Prototyping models:
1. Users are actively involved in development. Therefore, errors can be detected in the initial stage of the software development process.
2. Missing functionality can be identified, which helps to reduce the risk of failure as Prototyping is also considered as a risk reduction activity.
3. Helps team member to communicate effectively
4. Customer satisfaction exists because the customer can feel the product at a very early stage.
5. There will be hardly any chance of software rejection.
6. Quicker user feedback helps you to achieve better software development solutions.
7. Allows the client to compare if the software code matches the software specification.
8. It helps you to find out the missing functionality in the system.
9. It also identifies the complex or difficult functions.
10. Encourages innovation and flexible designing.
11. It is a straightforward model, so it is easy to understand.
12. No need for specialized experts to build the model
13. The prototype serves as a basis for deriving a system specification.
14. The prototype helps to gain a better understanding of the customer’s needs.
15. Prototypes can be changed and even discarded.
16. A prototype also serves as the basis for operational specifications.
17. Prototypes may offer early training for future users of the software system.
Disadvantages of the Prototyping Model
Here, are important cons/drawbacks of prototyping model:
1. Prototyping is a slow and time taking process.
2. The cost of developing a prototype is a total waste as the prototype is ultimately thrown away.
3. Prototyping may encourage excessive change requests.
4. Sometimes customers may not be willing to participate in the iteration cycle for the longer time duration.
5. There may be far too many variations in software requirements when each time the prototype is evaluated the customer.
6. Poor documentation because the requirements of the customers are changing.
7. It is very difficult for software developers to accommodate all the changes demanded the clients.
8. After seeing an early prototype model, the customers may think that the actual product will be delivered to him soon.
9. The client may lose interest in the final product when he or she is not happy with the initial prototype.
10. Developers who want to build prototypes quickly may end up building sub-standard development solutions.
Situation Where most Appropriate
i. Project Objectives are unclear.
ii. Pressure exists for immediate implementation.
iii. Functional requirements may change frequently and significantly.
iv. Users are fully Knowledgeable.
v. Team Members are experienced (particularly if the prototype is not a throw-away).
vi. Team composition is stable.
vii. Project manager is experienced.