A Model Based Approach for Android Design Patterns Detection

Design patterns in software development have shown great promise in improving software quality. Traditionally, software developers utilize a set of design patterns to foster reusability and better software design. Recently, mobile applications (apps) have become a mainstay of modern computing, as well as, a challenging domain for software engineers. This is because mobile apps now target more critical domains such as health, banking, m-payments, and even military to mention just a few. Android is a very popular mobile platform, and has managed to take over the majority of mobile market. It is true that there are comprehensive studies in the area of design patterns detection in several object-oriented languages such as Java, C# and C++. However, little studies target design patterns in Android apps. As a step toward helping to measure and explore the application of design patterns in Android apps, we introduce PatRoid, an automated framework for detecting design patterns. PatRoid is a model-based approach that is able to detect design patterns laying inside Android apps source code. The model is based on a graph isomorphism approach, where design patterns are divided into sub-patterns that can be aggregated to formulate design patterns. We have conducted a preliminary evaluation and the results show that PatRoid can detect all of the 23 GoF design patterns.

[1]  M. V. Judy,et al.  Analyzing the Impact of Software Design Patterns in Data Mining Application , 2017 .

[2]  Foutse Khomh,et al.  Do Design Patterns Impact Software Quality Positively? , 2008, 2008 12th European Conference on Software Maintenance and Reengineering.

[3]  Kuldeep Kumar,et al.  Detecting design similarity patterns using program execution traces , 2014, SPLASH '14.

[4]  Fazal Masud Kundi,et al.  Paper-Android-Based Health Care Management System , 2016 .

[5]  Saeed Jalili,et al.  Source code and design conformance, design pattern detection from source code by classification approach , 2015, Appl. Soft Comput..

[6]  Michele Risi,et al.  Design pattern recovery through visual language parsing and source code analysis , 2009, J. Syst. Softw..

[7]  Cornelia Boldyreff,et al.  A Method to Recover Design Patterns Using Software Product Metrics , 2000, ICSR.

[8]  Michail Kalogiannakis,et al.  Educational apps from the Android Google Play for Greek preschoolers: A systematic review , 2018, Comput. Educ..

[9]  Miltos Petridis,et al.  A Survey on Design Pattern Detection Approaches , 2017 .

[10]  John Grundy,et al.  A systematic mapping study of mobile application testing techniques , 2016, J. Syst. Softw..

[11]  Apostolos Ampatzoglou,et al.  The Effect of GoF Design Patterns on Stability: A Case Study , 2015, IEEE Transactions on Software Engineering.

[12]  Ilka Philippow,et al.  An approach for reverse engineering of design patterns , 2004, Software & Systems Modeling.

[13]  Ghulam Rasool,et al.  Design pattern recovery based on annotations , 2010, Adv. Eng. Softw..

[14]  Lennert Sloth,et al.  Variability Handling for Mobile Banking Apps on iOS and Android , 2016, 2016 13th Working IEEE/IFIP Conference on Software Architecture (WICSA).

[15]  Michele Risi,et al.  Detecting the Behavior of Design Patterns through Model Checking and Dynamic Analysis , 2018, ACM Trans. Softw. Eng. Methodol..

[16]  T. Ravichandran,et al.  A Smart Device Integrated with an Android for Alerting a Person’s Health Condition: Internet of Things , 2016 .

[17]  Steffen Becker,et al.  Combining clustering and pattern detection for the reengineering of component-based software systems , 2011, QoSA-ISARCS '11.

[18]  Jacques Klein,et al.  Static Analysis for Extracting Permission Checks of a Large Scale Framework: The Challenges and Solutions for Analyzing Android , 2014, IEEE Transactions on Software Engineering.

[19]  Jacques Klein,et al.  FlowDroid: precise context, flow, field, object-sensitive and lifecycle-aware taint analysis for Android apps , 2014, PLDI.

[20]  Erik G. Nilsson Design patterns for user interface for mobile applications , 2009, Adv. Eng. Softw..

[21]  Jacques Klein,et al.  IccTA: Detecting Inter-Component Privacy Leaks in Android Apps , 2015, 2015 IEEE/ACM 37th IEEE International Conference on Software Engineering.

