What are RAD, Frameworks and IDE? Understand the difference and how we can use them to optimize the software development.
Working for Scriptcase Customer Service during the last 4 years, I am often asked about the difference between RAD, Framework and IDE so that’s why I’ve decided to write this post. I remember the first time I came across this nomenclature “RAD” was exactly through a customer, James Robe, he specializes in rapid development tools and also in LEAN methodology applied to software development, this methodology is centered on making obvious what adds value by reducing everything else. I remember that day I had the pleasure of having a “class” of it with him, today I’m going to try to replicate some of that story for you here.
RAD: rapid development of application. It was mentioned by James Martin for the first time in 1961 in England and it emphasizes a development cycle of 30 to 90 days. Martin’s methodology involves iterative development and the construction of prototypes. More recently, the term and your initials came to be used in a broader sense and generic, which encompasses a variety of techniques aimed at speeding application development, such as the use of web application frameworks and other types of software frameworks.
The development process in some cases can be very long, depending on the methodology for the development, this period can be extended in such a way that along the way several changes of scope has risk. RAD programming allows for more agility in development time. The James Martin approach to RAD divides the process into four distinct phases:
- Requirements planning phase – combines elements of the system planning and systems analysis phases of the Systems Development Life Cycle (SDLC). Users, managers, and IT staff members discuss and agree on business needs, project scope, constraints, and system requirements. It ends when the team agrees on the key issues and obtains management authorization to continue.
- User design phase – during this phase, users interact with systems analysts and develop models and prototypes that represent all system processes, inputs, and outputs. The RAD groups or subgroups typically use a combination of Joint Application Development (JAD) techniques and CASE tools to translate user needs into working models. User Design is a continuous interactive process that allows users to understand, modify, and eventually approve a working model of the system that meets their needs.
- Construction phase – focuses on program and application development task similar to the SDLC. In RAD, however, users continue to participate and can still suggest changes or improvements as actual screens or reports are developed. Its tasks are programming and application development, coding, unit-integration and system testing.
- Cutover phase – resembles the final tasks in the SDLC implementation phase, including data conversion, testing, changeover to the new system, and user training. Compared with traditional methods, the entire process is compressed. As a result, the new system is built, delivered, and placed in operation much sooner.
RAD approaches may involve compromises in functionality and performance, in return, allowing for faster development and facilitating application maintenance, re-uses existing components or create reusable. Analyzing the RAD we realize how much gain we can get using this methodology, but it is important to note that can only be implemented in a development project if the tool chosen to permit this, reuse of code is fully attached to this factor.
OK, we already know that RAD is basically a methodology. So we can find tools and development platforms that support its concept in the “Rapid Application Development” as the Scriptcase, for example. Scriptcase is an environment for rapid development of web applications in PHP. The range of components and already tested in ScriptCase is already too large and that’s why it can be considered a tool for RAD.
We can also mention other RAD tools as Dataflex, Visual Studio LightSwitch, Embarcadero RAD Studio, WaveMaker.
What about frameworks?
Let’s go by the English terminology first – A basic structure underlying a system, concept, or text. Taking clue from Library above, what can be the structure underlying a software? Yeah! A collection of different libraries put together to provide a set of general re-usable code which can then be customized for a particular application.
Well, in computer systems, a framework is often a layered structure, indicating the type of programs that can or should be built and how they interrelate. Some structures of computer system also include actual programs, specify programming interfaces or offer programming tools to use the frameworks.
On wikipedia we found that a software framework is an abstraction in which software providing generic functionality can be selectively changed by additional user-written code, thus providing application-specific software. A software framework is a universal, reusable software environment that provides particular functionality as part of a larger software platform to facilitate development of software applications, products and solutions. Software frameworks may include support programs, compilers, code libraries, tool sets, and application programming interfaces (APIs) that bring together all the different components to enable development of a project or system.
In a class library, for example, each class is unique and independent of the other in a framework, the dependencies/collaborations are embedded (wired-in interconnections) with library, the applications create collaborations. A framework imposes a collaboration model (the result of the analysis and design) to which you should adapt. When receiving a framework, the job is to provide the pieces that are specific to your application. The framework captures the functionality common to various applications
Apart from the technical terms and simplifying the explanation, framework is basically a lot of libraries, functions, classes and reusable objects that help you save time. As Frameworks include: Laravel, Zend framework, Cakephp, CodeIgniter, Symfone, jQuery, Prototype, etc.
Why so many developers use frameworks? There is no problem “pros and cons”, they simply make their programmer life much easier.
Last but not least, we will analyze IDE’s concept
What is the first thing that you will need for Custom Software Development? Yeah, a text editor. But text editor doesn’t offer any other advantage like autocorrect, intelligent code completion or form designers. Here comes an IDE – Integrated Development Environment – a text editor with additional support for developing, compiling and debugging applications. And even working this way you could make it look like an IDE if your text editor is customizable enough. As I see it, historically an IDE is merely a (monstrously mutated) evolution of a text editor.
A compiler is a part of an Integrated Development Environment (IDE) more specifically the program that takes the source code, written for some programming language, and creates the run-time. Years ago it was machine code directly executed by hardware, now it could also mean some intermediate byte-code (for languages working in a virtual machine like Java family), or even source code itself for script like languages (python, perl, ruby, etc.) byte-code will be generated on first run.
Modern IDEs also includes many many (many) other tools. To call it an IDE it should at least include a text editor (to type your program), some project management and build tool (make) enabling to run your program without leaving the IDE. Modern IDE’s also includes debugging tools, code coverage tools, version management tools, automated help and documentation tools, graphical resource editors, refactoring wizards, and many, many other useful tools.
But it is still possible to write programs without IDE. You just need to use a handful of separate programs and call them when you need to : a compiler (I usually compile with GCC, probably the C compiler available on the largest hardware range) , a text editor, a makefile, etc. or any other program you may need. I for one like to work that way and call my tools from command line prompt.
An IDE or integrated development environment is, therefore, a set of applications, typically consisting of a code editor, a compiler, a debugger, and a graphical interface that may or may not offer a friendly environment to a framework. As examples we have: Delphi, Dreamweaver, Frontpage, HTML 5 Builder, Eclipse, Visual Studio, NetBeans and IntelliJ, and etc.
Long story short, we could understand that RAD as a methodology that can be used for various development environments (hence the term “RAD tools”), i.e. tools that are based on the concept of rapid development (like Scriptcase); Frameworks that are a set libraries, functions, classes and reusable objects that help save time and organize the development and the IDEs that simply bring a set of applications to integrate everything needed for development.
I hope this post was helpful for you to learn the difference about that terms. See you in the next post. thanks!