Abstract
Interacting with businesses, searching for information, or accessing news and entertainment sources all have a common feature, they are predominately accessed nowadays from mobile applications. The software architecture used in building those kinds of products represents a major factor in their lifecycle, costs, and roadmap, as it affects their maintainability and extensibility. In this study, our novel approach designed for detecting MVC architectural layers from mobile codebases (that use SDK for building their UI interrfaces) is validated and analysed from various perspectives (Artificial Intelligence, architectural rules, empiric evaluation). Our proposal is validated on eight different-sized iOS codebases corresponding to different mobile applications that have different scopes (both open and closed source). The performance of the detection quality is measured by the accuracy of the system, as we compared to a manually constructed ground truth, achieving an average accuracy of 85% on all the analyzed codebases. Our hybrid approach for detecting architectural layers achieves good results by combining the accuracy of the deterministic methods with the flexibility for being used on other architectural patterns and platforms via the non-deterministic step. We also validate the workflow of the proposal from an empirical point of view through an interview with two mobile application developers.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
References
Anquetil, N., Lethbridge, T.C.: Recovering software architecture from the names of source files. J. Softw. Maint. Res. Pract. 11(3), 201–221 (1999)
Apple: Model-view-controller (2012). https://apple.co/3a5Aox9
Apple: Placing objects and handling 3D interaction (2019). https://apple.co/3tJw8v2
Belle, A.B., El-Boussaidi, G., Desrosiers, C., Mili, H.: The layered architecture revisited: is it an optimization problem? In: SEKE, pp. 344–349 (2013)
Belle, A.B., El Boussaidi, G., Kpodjedo, S.: Combining lexical and structural information to reconstruct software layers. Inf. Softw. Technol. 74, 1–16 (2016)
Belle, A.B., El Boussaidi, G., Mili, H.: Recovering software layers from object oriented systems. In: 2014 9th International Conference on Evaluation of Novel Approaches to Software Engineering (ENASE), pp. 1–12. IEEE (2014)
Campos, E., Kulesza, U., Coelho, R., Bonifácio, R., Mariano, L.: Unveiling the architecture and design of android applications. In: Proceedings of the 17th International Conference on Enterprise Information Systems, vol. 2, pp. 201–211 (2015)
Corazza, A., Di Martino, S., Maggio, V., Scanniello, G.: Weighing lexical information for software clustering in the context of architecture recovery. Empir. Softw. Eng. 21(1), 72–103 (2015). https://doi.org/10.1007/s10664-014-9347-3
Daoudi, A., ElBoussaidi, G., Moha, N., Kpodjedo, S.: An exploratory study of MVC-based architectural patterns in android apps. In: Proceedings of the 34th ACM/SIGAPP Symposium on Applied Computing, pp. 1711–1720. ACM (2019)
Davies, D.L., Bouldin, D.W.: A cluster separation measure. IEEE Trans. Pattern Anal. Mach. Intell. 2, 224–227 (1979)
DeLong, D.: A better MVC (2017). https://davedelong.com/blog/2017/11/06/a-better-mvc-part-1-the-problems/
Dobrean, D.: Automatic examining of software architectures on mobile applications codebases. In: 2019 IEEE International Conference on Software Maintenance and Evolution (ICSME), pp. 595–599. IEEE (2019)
Dobrean, D., Dioşan, L.: An analysis system for mobile applications MVC software architectures, pp. 178–185. INSTICC, SciTePress (2019). https://doi.org/10.5220/0007827801780185
Dobrean, D., Dioşan, L.: Model view controller in iOS mobile applications development, pp. 547–552. KSI Research Inc. and Knowledge Systems Institute Graduate School (2019). https://doi.org/10.18293/SEKE2019
Dobrean, D., Dioşan, L.: Detecting model view controller architectural layers using clustering in mobile codebases. In: Proceedings of the 15th International Conference on Software Technologies, pp. 196–203. INSTICC (2020). https://doi.org/10.5220/0009884601960203
Dobrean, D., Dioşan, L.: A hybrid approach to MVC architectural layers analysis. In: In Proceedings of the 16th International Conference on Evaluation of Novel Approaches to Software Engineering, pp. 36–46. INSTICC (2021). https://doi.org/10.5220/0010326700360046
El Boussaidi, G., Belle, A.B., Vaucher, S., Mili, H.: Reconstructing architectural views from legacy systems. In: 2012 19th Working Conference on Reverse Engineering, pp. 345–354. IEEE (2012)
Garcia, J., Popescu, D., Mattmann, C., Medvidovic, N., Cai, Y.: Enhancing architectural recovery using concerns. In: 2011 26th IEEE/ACM International Conference on Automated Software Engineering (ASE 2011), pp. 552–555. IEEE (2011)
Ghorbani, N., Garcia, J., Malek, S.: Detection and repair of architectural inconsistencies in Java. In: Proceedings of the 41st International Conference on Software Engineering, pp. 560–571. IEEE Press (2019)
Huang, A.: Similarity measures for text document clustering. In: Proceedings of the Sixth New Zealand Computer Science Research Student Conference (NZCSRSC2008), Christchurch, New Zealand, vol. 4, pp. 9–56 (2008)
GSMA Intelligence: 2019 raport (2019). https://www.gsmaintelligence.com/
Lakos, J.: Large-scale c++ software design. Reading MA 173, 217–271 (1996)
Laval, J., Anquetil, N., Bhatti, U., Ducasse, S.: Ozone: layer identification in the presence of cyclic dependencies. Sci. Comput. Program. 78(8), 1055–1072 (2013)
Le, D.M., Behnamghader, P., Garcia, J., Link, D., Shahbazian, A., Medvidovic, N.: An empirical study of architectural change in open-source software systems. In: 2015 IEEE/ACM 12th Working Conference on MSR, pp. 235–245. IEEE (2015)
Levenshtein, V.I.: Binary codes capable of correcting deletions, insertions, and reversals. Soviet Phys. Dokl. 10, 707–710 (1966)
Lutellier, T., et al.: Comparing software architecture recovery techniques using accurate dependencies. In: 2015 IEEE/ACM 37th IEEE International Conference on Software Engineering (ICSE), vol. 2, pp. 69–78. IEEE (2015)
Mancoridis, S., Mitchell, B.S., Chen, Y., Gansner, E.R.: Bunch: a clustering tool for the recovery and maintenance of software system structures. In: Proceedings IEEE International Conference on Software Maintenance-1999 (ICSM 1999). Software Maintenance for Business Change (Cat. No. 99CB36360), pp. 50–59. IEEE (1999)
Mitchell, B.S., Mancoridis, S.: On the evaluation of the bunch search-based software modularization algorithm. Soft. Comput. 12(1), 77–93 (2008)
Mozilla: Firefox iOS application (2018). https://github.com/mozilla-mobile/firefox-ios
Müller, H.A., Orgun, M.A., Tilley, S.R., Uhl, J.S.: A reverse-engineering approach to subsystem structure identification. J. Softw. Maint. Res. Pract. 5(4), 181–204 (1993)
Murtagh, F.: A survey of recent advances in hierarchical clustering algorithms. Comput. J. 26(4), 354–359 (1983)
Pruijt, L., Köppe, C., van der Werf, J.M., Brinkkemper, S.: The accuracy of dependency analysis in static architecture compliance checking. Softw.: Pract. Exp. 47(2), 273–309 (2017)
Rathee, A., Chhabra, J.K.: Software remodularization by estimating structural and conceptual relations among classes and using hierarchical clustering. In: Singh, D., Raman, B., Luhach, A.K., Lingras, P. (eds.) Advanced Informatics for Computing Research. CCIS, vol. 712, pp. 94–106. Springer, Singapore (2017). https://doi.org/10.1007/978-981-10-5780-9_9
Rousseeuw, P.J.: Silhouettes: a graphical aid to the interpretation and validation of cluster analysis. J. Comput. Appl. Math. 20, 53–65 (1987)
Sangal, N., Jordan, E., Sinha, V., Jackson, D.: Using dependency models to manage complex software architecture. In: ACM SIGPLAN Notices, vol. 40, no. 10, pp. 167–176. ACM (2005)
Sarkar, S., Maskeri, G., Ramachandran, S.: Discovery of architectural layers and measurement of layering violations in source code. J. Syst. Softw. 82(11), 1891–1905 (2009)
Scanniello, G., D’Amico, A., D’Amico, C., D’Amico, T.: Using the Kleinberg algorithm and vector space model for software system clustering. In: 2010 IEEE 18th International Conference on Program Comprehension, pp. 180–189. IEEE (2010)
Schmidt, F., MacDonell, S.G., Connor, A.M.: An automatic architecture reconstruction and refactoring framework. In: Lee, R. (ed.) Software Engineering Research, Management and Applications 2011. Studies in Computational Intelligence, vol. 377, pp. 95–111. Springer, Heidelberg (2012). https://doi.org/10.1007/978-3-642-23202-2_7
Trust: Trust wallet iOS application (2018). https://github.com/TrustWallet/Trust-wallet-ios
Vewer, D.: 2019 raport (2019). https://iosdevsurvey.com/2019/
Wikimedia: Wikipedia iOS application (2018). https://github.com/wikimedia/wikimedia-ios/tree/master
Zapalowski, V., Nunes, I., Nunes, D.J.: Revealing the relationship between architectural elements and source code characteristics. In: Proceedings of the 22nd International Conference on Program Comprehension, pp. 14–25. ACM (2014)
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2022 Springer Nature Switzerland AG
About this paper
Cite this paper
Dobrean, D., Dioşan, L. (2022). Validating HyDe: Intelligent Method for Inferring Software Architectures from Mobile Codebase. In: Ali, R., Kaindl, H., Maciaszek, L.A. (eds) Evaluation of Novel Approaches to Software Engineering. ENASE 2021. Communications in Computer and Information Science, vol 1556. Springer, Cham. https://doi.org/10.1007/978-3-030-96648-5_1
Download citation
DOI: https://doi.org/10.1007/978-3-030-96648-5_1
Published:
Publisher Name: Springer, Cham
Print ISBN: 978-3-030-96647-8
Online ISBN: 978-3-030-96648-5
eBook Packages: Computer ScienceComputer Science (R0)