This article describes the Rapid Application Development software engineering methodology and its interaction with Novulo. It lists the advantages of combining RAD’s iterative prototyping with Novulo's application design method while discussing how to avoid the common pitfalls related to the short iteration cycle and extensive prototyping.
RAD is a term introduced in 1991 by James Martin1 to describe a software development methodology that involves short iterations and relies partially on prototyping to complete specification requirements. In recent years, the acronym has been used in a broader sense to encompass a set of techniques (such as the use of frameworks) aimed at accelerating application development. RAD is often used in situations where time constraints force an approach in which faster application development is given priority over full functionality and performance.
As the name implies, Rapid Application Development focuses on accelerating software systems development. However, RAD was created as a response to non-Agile processes for software engineering, such as the Structured Systems Analysis and Design Method and other Waterfall models. The iterations and prototyping create opportunities to meet changing requirements during the development phase while uncovering requirements that were not specified during the initial requirements analysis. A successful RAD strategy is aimed at gaining the following advantages:
Rapid Application Development is not appropriate for all projects. The methodology works best for projects where the scope is small or work can be broken down into manageable chunks. Along these lines, project teams must also be small – preferably two to six people – and must have experience with all technologies that are to be used.
Business objectives will need to be well defined before the project can begin, so projects that use RAD should not have a broad or poorly defined scope. Furthermore, in order to keep the project within a short time frame, decisions must be able to be made quickly, making it imperative that there are very few client decision makers (preferably only one), and they must be clearly identified up front.
One of the key aspects of RAD is constructing prototypes for the purpose of jumpstarting design and fleshing out user requirements. The objective of prototyping is to build a feature-light version of the finished product in as short an amount of time as possible, preferably in just days. The initial prototype serves as a proof of concept for the client, but more importantly serves as a talking point and tool for refining requirements.
Developing prototypes is where CASE (Computer Aided Software Engineering) plays an important role. The creation of prototypes may seem to be an odd choice in a strategy aimed at speeding up development. However, the use of a development platform that focuses on capturing requirements, converting them to a data model, converting the data model to a database, and generating code can actually save precious time. CASE tools were popular in the late 80s and early 90s, but as technology has changed (and COBOL has become obsolete) few tools take total advantage of the full potential of CASE tool technology.
Developing applications using iterations means releasing increasingly functional versions of an application in short development cycles. Each release is discussed with the client in order to review requirements for the next iteration. These iterations can typically take between one day and three weeks, depending on the specific type of RAD methodology applied to the project.
Time boxing is the process of selecting features to be released in future iterations in order to complete the current version in a short amount of time. The importance of this step is not to be underestimated. Without proper and strict time boxing the length of iteration cycles will grow, minimizing the benefits of RAD and increasing the risk of feature creep3.
Active and involved project management is vital to mitigate the risks of lengthened development cycles, client misunderstandings, and missed deadlines. Due to the short iterations, management must be focused on clearing any obstacles that exist on the business end and guaranteeing the active involvement of the client in prototyping, writing test cases, and performing unit testing.
When RAD was first conceived it was deemed important to utilize tools incorporating the latest technologies to speed development. This is no less true today; the choice of technology to implement a project with is a significant factor in maximizing the benefits of RAD. As the industry combines best practices from different strategies, new technologies evolve that allow faster prototyping, better modeling, or frameworks that are more feature-complete.
In the 1970s and 1980s, several sequential software engineering processes were developed that regarded application development as flowing steadily downward through the different phases of the development process.
The first description of such a waterfall model is often cited in an article published in 1970 by Winston W. Royce2. However, in this article, Royce presented the model as an example of a flawed, non-working approach. "Waterfall" has in later years become a common term to criticize traditional software development practices. The problem with most waterfall models is the fact that it relies on a methodical requirements analysis phase alone to identify all critical requirements for the application. There is ample evidence that projects using a waterfall approach often fail to provide a useable end product; because projects often exceed their deadlines, the product either fails to meet all requirements or the requirements change during the protracted development phase.
There have been many responses to this problem from the 1980s to today, but almost all of those responses focus on the idea of developing systems in a short timeframe with small teams of highly skilled and motivated staff. It is the iteration step that solves the problems inherent to the inflexible approach of traditional software development.
Traditional development vs. Rapid Application Development
Over the years, many different forms of RAD have arisen, each with their own techniques and focuses. The following is a short list of popular methodologies and their main goals:
Since Rapid Application Development is an iterative and incremental process, there are certain risks to using RAD. It can lead to a succession of prototypes that never results in a satisfactory end product. The risks in RAD as opposed to "waterfall" development are related to the fact that RAD does not rely on a single requirements analysis phase.
Feature creep (also known as Scope creep or sometimes referred to as kitchen sink syndrome) is the term most commonly used when referring to the rapid increase of required features in a product after a project start. It is the most common source of cost and schedule overruns that can endanger or even terminate projects and products. Apple's abandoned Copland operating system is an example of a project terminated by feature creep. Avoiding feature creep requires involved project management and a willingness from both the client and the project management team to stick to the RAD development cycles.
Due to timeboxing, where features are pushed off to later versions in favor of delivering an application in a short time frame, RAD may produce applications that are less full-featured than traditionally developed applications. The choice of technology used to implement the project plays an important role in the "feature-richness" of the end result. A robust and complete framework can provide the application with the extra functionality needed to ensure a high-quality and full-featured system.
The software industry has seen a change in development strategy, shifting from session-based client / server development to sessionless collaborative development. This, coupled with the growing utilization of open source frameworks and products in core commercial development, has rekindled interest in RAD methodologies for many developers.
All forms of RAD have the potential for providing a good framework for faster product development with improved code quality, but successful implementation and benefits often hinge on project type, schedule, software release cycle, and corporate culture.
In recent years, Agile/Scrum (commonly used together) and Extreme Programming have received a lot of attention. One interesting commonality between the two approaches is the belief that code quality 3 plays a key role in both the maintainability and the continued application of RAD without loss of development speed in future iterations.
Rapid application development has three key concepts: Prototyping, iterations, and timeboxing. How can these concepts be implemented using the Novulo platform and in what way does Novulo reduce the common risks associated with RAD?
The software industry recognizes the benefits of using prototypes to increase business alignment and customer satisfaction through a better understanding of the client's needs. There are many CASE tools that utilize code generation to support prototyping, but most fail to offer a practical design interface or simply create code artifacts that still require extensive programming before a prototype is created. The following is a list of criteria commonly used to qualify/disqualify software (in particular code generators) as a RAD platform and their relation to Novulo:
As you can see from the above list, the unique combination of Novulo's intuitive visual representation, powerful modeling options, fast code generation, and a robust and complete .NET framework provide the opportunity to almost immediately demonstrate the result of a design choice in a generated application.
In RAD, after discussing each prototype and establishing requirements for the new iteration, work starts on implementing the features in the current time box.
When using Novulo, this work can be done directly after discussing requirements, effectively involving the client in the design. In a few short sessions the design is changed, optional coding can be done and the new prototype (or finished product) is ready. Because of the speed in design and the client involvement, the new prototype will be ready faster and better meet the customer's view of the desired system. Requirements will have changed less because of the short iterations and less future iterations may be needed to reach a complete and satisfactory end product.
The Novulo Architect contains a built-in Work item tracker, allowing the user to add work items to any element in the system. The work item note can hold information for a programmer (in the case of custom elements) or indicate that further design work is needed at a particular point in the application design. Clever use of this system can help in maintaining a strict timebox system, by prioritizing and listing work items. Each work item related to a feature in the timebox should be finished in that time box and be set to "finished" in the Architect. This way progress within a timebox is instantly visible.
Traditional "straight-forward"development methods are often criticized by software developers for the inflexibility caused by the dependency on a single requirements analysis. Rapid Application Development proposes an approach aimed at better serving the needs of the software market by allowing change using the prototyping, iteration, and timeboxing concepts.
In recent years, the focus of RAD has evolved to more practical methods for prototyping, faster iterations through better code generators, and the use of (web-) application frameworks.
In spite of its popularity, there are very few software suites that can fully support RAD techniques. Many modeling tools cannot generate code, code generators use impractical models that cannot allow a complete application to be generated and a lot of application frameworks are not suitable for quick prototyping and code generation.
Novulo meets all criteria for a RAD capable development environment. It utilizes proven, reliable technologies, produces multi-tier code, generates applications at the push of a button, allows custom coding, includes descriptive representations and can be used throughout the entire development process. Novulo combines the best practices of RAD combined with the biggest advantages of several other technologies in order to provide a versatile and flexible yet reliable platform for your development.
The award-winning Novulo technologies can remove the barriers for a successful RAD implementation and grant developers the power, flexibility, and speed needed to take control of the development process.