Rapid Application Development (RAD)5 Rapid application development is a collection
of methodologies that emerged in response to the weaknesses of waterfall
development and its variations. RAD incorporates special techniques and computer
tools to speed up the analysis, design, and implementation phases in order to get
some portion of the system developed quickly and into the hands of the users for
evaluation and feedback. CASE (computer-aided software engineering) tools, JAD
(joint application development) sessions, fourth-generation/visual programming
languages (e.g., Visual Basic.NET), and code generators may all play a role in
RAD. While RAD can improve the speed and quality of systems development, it
may also introduce a problem in managing user expectations. As systems are developed
more quickly and users gain a better understanding of information technology,
user expectations may dramatically increase and system requirements may expand
during the project (sometimes known as scope creep or feature creep).
RAD may be conducted in a variety of ways. Iterative development breaks the
overall project into a series of versions that are developed sequentially. The most important
and fundamental requirements are bundled into the first version of the system. This
version is developed quickly by a mini-waterfall process, and once implemented, the
users can provide valuable feedback to be incorporated into the next version of the system.
(See Figure 2-5.) Iterative development gets a preliminary version of the system
to the users quickly so that business value is provided. Since users are working with the
system, important additional requirements may be identified and incorporated into subsequent
versions. The chief disadvantage of iterative development is that users begin to
work with a system that is intentionally incomplete. Users must accept that only the
most critical requirements of the system will be available in the early versions and must
be patient with the repeated introduction of new system versions.
System prototyping performs the analysis, design, and implementation phases
concurrently in order to quickly develop a simplified version of the proposed system
and give it to the users for evaluation and feedback. (See Figure 2-6). The system
prototype is a “quick and dirty” version of the system and provides minimal
features. Following reaction and comments from the users, the developers reanalyze,
redesign, and reimplement a second prototype that corrects deficiencies and
adds more features. This cycle continues until the analysts, users, and sponsor agree
that the prototype provides enough functionality to be installed and used in the
organization. System prototyping very quickly provides a system for users to evaluate
and reassures users that progress is being made. The approach is very useful
when users have difficulty expressing requirements for the system. A disadvantage,
however, is the lack of careful, methodical analysis prior to making design and
implementation decisions. System prototypes may have some fundamental design
limitations that are a direct result of an inadequate understanding of the system’s
true requirements early in the project.