Cloud Twin

Cloud Twin was my very first research project as an undergraduate. I began working on it in Spring of 2013 along with Mohammed Davoodi. Eeshan Shah had been working on the project for some time, but was graduating that May so Mohammed and I were to take over after Eeshan left. The three of us worked under Dr. Eli Tilevich to formulate a way to dynamically replay gui events from one platform (Android) onto another (Windows Phone). What we were able to create became known as Cloud Twin.

Below you can find the abstract for the papers we submitted to Automated Software Engineering 2013 (ASE'13) and Systems, Programming, Languages and Applications: Software for Humanity 2013 (SPLASH'13) as well as links to the full text and the source code.


To successfully compete in the software marketplace, modern mobile applications must run on multiple competing platforms, such as Android, iOS, and Windows Phone. Companies producing mobile applications spend substantial amounts of time, effort, and money to port applications across platforms. Creating individual program versions for different platforms further exacerbates the maintenance burden. This paper presents Cloud Twin, a novel approach to natively executing the functionality of a mobile application written for another platform. The functionality is accessed by means of dynamic cross-platform replay, in which the source application's execution in the cloud is mimicked natively on the target platform. The reference implementation of Cloud Twin natively emulates the behavior of Android applications on a Windows Phone. Specifically, Cloud Twin transmits, via web sockets, the UI actions performed on the Windows Phone to the cloud server, which then mimics the received actions on the Android emulator. The UI updates on the emulator are efficiently captured by means of Aspect Oriented Programming and sent back to be replayed on the Windows Phone. Our case studies with third-party applications indicate that the Cloud Twin approach can become a viable solution to the heterogeneity of the mobile application market.