9.2 An Overview of Prototyping


While the requirements of the system are being identified, the current business procedures (which are going
to be affected by the new system) of an organization are analyzed and evaluated by the system analysts.
In addition to this, system analysts gather information from akin systems for comparison purposes.
Once that is completed, a first draft of the system requirement is prepared.
Prototyping goes hand in hand with the above process as it helps to translate intangible and at times vague
requirements into a visual a more concrete one, by portraying the requirements visually, i.e. as a diagram.
The user feedback gained from the developed model (a model that can be seen, touched and interacted with)
is used by the analyst to alter the existing requirements and in most cases, create new ones.
Prototyping has many forms.
The simplest form of prototyping is low tech sketches or paper screens.
Other forms, which are more advanced, include 'high-tech operational systems' that utilize CASE (computer-
aided software engineering).
The prototype can be used to assist in the analysis and design phase, rather than a software product.
A prototype has two dimensions: horizontal and vertical.

9.2 An Overview of Prototyping


Horizontal prototype is user interface prototyping.
It concentrates on the interaction between the user and the interface of the system, disregarding the low
level processes that occur during this interaction, i.e. database fetching and information retrieval.
Horizontal prototypes are useful for specification and setup of user interface requirements and system
scope.
They are also used as a demonstration version of the system and to develop initial estimation for the
system development time, cost and efforts.
Vertical Prototype is a more complete model of a single project or project component than a horizontal model.
It is used to obtain a detailed requirement for a given project.
Vertical Prototype is used to refine the design of the database design, obtain information about data
volumes and the needs of system interfaces, and to clarify complex requirements by dealing with actual
system functionality.
There are many advantages of prototyping in software development.

9.2 An Overview of Prototyping


Some of these advantages are tangible, and some are more abstract. These advantages include the
following:
Reduces development time
Reduces development costs
Users expect what the system will look like
Results in higher user satisfaction
Involves the users
Involves user quantifiable feedback
Facilitates system implementation
Exposes developers to potential future system enhancements.
Improved and increased user involvement: Users are involved and interact with the prototype
Prevents many misunderstandings and miscommunications between developers and users.
Prototyping leads to increased interaction between developers and users, which as a result, leads to a
more complete system that meets it initial objectives.

9.2 An Overview of Prototyping


Communication gap between software developer and clients may be identified.
Ambiguous user requirements may be clarified.
A small working system is quickly built to demonstrate the feasibility and usefulness of the system.
Using, or perhaps misusing, prototyping can have some disadvantages. Some of the disadvantages of
prototyping include the following:
Can lead to incomplete analysis: The developer would be distracted from efficiently analyzing the
overall project because he concentrated on a limited portion of the system.
Due to the requirements not being fully established, the prototype which is based on the requirements,
once created, may be based on incorrect requirements or incomplete ones.
The limited scalability of a prototype can at times be forgotten. Users as well as designers forget that
the prototype is not a fully functioning version of the end product and designers think that it can be
easily scaled to reach the desired state of a final product.
Users get the perception that the final version of the product is the same as the prototype they are
using/testing.
Developers may become too attached to their prototypes

9.2 An Overview of Prototyping


Sometimes leads to incomplete documentation.
The sequence of prototyping in the software development life cycle is shown in Figure 1.
Figure 1: The sequence of prototyping in the software development life cycle

The process of prototyping involves the following steps:
Initial system requirements are established and issues such as system security are not considered at
this stage.
A user-interface prototype is developed which only tests the interaction between the user and the
system, ignoring low level processes.

9.2 An Overview of Prototyping


Feedback is provided from the stakeholders, concentrating on the end-users/customers.
Based on the feedback provided, alterations are carried out on the prototype.
If changes are required then both steps 3 & 4 may be repeated.
Use of prototyping in information systems design process is carried out in four steps:
First step: quick analysis where the system developers understand the user's basic information needs
and requirements
Second step: construct the initial prototype using user's defined needs and requirements.
Third step: users and system developers evaluate of the prototype
Fourth step: system developers modify and improve the prototype system.
In the prototype evaluation period, the user assesses the behavior of the system by comparing the actual
behavior with that of the prototype.
If the prototype cannot run with satisfaction, the user can immediately identify the problem and make
modifications to the requirements by redefining them.
This process continues until the user is satisfied with the prototype and by making sure that it can successfully
reflect the imagination of the system.

9.2 An Overview of Prototyping


Prototyping is a popular technique used in the design process as it facilitates and increases the interaction
between the designer/developer and the end user.
Organizations use prototyping very frequently in development projects, and the technique is only introduced
when the development cycle is at the appropriate stage i.e. a requirements specification has been established
and the prototype is developed based on that.
End users who participate in the testing should have prototyping experience or be trained on the use and
purpose of prototyping.
This also applied to developers, as they should also have a complete background and experience in this area.
Prototyping is the best solution to the requirements analysis problem.
Prototypes allow users to visualize an application that has not yet been constructed.
Prototypes help users get visualize what the system will look like.
As a result, this will make it easier for them to communicate their thoughts and feedback/alterations to
the designers.
Also, another advantage of prototypes is the fact that it is an iterative process where many prototypes
can be created throughout the design stage, allowing the users to have an input before the final product
is developed.

9.2 An Overview of Prototyping


System prototypes lead to fewer changes later and hence reduce overall costs considerably.
Software prototyping is a technique that involves the creation of unfinished software which provides the
testers with an idea of the behavior of the final version.
This means to create incomplete versions of the software program being developed.
A software prototype is the first version of the software to be developed.
It is developed with minimal cost, and the shortest time to reflect the main features of the final software
system.
In most cases, a prototype only represents a few parts of the final version and could also be entirely different
from it.
A software prototype enables software designers and implementers to gain important feedback from end-
users, at the beginning of the development cycle.
Both the end-users and the developers can continuously evaluate the prototype, comparing it to the
requirements specification, which is what the product is based on.

