Log in

Pathways for statically mining the Model-View-Controller software architecture on mobile applications

  • Application of soft computing
  • Published:
Soft Computing Aims and scope Submit manuscript

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).

This is a preview of subscription content, log in via an institution to check access.

Access this article

Subscribe and save

Springer+ Basic
EUR 32.99 /Month
  • Get 10 units per month
  • Download Article/Chapter or Ebook
  • 1 Unit = 1 Article or 1 Chapter
  • Cancel anytime
Subscribe now

Buy Now

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Fig. 1
Fig. 2
Fig. 3
Fig. 4
Fig. 5
Fig. 6

Similar content being viewed by others

Data Availability

Enquiries about data availability should be directed to the authors.

Notes

  1. https://www.jpsim.com/uncovering-sourcekit/.

  2. https://raw.githubusercontent.com/dobreandl/macs/master/apple-object-scanning.txt.

  3. https://github.com/dobreandl/wrong-dependencies-example/tree/master.

  4. 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

    Article  Google Scholar 

  • 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

    Article  Google Scholar 

  • 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

    Article  Google Scholar 

  • 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

    Google Scholar 

  • 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

    Google Scholar 

  • Garofalo R (2011) Building enterprise applications with Windows presentation foundation and the model view view model pattern. Microsoft Press, Redmond

    Google Scholar 

  • 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

    MATH  Google Scholar 

  • Huang J, Liu J (2016) A similarity-based modularization quality measure for software module clustering problems. Inf Sci 342:96–110

    Article  Google Scholar 

  • Hussain S (2013) Investigating architecture description languages (ADLs) a systematic literature review. Ph.D. thesis, Linkö**s 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

    Google Scholar 

  • 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

    Google Scholar 

  • La HJ, Kim SD (2010) Balanced MVC architecture for develo** 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

    Google Scholar 

  • 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

    Article  Google Scholar 

  • 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

    Article  Google Scholar 

  • McGovern J, Ambler SW, Stevens ME (2004) A practical guide to enterprise architecture. Prentice Hall Professional, Hoboken

    Google Scholar 

  • Medvidovic N, Jakobac V (2006) Using software evolution to focus architectural recovery. Autom Softw Eng 13(2):225–256

    Article  Google Scholar 

  • 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 map** 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

    Article  Google Scholar 

  • 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

    Article  Google Scholar 

  • Potel M (1996) MVP: model-view-presenter the taligent programming model for C++ and Java. Taligent Inc, Cupertino, CA, p 20

    Google Scholar 

  • 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

    Google Scholar 

  • Ramírez A, Romero JR, Ventura S (2018) Interactive multi-objective evolutionary optimization of software architectures. Inf Sci 463:92–109

    Article  MathSciNet  Google Scholar 

  • 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

    Google Scholar 

  • Richards M (2015) Software architecture patterns. O’Reilly Media Incorporated, Newton, MA

    Google Scholar 

  • 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

    Google Scholar 

  • 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

    Article  Google Scholar 

  • 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

    Chapter  Google Scholar 

  • 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

    Article  Google Scholar 

  • 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

    Article  Google Scholar 

  • 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

Download references

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

Authors

Corresponding author

Correspondence to Dragoş Dobrean.

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

Reprints and permissions

About this article

Check for updates. Verify currency and authenticity via CrossMark

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

Download citation

  • Accepted:

  • Published:

  • Issue Date:

  • DOI: https://doi.org/10.1007/s00500-022-06908-0

Keywords

Navigation