Prototype model of software development is well suited when the misunderstanding that exists between software consumer and software developers are to be projected. The prototype model of software development is also used when the objective is to find the functionalities that are missing from the developed software further to find the ambiguity or confusion that exists in the developed functionalities in the desired software.
Software prototyping is a method that should be followed to develop an abstract model of the desired software. To develop abstract model functionalities are identified that are required in the desired software. On the basis of the identified functionalities, an abstract model or prototype model of the desired software is developed. This Prototype is then used to get software user reviews; if the reviews are good, then the developed Prototype takes the shape of the original software. Suppose the reviews on the developed software are not satisfactory. In that case, the developed Prototype is revised and enhanced, and this revised Prototype is again used to take software user reviews. This process continues till a satisfactory response is received from the software used. When a satisfactory response is received, then a well-structured software development process is carried out to develop the desired software.
The prototype model is a crucial software development process that integrates different software development processes that are hard to integrate with other software development methodologies. The Prototype model is used to find the effectiveness of the methodology that will be used to develop the desired software.
The significant contribution of the prototype model is following:
- The Prototype of the desired software is used to visualize the functionalities required in the desired software.
- The prototype model is used to find the capability of the methods and techniques that will be used to develop the desired software.
- The prototype model is used to evaluate the correctness of the results that will be obtained from the desired software.
- The prototype model is used to analyze the appropriateness, usefulness, and effectiveness of different data types that will be used to develop desired software.
The clients that require software specify the need for which they want to develop software. The need is converted into objectives to be fulfilled in the desired software. The clients that require software do not have an understanding of what will be the input of the software, how this input will be processed, and what will be the output of the software.
The Prototype model is used to find the effectiveness of the algorithm that will be used to develop the desired software. This model explores the extent to which the human-machine interaction should take place in the desired software.
The software development process begins with requirement gathering, and this is done by having a discussion with the clients. The result of the discussion is to project the overall objective of the desired software and to find the functionalities that require further analysis. Based on this, a quick design of the desired software is developed.
The quick design is used to find the extent to which the client requirements are automated. If a satisfactory level is achieved in the quick design, then based on this, a prototype is developed. This Prototype is then presented to the clients to evaluate it and based on their evaluation; the developed Prototype is further refined. This refined Prototype is then used by software developers to get assisted in the software development process.
The developed Prototype is not for use by the clients but to be used as a guideline to develop actual software. The Prototype is redeveloped by the software developers thus prototype work as the first copy of the desired software.
The prototype model is appreciated by customers as it gives an overview of what the actual software is and how the functionalities of the desired software will work. The Prototype of the desired software gives an idea of software quality and the amount of software maintenance required to keep it working.
The Prototype is also used to find the appropriateness of the programming language used to develop the desired software. Not only the programming language but the efficiency of the algorithm is also found by developing the Prototype. If the results from the developed Prototype are good, then the programming language and the algorithm used to develop the Prototype are finalized to develop the actual desired software. Inefficient algorithms are rejected, and efficient algorithms are selected.
The prototype model does not assure the effectiveness of the actual desired software, but it assures that the requirements of the customers will be found, analyzed, and implemented quickly. The key to the success of the prototype model is to set and define the rules of software development well at the beginning before actual software development takes place.
The main requirement of the software development process using prototype models is to have the consent of the client that the Prototype will work as an information-gathering tool. When all the requirements of the clients are gathered and reflected in the Prototype, then this Prototype is engineered towards the actual software, and measures are taken to develop quality and maintainable software.
The most famous use of the prototype model is its use in the Ada programming language. The prototype model is used to develop the executable semantics of the Ada programming language. The Prototype was used to gather the information related to the design, user interface, speed, and efficiency of the desired software.
Prototypes are categorized according to their functionalities, such as Horizontal prototype and Vertical prototype.
A horizontal Prototype
It is used to gather information related to the user interface. Horizontal prototypes focus on user-software interaction rather than software-database interaction.
The vertical Prototype
model is used to gather information related to a particular functionality. The vertical Prototype is used to conduct a detailed analysis of the particular functionality of the software.
Two major types of software prototyping are done first, Throwaway Prototype and second, Evolutionary Prototype.
Throwaway Prototype is a rapid prototyping model. Rapid prototypes are discarded rather than included in the actual software. In rapid prototyping, informal methods are used and set the beginning of software development. It is not included in the actual desired software and thrown away after its use, thus it is called Throwaway Prototype.
Evolutionary Prototypes focus on continuous refinement and redevelopment of the desired software. Evolutionary prototypes are functional systems and may be used until the final system is developed and delivered.
The advantage of the prototype model is that it reduces software development costs and time. The cost and time of the software are reduced as an intense analysis of the client requirement is done and new features or rework is less likely. The second advantage is that the prototype model prevents misunderstanding and miscommunication between clients and software developers.
The prototype model is highly usable in designing and developing user interfaces another use is in DSDM that is the Dynamic System Development Method. DSDM is used to develop business solutions.
To develop a prototype proper tools and trained staff is required. Tools used to develop prototypes include 4th generation programming languages, CASE tools, Visual Basic etc. Bootstrap and Angular JS are other tools that are required to develop prototypes.