![]() |
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. |
![]() |
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. |
![]() |
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. |
![]() |
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 |
![]() |
Sometimes leads to incomplete documentation. |
![]() |
The sequence of prototyping in the software development life cycle is shown in Figure 1. |

![]() |
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. |
![]() |
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. |
![]() |
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. |
![]() |
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. |
![]() |
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. |
![]() |
Software prototyping has many variants. Mainly, the prototypes are developed using the following two |
| techniques: |
![]() |
Throwaway prototyping and |
![]() |
Evolutionary 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. |
![]() |
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 |
![]() |
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. |
![]() |
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. |
![]() |
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. |
![]() |
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. |
![]() |
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. |