Almost always, there are more than one ways of solving a problem. Though the end result might be the same, there are many different paths that can be taken to arrive at the solution. Similarly, each of the software development problems is amenable to a range of different solutions. Creation of a software application can be undertaken in many ways and a development team must adopt a process that is most ideally suited to the nature of the end product.
One of the most traditional approaches to software development is the waterfall model, while a more non conventional one is the prototype model. These software development models are influenced by the manufacturing processes of electronics and hardware industries. In this Techspirited article, I present the difference between prototype model and waterfall model by comparing their features.
Ideally, any company would like to adopt a software development process that makes optimum use of resources and delivers a bug free end product that perfectly meets users expectations and that too, within the set budget, as well as time frame. Before we look at the difference between the two models, let me provide you with a brief overview of how waterfall and prototype models work.
How Does the Waterfall Model Work?
When you look at the waterfall model, the words that come to your mind are 'Structured' and 'Orderly'. The waterfall model is inspired by the 'assembly line' philosophy of the hardware industry, wherein every stage is initiated only after the successful conclusion of the previous one. It's named as 'Waterfall Model' because every step is dependent on the earlier one and builds up or 'flows' from the work done in the previous phases.
The whole process of software development, according to the Waterfall model, begins with the understanding of the requirements and expectations from the customer or end user. After the requirements are clearly understood by the developers, analysis and design of the software actually begins.
This phase is the most intensive of all and involves the top developers, who ideate a design that would perfectly meet all user requirements and be robust enough for implementation. Once the design is ready, coding begins. Separate teams will focus on a small part of the entire coding project and all these parts of design will be put together in the integration phase that follows.
Once the program is ready after integration, the testing and debugging phase begins. Here every feature of the software and every one of its functions are tested and bugs if any, are rectified. This is followed by the actual on-site implementation of the application for the client. A dedicated team takes care of future maintenance of the software and customer service.
How Does the Prototype Model Work?
Let us now see what the prototype model of software development is like. This model is radically different from the waterfall model in many ways. As the name itself suggests, this process involves the creation of 'prototypes' or 'raw models' of the final product, right at the start, which are continuously improved through user feedback and developer efforts, until a final product which exactly confirms with user requirements is created.
The developer provides the client with a rough prototype application, right after he has been fed the requirements. This is a preliminary and 'sketchy' model of the final product, with basic functionality and user interface. By analyzing the prototype, the client then provides feedback to the developers, about whether this is the kind of thing he wants.
According to the suggested changes and overall client report, the prototype is reworked upon and it keeps improving through better designing, until it is transformed into the program which satisfies all client requirements. This is a kind of 'Interactive' design, wherein the end user is involved in every stage of development. Every evolving prototype goes through testing and debugging phases, including the final product, before deployment.
Prototype Model Vs. Waterfall Model
Now that you have a basic understanding of what the waterfall model and prototype model are all about, let me point out the prime differences in these two software design philosophies. The waterfall model directly delivers the final product to the user and his feedback is only taken in, before the design phase. Conversely, the prototype model creates several rough working applications and involves constant user interaction, until the developers come up with the final application, which satisfies the user.
While the waterfall model is linear, the prototype model is non linear and evolutionary in nature. Both processes have their merits and demerits. According to experts, the prototype model is well suited for online applications where user interfaces are the most important component and clients are not clear about what they exactly need in the final product.
On the other hand, the waterfall model is better suited for a more conventional software projects, where user requirements are clear, right from the start. A prototype model ensures users involvement which makes last minute changes possible. The waterfall model makes it difficult to implement any changes suggested by the user, after initial specification.
To conclude, it's apparent that prototype model is best suited when the client himself is not sure of what he wants and waterfall model is a safe bet, when the end user or client is clear about what he wants. Before deciding which model would be ideally suited for your own software development project, study the nature of the client requirements and choose a process which would give you the best chances of creating a satisfying end product.