9.2 An Overview of Prototyping


Software prototyping does not only aid in the design process, it is also used for project planning/management
purposes as the progress of the initial project plan can be compared to the progress of the product.
A software prototype has the following characteristics:
It is an actual running system
It has no fixed life span. It could be discarded (thrown away prototype) after it is used or it could be a
part of the final product (incremental prototype).
It must be fast and cheap.
It is an integrated part of the iterative process, which changes each time after a user feedback/testing.
Prototyping is used in the analysis and documentation of system requirements.

Types of Prototypes
Software prototyping has many variants. Mainly, the prototypes are developed using the following two
techniques:
Throwaway prototyping and
Evolutionary prototyping.

9.2 An Overview of Prototyping


On the following, we describe each of these types as well as other less popular types.
Throwaway Prototyping
Throwaway prototyping is also called close-ended prototyping.
Throwaway prototyping is a rapid prototyping.
In this technique, the prototype is discarded after its purpose is fulfilled and the final system is built from
scratch.
The prototype does not become a part of the final delivered system.
The prototype is built quickly to enable the user to rapidly interact with a working system.
Since the prototype is finally discarded, its speed, implementation aspects, maintainability and fault
tolerance are not highly important.
The prototype is developed as follows:
In requirements analysis phase, a small set of requirements (or preliminary requirements) of the
complete requirements are defined in a short period of time to save project total time.
Then, a user-interface model is developed to help the end-users visualize what the product will
look like and how their requirements are being met/carried out.

9.2 An Overview of Prototyping


The prototype is constructed using these requirements to determine the feasibility of
project/system.
Using this prototype the function of the system is validated.
During this phase any missing requirements are defined. After that, the user interface is
developed.
The steps in this prototyping approach to develop the system are as follows:
Write preliminary requirements (a small set of the complete requirements)
Design the prototype
Get user feedback, user experiences where users use/test the prototype, and specify new
requirements
Repeat the development of the prototype if necessary
Write the final requirements
Develop the system

9.2 An Overview of Prototyping


The advantages of throwaway prototyping are that it decreases the total system/project development
time where the duration of prototype building should be as less as possible.
The most important reason for using throwaway prototyping is its ability to be developed quickly and the
prototype/model is developed with high speed.
The usability of the developed prototype exists only if results from its use are available in timely fashion.
Other advantages of the throwaway prototyping include the following:
Quick feedback is provided to the users in relation to their requirements
The prototype enables Making changes early in the development lifecycle
The prototype is very cost effective since there is nothing needs to be undone/redone.
The prototype is useful especially with limited time and budget.
This type of prototyping makes sure that a functioning model of the system is developed at an early
stage of the development process, after a relatively short requirements analysis.
Once the model is created, it is used as a benchmark for end-users to test and provide feedback on.
Once the feedback has been received, this model is 'thrown-away' and a fully functioning system is
developed, based on the feedback provided by the end-users.

9.2 An Overview of Prototyping


Evolutionary Prototyping
Evolutionary prototyping is also known as breadboard prototyping.
In this prototyping, the prototype is constructed in successive steps in order to understand the software
problems and develop their solutions.
The prototype is initially developed to satisfy few requirements.
Then, gradually, the requirements are added to the prototype as better understanding of software
system is reached.
Once the prototype is developed it is used again and again.
This process is repeated until all requirements are included in the prototype and the complete system is
developed.
Evolutionary prototyping involves the continuous tasks of refining and rebuilding of the prototype.
Creating a solid prototype is the main aim of evolutionary prototyping and it is done through the
incremental addition of system requirements.
Evolutionary prototyping implies that requirements are not understood or defined completely at once at
the start of the system design but are defined gradually.

9.2 An Overview of Prototyping


Evolutionary prototyping is built using those requirements that are well understood.
This technique permits adding features, or making changes that are not well understood during the
requirements and design phase.
The differences between evolutionary prototypes and throwaway prototypes include the following:
Evolutionary prototypes are functional systems while throwaway Prototypes are only temporary
models of the system.
Evolutionary prototypes as part of the final system while throwaway prototypes are discarded after
they are used.
Evolutionary prototypes are very robust prototypes while throwaway prototypes are simple
prototypes.
In evolutionary prototyping, system developers focus on developing parts of the system that they
understand completely instead of working on developing an entire system which they do not
understand.
To minimize risks, developers do not implement poorly understood features.
Only well understood features are implemented.

9.2 An Overview of Prototyping


The partial system which is developed is reviewed, evaluated, and tested by users.
Users use the system, based on user testing of the partial system, he/she defines new features and
requirements and developers use these new features and requirements to improve the system.
Incremental Prototyping
In incremental prototyping technique developers first make a core part of the final product, and gradually
complete developing the whole system.
The final product is a separate prototype.
After finishing all the prototypes they will be merged to create the overall design of the system.
Extreme Prototyping
Extreme prototyping is used especially for developing Web applications.
It breaks down Web development process into three phases, each one is based on the previous one.
The three phases of the extreme prototyping are as follows:
The first stage is a static prototype in which only HTML pages of the Web application are created.
The second stage develops and programs the screens of the Web application. They become fully
functional.

9.2 An Overview of Prototyping


The third phase implements the services of the Web application.
The process is called extreme prototyping to draw attention to the second stage, where a fully-functional
user interface is developed with a little consideration to the services being developed.