Article
Making Rich Web Application Architecture Usable
A Usable Architecture
Even though we have decades of experience in software development, we have yet to solve the mysteries of software complexity. In order to develop usable rich Internet applications, it is necessary that the development process be as simple as possible, without neglecting any of the above usability constraints.
Patterns make it easier for the architect by providing them a system in which to store the lessons they've learnt. Most software patterns help the designer to cognitively grasp the problems encountered by others, and side-step them. A pattern that reduces complexity for the programmer without allowing them to lose track of the user will benefit the application designer.
To design a complex structure, one powerful technique is to discover viable ways of dissecting it into semi-independent components that correspond to its many functional parts. The design of each part can then be carried out with some degree of independence -- as each will affect the others largely through its functionality -- and independent of the details of the mechanisms that accomplish the function.
The complexity of the application is reduced when it's split into less dependent pieces. This separation into manageable parts will also make the application capable of evolution, rather than revolution, as this approach allows easy and small changes to be made.
The question now is: how do we split a rich Internet application so that designing under the above usability constraints becomes simpler? Dividing the application into pages and navigation will help. Each page is composed of data, components, logic, and presentation. The pages are encapsulated in the navigation shell, which again has data, components, logic and presentation.
Page
The page is an aggregation of data, components, logic and presentation. All interactions that are carried out together are grouped to form a task. The page encapsulates all these interactions. The users interact by visualizing and modifying various objects on a page through different views. Modifying the object in one view could immediately be reflected in the other views in the page because the rich Internet application is dealing with the data model of the object, rather than the data view of the object.
Reflecting the data model locally will enable offline interactions as well. For example, a tabular data object can be shown in different views. The table with all the columns, a slider with the maximum and minimum values of a column, and tick boxes containing the values of a column are a few views of the table data object with which the user might interact. Adjusting the slider view should update the table view in real-time. The modifications that are made to the data can be sent to the server when the user connects to the network.
Separating the navigation from the page doesn't mean that that the pages should not contain any links to other pages. If the page fits in a default process, the navigation should be integrated into it to help novice users. Clean and simple pages are easily learnable. Simplicity can be achieved by reducing the number of elements in the interface and by categorizing them into groups. The Interaction architect is responsible for the task-based page design.
Navigation
Navigation provides links from a given page to various other pages, depending on the context of the user's original location. It is an aggregation of navigation data, navigation logic, navigation presentation and navigation components within pages. Navigation data organizes the relations between a page and other pages into different facets.
Standard formats like Xfml (eXchangeable Faceted Metadata Language) can be used to store the navigation data. Other data, such as the navigation path followed by users, can also be used in navigation.
Having a consistent navigation layout supports easier browsing of the site's pages. Categorizing related links or reducing the number of links makes the navigation simple. Giving a URL to the pages and making them accessible from the Web will make the applications findable.
The Information architect is responsible for the navigation layout and contextual linking of various pages.
Data
Data is separated in rich Internet applications as it comes from the server or is collected separately on the client side. A few of the different types of data include application data, preferences data, logging data, and navigation data.
Some data exists only on the client side, but reflecting all data on the server provides the user with a consistent experience across various devices. The Web services on the server side handle the complexities of sending out the application data according to the requests received. Restricting shared data access and managing it efficiently among applications will help the site owner maintain security. Also, using standard formats to store data will achieve interoperability between applications.