SEMERU Android Developer Tools

Welcome to the home page for the SEMERU set of Android development tools.  This site is a portal to research projects and tools created by the SEMERU Research group at the College of William & Mary and collaborators.  Our goal is to build useful, practical tools for developers to help improve the process of software creation, maintenance, and testing for mobile applications (with a focus on Android) by leveraging emerging program analysis, information retrieval, and machine learning techniques.  Our tools have been published at top research venues (including ICSE, FSE, and ICST), and we actively collaborate with industrial partners to apply solutions from academic research to problems faced by real world mobile developers. 

Current Projects

ReDraw - Using Artificial Intelligence to Automatically Prototype Mobile Applications

It is common practice for developers of user-facing software to transform a mock-up of a graphical user interface (GUI) into code. This process takes place both at an application’s inception and in an evolutionary context as GUI changes keep pace with evolving features. Unfortunately, this practice is challenging and time-consuming. In this paper, we present an approach that automates this process by enabling accurate prototyping of GUIs. Our approach called ReDraw combines automated software repository mining, dynamic analysis, and deep learning techniques to automatically convert images of a mobile app UI into highly accurate code.

MDroid+ Enabling Empirically Driven Mutation Testing for Android Apps

Mutation Analysis has arisen as a promising means of evaluating the effectiveness of software test suites.  However, traditional mutation operators tend to induce relatively simple bugs into software programs, and the extent to which the induced bugs are representative of real faults is an active topic of study.  With the MDroid+ project, we aim to help enable mutation testing for Android apps by empirically deriving a comprehensive set of mutation operators specific to the domain of Android apps.

Fusion - Improving Bug Reporting for Mobile Applications

Bug reporting systems have not changed significantly in recent years. Despite striking advancements in program analysis techniques, reporters typically enter textual information to describe a bug.  However, this type of report has been shown to be woefully inadequate for developers looking to reproduce and fix reported bugs.  The goal of the Fusion project is to leverage static and dynamic program analyses to improve the bug reporting process and produce higher quality reports with more detailed information, while requiring less effort from reporters.


ODBR - On Device Bug Reporting for Android Apps

Bugs that surface in mobile applications can be difficult to reproduce and fix due to several confounding factors such as varyiable contextual states, and device fragmentation.  Developers need support in the form of automated tools that allow for more precise reporting of application defects in order to facilitate more efficient and effective bug fixes.  The ODBR tool leverages the uiautomator framework and low-level event stream capture to offer support for recording and replaying a series of input gesture and sensor events that accuratley describe a bug in an Android application.


GVT - Automatically Verifying GUI Designs for Mobile Applications

The inception of a mobile app typically takes form of a mock-up of the Graphical User Interface (GUI), represented as a static image delineating the proper layout and location of GUI widgets that satisfy requirements. Following this initial mock-up, the design artifacts are then handed off to developers whose goal is to accurately implement these GUIs and the desired functionality. Given the sizable abstraction gap between mock-ups and code, developers often introduce mistakes related to the GUI that can negatively impact an app’s success in highly competitive marketplaces. The goal of the GVT project is to provide automated support for detecting and reporting these design violations in mobile apps.

GCat - Automated Summarization of GUI-Changes in Mobile Apps

Due to the rapid evolution of mobile apps, developers need automated support for documenting the changes made to their apps in order to aid in program comprehension. One of the more challenging types of changes to document in mobile apps are those made to the graphical user interface (GUI) due to its abstract, pixel-based representation. We developed a fully automated approach, called Gcat, for detecting and summarizing GUI changes during the evolution of mobile apps. Gcat leverages computer vision techniques and natural language generation to accurately and concisely summarize changes made to the GUI of a mobile app between successive commits or releases.

CrashScope- Effective Automated Testing for Android Applications

