the builders — developers, can cross architectural
boundaries fairly easy; that is why an external sys-
tem is needed for enforcing the chosen architectural
pattern. Our research provides a distinct technique
for analysing the mobile codebases, without the need
for using complex ADL languages and validation sys-
tems. The proposed method uses the mobile SDKs
particularities for constructing an easy to use and un-
derstand system which can come in the aid of mo-
bile developers. Discovering the root and sources of
the technical debt and highlighting the architectural
issues of the codebase benefits both developers as
well as management, as they can see the architectural
health of the codebase.
The fact that the codebase is split in well defined
categories represent just part of the benefits obtained
by respecting an architectural pattern. The correct de-
pendencies between layers is what offers all the other
architectural benefits (flexibility, testability, maintain-
ability, etc.) and it is more important than just cate-
gorising the components. Our results show that those
dependencies are not correctly constructed and there
is a need for an architectural checker system on mo-
bile platforms for imposing architectural patterns.
As future steps, we plan to extend the system
to work with custom defined software architectures,
such that it can analyse multiple type of projects. The
system can also be integrated into a CI/CD pipeline,
highlighting architectural issues early in the develop-
ment phase before the code goes into the final prod-
uct.
REFERENCES
Ameller, D. and Franch, X. (2011). Ontology-based archi-
tectural knowledge representation: structural elements
module. In CAiSE, pp. 296–301. Springer.
Apple (2012a). Controller. link.
Apple (2012b). Model-view-controller. link.
Belle, A. B. et al. (2013). The layered architecture revisited:
Is it an optimization problem? In SEKE, pp. 344–349.
Boaye Belle, A. (2016). Recovering software layers from
object oriented systems: a formalization as an opti-
mization problem. PhD thesis,
´
Ecole de technologie
sup
´
erieure.
Chen, X. et al. (2014). A replicated experiment on archi-
tecture pattern recommendation based on quality re-
quirements. In ICSESS, pp. 32–36. Citeseer.
Corazza, A. et al. (2016). Weighing lexical information for
software clustering in the context of architecture re-
covery. Empirical Software Engineering, 21(1):72–
103.
DeLong, D. (2017). A better MVC. link.
Fowler, M. (2002). Patterns of enterprise application ar-
chitecture. Addison-Wesley Longman Publishing Co.,
Inc.
Garcia, J. et al. (2013). A comparative analysis of software
architecture recovery techniques. In ICASE, pp. 486–
496. IEEE Press.
Garofalo, R. (2011). Building enterprise applications
with Windows Presentation Foundation and the Model
View View Model Pattern. Microsoft Press.
Huang, J. and Liu, J. (2016). A similarity-based modular-
ization quality measure for software module cluster-
ing problems. Information Sciences, 342:96–110.
Hussain, S. (2013). Investigating architecture description
languages (ADLs) a systematic literature review. PhD
thesis, Linkapings Universitet.
Kocsis, K. (2018). Architectural patterns, MVC, MVVM:
What is the hype all about? link.
Koschke, R. (2013). Incremental reflexion analysis. Journal
of Software: Evolution and Process, 25(6):601–637.
La, H. J. and Kim, S. D. (2010). Balanced mvc architecture
for developing service-based mobile applications. In
ICEBE, pp. 292–299. IEEE.
Le, D. M. et al. (2015). An empirical study of architectural
change in open-source software systems. In IEEE
MSR, pp. 235–245.
Maffort, C. et al. (2013). Mining architectural patterns using
association rules. In SEKE, 2013, pp. 375–380.
Mariani, T. et al. (2016). Preserving architectural styles in
the search based design of software product line archi-
tectures. J. of Systems and Software, 115:157–173.
Mozilla (2018). Firefox iOS application. link.
MutualMobile (2014). Meet VIPER: Clean architecture for
iOS apps. link.
Olsson, T. et al. (2018). Towards improved initial map-
ping in semi automatic clustering. In ECSA, page 51.
ACM.
Orlov, B. (2015). iOS architecture patterns: Demystifying
MVC, MVP, MVVM and VIPER. link.
Paixao, M. et al. (2018). An empirical study of cohesion
and coupling: Balancing optimization and disruption.
IEEE TEC, 22(3):394–414.
Potel, M. (1996). MVP: Model-View-Presenter the taligent
programming model for C++ and Java. Taligent Inc,
page 20.
Ram
´
ırez, A. et al. (2018). Interactive multi-objective evolu-
tionary optimization of software architectures. Infor-
mation Sciences.
Reenskaug, T. (2003). The model-view-controller (MVC)
its past and present. University of Oslo Draft.
Rumbaugh, J. et al. (2004). Unified modeling language ref-
erence manual, the. Pearson Higher Education.
Sarkar, S. et al. (2009). Discovery of architectural lay-
ers and measurement of layering violations in source
code. J. of Systems and Software, 82(11):1891–1905.
Terra, R. and Valente, M. T. (2009). A dependency con-
straint language to manage object-oriented software
architectures. Software: Practice and Experience,
39(12):1073–1094.
Trust (2018). Trust wallet iOS application. link.
Wikimedia (2018). Wikipedia ios application. link.
Xu, Y. and Liang, P. (2014b). A cooperative coevolution
approach to automate pattern-based software architec-
tural synthesis. IJSEKE, 24(10):1387–1411.
Zhang, M. (2018). Photoshop coming to the iPad. link.
An Analysis System for Mobile Applications MVC Software Architectures
185