helper class, was also more adopted by applications
with constantly evolving their databases.
Design Patterns (RQ2). Our study made possible to
identify a significant number of design patterns that
are used in the Android applications. The Adapter
pattern, for example, was commonly used to adapt
existing Android classes to create customized views.
On the other hand, regarding the Android specific
patterns, we have noticed that there are many of them
that are not being used by existing applications,
although they are recommended as best practices by
the Android community. Our results also lead to the
conclusion that many Android patterns were used in
order to implement known variabilities, such as
languages, devices and screen size. Moreover, it also
varies the implementation them, with some of them
using external API.
Exception Handling (RQ3). Our study also identified
that existing exception handling policies of Android
apps are absent or very simple – with only the logging
of the thrown exception. Only a few applications
provide an adequate exception handling by
displaying, for example, explicit messages for the
user. Our findings also show that there is no pattern
on the way the exceptions are thrown and handled by
the MVC components. The study data revealed, for
example, that the model and controller components
are both responsible to throw and handle exceptions
for most of the investigated applications.
Figure 7 presents a diagram with the resulting
conceptual architecture of our study. It illustrates the
common MVC architecture adopted for most
applications by indicating the explicit Android
technologies used in each of the components,
including the data objects. In addition, it gives an
overview of the design patterns used in different
components. Finally, it indicates which specific
components of the architecture are usually
responsible to throw and handle exceptions during the
execution of the Android applications.
Figure 7: Conceptual Android Architectural.
5 RELATED WORK
This section presents some research works related to
ours. Andreou et al., (2005) performed a pioneer
study on design of the mobile applications. This work
studied current design methodologies and proposed
an approach for designing and developing mobile
commerce (m-commerce) services and applications.
The proposed process focuses on user requirements
and needs as well as on constraints associated with
current mobile and wireless technology. While this
work proposed a set of engineering phases to guide
mobile engineers in m-commerce development, our
work explores the state of practice of a set of mobile
applications from different categories available in
Android official store. In another pioneer work about
mobile applications, Nilsson (2009) performed a
study which investigated the usage of design patterns
for mobile applications. However, his work focused
on patterns for user interface (UI), aiming at creating
a design guideline to aid developing more user-
friendly applications on mobile devices in general.
This work did not restrict the analysis to Android
applications. In a more recent work, Neil (2014)
presented a more extensive catalogue of UI patterns
for mobile devices. In our work, we investigated the
adoption of design patterns in mobile applications,
and not UI patterns as the works described before.
Other research works (Ruiz et al., 2012; Mojica et
al., 2013; Linares-Vásquez et al., 2014; Linares-
Vásquez et al., 2013; Bavota et al., 2014) also focused
on the analysis of characteristics of Android
applications. Linares-Vásquez et al., (2014)
investigate the usage of patterns in Android
applications focusing on API for energy-greedy, with
the purpose of understanding particular instances of
API calls and API usage patterns that cause
(unusually) high energy consumption. Ruiz et al.,
(2012) and Mojica et al., (2013) mined application
downloaded directly Play Store in order to analyse
software reuse in the Android mobile application
market along two dimensions: (a) reuse by
inheritance, and (b) class reuse. On other hand,
Bavota et al., (2014) and Linares-Vásquez et al.,
(2014) also analysed Android applications, but in
order to study how the fault and change-proneness of
APIs used by free Android applications relates to
applications’ lack of success, estimated from user
ratings. As in our work, those works investigated a
limited set of applications, although the studies
cannot be generalized they provide interesting
insights about the state of practice on mobile
development. The purpose of our study differs from
the previously mentioned studies, since it focused on
ICEIS2015-17thInternationalConferenceonEnterpriseInformationSystems
210