Automated testing techniques for Android exhibit notable shortcomings including: (i) A lack of expressive fault reports, (ii) lack of testing for contextual features (e.g. GPS, network), (iii) multiple input generation strategies.  CrashScope aims to overcome these shortcomings by using static analysis to identify GUI-specific locations where contextual features exist and multiple input generation strategies to effectively test these locations and uncover crashes.  When the tool crashes a target application, it generates an expressive report with the steps for reproduction and a repayable test script. Thus, CrashScope is an effective and practical automated testing tool for Android.

Current Team Members

Kevin P. Moran has recently defended his Ph.D. Dissertation in the Computer Science Department at the College of William & Mary and will be joining the W&M CS Department in August 2018 as a Post-Doctoral Researcher.  He graduated with a B.A. in Physics and Computer Science from the College of the Holy Cross in 2013, and an M.S. in Computer Science from the College of William & Mary in 2015.  Kevin is a member of the SEMERU research group and advised by Dr. Denys Poshyvanyk. 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. 

Carlos Eduardo Bernal-Cárdenas is a Ph.D. student at the College of William and Mary advised by Dr. Denys Poshyvanyk. He received his B.S. in Systems Engineering in 2012 and his M.S. in Systems Engineering and Computing from Universidad Nacional de Colombia. His research interests include software engineering, software evolution and maintenance, information retrieval, software reuse, mining software repositories, mobile applications development and user experience.

Denys Poshyvanyk is an Associate Professor in the Computer Science Department at William and Mary (see W&M by numbers) where he leads SEMERU research group. He received his Ph.D. from Wayne State University, where he was advised by Dr. Andrian Marcus. His current research is in the area of software engineering, evolution and maintenance, program comprehension, reverse engineering, software privacy, repository mining, traceability, performance testing, mobile app (Android) development and testing, energy consumption, and reuse.

Michele Tufano received the master’s degree in computer science from the University of Salerno, Italy. He is currently working toward the PhD degree in the College of William and Mary, Virgina, under the supervision of Prof. Denys Poshyvanyk. His research interests include soft- ware engineering, mining software repositories, software quality, software maintenance and evo- lution, and empirical software engineering. He is a student member of the IEEE and the ACM.

External Team Members


Mario Linares-Vasquez has recently received his Ph.D. from the College of William and Mary, advised by Dr. Denys Poshyvanyk, and he has joined Universidad de los Andes (Colombia), as a tenure­track Assistant Professor. His research interests include evolution and maintenance of mobile apps, automated GUI testing, and application of data mining and machine learning techniques to support software engineering tasks. The topic of his dissertation focused on supporting evolution and maintenance of Android apps, by relying on novel combinations of dynamic analysis, mining software repositories, and static analysis.

Christopher Vendome will be starting as an Assistant Professor at Miami University in Oxford, Ohio in Fall 2018. He received a B.S. in Computer Science from Emory University in 2012 and he received his M.S. in Computer Science from The College of William & Mary in 2014, and his Ph.D. in Computer Science from The College of William & Mary in 2018. His main research areas are software maintenance and evolution, mining software repositories, software provenance, and software licensing.

Gabriele Bavota is an Assis- tant Professor at the Universita della Svizzera italiana (USI), Switzerland. He received the PhD degree in computer science from the University of Salerno, Italy, in 2013. His research interests include software maintenance, empirical software engineering, and mining software repository. He is author of over 70 papers appeared in inter- national journals, conferences and workshops. He serves as a Program Co-Chair for ICPC’16, SCAM’16, and SANER’17. He also serves and has served as organizing and program committee member of international conferences in the field of software engineering, such as ICSE, ICSME, MSR, ICPC, SANER, SCAM, and others.

Massimiliano Di Penta Massimiliano Di Penta is an associate professor at the University of Sannio, Italy. His research interests include soft- ware maintenance and evolution, mining soft- ware repositories, empirical software engineering, search-based software engineering, and service- centric software engineering. He is an author of more than 230 papers appeared in international journals, conferences, and workshops. He serves and has served in the organizing and program committees of more than 100 conferences such as ICSE, FSE, ASE, ICSM, ICPC, GECCO, MSR WCRE, and others.