Reverse-engineering user interfaces to facilitateporting to and across mobile devices and platforms

Eeshan Shah, Eli Tilevich
<span title="">2011</span> <i title="ACM Press"> <a target="_blank" rel="noopener" href="" style="color: black;">Proceedings of the compilation of the co-located workshops on DSM&#39;11, TMC&#39;11, AGERE!&#39;11, AOOPES&#39;11, NEAT&#39;11, &amp; VMIL&#39;11 - SPLASH &#39;11 Workshops</a> </i> &nbsp;
As mobile devices are rapidly replacing desktop computers for a growing number of users, existing user interfaces often need to be ported from the desktop to a mobile device. In addition, successful user interfaces written for one mobile platform are commonly ported to other mobile platforms. Traditionally, porting user interfaces requires that their source code be reverse-engineered and translated, which is difficult and error-prone. In this paper, we present an approach that reverse-engineers
more &raquo; ... user interfaces without having to analyze their source code. Specifically, our approach examines an interface's runtime representation by means of aspect-oriented programming (AOP). An aspect intercepts the program's control flow at the point when all the components of an interface are laid out on the screen, but before the interface is displayed. The aspect analyzes the interface's in-memory representation and extracts a platform-independent model that can then be used to generate equivalent interfaces for other devices and platforms. Our initial proof of concept ports Java Swing interfaces to Android. In this paper, we describe our approach, discuss its main technical challenges, and outline future research directions.
<span class="external-identifiers"> <a target="_blank" rel="external noopener noreferrer" href="">doi:10.1145/2095050.2095093</a> <a target="_blank" rel="external noopener" href="">dblp:conf/oopsla/ShahT11</a> <a target="_blank" rel="external noopener" href="">fatcat:wsykoxha4rft3hydj7uu6enthm</a> </span>
<a target="_blank" rel="noopener" href="" title="fulltext PDF download" data-goatcounter-click="serp-fulltext" data-goatcounter-title="serp-fulltext"> <button class="ui simple right pointing dropdown compact black labeled icon button serp-button"> <i class="icon ia-icon"></i> Web Archive [PDF] <div class="menu fulltext-thumbnail"> <img src="" alt="fulltext thumbnail" loading="lazy"> </div> </button> </a> <a target="_blank" rel="external noopener noreferrer" href=""> <button class="ui left aligned compact blue labeled icon button serp-button"> <i class="external alternate icon"></i> </button> </a>