Understanding reuse in the Android Market

Mobile apps are software products developed to run on mobile devices, and are typically distributed via app stores. The mobile app market is estimated to be worth billions of dollars, with more than hundred of thousands of apps, and still increasing in number. This explosion of mobile apps is astonishing, given the short time span that they have been around. One possible explanation for this explosion could be the practice of software reuse. Yet, no research has studied such practice in mobile app development. In this paper, we intend to analyze software reuse in the Android mobile app market along two dimensions: (a) reuse by inheritance, and (b) class reuse. Since app stores only distribute the byte code of the mobile apps, and not the source code, we used the concept of Software Bertillonage to track code across mobile apps. A case study on thousands of mobile apps across five different categories in the Android Market shows that almost 23% of the classes inherit from a base class in the Android API, and 27% of the classes inherit from a domain specific base class. Furthermore, on average 61% of all classes in each category of mobile apps occur in two or more apps, and 217 mobile apps are reused completely by another mobile app in the same category.

[1]  John C. Gyllenhaal,et al.  A study of code reuse and sharing characteristics of Java applications , 1998, Workload Characterization: Methodology and Case Studies. Based on the First Workshop on Workload Characterization.

[2]  Yuval Elovici,et al.  Automated Static Code Analysis for Classifying Android Applications Using Machine Learning , 2010, 2010 International Conference on Computational Intelligence and Security.

[3]  Victor R. Basili,et al.  How reuse influences productivity in object-oriented systems , 1996, CACM.

[4]  Amir Michail,et al.  CodeWeb: data mining library reuse patterns , 2001, Proceedings of the 23rd International Conference on Software Engineering. ICSE 2001.

[5]  Michael W. Godfrey,et al.  "Cloning Considered Harmful" Considered Harmful , 2006, 2006 13th Working Conference on Reverse Engineering.

[6]  Ying Zou,et al.  Exploring the Development of Micro-apps: A Case Study on the BlackBerry and Android Platforms , 2011, 2011 IEEE 11th International Working Conference on Source Code Analysis and Manipulation.

[7]  Antero Taivalsaari,et al.  On the notion of inheritance , 1996, CSUR.

[8]  Amir Michail,et al.  Data mining library reuse patterns in user-selected applications , 1999, 14th IEEE International Conference on Automated Software Engineering.

[9]  Jeffrey M. Voas,et al.  Vetting Mobile Apps , 2011, IT Professional.

[10]  Michael W. Godfrey,et al.  Software bertillonage: finding the provenance of an entity , 2011, MSR '11.

[11]  Mario Gleirscher,et al.  On the Extent and Nature of Software Reuse in Open Source Java Projects , 2011, ICSR.

[12]  William B. Frakes,et al.  Software reuse research: status and future , 2005, IEEE Transactions on Software Engineering.

[13]  Victor R. Basili,et al.  Support for comprehensive reuse , 1991, Softw. Eng. J..

[14]  Karl Trygve Kalleberg,et al.  Finding software license violations through binary code clone detection , 2011, MSR '11.

[15]  Yann-Gaël Guéhéneuc,et al.  Mendel: A Model, Metrics, and Rules to Understand Class Hierarchies , 2008, 2008 16th IEEE International Conference on Program Comprehension.

[16]  Chanchal Kumar Roy,et al.  An Empirical Study of Function Clones in Open Source Software , 2008, 2008 15th Working Conference on Reverse Engineering.

[17]  A. Mockus,et al.  Large-Scale Code Reuse in Open Source Software , 2007, First International Workshop on Emerging Trends in FLOSS Research and Development (FLOSS'07: ICSE Workshops 2007).

[18]  Andrea Valerio,et al.  The evaluation of framework reusability , 1997, SIAP.