Skip to Main Content
AJAX is an asynchronous client-side technology that enables feature-rich, interactive Web 2.0 applications. AJAX applications and technologies are very complex compared to classic web applications, having to cope with asynchronous communication over (unstable) network connections. Yet, AJAX developers still rely on the ad hoc development processes and techniques of the early '00s. To determine how the inherent complexity of AJAX impacts the design and maintenance of AJAX applications, this paper studies the amount of code reuse across the different features of an AJAX application. Furthermore, we analyze how the design of existing AJAX systems deal with AJAX-specific crosscutting concerns, such as handling the loss of network connectivity. We use dynamic analysis to recover the run-time behaviour of AJAX applications in the form of sequence diagrams that are indexed by the different asynchronous communication states that the application can be in. Exploratory case studies on three AJAX applications show that (1) a majority (60-90%) of the run-time behaviour is shared, theoretically simplifying maintenance, and (2) that the studied projects seem unprepared for loss of network connectivity, often presenting the user with an incorrect view of the application state.