Abstract
In the last few years, we have seen an increase in the number of mobile applications and their usage. The architectural pattern and correctness represent a major factor in the success of a mobile project and its lifecycle. Since architectural patterns can not be imposed on a codebase without an external validation system, we are proposing a novel technique for automatically analysing one of the most commonly used presentational architectural pattern Model-View-Controller (MVC). Our system analyses and detects architectural issues by leveraging information obtain from Software Development Kits (SDKs). For the evaluation of our proposal, we have focused on mobile codebases (private and open source), most specifically on the iOS platform. However, our findings can be extrapolated to other platforms which use SDKs for building their user interfaces (UI).






Similar content being viewed by others
Explore related subjects
Discover the latest articles, news and stories from top researchers in related subjects.Data Availability
Enquiries about data availability should be directed to the authors.
Notes
The consensus regards the component’s role that could be reflected by the component’s name or component’s functions; the two developers have agreed that the component’s name has the main impact.
References
Apple (2012a) Controller. https://developer.apple.com/library/archive/documentation/General/Conceptual/DevPedia-CocoaCore/ControllerObject.html
Apple (2012b) Model-view-controller. https://developer.apple.com/library/archive/documentation/General/Conceptual/CocoaEncyclopedia/Model-View-Controller/Model-View-Controller.html
Apple (2019) Placing objects and handling 3D interaction. https://developer.apple.com/documentation/arkit/placing_objects_and_handling_3d_interaction
Belle AB, El-Boussaidi G, Desrosiers C, Mili H (2013) The layered architecture revisited: is it an optimization problem? In: SEKE, pp 344–349
Belle AB, El Boussaidi G, Kpodjedo S (2016) Combining lexical and structural information to reconstruct software layers. Inf Softw Technol 74:1–16
Campos E, Kulesza U, Coelho R, Bonifácio R, Mariano L (2015) Unveiling the architecture and design of android applications. In: Proceedings of the 17th international conference on enterprise information systems, vol 2, pp 201–211
Cheng Y (1995) Mean shift, mode seeking, and clustering. IEEE Trans Pattern Anal Mach Intell 17(8):790–799
Chen X, Zhang W, Liang P, He K (2014) A replicated experiment on architecture pattern recommendation based on quality requirements. In: ICSESS. Citeseer, pp 32–36
Corazza A, Di Martino S, Maggio V, Scanniello G (2016) Weighing lexical information for software clustering in the context of architecture recovery. Empir Softw Eng 21(1):72–103
Daoudi A, ElBoussaidi G, Moha N, Kpodjedo S (2019) An exploratory study of MVC-based architectural patterns in android apps. In: Proceedings of the 34th ACM/SIGAPP symposium on applied computing. ACM, pp 1711–1720
DeLong D (2017) A better MVC. https://davedelong.com/blog/2017/11/06/a-better-mvc-part-1-the-problems/
Dobrean D, Dioşan L (2019) An analysis system for mobile applications MVC software architectures. In: Proceedings of the 14th international conference on software technologies, ICSOFT, INSTICC, vol 1. SciTePress, pp 178–185. https://doi.org/10.5220/0007827801780185
El Boussaidi G, Belle AB, Vaucher S, Mili H (2012) Reconstructing architectural views from legacy systems. In: 2012 19th working conference on reverse engineering. IEEE, pp 345–354
Fowler M (2002) Patterns of enterprise application architecture. Addison-Wesley Longman Publishing Co., Inc, Boston
Garcia J, Ivkovic I, Medvidovic N (2013) A comparative analysis of software architecture recovery techniques. In: Proceedings of the 28th IEEE/ACM international conference on automated software engineering. IEEE Press, pp 486–496
Garlan D, Shaw M (1993) An introduction to software architecture. In: Ambriola V, Tortora G (eds) Advances in software engineering and knowledge engineering. World Scientific, Singapore, pp 1–39
Garofalo R (2011) Building enterprise applications with Windows presentation foundation and the model view view model pattern. Microsoft Press, Redmond
Ghorbani N, Garcia J, Malek S (2019) Detection and repair of architectural inconsistencies in Java. In: Proceedings of the 41st international conference on software engineering. IEEE Press, pp 560–571
Hartigan JA, Wong MA (1979) Algorithm AS 136: a k-means clustering algorithm. J R Stat Soc: Ser C (Appl Stat) 28(1):100–108
Huang J, Liu J (2016) A similarity-based modularization quality measure for software module clustering problems. Inf Sci 342:96–110
Hussain S (2013) Investigating architecture description languages (ADLs) a systematic literature review. Ph.D. thesis, Linköpings Universitet
Intelligence G (2019) 2019 raport. https://www.gsmaintelligence.com/
Kocsis K (2018) Architectural patterns, MVC, MVVM: what is the hype all about? https://old.kristofk.com/mvc-mvvm-viper/
Koschke R (2013) Incremental reflexion analysis. J Softw: Evolut Process 25(6):601–637
Krasner GE, Pope ST et al (1988) A description of the Model-View-Controller user interface paradigm in the Smalltalk-80 system. J Object Oriented Program 1(3):26–49
La HJ, Kim SD (2010) Balanced MVC architecture for developing service-based mobile applications. In: ICEBE, 2010 IEEE 7th international conference on e-business engineering. IEEE, pp 292–299
Lakos J (1996) Large-scale C++ software design, vol 173. Addison-Wesley, Reading, MA, pp 217–271
Laval J, Anquetil N, Bhatti U, Ducasse S (2013) Ozone: layer identification in the presence of cyclic dependencies. Sci Comput Program 78(8):1055–1072
Le DM, Behnamghader P, Garcia J, Link D, Shahbazian A, Medvidovic N (2015) An empirical study of architectural change in open-source software systems. In: 2015 IEEE/ACM 12th working conference on mining software repositories. IEEE, pp 235–245
Maffort C, Valente MT, Bigonha M, Hora A, Anquetil N, Menezes J (2013) Mining architectural patterns using association rules. In: SEKE 2013, pp 375–380
Mariani T, Colanzi TE, Vergilio SR (2016) Preserving architectural styles in the search based design of software product line architectures. J Syst Softw 115:157–173
McGovern J, Ambler SW, Stevens ME (2004) A practical guide to enterprise architecture. Prentice Hall Professional, Hoboken
Medvidovic N, Jakobac V (2006) Using software evolution to focus architectural recovery. Autom Softw Eng 13(2):225–256
Mozilla (2018) Firefox iOS application. https://github.com/mozilla-mobile/firefox-ios
MutualMobile (2014) Meet VIPER: mutual mobile’s application of clean architecture for iOS apps. https://mutualmobile.com/posts/meet-viper-fast-agile-non-lethal-ios-architecture-framework
Olsson T, Ericsson M, Wingkvist A (2018) Towards improved initial mapping in semi automatic clustering. In: Proceedings of the 12th European conference on software architecture: companion proceedings. ACM, p 51
Oquendo F (2004) \(\pi \)-ADL: an architecture description language based on the higher-order typed \(\pi \)-calculus for specifying dynamic and mobile software architectures. ACM SIGSOFT Softw Eng Not 29(3):1–14
Orlov B (2015) iOS architecture patterns: demystifying MVC, MVP, MVVM and VIPER. https://medium.com/ios-os-x-development/ios-architecture-patterns-ecba4c38de52. Accessed date: 02 April 2021
Paixao M, Harman M, Zhang Y, Yu Y (2018) An empirical study of cohesion and coupling: balancing optimization and disruption. IEEE Trans Evol Comput 22(3):394–414
Potel M (1996) MVP: model-view-presenter the taligent programming model for C++ and Java. Taligent Inc, Cupertino, CA, p 20
Pruijt L, Köppe C, van der Werf JM, Brinkkemper S (2017) The accuracy of dependency analysis in static architecture compliance checking. Softw: Pract Exp 47(2):273–309
Ramírez A, Romero JR, Ventura S (2018) Interactive multi-objective evolutionary optimization of software architectures. Inf Sci 463:92–109
Rathee A, Chhabra JK (2017) Software remodularization by estimating structural and conceptual relations among classes and using hierarchical clustering. In: International conference on advanced informatics for computing research. Springer, pp 94–106
Reenskaug T (2003) The model-view-controller (MVC) its past and present. University of Oslo Draft, Oslo
Richards M (2015) Software architecture patterns. O’Reilly Media Incorporated, Newton, MA
Rosenberg A, Hirschberg J (2007) V-measure: a conditional entropy-based external cluster evaluation measure. In: Proceedings of the 2007 joint conference on empirical methods in natural language processing and computational natural language learning (EMNLP-CoNLL), pp 410–420
Rumbaugh J, Jacobson I, Booch G (2004) Unified modeling language reference manual. Pearson Higher Education, Hoboken, NJ
Sarkar S, Maskeri G, Ramachandran S (2009) Discovery of architectural layers and measurement of layering violations in source code. J Syst Softw 82(11):1891–1905
Scanniello G, D’Amico A, D’Amico C, D’Amico T (2010) Using the Kleinberg algorithm and vector space model for software system clustering. In: 2010 IEEE 18th international conference on program comprehension. IEEE, pp 180–189
Schmidt F, MacDonell SG, Connor AM (2012) An automatic architecture reconstruction and refactoring framework. In: Lee R (ed) Software engineering research, management and applications 2011. Springer, Berlin, pp 95–111
Terra R, Valente MT (2009) A dependency constraint language to manage object-oriented software architectures. Softw: Pract Exp 39(12):1073–1094
That MTT, Sadou S, Oquendo F, Fleurquin R (2016) Preserving architectural decisions through architectural patterns. Autom Softw Eng 23(3):427–467
Trust (2018) Trust wallet iOS application. https://github.com/TrustWallet/trust-wallet-ios
Verge T (2019) Adobe’s photoshop for the ipad is taking beta test applications. https://www.theverge.com/2019/5/14/18623055/adobe-photoshop-ipad-creative-cloud-beta-test-applications
Vewer D, Hendricks B, Hefferman C, Dobrean D (2019–2020) iOS developer survey. https://iosdevsurvey.com/2020/
Wikimedia (2018) Wikipedia iOS application. https://github.com/wikimedia/wikipedia-ios/tree/master
Xu Y, Liang P (2014) A cooperative coevolution approach to automate pattern-based software architectural synthesis. Int J Softw Eng Knowl Eng 24(10):1387–1411
Zapalowski V, Nunes I, Nunes DJ (2014) Revealing the relationship between architectural elements and source code characteristics. In: Proceedings of the 22nd international conference on program comprehension. ACM, pp 14–25
Acknowledgements
We thank the reviewers whose suggestions helped improve and clarify this manuscript. We also thank the two senior developers that constructed the ground truth by manually inspecting each component of the codebases used in the first iteration of our analysis [published in Dobrean and Dioşan (2019)] and of the supplementary codebases used in our extended analysis performed in the current paper.
Funding
The authors have not disclosed any funding.
Author information
Authors and Affiliations
Corresponding author
Ethics declarations
Conflict of interests
The authors declare that they have no conflict of interest.
Ethical approval
This article does not contain any studies with human participants or animals performed by any of the authors.
Additional information
Publisher's Note
Springer Nature remains neutral with regard to jurisdictional claims in published maps and institutional affiliations.
Rights and permissions
About this article
Cite this article
Dobrean, D., Dioşan, L. Pathways for statically mining the Model-View-Controller software architecture on mobile applications. Soft Comput 26, 10493–10511 (2022). https://doi.org/10.1007/s00500-022-06908-0
Accepted:
Published:
Issue Date:
DOI: https://doi.org/10.1007/s00500-022-06908-0