Modeling a Web Application
Web applications are becoming progressively more intricate as well as mission critical. Modeling can help to manage this growing complexity. The current standard for modeling software-intensive systems is the Unified Modeling Language (UML).
Unfortunately, when modeling a Web application with UML, it becomes apparent that some components don't automatically fit into standard UML modeling elements. In order to utilize a single modeling notation for an entire system that includes Web components and traditional middle-tier components, UML must be extended.
This chapter introduces and discusses an extension to the UML, making use of its formal extension mechanism. The extension has been designed so that Web-specific components can be integrated with the remainder of the system's model. It is meant to exhibit a level of abstraction and detail suitable for application designers and implementers.
Overview
Nowadays, it seems that everyone involved with business software, and even many involved in non-business-related software efforts, has plans to build Web applications. Web applications have evolved from small successful Web site add-ons to robust n-tiered applications. Many Web applications service tens of thousands of concurrent users distributed all over the world. Building Web applications is serious business.
The actual term "Web application" has different meanings to different people. Some believe Web applications to be anything that utilizes the Java programming language, while others consider them to be anything that uses a Web server. For the purpose of this chapter, we will consider a Web application to be a Web system (Web server, network, HTTP, browser) in which user input (navigation and data input) affects the state of the business. With this definition, a Web application is a software system with a business state and a front end that is delivered via a Web system.
Generally, a Web application has the architecture of a client server system, with a few notable differences. A significant advantage of a Web application is deployment. Deploying a Web application consists of setting up server-side components on a network. The client needs no special software or configuration. The nature of client and server communication is also significantly different. The principal communication protocol of a Web application is HTTP, a connectionless protocol designed for robustness and fault tolerance instead of maximum communication throughput. Client-server communication in Web applications revolves around the navigation of Web pages instead of direct communications between server-side and client-side objects. Messaging in a Web application is best described as the request for and reception of Web page entities.
The architecture of a Web application is really not very different from the architecture of a dynamic Web site; the difference involves usage. A Web application implements business logic; use of the application changes the state of the business (as captured by the system). Since Web applications execute business logic, the most important models of the system focus on that logic as well as the business state instead of focusing on presentation details. This concept defines the focus of the modeling effort.
Presentation is not entirely unimportant, as the system won't be effective without it. When dealing with Web applications, a clear separation between business and presentation is essential. If presentation issues are important or complex, they should also be modeled.
A methodology often associated with the design, construction, and maintenance of intranet and Internet Web systems is known as Relationship Management Methodology (RMM). The goal of RMM is a reduction in the cost of maintaining dynamic, database-driven Web sites. A visual representation of the system is used to facilitate design discussions. It is a repetitive process that includes breaking down the visual elements in the Web pages, along with their associations with database entities.
RMM is not adequate for building most Web applications as they include a number of technological mechanisms for the implementation of business logic that are not covered by RMM notation. These technologies include client-side scripting, applets, and ActiveX controls, which often make significant contributions to the execution of the business rules.
Additionally, Web applications are often used as delivery mechanisms for distributed object systems. Applets and ActiveX controls contain components that interact asynchronously with server-side components via Remote Method Invocation (RMI) or Distributed Component Object Model (DCOM), independent of the Web server. Sophisticated applications also frequently use multiple browser instances and frames on the client, establishing and maintaining their own communication mechanisms.
Since all of these mechanisms contribute to the business logic of the system, they require modeling. Because they represent only a portion of the business logic, they also need to be integrated with the other models in the system.
In many Web applications, most of the business logic is executed behind the Web server in one of the server-side tiers. The needs of this side of the application typically lead to the choice of modeling language and notation. Since UML has been accepted as the de facto object modeling language, systems are expressed with UML notation to a greater extent than ever before. UML has become the language of choice for modeling software-intensive systems.
This chapter provides an introduction to the issues and possible solutions for modeling Web applications. It focuses on the architecturally significant components particular to Web applications, along with instructions on modeling them with UML. You should already be familiar with UML, object-oriented principles, and general Web application development. Throughout the remainder of this chapter, the following assumptions should be kept in mind:
Web applications are software-intensive systems that are becoming more complex, and are playing more mission-critical roles.
The complexity of software systems can be managed by abstracting and modeling them.
It is typical for a software system to have multiple models, with each representing a different level of abstraction and detail.
The exact level of that abstraction and detail depends on the artifacts and activities in the development process.
Unified Modeling Language (UML) is the standard modeling language for software-intensive systems.