Top Level Module Uses View

From SAD

Jump to: navigation, search


Primary Presentation


Visio file

Element Catalog

Consumer Website

The web-based user interface of the Adventure Builder is implemented in this module. The user interface lets the user browse the catalog of travel packages, place a new purchase order, and track the status of existing orders. This module creates the purchase orders based on user input and passes them to OpcApp for processing. It uses an implementation of the Model View Controller pattern called the Web Application Framework (waf). The model is implemented using Entity beans, the controller is implemented using servlets, and the view is a collection of JSPs and static HTML pages. Part of the client-facing code is implemented using the GWT framework.


OpcApp stands for Order Processing Center Application. The business logic of the Adventure Builder is implemented in this module. It provides the following functionality:

  • Accepting purchase order requests from the ConsumerWebsite for processing by hosting the Purchase Order Web Service.
  • Provide a mechanism for the Consumer Website to query the current status of a purchase order by hosting the Order Tracking Web Service.
  • Communicate with external suppliers to process and maintain the status of a purchase order.
  • Upon completion of processing a purchase order, send an email to the customer of its success or failure.

A module decomposition refined view and a module uses refined view of OpcApp are available.


This module contains utilities used by the Adventure Builder system.


This module contains Data Access Object (DAO) utilities, such as a DAO factory. It does not contain the actual DAO classes that access the database--these classes are inside the ConsumerWebsite module.


This module contains tracing and debugging utilities. The original name was tracer.


This module is an implementation of the ServiceLocator design pattern.


Google Web Toolkit (gwt) is an open source framework for development of rich internet applications based on Ajax.


Waf stands for Web Application Framework. It is a Model View Controller framework similar to Struts. It allows you to specify in configuration files the web screens and action that are associated to user clicks on specific elements of the screen. The configuration file has the mapping of screens and actions to Java classes. The framework provides the engine to display the proper screens and invoke the proper actions.

Bank credit card service

This module represents an external service provided by a partner bank to validate credit card transactions.

Airline booking service

This module represents an external service provided by an airline partner company to book air travel.

Lodging booking service

This module represents an external service provided by a lodging partner company to book hotel rooms.

Activity booking service

This module represents an external service provided by an activity supplier company to book different activities.

Context Diagram


Variability Guide

See OPC Module Uses View - Variability Guide.
See Top Level SOA View - Variability Guide.
See Consumer Website Multi-tier View - Variability Guide.



The WAF framework was chosen because it facilitates the implementation of the Consumer Website code by providing template classes for using the MVC pattern. For a given user operation, the developer implements an action class (controller) and JSP pages that correspond to the user screens (view). The developer also uses configuration files to provide a configurable mapping between actions, action classes, events and screens. The WAF infrastructure can then automatically take http requests and invoke the action classes and JSP screens.
WAF also provides support for event-based communication and internationalization.
An alternative to WAF was to use the Spring framework. Spring was a more robust and rich solution from a technical standpoint, but it was rejected because the development team is not familiar with Spring and very familiar with WAF.


The GWT framework was chosen for the following reasons:

  • It is open source, which allows us to go under the hood and fix things when needed.
  • It provides a rich development environment with powerful trace/debug, IDE integration and build management.
  • It integrates well with any other frontend technologies since it does not use proprietary standards.
  • It offers powerful widget construction features.
  • There are several extension libraries of widget components available.
  • Code is written in Java (and translated to JavaScript during build), which is an OO language that is familiar to the majority of the team.
  • Code is compiled into Javascript, which is available on a very high percentage of browsers.
  • It has a reasonably large support community and is backed by a major player in the industry (Google).

The table below shows the comparative analysis of GWT and competing technologies based on the specific needs of our project.

Flex GWT OpenLaszlo Silverlight
Development language ActionScript + MXML (Based on ECMAScript 4) Java + JavaScript LZX / JavaScript Any .net language + XAML
Development Environment Eclipse Flex Builder Eclipse (?) Visual Studio
Code-build-run turnaround* Good (~3s for simple application) Good (~4s for simple application) Very slow (30s+ for recompiling a 'hello world' page) (?)
Development efficiency Good (declarative UI elements, data binding, visual designer) Average (verbose procedural instantiation) Good (declarative, data binding) Good (same as Flex; Silverlight Blend compares to Flash MX)
Debugging tools Eclipse debugger Eclipse debugger Integrated debugger (couldn't get it to work) Visual Studio Debugger
Automated testing frameworks Flex automation testing API JUnit / Selenium (?) NUnit
Graphics / Animation Powerful flash animation engine Average, can be extended with scriptaculous, ext-js Depends on rendering runtime (Flash/DHTML) See Flex
Widget library Very rich (due to maturity of technology) Very rich (Javascript extension libraries) Average (immature) Same as flash (3rd party libraries)
Developer Community Well established Well established (?) Less than Flex but growing
Client execution performance* Very good (native code) Average (interpreted, except on Chrome) Slightly slower than Flex (intermediate Laszlo layer) Very good (native code)
Communication with server AMF, REST, SOAP GWT-RPC, REST, SOAP, JSON (?) (?)
Internationalization support Average. Flex Runtime localization for latin charactersets. No native support for right to left languages. GWT localization API provides out of the box solution. Below average. Only accented European languages so far. Poor, same as flex + lack of embeddable fonts.
Portability Requires Flash player Requires Javascript, no plugin needed on major browsers Runtime agnostic, currently supports Flash and DHTML (future projects for Java ME, iPhone, Silverlight?) Requires Silverlight plugin (not currently fully supported on Linux)
Mobile support Large number of platforms (all Windows mobile, most Symbian, 50+ cell phones) Very limited Depends on runtime (Flex or GWT) Supported for 1.0, Windows mobile and Nokia S60

*All performance tests were executed on the same hardware: Pentium M 1.7GHz, 2GB RAM, Win XP Pro SP2

Related Views

Personal tools