Abstract
Mobile applications are one of the most used pieces of software nowadays, as they continue to expand, the architecture of those software systems becomes more important. In the fast-paced domain of the mobile world, the applications need to be developed rapidly and they need to work on a wide range of devices. Moreover, those applications need to be maintained for long periods and they need to be flexible enough to work and interact with new hardware. Model View Controller (MVC) is one of the most widely used architectural patterns for building those kinds of applications. In this paper, we are analysing how an ML technique, in fact clustering, can be used for detecting autonomously the conformance of various mobile codebases to the MVC pattern. With our method CARL, we pave the way for creating a tool that automatically validates a mobile codebase from an architectural point of view. We have analyzed CARL’s performance on 8 iOS codebases distributed into 3 different classes based on their size (small, medium, large) and it has an accuracy of 81%, an average Mean Silhouette coefficient of 0.81, and an average Precision computed for each layer of 83%.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Notes
- 1.
Metrics like accuracy, precision, and recall will be used for this purpose.
- 2.
The performance can be evaluated through metrics like homogeneity, completeness, Silhouette Coefficient score, Davies-Bouldin index.
References
Apple. (2012). 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://apple.co/3eHS164
Avgeriou, P., Kruchten, P., Ozkaya, I., & Seaman, C. (2016). Managing technical debt in software engineering (dagstuhl seminar 16162). In Dagstuhl reports (Vol. 6). Schloss Dagstuhl-Leibniz-Zentrum fuer Informatik.
Belle, A. B., El Boussaidi, G., & Kpodjedo, S. (2016). Combining lexical and structural information to reconstruct software layers. IST, 74, 1–16.
Bishop, C. M. (2006). Pattern recognition and machine learning. Springer.
Boudali, H., et al. (2008). Arcade-a formal, extensible, model-based dependability evaluation framework. In 13th IEEE ICECCS (pp. 243–248). IEEE.
Cai, Y., et al. (2013). Leveraging design rules to improve SA recovery. In ACM Sigsoft Conference on Quality of Software Architectures (pp. 133–142). ACM.
Corazza, A., Di Martino, S., Maggio, V., & Scanniello, G. (2011). Investigating the use of lexical information for software system clustering. In 2011 15th European Conference on Software Maintenance and Reengineering (pp. 35–44). IEEE.
Daoudi, A., et al. (2019). An exploratory study of MVC-based architectural patterns in android apps. In ACM/SIGAPP SAC (pp 1711–1720). ACM.
Davies, D. L., & Bouldin, D. W. (1979). A cluster separation measure. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2, 224–227.
Dobrean, D., & Dioşan, L. (2019). An analysis system for mobile applications MVC software architectures (pp. 178–185). INSTICC, SciTePress.
Dobrean, D., & Dioşan, L. (2020). Detecting model view controller architectural layers using clustering in mobile codebases. In ICSOFT (pp. 1–6).
Dobrean, D., & Dioşan, L. (2021). Importance of software architectures in mobile projects. In 2021 IEEE 15th International Symposium on Applied Computational Intelligence and Informatics (SACI) (pp. 000281–000286). IEEE.
Fawcett, T. (2006). An introduction to roc analysis. Pattern Recognition Letters, 27(8), 861–874.
Garcia, J., Ivkovic, I., & Medvidovic, N. (2013). A comparative analysis of software architecture recovery techniques. In ICASE (pp. 486–496). IEEE Press.
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 (pp. 560–571). IEEE Press.
Intelligence, G. (2019). 2019 report. https://www.gsmaintelligence.com
Lakos, J. (1996). Large-scale c++ software design. Reading, MA, 173, 217–271.
Laval, J., Anquetil, N., Bhatti, U., & Ducasse, S. (2013). Ozone: Layer identification in the presence of cyclic dependencies. SCP, 78(8), 1055–1072.
Le, D. M. (2018). Architectural evolution and decay in software systems. Ph.D. Thesis, University of Southern California.
Le, D. M., 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 MSR (pp. 235–245). IEEE.
Levenshtein, V. I. (1966). Binary codes capable of correcting deletions, insertions, and reversals. In Soviet physics doklady (Vol. 10, pp. 707–710).
Lutellier, T., et al. (2015). Comparing SA recovery techniques using accurate dependencies. In ICSE (Vol. 2, pp. 69–78). IEEE.
Martini, A., & Bosch, J. (2015). The danger of architectural technical debt: Contagious debt and vicious circles. In 2015 12th Working IEEE/IFIP Conference on Software Architecture (pp. 1–10). IEEE.
Martini, A., Bosch, J., & Chaudron, M. (2015). Investigating architectural technical debt accumulation and refactoring over time: A multiple-case study. Information and Software Technology, 67, 237–253.
Mozilla. (2018). Firefox iOS application. https://github.com/mozilla-mobile/firefox-ios
Murtagh, F. (1983). A survey of recent advances in hierarchical clustering algorithms. The Computer Journal, 26(4), 354–359.
Rathee, A., & Chhabra, J. K. (2017). Software remodularization by estimating structural and conceptual relations among classes and using hierarchical clustering. In ICAICR (pp. 94–106). Springer.
Richards, M. (2015). Software architecture patterns. O’Reilly Media, Incorporated.
Rosenberg, A., & Hirschberg, J. (2007). V-measure: A conditional entropy-based external cluster evaluation measure. In EMNLP-CoNLL (pp. 410–420).
Rousseeuw, P. J. (1987). Silhouettes: A graphical aid to the interpretation and validation of cluster analysis. Journal of Computational and Applied Mathematics, 20, 53–65.
Trust. (2018). Trust wallet iOS application. https://github.com/TrustWallet/trust-wallet-ios
Tzerpos, V., & Holt, R. C. (2000). ACCD: An algorithm for comprehension-driven clustering. In Proceedings of 7th Working Conference on Reverse Engineering (pp. 258–267). IEEE.
Verwer, D. (2020). The ios developer community survey. https://iosdevsurvey.com/2019/01-apple-platform-development/
Wikimedia. (2018). Wikipedia ios application. https://github.com/wikimedia/wikipedia-ios/tree/master
Zapalowski, V., Nunes, I., & Nunes, D. J. (2014). Revealing the relationship between architectural elements and source code characteristics. In Proceedings of the 22nd International Conference on Program Comprehension (pp. 14–25). ACM.
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2023 The Author(s), under exclusive license to Springer Nature Switzerland AG
About this chapter
Cite this chapter
Dobrean, D., Dioşan, L. (2023). On What Kind of Applications Can Clustering Be Used for Inferring MVC Architectural Layers?. In: Silaghi, G.C., et al. Advances in Information Systems Development. ISD 2022. Lecture Notes in Information Systems and Organisation, vol 63. Springer, Cham. https://doi.org/10.1007/978-3-031-32418-5_7
Download citation
DOI: https://doi.org/10.1007/978-3-031-32418-5_7
Published:
Publisher Name: Springer, Cham
Print ISBN: 978-3-031-32417-8
Online ISBN: 978-3-031-32418-5
eBook Packages: Business and ManagementBusiness and Management (R0)