Prototyping is a process model which is used to develop softwares. The main purpose of the prototyping model is to satisfy the customer’s need. To acquire this, developers implement the prototype and present it to the customer for evaluation. After evaluation customer suggests the modifications in the prototype. The suggested modifications are then implemented in the prototype and again it is presented to the customer for evaluation.
These iterations are continued until the customer is completely satisfied with the prototype. Once the customer is satisfied with the prototype, developers start implementing the final system. In this section, we will discuss prototyping in brief. We will also discuss the phases of prototyping along with its types, advantages & disadvantages.
Content: Prototyping Model in Software Engineering
- What is Prototyping?
- Phases of Prototyping
- Types of Prototyping
- When to Use Prototyping?
- Advantages & Disadvantages
- Key Takeaways
What is Prototyping?
We all know prototype is a preliminary version of the complete software. It’s not compulsory that the prototype of the software constitutes all the features of the final product i.e. final software. Still, the prototype reflects the features of the customer’s interest.
Prototyping is a software development model where after each iteration the prototype is presented to the customer for evaluation. Customer evaluates the prototype and confirms whether the prototype is developed according to their demand or it needs some modification.
Developer considers the feedback given by the customer and modifies the prototype according to their demand. After modification, the prototype is demonstrated to the customer for evaluation. The customer again evaluates the prototype and provide the feedback on which developer again modifies the prototype.
These iterations continue until the customer is satisfied with the prototype. At each iteration, the prototype undergoes different phases which we will discuss in the further section. Once the customer is satisfied with the prototype developers start developing the software and then deliver it to the customer.
Phases of Prototyping
Different books and authors may represent the phases with different names although the specific approach is the same in all. The phases of prototyping are discussed below.
At this stage, the developers communicate with the customer to gather the customer’s requirement. The objective of the software and the area where the definitions are still fuzzy are outlined. The requirements which are clear and perfectly known are also outlined.
Analysing the customer requirements, the developers proceed to construct the prototype.
- Construct Prototype
While constructing prototype the developers establish objectives such as what will be the use of prototype? What features of the final system the prototype would reflect? It is taken into consideration that the cost of the developed prototype should be low and the speed of prototype development should be fast.
The speed and cost of the prototype are maintained by ignoring the requirements that have nothing to do with the customer’s interest. Generally, the prototypes are developed based on the requirements of customer’s interest like user interface and unclear functions and so on.
- Customer Evaluation
Once the prototype of a final software is developed it is demonstrated to the customer for evaluation. Customer evaluates the prototype against the requirements they have specified in the communication phase. If the customers are satisfied, then the developers start developing the complete version of the software.
In case, the customer is not satisfied with the prototype, they are supposed to suggest modifications.
- Iterate Prototype
Based on the modifications suggested by the customer, developers start modifying the prototype and the modified prototype is again demonstrated to the customer for evaluation.
In this way, the prototype is iterated until the customer is satisfied with the prototype. Once the customer is satisfied with the prototype the developers get engaged in developing the complete version of the software.
- Deploy Software
Once the objective of the prototype is served it is thrown and the software is developed using other process models. The main objective of the prototype is to understand the customer’s requirement properly and completely.
As all the requirements are now understood, the developers develop the software and deliver it to the customer with the expectation that the developed software meets all the requirements specified by the customer.
Types of Prototyping
Prototyping can be classified into two types and they are as followed.
- Throwaway Prototyping
In throwaway prototyping, several prototypes are developed to understand the requirements of the customer and once the requirements are clear these prototypes are thrown away and the final system is developed using other process models.
Throwaway prototyping focuses on understanding those requirements which are unclear and requirements that are perfectly clear are not even prototyped. Throwaway prototyping is also called rapid prototyping. This is because the throwaway prototype is developed only to understand the specifications and time is not wasted in using the systematic way to develop the prototype. Hence, the rapid prototype is developed fast and with a little cost.
- Evolutionary Prototyping
In evolutionary prototyping, initially prototype is developed by incorporating the specifications that well understood and then the developers proceed further to understand the unclear specification.
Here, the initially developed porotype is refined to developed the final system. The porotype is demonstrated to the customer and then the customer suggests modification which helps in clearing the uncertain specification. To be more effective, from the starting of prototype development the systemic approach is carried out so that the evolution of the final system takes place in the systematic frame.
When to Use the Prototyping Model?
The main objective of prototyping is customer satisfaction and a customer are satisfied only when all his requirements are completely implemented in the final system.
But hardly a customer is able to narrate all his requirements clearly and concisely at once. Prototyping is an efficient way to understand the requirements of the customer. At each iteration, the prototype is evaluated by the customer to discover the unclear requirements. So, prototyping should be used when the customer’s requirements are fuzzy.
Prototyping should be used where the final system is desired to have a lot of user interaction. Prototyping is best while designing the user interface. As prototyping helps the developer to understand how the user wants the system to be.
Advantages & Disadvantages of Prototyping Model
- The first and foremost advantage of prototyping it helps the developer to understand the certain and uncertain requirements of the customer.
- It helps the customer to easily realize the required modification before final implementation of the system.
- The efforts required in developing the final system is reduced as the final system is implemented after all the specifications are clearly understood and there are fewer chances of final system being incorrect.
- The customer does not have to wait for a long to see the working model of the final system.
- There are more chances of the developed system is more user-friendly.
- User satisfaction is achieved.
- The porotype is developed in an artificial environment. So, it may happen that the customer misunderstands an element of the system.
- Seeing the working model at an early stage may create a misconception to the customer that the final product will be delivered soon.
- User may never get satisfied as they are getting too much of opportunity to change specify the changes.
- Neither customer nor developer is able to specify the number of iterations.
- In prototyping, the customer is demonstrated with the prototype of the final system at a very early stage.
- The customer has to evaluate the prototype and suggest the modification in it to the developers.
- Prototype reflect those features of the final system which are of user interest.
- Developers refine the prototype based on the modification suggested by the customer.
- Refinement of the prototype is iterated until the user satisfaction is achieved.
- Once the objective of the prototype is served developers start developing the final system using a process model.
- There are two types of prototyping throwaway prototyping and evolutionary prototyping.
- In throwaway prototyping, prototypes are developed and then thrown away once the objective of the prototype is achieved. And the final system is implemented using a different model.
- In evolutionary prototyping, initially developed prototype is refined to evolve the final system.
- The main objective of prototyping is to get understand all the specification of the final system.
So, this is all about prototyping, it helps the developers to understand the requirements of the customer clearly so that the developed final system has negligible uncertainty.