In less than three years, application development for the Web has evolved rapidly, and it shows no signs of slowing down.
By Anthony I. Wassernan
There have already been three waves of development for the World Wide Web. In the first wave (prior to late 1994), emphasis was on the presentation of text and graphical information, using browsers and servers considered primitive by today's standards. Much of the use during this phase was in the research community, before the general public even became aware of the Web.
In the second wave, starting in 1994, Web browsers and Hypertext Markup Language (HTML) were enhanced to enable the presentation of many different types of information, including forms and tables. Complex data, such as sound and QuickTime movies, could be downloaded and used in connection with helper applications. In this phase, application development was enabled through Common Gateway Interface (CGI) interfaces to databases and to executable code, written in either a scripting language such as Perl or a traditional programming language such as C or C++. A common type of application involved user input to a form, leading to database input and/or search, even though the stateless nature of Hypertext Transfer Protocol (HTTP) connections and slow performance prohibited efficient transaction processing.
These applications share many properties with non-Web client/server applications, in that the database and executable programs run on the server side, and presentation occurs on the client side. A key difference, of course, is that the client can be any browser running on any computer supporting that browser, unlike other client/server applications where the expected client is an Intel processor running Windows. Developers of these Web applications quickly moved to build their applications for a specific version of a specific browser, frequently the latest version of Netscape Navigator. In this way, they took advantage of the newest HTML and security features supported by a browser and greatly simplified their development and testing efforts.
The third wave of applications began with the introduction of Java in May 1995. Java is, first of all, a modern programming language. More significantly for the Web, though, is the related technology, particularly the Java Virtual Machine, which allows Java applications to run on a variety of computing platforms and Java applets to run in Web browsers that have implemented the Java Virtual Machine.
Java provides an effective way to execute complex operations on the client side. Java applets can be downloaded into a Java-enabled browser, such as Netscape Navigator, making it possible to run an arbitrary application within a browser window. Animation can be achieved not only with a Navigator plug-in, such as Macromedia's Shockwave, but with Java applets through the Java AWT tool and I/O class libraries. Furthermore, the Java Virtual Machine controls the allocated window area in the Java-enabled browser, making the "look-and-feel" of Java applets consistent among browsers.
The introduction of Java thereby opened up a new direction for application development; not just a new set of capabilities for browsers but an important alternative to existing approaches to the development of Web-based applications. In the same time frame, companies were moving from using the Web as an externally directed marketing tool to using it as an internally directed communications mechanism. These intranets had been used at first to provide corporate information and services (such as financial data and human resources records) to employees. As the technology developed, organizations saw that their intranets could eventually be used to support a variety of enterprise-wide applications, connecting distributed locations.
The capability to build complex applications for the Web raises many issues for application development. Among them are these:
To date, the relatively little experience with Web-based application development makes it difficult to answer these questions. However, there are some general guidelines and a rapidly growing number of tools.
As with other client/server applications, Web applications can and usually should follow a spiral model of application development. This model takes an incremental approach to designing and building the application, focusing first on the high-risk and high-impact parts of the application. One valuable aspect of the spiral approach is that there is a running application very early in the development process, and successive iterations augment the functionality. One common strategy is to design and implement the "normal" flow of application control first, leaving places for exceptional conditions and error-handling.
In this spiral model, design of the user interface usually receives early attention. Experience has shown that a prototype of the user interface is among the best ways to obtain effective user input to defining application requirements and therefore to building an application that closely meets user needs. The long-term benefit of this strategy is greater user satisfaction with the application and lower maintenance costs over the lifetime of the system.
User activities can be modeled with scenarios. Each scenario can be mapped into a sequence of user inputs with appropriate system outputs. These user inputs are designed using the various graphical elements supported by the browser, including both HTML and Java elements. (There is some overlap between these sets of elements.) Using this approach, an iteration of the spiral development model may simply implement additional scenarios. This approach can be used along with an object-oriented analysis method, such as Object Modeling Technique (OMT) or the new Universal Modeling Language (UML), to identify and organize application classes and their behavior. Among the tools that support these modeling techniques are Rational's Rose, Select Software's Select Enterprise, Platinum's Paradigm Plus and Aonix's Software through Pictures (StP) for both OMT and UML.
Many different tools can be used for implementing the graphical elements for a Web page or site. Among the best known WYSIWYG tools for page design are Claris Works and Adobe's Page Mill; site design tools include NetObjects' Fusion, DeltaPoint's QuickSite and Adobe's Site Mill. Separate tools exist for building the graphical elements of a Java applet or application. Among these are Symantec's Visual Cafe, SunSoft's Java Workshop, Microsoft's J++, Aimtech's Jamba, Asymetrix's SuperCede, Penumbra Software's Mojo and Borland's JBuilder.
Many applications for the World Wide Web involve user access to a database through a browser. For this class of applications, it is important to model the database early in the process, often before considering the user interface. For data-intensive applications, database design is the most important aspect of the system, affecting application performance and evolvability. In many cases, the design will have to serve many different applications, each with different data needs. There are numerous data modeling tools, including Logic Works' ERwin, Sybase's S-Designor and Aonix's StP/IM, that can be used to visualize the data and their relationships, as well as to generate the needed definition in the SQL data definition and manipulation language.
Database access from a Web browser is effectively achieved through the Internet Server Application Programming Interface (ISAPI), which allows applications to maintain state information. There are now many ways to access relational and object-oriented databases via Open Database Connectivity (ODBC). By using this interface, programs can work with any ODBC-compliant database. Similarly, databases may be used from Java with a Java Database Connectivity (JDBC) connection.
There are various tools for building these database applications. In addition to Netscape's Live Wire Pro and tools from the various database vendors, companies like NetDynamics and Bulletproof Software have created products that simplify the task of writing the code for database access and manipulation.
Until now, most Web-based applications have been of modest size and complexity. It is only within the past year or two that mission-critical Web-based applications, such as those from Federal Express and Charles Schwab, have been deployed. With this growth in complexity comes a need to follow a systematic approach to the development process, characteristic of any other application development project where numerous people will be involved for numerous months to build a system that may evolve through many versions over many years.
Application development for the World Wide Web is in its infancy, and there are several key areas, notably testing and metrics, for which additional R&D is needed. Tools for version control and configuration management must be adapted for Web development projects. In fact, little is known about the project management questions raised above. What is certain, though, is that "serious" application development for the Web, including corporate intranets, has moved beyond the domain of the individual webmaster and into development organizations. These organizations will need substantial quantities of training to evolve their skills to the new dynamic, network-based platform.
Anthony I. Wasserman is the founder of Software Methods and Tools in San Francisco. A member of the UniForum Technical Steering Committee, he can be reached at firstname.lastname@example.org.