A Reference Architecture to support the development of mobile applications based on self-adaptive services
Introduction
In the modern society, software systems have played an important role, operating in several segments, such as public and private institutions, airports, communication systems, social networks, among others. In parallel, the complexity of software systems and their computational environments has increased in the last years. Nowadays, our society has become increasingly dependent of such systems, which must be able to work in 24/7 mode (i.e., 24 h per day, seven days per week). Moreover, it can be noted that most human daily tasks are managed by applications1 embedded into mobile devices (e.g., smartphones or tablets), which allow on-line access to information regardless of the users’ location [1]. Regarding the development, such applications can have, at the same time, some items: (i) ad-hoc components and applications developed by third-party; (ii) on-line services; and (iii) platform-dependent components to access device-specific hardware (e.g., Bluetooth, Camera, Microphone, among others) [2].
Mobile technology can help humans in the execution of tasks such as speech and image recognition, natural language processing, decision-making, and mission planning, among others. In parallel, mobile devices offer less computational power than conventional desktop or server computers and computation-intensive tasks can require excessive amount of battery power. In addition, battery lifetime, network bandwidth, storage capacity, memory and processor performance are examples of adversities or limitations to be overcome in a mobile computing scenario [3], [4], [5], [6]. For these reasons, research has been boosted to minimize the impact of such adversities or limitations and, at the same time, to facilitate access to information providing mobility to their users. Based on the presented context, the integration of MobApps into SOA-based (Service-Oriented Architecture) systems has been a feasible alternative to overcome such adversities or limitations. In short, SOA provides an architectural model that enables services to be published by service providers, discovered and consumed by the stakeholders (i.e., client applications, other services, among others) by means of a platform-independent communication process based on a set of XML-based (Xtensible Markup Language) standards [1], [7], [8].
SOA-based systems has played an important role in the development of distributed applications over the Internet. In this context, web services are elements of first class to support the development of applications based on services in heterogeneous environments. Moreover, such applications, regardless of type (e.g., distributed, mobile, or web), must be prepared to deal with the changes at runtime, which can be performed to meet the user’s new needs (e.g., new requirements) or autonomously react to modifications in their execution environment (e.g., services unavailability, low QoS – Quality of Service). Therefore, services that enable adaptation at runtime can be classified as self-adaptive [2], [9]. In short, this type of service is composed of two complex and costly activities: (i) the first aims to select a service in the execution environment that meets the application needs and the quality requirements; and (ii) once selected, a dynamic deploy process (second activity) for this new service must be started so that the client applications have no perception of changes.
From another perspective, Reference Architectures (RA) refer to a special type of software architecture that has become an important element to systematically reuse architectural knowledge [10]. Thus, different domains of software systems, including MobApps, have understood the need for encapsulating knowledge (i.e., experiences and good practices) to disseminate and reuse this knowledge in the development of systems. For instance, Liu et al. [11] designed a RA for the domains of service-oriented computing based on self-organizing mechanism. Weyns et al. [12] developed a Reference Model (RM)2 entitled FOrmal Reference Model for Self-adaptation (FORMS). This RM aims to support the development of systems based on formal methods and reflection. Affonso and Nakagawa [13] designed a RA for Self-adaptive Software called RA4SaS. This architecture is based on computational reflection and an external adaptation approach, which enables the adaptation of software entities at runtime by means of an automated process.
Although the use of RA has relevantly figured in the development of software systems, Self-MobApps (Self-adaptive Service-oriented MobApps) have been developed with no concern on the reuse of previously acquired knowledge and experiences, such as best practices, guidelines, and better architectural styles. In a study published by Affonso and Nakagawa [14], the use of RA and RM for the Self-adaptive Software (SaS) domain has intensified between 2004 and 2014. Moreover, a wide range of architectures and models were designed to meet specific domains of adaptation (e.g., autonomic control, service adaptation, and software components). Based on this scenario, the main goal of this article is to present the RA4Self-MobApps, a RA for Self-MobApps based on ProSA-RA (Process based on Software Architecture – Reference Architecture) [15]. This architecture was designed based on previous experiences of our research group, such as: (i) a RA called RA4SaS to support the development of SaS [13]; (ii) a framework and a tool to support the development of decision support systems for SaS domain [16], [17]; and (iii) a framework to support the development of Self-MobApps, which enables service adaptation at runtime [18], [19]. In short, our architecture contemplates different phases of development (i.e., design and runtime). The first uses a list of preferred services manually defined by the developers for the design of a primary service. The second uses an automatic search mechanism to find a similar service in the web service repository. Regarding the runtime phase, the RA proposed in this article (RA4Self-MobApps) enables services to be monitored at runtime by means of a framework to support decision-making, which enables to classify and analyze sensory data to autonomously detect and mitigate faults at runtime (e.g., service unavailability, high response time, QoS problems, among others) [16], [18], [19]. Moreover, as another contribution, our RA aims to support the development of Self-MobApps by means of a dynamic approach for service deployment (i.e., deploy, redeploy, or undeploy). Thus, services can be replaced by a similar one in a transparent process without the perception of their stakeholders (i.e., client applications). For reasons of scope, our RA addresses only services based on JAX-WS (Java API for XML Web Services) [20], a type of service that enables to address advanced QoS requirements that commonly occur in enterprise computing. This type of service requires minimization of computational effort (i.e., deployment activities) when a service is modified at runtime. Based on this scenario, our architecture aims to consolidate itself as a means to facilitate the development of MobApps based on this service type. In short, the main contributions of our RA can be summarized as follows: (i) it enables to address advanced QoS requirements according to application domain; (ii) it makes easier to write MobApps based on services by means of a dynamic approach of deployment; (iii) it enables to write loose coupling services (i.e., the developers can build generic services that would work together in a choreography and compose a new service); (iv) it enables to preserve the developers in their native development environments (i.e., mobile and service developers); and (v) it makes possible the use of third-parties components. Thus, we can create a favorable scenario of development, since it is easier for many types of clients (e.g., MobApps) to consume web services provided by our RA while enabling the server side to evolve and scale.
The article is organized as follows: Section 2 presents the background and related work; Section 3 provides a description of our architecture (RA4Self-MobApps); Section 4 presents a case study to show the applicability of our RA; Section 5 shows a brief discussion of results; and Section 6 summarizes our conclusions and perspectives for further research.
Section snippets
Background and related work
This section presents the background (i.e., concepts and definitions) and related work that contributed to the development of our RA. Initially concepts of self-star software, self-adaptive services and RA are described. Next, related work on RA for (Self-)MobApps is addressed.
Self-star software. Self-adaptive Software has specific characteristics compared to a traditional one because this type of software enable structural, behavioral, or contextual changes at runtime. Among these changes,
Reference architecture for Self-MobApps
In order to establish our architecture (RA4Self-MobApps), a process to build reference architectures called ProSA-RA [15] was used. First of all, information sources are selected and investigated (Step RA-1) and architectural requirements of the RAs are identified (Step RA-2). Such requirements aims to describe the common functionalities and configurations presented in systems of the target domain. Next, an architectural description of the RAs must be established (Step RA-3) and, finally,
Case study
To evaluate the applicability, strengths, and weaknesses of our architecture (RA4Self-MobApps) this section presents a case study we have conducted. As subject application for our empirical analysis, we have selected an application addressed to the management of a smart restaurant (App2SmartRest), as illustrated in Fig. 6. Next, a brief description of our subject application and the empirical strategies adopted for conducting this case study is presented.
Subject Application. The App2SmartRest
Discussion of results and limitations
This section summarizes the main findings and discusses the relevance of this work to the RA, Software Engineering, and Self-MobApps communities. The main findings and results are listed as follows.
This article purposed the RA4Self-MobApps, to the best of our knowledge, the first reference architecture that encompasses two activities at the same time: service adaptation at runtime by means of a dynamic approach of deployment. Such activities occur without the perception of their stakeholders
Conclusions and future work
This article presented a RA for Self-MobApps (RA4Self-MobApps) that intends to support the development of Self-MobApps by means of a dynamic approach for service deployment. This type of approach enables to minimize the computational effort (i.e., deployment activities) when a service is modified at runtime. This RA also enables the development of new services via service composition and choreography through the use of generic simpler web services. As reported and justified in Section 1, our RA
Acknowledgments
This research is supported by UNESP Pro-Rectory of Research (PROPe/UNESP), Coordination for the Improvement of Higher Education Personnel (CAPES), and São Paulo Research Foundation FAPESP, Brazil (Grant: 2017/06195-9).
References (51)
- et al.
Selfmotion: A declarative approach for adaptive service-oriented mobile applications
J. Syst. Softw.
(2014) - et al.
Self-adaptive semantic web service matching method
Knowl.-Based Syst.
(2012) - et al.
QoS-Aware web service semantic selection based on preferences
Procedia Eng.
(2014) - et al.
Self-adaptive systems: A survey of current approaches, research challenges and applications
Expert Syst. Appl.
(2013) - et al.
A survey on engineering approaches for self-adaptive systems
Pervasive Mob. Comput.
(2015) - J. Aghav, N. Sharma, Asoftware architecture for provisioning of mobile services: An OSGi implementation, in:...
- et al.
Towards an elastic application model for augmenting the computing capabilities of mobile devices with cloud computing
Mob. Netw. Appl.
(2011) - S. Simanta, G.A. Lewis, E. Morris, K. Ha, M. Satyanarayanan, A reference architecture for mobile code offload in...
- et al.
A survey of computation offloading for mobile systems
Mob. Netw. Appl.
(2013) - R. Al Ali, I. Gerostathopoulos, I. Gonzalez-Herrera, A. Juan-Verdejo, M. Kit, B. Surajbali, An architecture-based...
ReMoSSA: Reference model for specification of self-adaptive service-oriented-architecture
SASSY: A framework for self-architecting service-oriented systems
IEEE Softw.
Software architecture in practice
A reference architecture for self-organizing service-oriented computing
Developing self-adaptive service-oriented mobile applications: a framework based on dynamic deployment
Int. J. Softw. Eng. Knowl. Eng.
Java platform, enterprise edition: The Java EE Tutorial, (Accessed on January 3, 2019)
Self-adaptive software: Landscape and research challenges
ACM Trans. Auton. Adapt. Syst.
Cited by (8)
Web service adaptation: A decade's overview
2023, Computer Science ReviewSelf-adaptation in smartphone applications: Current state-of-the-art techniques, challenges, and future directions
2021, Data and Knowledge EngineeringCitation Excerpt :As reported in the literature that self-adaptation also helps in safety-based applications, Hirawat et al. [12] focused on enhancing accident detection through the mobile-based application. Reference Architecture (RA) for the development of self-adaptive services-based mobile applications is done in Affonso et al. [29]. García et al. [26] work is based on the transfer of multimedia applications or parts of the application from one device to another based on Application Mobility (AM).
RA4Self-CPS: A Reference Architecture for Self-adaptive Cyber-Physical Systems
2024, IEEE Latin America TransactionsARC-SoISE: Towards a Reference Architecture for Constituents of Educational Systems-of-Information Systems
2022, 2022 17th Annual System of Systems Engineering Conference, SOSE 2022A multi-agent approach to monitor and manage container-based distributed systems
2022, IEEE Latin America Transactions