Software Engineering

Overview

It has been more than twenty years since the World Wide Web emerged. Nowadays, many kinds of applications utilize the Web. We research on such Web-based applications, in particular Rich Internet Applications and Smartphone applications.

We tackle two problems:

  1. How to comprehend nondeterministic behavior in Rich Internet Applications

    Rich Internet Applications (RIAs) make Web applications responsive by introducing asynchronous technologies such as Asynchronous JavaScript and XML (Ajax). Due to the unpredictable runtime context, developers have difficulties in understanding the behavior of RIAs when developing and maintaining such applications. To address the issue, we propose a method to extract stateful behavior of RIAs from the source code. Looking at both, the source code and the extracted model, developers can verify the correctness of the implementation and moreover find errors. Our method supports programmers in developing and maintaining user friendly RIAs.

  2. How to develop easy-to-navigate smartphone applications on the basis of web applications

    With the wide spread of smartphones, smartphone applications (SAs) become more popular. Many developers implement SAs on the basis of existing web applications (WAs). To design such applications, developers have to redesign web pages as views of SAs because smartphones have unique characteristics, such as small displays. This redesign is done by looking at each single view, thus developers can hardly comprehend whole transitions in SAs which may lead to SAs that are hard to navigate. Our framework calculates the navigability of SAs and suggests design modifications that improve the navigability. Using our framework, developers can implement easy-to-navigate SAs.

Research Topics

Analyzing Stateful Behavior in Rich Internet Applications

Rich Internet Applications (RIAs) make Web applications responsive by introducing asynchronous technologies such as Asynchronous JavaScript and XML (Ajax). Recently, many companies have published their applications as RIAs, for instance, Google maps, Flickr, and Facebook. However, developing and maintaining RIAs is complex for the following reasons:

  • Nondeterministic behavior: Due to unpredictable elements such as the timing of user interactions and server responses, the behavior of RIAs is hard to understand. It is problematic since, developers need to fully comprehend and control how the RIAs can behave in order to increase the usability and robustness of RIAs.
  • Rapid development cycle: Owing to the early releases and frequent specification updates of RIAs, developers rarely write documents and define models that help understanding such nondeterministic and complex behavior.

To address these issues, reverse engineering techniques that extract models from applications can help developers to implement and maintain RIAs. Therefore, we research on static analysis methods to extract a state transition model from the source code of AJAX-based RIAs. However, applications might have unpredictable contexts at runtime, i.e., extracting all possible states of an application might cause a state explosion.

In our work, we argue that interactions with RIAs, such as user events, server responses, and timeouts, can change the states of the applications. Although we cannot distinguish the descriptions of the interactions from other code fragments, our method uses the given specifications of HTML, JavaScript, and libraries as rules. Our method also conducts a rule-based analysis to detect statements that handle interactions, such as enabling buttons and receiving user input. Finally, our method extracts the stateful behavior of RIAs into state machines by focusing on the interactions. Looking at both the extracted model and the source code, developers can verify the correctness of the implementation and find erroneous behavior. The figure below shows a snapshot of our tool that uses this method, called JSModeler. By using this tool, it is easier for developers to implement and maintain user-friendly RIAs.

As future work, we intend to construct a method that automatically checks whether an extracted model contains faults relevant to interactions. We will consider applying model checking techniques by defining faults as bug patterns. In addition, for testing the contexts of the applications, we will use execution paths in the extracted models as test cases. Moreover, we want to establish a method to automatically specify and modify code fragments causing these faults.

Supporting View Transition Design of Smartphone Applications on the basis of Web Applications

When implementing functionalities of web applications (WAs) as smartphone applications (SAs), developers have to consider the characteristics of smartphones such as compact displays. To redesign web pages as views of SAs, developers extract important elements and divide elements into multiple smaller views. These operations might omit unextracted links and increase the number of necessary steps to reach a view. Thus, they change the original view transitions of the WA in the SA. Developers tend to neglect the global navigability while looking at each single view. However, this global navigability is important to develop user-friendly SAs.

We propose a framework that calculates the global navigability of SAs and suggests design modifications that improve the global navigability.

First, our framework extracts a page transition model from the WA to provide candidate view transitions in the SA. We provide a graphical interface for developers to design views of the SA on the basis of web pages. Our framework then calculates the global navigability of the SA by using our transition cost formulas. Our framework suggests design modifications, e.g., deleting a redundant link, in order to increase the global navigability. Developers can utilize both, their heuristics and our suggestions, to implement an easy-to-navigate SA.

Members

  • Yuta Maezawa (D1)
  • Ryo Shimizu (D1)
  • Tsutomu Kobayashi (M2)
  • Kazuki Nishiura (M1)
  • Keiichiro Hoshi (Research Student)

Contact Information

Yuta Maezawa:

Research Results

Selected Publications

  1. Kazuki Nishiura, Yuta Maezawa, Fuyuki Ishikawa, Shinichi Honiden, "Supporting View Transition Design of Smartphone Applications Using Web Templates", 12th International Conference on Web Engineering (ICWE'12), July 2012 (to appear).
  2. Yuta Maezawa, Hironori Washizaki, Shinichi Honiden, "Extracting Interaction-Based Stateful Behavior in Rich Internet Applications", In Proceedings of the 16th European Conference on Software Maintenance and Reengineering (CSMR'12), pp.423-428, March 2012.
  3. Taku Inoue and Shinichi Honiden, "A Method for Deta-flow Analysis of Business Components", In Proceedings of the 14th International ACM Sigsoft Symposium on Component based Software Engineering (CBSE’11), pp.51-60, June 2011.

Developed Softwares

  • JSModeler : A tool for analyzing stateful behavior in Ajax applications
  • VTroid : A tool for supporting view transition design of smartphone applications by leveraging existing web applications
  • AjaxMutator : A tool that helps applying mutation analysis on JavaScript web applications