[PAST EVENT] Kevin P. Moran, Computer Science - Ph.D. Dissertation Defense
Mobile devices such as smartphones and tablets have become ubiquitous in today’s computing landscape. These devices have ushered in entirely new populations of users, and mobile operating systems are now outpacing more traditional “desktop” systems in terms of market share. The applications that run on these mobile devices (often referred to as “apps”) have become a primary means of computing for millions of users and, as such, have garnered immense developer interest. These apps allow for unique, personal software experiences through touch-based UIs and a complex assortment of sensors. However, designing and implementing high quality mobile apps can be a difficult process. This is primarily due to challenges unique to mobile development including change-prone APIs and platform fragmentation, just to name a few.
In this dissertation we develop techniques that aid developers in overcoming such challenges by automating and improving current software design and testing practices for mobile apps. More specifically, we first introduce a technique, called GVT, that improves the quality of graphical user interfaces (GUIs) for mobile apps by automatically detecting instances where a GUI was not implemented to its intended specifications. This technique is capable of constructing hierarchal models of mobile GUIs from metadata associated with both graphical mock-ups (i.e., created by designers using photo-editing software) and running instances of the GUI from the corresponding implementation. Then, using this model and graphical information from mock-up images and screenshots, GVT is able to detect instances where the implementation of the GUI does not match its intended design. Second, we develop an approach that completely automates prototyping of GUIs for mobile apps. This approach, called ReDraw, is able to transform an image of a mobile app GUI into runnable code by detecting discrete GUI-components using computer vision techniques, classifying these components into proper functional categories (e.g., button, dropdown menu) using a Convolutional Neural Network (CNN), and assembling these components into realistic code. Finally, we design a novel approach for automated testing of mobile apps, called CrashScope, that explores a given Android app using systematic input generation with the intrinsic goal of triggering crashes. The GUI-based input generation engine is driven by a combination of static and dynamic analyses that create a model of an app’s GUI and target common, empirically derived root causes of crashes in Android apps.
We illustrate that the techniques presented in this dissertation represent significant advancements in mobile development processes through a series of empirical investigations, user studies, and industrial case studies that demonstrate the effectiveness of these approaches and the benefit they provide developers. First, to evaluate GVT we carried out both a controlled empirical evaluation with open-source applications as well as an industrial evaluation with designers and
developers from Huawei, a major software and telecommunications company. The results show that GVT is able to detect and report violations of GUI design specifications with remarkable efficiency and accuracy and is both useful and scalable from the point of view of industrial designers and developers. GVT’s industrial applicability is bolstered by the fact that, at the time of this dissertation’s publication, over one-thousand industrial designers and developers at Huawei actively utilize our approach to improve the quality of their mobile apps. Second, our evaluation of ReDraw illustrates that our approach’s CNN achieves an average GUI-component classification accuracy of 91% and assembles prototype applications that closely mirror target mock-ups in terms of visual affinity while exhibiting reasonable code structure. Furthermore, interviews with industrial practitioners from Google, Facebook, and Huawei illustrate ReDraw’s potential to improve real design and development workflows. Finally, we evaluated CrashScope’s effectiveness in discovering crashes as compared to five state-of-the-art Android input generation tools on 61 applications. The results demonstrate that CrashScope is able to uncover crashes that other tools failed to detect and provides more detailed fault information. Additionally, in a study analyzing eight real-world Android app crashes, we found that CrashScope’s reports are easily readable and allow for reliable reproduction of crashes by presenting more explicit information than human written reports.
Kevin Moran is a Ph.D. candidate at William & Mary. He is a member of the SEMERU Research Group and is advised by Dr. Denys Poshyvanyk. He received a B.A. in Physics from the College of the Holy Cross in 2013 and received his M.S. in Computer Science from William & Mary in 2015. His main research interests include software engineering, maintenance, and evolution with a focus on mobile platforms. Additionally, he explores applications of data mining and machine learning to software engineering problems.