Prototyping is a process model used to develop software. The main purpose of the prototyping model is to satisfy the customer’s needs. The model presents the working version of the software to the customer at a very early stage. Though it is not the complete version of the software, at least a part of the software works.
The developers provide the working model to the customer for evaluation. After evaluation customer suggests some modifications if required. The developer implements these modifications in the prototype. Then developer demonstrates the modified prototype to the customer for evaluation.
These iterations continue until the customer is completely satisfied with the prototype. Once the customer is fully satisfied with the prototype, the developer starts implementing the final system.
In this context, we will discuss the prototype model in detail.
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?
As we know prototype is a preliminary version of the complete software. Although the prototype doesn’t have all the features of the final software. Still, it reflects the features of the customer’s interest.
In this model, the developers don’t start developing the software initially. Instead, they present a prototype to the customer for evaluation. Then the customer evaluates and suggests some modifications. Developers implement these modifications and again present the prototype to the customer.
These iterations continue until the customer approves the prototype. It is then the developers start implementing the software.
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:
1. Communication
It is the first stage of the prototype model. The developer communicates with the customer to gather the customer’s requirements. Here, the developers identify the objective of the software and also outline definitions that are still fuzzy. They also outline the requirements, which are clear and perfectly known.
Analyzing the customer requirements, the developers proceed to construct the prototype.
2. Construct a Prototype
While constructing the prototype, the developers establish objectives such as:
- What will be the use of the prototype?
- What features of the final system the prototype would reflect?
However, the cost of the developed prototype should be low. And even the speed of prototype development should be fast.
While maintaining the cost and speed of the prototype, the developers ignore the requirements that have nothing to do with the customer’s interest. Instead, they develop prototypes based on the requirements of the customer’s interests. Such as user interface and unclear functions and so on.
3. Customer Evaluation
Once the developer develops a prototype for the software, they demonstrate it to the customer for evaluation. Customers evaluate the prototype against their specified requirements. If the customer is satisfied with the prototype, the developer starts developing the software. Else the customer suggests the required changes in the prototype.
4. Iterate Prototype
Considering the modification suggested by the customer, the developer starts modifying the prototype. Once modified, the developers again demonstrate the prototype to the customer for evaluation.
So the developers keep on iterating the prototype until the customer is satisfied with the proposed prototype. When the prototype reaches customer satisfaction, the developer starts implementing the software.
5. Deploy Software
The developer identifies and understands the customer’s requirements properly and completely. As all the requirements are now clear, the developers develop the software. The software is then delivered to the customer with the expectation that it meets all the requirements specified by the customer.
Types of Prototyping
Prototyping can be classified into two types, and they are as follows.
1. Throwaway Prototyping (Rapid Prototyping)
In throwaway prototyping, developers develop several prototypes. These prototypes help them in understanding the requirements of the customer. Once the requirements are clear, the developers develop the finalized prototype.
It only focuses on understanding those requirements which are unclear. The requirements that are perfectly clear are not even prototyped. We call throwaway prototyping rapid prototyping. Because the throwaway prototype is developed only to understand the specifications. The time is not wasted in using the systematic way to develop the prototype. Hence, the development of a rapid prototype is fast and requires a little cost.
2. Evolutionary Prototyping
Here, the developers develop prototypes by incorporating specification that is clear. Then the developers proceed further to understand the unclear specification.
In this model, developers refine the initially developed prototype in order to develop the final system. The developers demonstrate the prototype to the customer. If required, the customer suggests some modifications. This suggestion helps the developer in clearing uncertain specifications.
From the start, a developer carries out a systematic approach so that the evolution of the final system takes place in a systematic way.
3. Incremental Prototyping
As the name suggests, the software is developed in an incremental way. The software is divided into independent modules or modules that are loosely related to each other. Now, these separate modules are developed parallelly. Once all modules are developed, they are merged to obtain a final prototype. As all the modules are developed and tested parallelly, it reduces the time of completion of the software. However, it may be the case that the modules may not be compatible with each other as they may be developed by different teams. But this can be sorted by planning the entire development of the software carefully.
4. Extreme Prototyping
More commonly, we use extreme prototyping for web application development. With this model, the software is developed in three independent phases, as discussed below:
- In the first phase, a basic prototype is developed that has all the web pages in the HTML format for the presentation layer.
- Now in the second phase, these HTML webpages are transformed into functional screens using a simulated service layer.
- In the third phase, code and implement the service layer for the final prototype.
When to Use the Prototyping Model?
The main objective of prototyping is customer satisfaction. And a customer is 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 customer evaluates the prototype to discover the unclear requirements. So, we must use prototyping when the customer’s requirements are fuzzy.
Prototyping is helpful where the final system needs 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
Advantages
- The model helps the developer to understand the certain and uncertain requirements of the customer.
- It helps the customer easily realize the required modification before the final implementation of the system.
- The model reduces the efforts required in developing the final system. As the developers develop the final system after all the specifications are clear. So there are fewer chances of the 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.
Disadvantages
- The developers develop prototypes 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 developers will deliver the final product soon.
- Users are never satisfied as they are getting too many opportunities to change specify the changes.
- Neither customer nor the developer is able to specify the number of iterations.
Key Takeaways
- In prototyping, the developer demonstrates the prototype of the final system at a very early stage.
- The customer has to evaluate the prototype and suggest modifications to it to the developers.
- The prototype reflects those features of the final system which are of user interest.
- Developers refine the prototype based on the modification suggested by the customer.
- The developer iteratively refines the prototype until they achieve user satisfaction.
- Once the prototype serves its objective, developers start developing the final system using a process model.
- There are two types of prototyping throwaway prototyping and evolutionary prototyping.
- In throwaway prototyping, developers develop several prototypes and then throw them away once they achieve the objective of the prototype. Then they develop the final system using a different model.
- In evolutionary prototyping, the developers refine the initially developed prototype to evolve the final system.
- The main objective of prototyping is to get understand all the specifications 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.
Leave a Reply