RAD (from the English rapid application development - fast application development) is the concept of organizing the technological process of developing software products , focused on obtaining the highest quality results as fast as possible under severe restrictions on time and budget and unclearly defined product requirements. The effect of accelerating development is achieved by using appropriate technical means and continuous, parallel with the development process, clarifying requirements and evaluating current results with the involvement of the customer. RAD was created in the late 1980s as an alternative to earlier cascading and iterative models. Since the end of the 20th century, RAD has become widespread.
| Software development | |
|---|---|
| Software development process | |
| Key processes | |
| Analysis • Design • Programming • Documentation • Testing | |
| Models | |
| Iterative • Spiral • Cascading • V-Model • Dual Vee Model | |
| Methodologies | |
| Agile ( XP , Lean , Scrum , FDD , etc.) • Cleanroom • OpenUP • RAD • RUP • MSF • DSDM • TDD • BDD | |
| Related disciplines | |
| Configuration Management • Project Management • Requirements Management • Quality Assurance |
The same term is used for rapid prototyping and software development software tools. Typical qualities of such tools are the maximum automation of routine operations and the widespread use of visual programming .
Content
- 1 History
- 2 Purpose
- 3 Application
- 4 Basic principles
- 5 Development Phases
- 6 Benefits
- 7 See also
- 8 Sources
History
The creation of the RAD concept was the result of a combination of several factors.
- Dissatisfaction with the development methods of the programs of the 1970s and early 1980s , such as the “ Waterfall model ”. Developed by analogy with the design methods of "iron" technical systems, they provide for the phased formation of requirements, documentation, design and implementation. Their consistent application leads to such a slow process of creating the program that often even the basic requirements for the program have time to change before the end of development.
- Awareness of the fact that software product development differs from traditional types of engineering activity, consisting in the much greater availability of the subject of development for complex repeated modifications.
- The emergence of hardware capabilities and software development tools to quickly create workable prototypes of software systems and their parts and automate their documentation. When using such tools, an alternative to detailed design and thorough preliminary documentation of the system is the rapid creation or modification of the prototype and its direct evaluation by the customer.
- Successful experience in developing systems based on the work of a small cohesive team of developers directly interacting with each other and with a customer representative.
The founder of RAD is considered an IBM employee James Martin, who in the 1980s formulated the basic principles of RAD, based on the ideas of Barry Boyme and Scott Schultz. And in 1991, Martin published a famous book in which he detailed the concept of RAD and the possibilities of its application. Nowadays, RAD is becoming a common scheme for creating software development tools .
Purpose
RAD assumes that software development is carried out by a small team of developers for a period of about three to four months by using incremental prototyping using visual modeling and development tools. RAD technology provides for the active involvement of the customer at an early stage - the examination of the organization, the development of system requirements. The last of these properties implies the complete fulfillment of customer requirements, both functional and non-functional, taking into account their possible changes during the development of the system, as well as obtaining high-quality documentation that ensures ease of operation and maintenance of the system. This means that the additional support costs immediately after delivery will be significantly less. Thus, the total time from the beginning of development to obtaining an acceptable product when using this method is significantly reduced.
Application
RAD-technology is not universal, it is advisable to apply it only if the project meets all or some of the conditions:
- Short time. It is required to quickly create a system that meets the requirements of today. The increase in terms creates a high probability of such a significant change in the fundamental provisions governing automated activities that the system becomes morally obsolete even before the completion of design.
- Not clearly defined and / or changing requirements during development. The customer has a very rough idea of the work of the future software product and cannot clearly articulate all the software requirements. Requirements may not be defined at all at the beginning of the project or may change as it progresses.
- Limited budget when willing to participate in development. The customer does not have the means to pay for the work of a large team of designers and developers for a long time, but there is a willingness to allocate specialists for constant direct participation in the development and assessment of its current state.
- Small volumes or the ability to split the project into functional components. If the proposed system is large, it is necessary that it can be divided into small parts, each of which has clear functionality and minimally depends on the others. They can be issued sequentially or in parallel (in the latter case, several RAD groups are involved).
- The graphical user interface is the most important or one of the most important components of the system. It is in the creation of the interface that RAD technology gives the greatest advantages, since the interface is demonstrated directly on the prototype, and soon enough after the start of the project. It is even possible to directly involve a customer representative in designing an interface in a visual editor. This approach avoids the typical situation when the interface described by the user in the requirements (as a rule, without taking into account technological restrictions) in practice does not behave at all as the user expected, although formally the system fully complies with the documented requirements.
- Low computational complexity. Data processing in a project comes down to a combination of typical operations, all or most of which are already implemented as accessible libraries. Original data processing algorithms are either not required at all, or they are quite simple and can be implemented quickly and without much difficulty.
If the requirements for the system are clearly defined and cannot be changed, involvement of the customer in the development process is not required and traditional hierarchical development ( cascade method ) can be more effective. Also, RAD gives practically no advantages in projects, the main complexity of which is determined by the need to implement complex, non-standard data processing algorithms, and the user interface is either absent as such or very simple and completely standard.
Basic Principles
The principles of RAD technology are aimed at providing its three main advantages - high development speed, low cost and high quality. Achieving high quality software product is very difficult and one of the main reasons for the difficulties is that the developer and the customer see the subject of development (software) in different ways.
- The toolkit should aim to minimize development time.
- Creating a prototype to clarify customer requirements.
- Development Cycle: each new version of the product is based on an assessment of the result of the previous version by the customer.
- Minimizing the development time of the version, due to the transfer of ready-made modules and adding functionality to the new version.
- The development team should work closely, each participant should be ready to perform several duties.
- Project management should minimize the development cycle.
The principles of RAD are applied not only during implementation, but also apply to all stages of the life cycle, in particular to the stage of the organization’s examination, building requirements, analysis and design.
Development Phases
- Planning - a set of requirements obtained during system planning and analysis of the life cycle development procedure (SDLC). At this stage, users, managers and IT specialists discuss the tasks of the project, its scope, system requirements, as well as the difficulties that may arise during development. The phase ends with the coordination of key points with the RAD group and obtaining permission from the project managers to continue.Rapid Application Development (RAD) Model
- Custom design - during this stage, users, interacting with system analysts, develop models and prototypes that include all the necessary system functions. To translate custom prototypes into working models, the RAD group usually uses the technique of joint application development (JAD) and CASE tools. Custom design turns out to be a lengthy interactive process that allows users to understand, change, and ultimately choose a working model that meets their requirements.
- Designing is the stage in which the main task is to develop programs and applications. Similar to the implementation stage in the SDLC. In RAD, however, users continue to participate and can still propose changes or improvements in the form of their reports. Their tasks include programming and application development, code writing, module integration and system testing.
- Switching - includes data conversion operations, testing, transition to a new system and user training. In its tasks, it resembles the final stage of SDLC. Comparing with traditional software development methods, the whole process is time-consuming. As a result, the new system is faster built, delivered to the customer and installed at the workplace.
Benefits
Rapid Application Development (RAD) technology enables you to:
- the speed of marketing a software product to the market;
- user-friendly interface;
- easy adaptability of the project to changing requirements;
- simplicity of development of system functionality.
See also
- Visual programming
- Rapid Prototyping