Table 3: CARL-F
5
results in term of detection quality.
Codebase
Model View Controller Accu-
Precision Recall Precision Recall Precision Recall racy
Wikipedia 0.78 0.83 1.00 0.54 0.83 0.98 0.82
Trust 0.79 0.69 0.38 0.66 0.62 0.57 0.66
E-comm 0.76 0.99 1.00 1.00 0.99 0.57 0.85
method works well given the fact that is an unsuper-
vised method that needs to cluster components for
which is hard to define numerical metrics that feed
the clustering algorithm.
This method can not be used as a standalone tech-
nique for identifying architectural issues as it does not
take into consideration the constraints of the code-
base, as it is able to split the codebase based on the
various information obtained from its components but
it cannot decide whether a component should actually
be in a certain layer or not.
With the previous idea in mind, we are planning to
develop a hybrid system in which we’ll use a heuristic
approach combined with the clustering for trying to
further improve the system and to be able to detect
more precisely the components of the codebase.
The proposed approach has a large variety of prac-
tical applications, it can be used for improving the ar-
chitectural qualities of codebases or for educational
purposes where beginners could learn to better struc-
ture their code by enforcing them to follow a certain
architectural pattern.
REFERENCES
Anquetil, N. and Lethbridge, T. C. (1999). Recovering soft.
architecture from the names of source files. Jour-
nal of Soft. Maintenance: Research and Practice,
11(3):201–221.
Belle, A. B., El-Boussaidi, G., Desrosiers, C., and Mili, H.
(2013). The layered architecture revisited: Is it an
optimization problem? SEKE, pages 344–349.
Belle, A. B., El Boussaidi, G., and Mili, H. (2014). Recov-
ering soft. layers from object oriented systems. 2014
9th Int. Conf. on Evaluation of Novel Approaches to
Soft. Engineering (ENASE), pages 1–12.
Constantinou, E., Kakarontzas, G., and Stamelos, I. (2011).
Towards open source soft. system architecture recov-
ery using design metrics. 2011 15th Panhellenic Conf.
on Informatics, pages 166–170.
Daoudi, A., ElBoussaidi, G., Moha, N., and Kpodjedo,
S. (2019). An exploratory study of MVC-based ar-
chitectural patterns in android apps. Proc. of the
34th ACM/SIGAPP Symposium on Applied Comput-
ing, pages 1711–1720.
Fawcett, T. (2006). An introduction to roc analysis. Pattern
recognition letters, 27(8):861–874.
Garcia, J., Ivkovic, I., and Medvidovic, N. (2013). A com-
parative analysis of soft. architecture recovery tech-
niques. Proc. of the 28th IEEE/ACM Int. Conf. on
Automated Soft. Engineering, pages 486–496.
Kuhn, A., Ducasse, S., and G
´
ırba, T. (2007). Semantic clus-
tering: Identifying topics in source code. Information
and Soft. Technology, 49(3):230–243.
Le, D. M., Behnamghader, P., Garcia, J., Link, D., Shah-
bazian, A., and Medvidovic, N. (2015). An empirical
study of architectural change in open-source soft. sys-
tems. MSR, 2015 IEEE/ACM 12th Working Conf. on,
pages 235–245.
Levenshtein, V. I. (1966). Binary codes capable of correct-
ing deletions, insertions, and reversals. Soviet physics
doklady, 10(8):707–710.
Mancoridis, S., Mitchell, B. S., Chen, Y., and Gansner,
E. R. (1999). Bunch: A clustering tool for the
recovery and maintenance of soft. system struc-
tures. Proc. IEEE Int. Conf. on Soft. Maintenance-
1999 (ICSM’99).’Soft. Maintenance for Business
Change’(Cat. No. 99CB36360), pages 50–59.
Mitchell, B. S. and Mancoridis, S. (2008). On the evalu-
ation of the bunch search-based soft. modularization
algorithm. Soft Computing, 12(1):77–93.
M
¨
uller, H. A., Orgun, M. A., Tilley, S. R., and Uhl, J. S.
(1993). A reverse-engineering approach to subsystem
structure identification. Journal of Soft. Maintenance:
Research and Practice, 5(4):181–204.
Pfitzner, D., Leibbrandt, R., and Powers, D. (2009). Char-
acterization and evaluation of similarity measures for
pairs of clusterings. Knowledge and Information Sys-
tems, 19(3):361.
Russell, S. J. and Norvig, P. (2016). Artificial intelligence: a
modern approach. Malaysia; Pearson Education Lim-
ited,.
Saeidi, A. M., Hage, J., Khadka, R., and Jansen, S. (2015).
A search-based approach to multi-view clustering of
soft. systems. 2015 IEEE 22nd Int. Conf. on Soft.
Analysis, Evolution, and Reengineering (SANER),
pages 429–438.
Sangal, N., Jordan, E., Sinha, V., and Jackson, D. (2005).
Using dependency models to manage complex soft.
architecture. ACM Sigplan Notices, 40(10):167–176.
Sarkar, S., Maskeri, G., and Ramachandran, S. (2009). Dis-
covery of architectural layers and measurement of lay-
ering violations in source code. Journal of Systems
and Soft., 82(11):1891–1905.
Scanniello, G., D’Amico, A., D’Amico, C., and D’Amico,
T. (2010). Using the kleinberg algorithm and vector
space model for soft. system clustering. 2010 IEEE
18th Int. Conf. on Program Comprehension, pages
180–189.
Trust (2018). Trust wallet iOS application. link.
Tzerpos, V. and Holt, R. C. (2000). ACCD: an algorithm for
comprehension-driven clustering. Proc. 7th Working
Conf. on Reverse Engineering, pages 258–267.
Wikimedia (2018). Wikipedia ios application. link.
Detecting Model View Controller Architectural Layers using Clustering in Mobile Codebases
203