[22]  Fuat Akal,et al.  Detecting Design Patterns in Object-Oriented Design Models by Using a Graph Mining Approach , 2016, 2016 4th International Conference in Software Engineering Research and Innovation (CONISOFT).

[23]  Yajin Zhou,et al.  Detecting Passive Content Leaks and Pollution in Android Applications , 2013, NDSS.

[24]  Walter F. Tichy,et al.  A Controlled Experiment Comparing the Maintainability of Programs Designed with and without Design Patterns—A Replication in a Real Programming Environment , 2004, Empirical Software Engineering.

[25]  Hironori Washizaki,et al.  Detecting Design Patterns in Object-Oriented Program Source Code by Using Metrics and Machine Learning , 2014 .

[26]  Abbas Rasoolzadegan Barforoush,et al.  The state of the art on design patterns: A systematic mapping of the literature , 2017, J. Syst. Softw..

[27]  M Zanoni,et al.  Data mining techniques for design pattern detection. , 2012 .

[28]  Bayu Hendradjaya,et al.  Evaluation of software design pattern on mobile application based service development related to the value of maintainability and modularity , 2016, 2016 International Conference on Data and Software Engineering (ICoDSE).

[29]  John C. Grundy,et al.  Mobile Application Testing in Industrial Contexts: An Exploratory Multiple Case-Study , 2015, SoMeT.

[30]  Jacques Klein,et al.  Automatically Exploiting Potential Component Leaks in Android Applications , 2014, 2014 IEEE 13th International Conference on Trust, Security and Privacy in Computing and Communications.

[31]  Marek Vokác An efficient tool for recovering Design Patterns from C++ Code , 2006, J. Object Technol..

[32]  Ping Zhang,et al.  Efficiently detecting structural design pattern instances based on ordered sequences , 2018, J. Syst. Softw..

[33]  John Grundy,et al.  Static analysis of android apps for lifecycle conformance , 2017, 2017 8th International Conference on Information Technology (ICIT).

[34]  Janet Wesson,et al.  Extending a mobile prototyping tool to support user interface design patterns and reusability , 2017, SAICSIT '17.

[35]  Lujo Bauer,et al.  Android taint flow analysis for app sets , 2014, SOAP '14.

[36]  Norsaremah Salleh,et al.  Automatic Generation of Android SQLite Database Components , 2018, SoMeT.

[37]  Yanyan Zhang,et al.  A comprehensive approach to the recovery of design pattern instances based on sub-patterns and method signatures , 2015, J. Syst. Softw..

[38]  Pinar Kirci,et al.  Game based education with android mobile devices , 2015, 2015 6th International Conference on Modeling, Simulation, and Applied Optimization (ICMSAO).

[39]  Krzysztof Stencel,et al.  Detection of Diverse Design Pattern Variants , 2008, 2008 15th Asia-Pacific Software Engineering Conference.

[40]  Apostolos Ampatzoglou,et al.  Investigating the effect of design patterns on energy consumption , 2017, J. Softw. Evol. Process..

[41]  Jacques Klein,et al.  Static analysis of android apps: A systematic literature review , 2017, Inf. Softw. Technol..

[42]  Hao Chen,et al.  Attack of the Clones: Detecting Cloned Applications on Android Markets , 2012, ESORICS.

[43]  V. N. Sastry,et al.  STAMBA: Security Testing for Android Mobile Banking Apps , 2015, SIRS.

[44]  David Brumley,et al.  An empirical study of cryptographic misuse in android applications , 2013, CCS.

[45]  Wenke Lee,et al.  CHEX: statically vetting Android apps for component hijacking vulnerabilities , 2012, CCS.

[46]  Rudolf K. Keller,et al.  Pattern-based reverse-engineering of design components , 1999, Proceedings of the 1999 International Conference on Software Engineering (IEEE Cat. No.99CB37002).

[47]  Lionel C. Briand,et al.  VPML: an approach to detect design patterns of MOF-based modeling languages , 2015, Software & Systems Modeling.

[48]  Matthew L. Dering,et al.  Composite Constant Propagation: Application to Android Inter-Component Communication Analysis , 2015, 2015 IEEE/ACM 37th IEEE International Conference on Software Engineering.

[49]  Ramesh Govindan,et al.  Calculating source line level energy information for Android applications , 2013, ISSTA.