Rapid Application Development is a (software) development methodology that focuses on producing systems faster and with a higher standard of quality. Although RAD is a
concept that can be used as an approach to other types of development, it is primarily used in software development, including web applications. The characteristics of RAD involve:
- Gathering requirements using workshops involving key client groups and the development team
- Prototyping and early, reiterative user testing and review of system designs
- A rigidly paced schedule that defers design improvements to the next reiteration (time-boxing)
- The re-use of software components
- A close relationship between users and the development team during implementation with less formality in reviews and other team communications
In the first instance, structured techniques are employed to define user requirements. During this phase, the proposed system is broken down into instances of program functionality.
Once each requirement is thus defined, they can be combined and represented as processes within a business model. The business model will encapsulate data objects which clearly are
defined along with their relationship to each other. The definition and format of system data, as well as business rules are defined within the structure of the business model. If a business
model accurately represents the requirements of a system then it can not only save a lot of time and expense in development, but it also means that data objects witin the business model
can be re-used within the system, and also within other systems as well. That classes of code can exist as completely re-usable objects is a very attractive facet of RAD and
OOP.
The technique of prototyping is employed to render the business model, and is used to verify the requirements of the system. The use of prototyping ensures that the client can review
the work done by the development team sooner compared to older approaches in software development, and their input can be taken into account during the following reiteration. This
means that changes in system requirements or design are clarified and taken into account at an early stage of development saving both time and money. This approach is particularly useful
when a client is unsure of exactly what they want until they see a design prototype. Prototyping makes system requirement clarification a lot easier.
Qualities of RAD are prevalent amongst other similar approaches to sofware developement like the various flavours of Agile Software Development. The essential nature of RAD - the
incremental development based on refinement, as well as the focus on the fast delivery of a quality product - means that successful RAD is still favoured by good development teams.