Builder AU technical editor, David McAmis gets down and dirty with the most popular IDE's to see how they they stack up as Rapid Application Development (RAD) tools.
Builder AU technical editor, David McAmis gets down and dirty with the most popular IDE's to see how they they stack up as Rapid Application Development (RAD) tools.
It seems like every vendor with a software development tool or platform claims that it can be used for -Rapid Application Development" with little evidence to back it up.
What is RAD?
In addition to being a marketing buzzword, the term RAD is used to describe applications that can be designed and developed within 60-90 days. James Martin first explored the concepts of RAD while working at Dupont in the mid-eighties. It was there that he and Scott Shultz formalised a system of developing applications using a methodology he developed called rapid iterative production prototyping, that used flowcharting to design programs and applications.
Martin is considered to be the father of computer-aided design and his original work has been grown, augmented and expanded into the discipline we currently know as RAD. Over the years, RAD has grown to include a number of basic tenets for what defines a RAD project.
To start, a RAD project is characterised by the use of prototypes. A RAD prototype helps to jump start the design process and can demonstrate the look and feel of the application, as well as cutting down on the time required to gather requirements from users for the initial features and functionality.
The concept is that with a basic set of requirements from users, a developer can quickly build a prototype that the user can interact with and suggest features, enhancements, etc., usually in a workshop setting, as part of joint requirements planning (JRD) or joint application development (JAD) process. So any development tool or platform that is touted as a RAD tool should be able to facilitate taking user requirements from a JRD workshop and quickly creating an application prototype that can be reviewed and modified in a JAD workshop with users.
A good RAD tool should also provide developers with the tools to quickly add and remove features without requiring extensive re-writes, using a component-based architecture. In addition to changing user requirements during the course of a RAD project, most projects are -timeboxed", meaning that there is a set length of time that has been set for the completion of the project. Any features or functionality that is not able to be delivered within that set time frame are removed or deferred to future release.
A second attribute of applications created using a RAD methodology is that there are a number of developers who may be working on the application at the same time and these developers can fulfil a wide range of roles within their team. For example, you may have a developer who has also created the architecture for the application in question, as well as designing the user interface and the code behind the scenes. This same resource may also be developing the test plans, testing the application, writing documentation, and eventually training users. In a more formal project, these roles may be divided among multiple resources. In a RAD project, time and resource constraints often mean that these roles (and more) must often by undertaken by a single developer. For a IDE to support this facet of RAD, it must be adaptable to the different roles a developer must play and support each of these roles in turn.
In addition to supporting the different roles within a team, a RAD tool must also be able to support the use of third-party components to deliver user requirements. In the debate over build-vs-buy, developers must be able to buy the components they don't have the time or inclination to build. For example if a developer is doing both the coding and user interface design for an application, they must be able to integrate components that could cut down the time required for either task (ie, code libraries, UI components, etc.)
Finally and most importantly, the litmus test for applications created using the RAD methodology is their fitness for a particular business purpose. In the normal phases of an application created using the proper software development lifecycle (SDLC), there would be a formal design process, where there are a number of deliverables during the cycle, including formal interviews, detailed design documents, semantic mapping between existing systems, process documentation, etc. that must be delivered.
In a RAD project, the primary question at the end of the project is -Does this application suit the business process for which it was created?" If the answer is yes, then the project is considered a success. To that end, a RAD tool should provide the ability to quickly create an application that solves the business problem at hand. And while there are elements of the SDLC that may be included in a RAD project, this is not a primary concern. For example, with a true RAD tool, the ability to generate a process-flow diagram or database schema is not as important as delivering the functionality required by the business process.
Testing the tools
When looking at the different development tools and platforms to road test, we walked through typical RAD projects including quick and simple data-entry forms, and tied to a simple database table on the back end. Following the RAD methodology, we built prototypes with each tool, noting where a tool provided efficiencies and where it could use improvement. We also looked at the features and functionality within the IDE that supported the tenets of RAD design and suitability for the required tasks.
Microsoft Visual Studio.NET 2003
Visual Studio.NET 2003 can be used to create Web and Windows applications for the .NET framework in a variety of languages, including C#, VB.NET, C++, J#, and other supported CLR-compatible languages, as shown in Figure 1. One of the distinct advantages of Visual Studio as a RAD tool is this multi-language support, enabling developers to build applications that have components written in different languages, enabling organisations to leverage the different skills that exist within the organisation.
For the quick creation of prototypes, Visual Studio also rates highly with a number of tools and components that can be used to quickly create data-driven applications. The tight integration with SQL Server is also a bonus, although developers who need to access information held on other platforms may find it cumbersome to connect to their underlying data.
That said, there are a number of database vendors who have tools that can snap in to Visual Studio, including Oracle and DB2 that make database integration less of an issue. In addition to database support, there is also a thriving industry around third-party components for Visual Studio, enabling developers to buy components for functionality they don't have the time or skill to build.
The one major deficiency in considering Visual Studio as a RAD tool lies with the tools Microsoft has provided for teams of developers working on a single project. For versioning and source control, most Visual Studio developers will use Microsoft's Source Safe, which is difficult to use across multiple locations or work sites. In addition, Visual Studio does not have a lot of support for other developer roles (architect, tester, etc.) so you will need to employ other Microsoft or third-party tools to cater for the unique requirements of each of these roles.
Microsoft has recently announced it will bundle a number of new tools in it's release of Visual Studio 2005 for architects, unit testing, and team development, but these tools are definitely missing from the current release and with a RAD project, you may not have the time to wait.
Figure 1: Microsoft Visual Studio.NET
Sun Java Studio Creator
Sun recently released the first version of Java Studio Creator, which can be used to create JSP Web applications. The IDE itself, shown in Figure 2 is well organised but it does not have the sophistication of some of the other tools that have been on the market for longer.
Prototyping with Java Studio Creator is a cumbersome process, where even changing simple attributes like the font name and size can difficult. The one area where Sun has done its homework is in the development of multi-page applications, where you can drag and drop connections between pages, making it a breeze to quickly create links between them.
Luckily, what Java Studio Creator lacks for prototyping, it makes up for this in other areas, providing everything you need to develop and deploy Java applications, including a SQL database server, an application server, and the Java SDK. For developers who are looking to get started with Java development or projects where Java is the language of choice, this all-in-one approach can get a project underway quickly.
However, for a RAD project that requires a team of developers to work together on a single project, Java Studio Creator is not a good fitÃ¢â¬"you are better off going with Sun's Java Studio Enterprise product, which is an integrated suite of tools more suited to large development teams. But for a small development team that needs to get underway quickly, Java Studio Creator may fit the bill.
As for third-party components, there are a number of Java components out there, but few (if any) that integrate with the Java Studio Creator IDE. As the tool matures you may see more support for an integrated toolset, but in this first release, it doesn't quite stack up against other more mature tools.
Figure 2: Sun Java Studio Creator
BEA Web Logic Workshop 8.1
WebLogic Workshop 8.1 is BEA's entry into the RAD tool stakes and can be used to create Web applications, Web services, JSPs, portals, EJBs, and process workflows. When you open WebLogic Workshop for the first time, you will notice a similar look and feel to the other RAD tools reviewed, but Web Logic Workshop provides a number of tools that make it easier to create prototypes of Web applications.
To start, the data integration is tight and allows you to quickly create data-driven Web pages and sites, with a number of pre-configured controls that will allow you to easily bind to a data source and display, edit, and update the data. This includes controls that you can use to control repeating elements and paging, which in other tools you may end up coding by hand. You can also use page flows within WebLogic Workshop to separate presentation, business logic implementation, and navigational control, as shown in Figure 3.
There is also a thriving community of third-party providers for components that can extend the BEA WebLogic Platform. And while there are not as many components available compared to those available for Visual Studio, most of the major categories of third-party tools (user interface, charting and graphing, additional functions, reporting, etc.) are well represented.
The user interface within the WebLogic Workshop IDE is also intuitive and easy to learn, even if you are new to BEA tools or Java development. In addition, building and testing your applications from within the IDE is a quick and straightforward process. This means that you can quickly iterate through multiple versions of an application without having waiting for the build process.
For developers who are new to JSP development, BEA WebLogic Workshop provides the easiest way to quickly develop JSP applications without having to know a lot about the underlying framework. For more experienced Java developers, the IDE also provides a number of advanced features that will also make them feel at home and in control of the underlying components.
For interoperability, you can use BEA WebLogic Workshop to create Web services that can be consumed by other platforms or languages (including .NET) without having to do any manual intervention or modifications to the Web services themselves.
Figure 3: BEA WebLogic Workshop
Borland C# Builder
Borland's C# Builder is the wildcard for .NET development, providing an alternative IDE for creating applications for the .NET framework. Borland has had some experience in creating IDEs for various languages and platforms and that experience shines through within C# Builder, shown here in Figure 4.
To start, prototyping with C# Builder is painless, with a clean, consistent IDE that makes it easy to quickly create and format page elements. The user interface itself is similar to the UI found in Visual Studio and developers familiar with that environment will have no trouble with productivity in C# Builder. For compatibility between tools, projects from C# Builder can be exported to Visual Studio-compatible projects.
In addition sharing a similar appearance to the Visual Studio IDE, C# Builder can also leverage most of the third-party components and tools that are available for Visual Studio, even if they were not written for C# Builder (although check with your third-party vendor to ensure that these components are supported for use with C# Builder before getting too far down the development path.)
For building component-driven applications, the ace that C# Builder has over other RAD tools is its interoperability with J2EE applications through Janeva, Borland's object request broker, which is an implementation of Visibroker for the .NET framework. Using Janeva you can leverage the existing J2EE applications within your organisation, which could potentially save time during a RAD project.
Team-oriented development is also well supported within C# Builder with support for source control and versioning. There are also a number of tools and technologies that have filtered down from other Borland products that make C# Builder a versatile tool for modelling and building applications, supporting a variety of developer roles (architect, modeller, developer).
Figure 4: Borland C# Builder
IBM WebSphere Studio Application Developer 5.1.2
IBM's foray into RAD tools comes in the form of IBM WebSphere Studio, which is based on technology from the Eclipse project. WebSphere Studio, shown in Figure 5, is best suited for an experienced development team, with a number of advanced features that are sure to confuse novice programmers and those developers new to Java development.
The trade-off is that WebSphere Studio can be considered a -power tool" for RAD development. When creating prototypes of Web applications you can quickly layout the entire site map for your application using the Web Site Navigation tools and then fill in the rest later. In addition, WebSphere Studio ships with tools that support JavaServer Faces components, so if you have some experience with Faces you can speed consist development.
And for development spread across a large team, WebSphere Studio also uses Rational ClearCase LT for version control and the integrated UML tools cater for architects who may also be working on the project. IBM has done a good job of integrating the technology from Rational into its development tools, which is a bonus for developers looking for a single-vendor (or even single-product) solution.
Figure 5: IBM WebSphere Studio Application Developer
If you had to pick one tool from this group that catered for all of the tenets of RAD, you would be hard pressed. Each of the tools we looked at have their own unique strengths and areas where they are better suited to a particular situation. For example, if you are considering a RAD project where you need to quickly create prototypes using a team of developers who have experience with different CLR languages, Visual Studio may provide the best tool for that environment.
On the other hand, if you need to build an application that integrates both .NET and J2EE components and are willing to standarise on a single language, C# Builder may be the best tool for the job. And the plethora of third-party components and add-ins means that you can buy commonly used components rather than build them yourself.
From the Java side of things, it is two-horse race between the tools from BEA and IBM. The distinct advantage that IBM has comes from the Rational tools that IBM has integrated into its products "in a large team environment this can speed development and time between prototype iterations.
So in the end, it depends on the developer resources you have on hand and their skill sets, your preferred platform and required features. While none of the IDEs we have looked at present a complete RAD solution, they do provide enough support for RAD to make them all contenders for your next RAD project.