Abstract
Challenges in pure ubiquitous computing, including the limitation of being multi-domain, absence of a uniform namespace, impossible intensive mobility of users, limited resources, lack of scalability, intensive applications, and so forth, have led researchers to provide hybrid ubiquitous architectures that are generally cloud-based. However, various types of services have not been considered in the introduced hybrid architectures nor have any of these architectures provided a general categorization of services independent of application type. The current paper introduces a cloud-based ubiquitous architecture called as CLOUBI. The main purpose of this architecture is to remove restrictions on pure ubiquitous architectures. In addition, two general categories of services are presented in this architecture, of which one is based on the nature of services and the other on the distance between the requesting and responding entities, with both being independent of application type. In the nature-based categorization, services are divided into four types: data, context-aware, software, and hardware. In the distance-based categorization, services are of five types: near, local, remote, global, and far. In order to design CLOUBI architecture and formulate its proposed categorization, various criteria are examined, including the types of inputs, nature of requests, characteristics of an ideal ubiquitous architecture, and features expected from the services in hybrid architectures. In addition, the most important security concerns related to ubiquitous cloud computing architectures are discussed.
Keywords
Introduction
In 1991, Mark Weiser [77] presented a primary definition of ubiquitous computing or pervasive computing which is described as a sort of distributed computing. This has gained much attention in applications such as domestic, medical, commercial, agricultural, and industrial scopes, as well as crisis management and others [21,22,26]. Although there are various interpretations of this kind of computing, it should be noted that ubiquitous computing is not solely the control of the peripheral environment; rather, a more abroad concept is suggested. Notably, the possibility of any kind of computing in the peripheral environment is proposed. For example, consider the control of a lamp and the potentiality of its being turned on and off by the entrance of a person to a building, which is possible by an ordinary sensor. In this scenario, the concept of ubiquitous computing bares no relation. However, after this person enters the building, if he is identified, his profile can be examined and lighting adjusted based on personal preferences (service based on implicit demand); it can then be suggested that a ubiquitous computing-based environment is in play. This simple example demonstrates the scenario of a single-domain ubiquitous environment, by which it can be inferred that processing in the environment is the main basis of ubiquitous computing.
Based on its functional scope, ubiquitous computing is divided into single-domain and multi-domain ubiquitous computing [14,16]. Single-domain indicates that changes in the environment are only applied based on the local knowledge of the environment (user behavior and characteristics in a local situation) and not on previous information or new data derived from other domains. In contrast, multi-domain ubiquitous computing refers to the exploitation of several ubiquitous contexts which interact with each other; the information derived from each of these is applicable in other domains. To illustrate a multi-domain system, assume that the user in the previous example intends to leave his office (domain 1) and return home (domain 2). On the way, he visits a medical clinic because of a headache (domain 3) and the physician prescribes some medicine based on the examination and the user’s physical condition at work.
The user then visits a drugstore (domain 4), picks up the medicine, and eventually returns home. At this point, after entering his home, he is identified and his profile is examined. It is then that the system recognizes that the user is under the weather. An examination of the type of illness follows which involves referring to the user’s profile where notes from the earlier doctor visit are available. Accordingly, the lighting at home is adjusted to suit the user’s medical condition. In addition, the system performs other tasks, including alerting the user to take his medicine at certain hours (based on access to drugstore data), warning the user to avoid foods that will aggravate his medical condition or requesting sick leave from the user’s employer for the next day. Moreover, the system may prepare a list of do’s and don’ts based on the user’s request and display this on his mobile phone (service based on explicit demand).
Based on the type of processing core, ubiquitous computing systems are divided into pure and hybrid computing [24,72]. Pure computing is solely based on resources and services located in ubiquitous environments. In contrast, hybrid systems are those in which ubiquitous computing is integrated with another type of powerful computing method [28], mostly cloud computing [9,31], so that cloud resources and services can also be utilized along with ubiquitous resources and services. The concept of hybrid cloud-based systems has been utilized in other types of application domains, such as cyber-physical systems [49] and manufacturing systems [79]. The main reason for introducing hybrid systems is to explain the deficiencies and problems of pure systems. These are as follows:
– Limitation of being multi-domain [13,35]
Because of being multi-domain, only a few limited and particular domains can be connected through the ubiquitous system. This results in the incapability of providing special resources and services to users, due to issues such as the limited resources of each domain, the need to access remote resources and services, or even the lack of connection among processing units causing non-recognition of user identities in different domains and the dispersion of data.
– Lack of uniform namespace in the whole ubiquitous system [13,84]
This limitation, which originates from the pure ubiquitous system’s being multi-domain, results in users of various disconnected domains owning different identification data. Moreover, the user profiles of each independent domain (including their behavior and action details in different domains) encompass a series of data which are inconsistent with the data of other domains. This dispersion of data may pose problems with providing users with services that are based on the latest user behavioral status. This may also affect some further applications, such as ubiquitous recommender systems.
– Incapability of users’ ubiquitous mobility [84]
Considering previous issues, the replacement of users according to the expectations of ubiquitous computing is not possible and user mobility remains a function of the number of related ubiquitous domains.
– Restrictions of resources and lack of scalability of a pure ubiquitous system [39,88]
Available devices and equipment in the ubiquitous environment suffer from numerous deficiencies in computation resources, storage, energy and so on. Furthermore, due to similar limitations, the processing core of the ubiquitous system is not capable of providing proper answers to a large volume of requests in the ubiquitous environment. All these limitations affect the scalability of the ubiquitous system, apart from the fact that new devices and equipment of the environment will constantly increase in number.
– Intensive applications [3]
In a ubiquitous environment, there are particular applications with compute-intensive, data-intensive, and energy-intensive features, or a combination of these (resource-intensive). Due to the limitations of resources and a lack of scalability of the pure systems’ processing unit, application functions do not perform properly and their performance with current systems seems to happen unexpectedly. An example in compute-intensive applications is crisis management ubiquitous systems, which [3] provide a cloud-based solution to deal with the limitations of ubiquitous computation resources. An example of data-intensive applications is ubiquitous recommender systems, which [34] introduce a cloud-based approach for the limitations of ubiquitous data resources.
According to these limitation issues, access to an ideal ubiquitous computing system is not possible individually via access to local resources and services. To eliminate the deficiencies of pure ubiquitous systems, one should consider regulation of hybrid systems for offloading some of the requests to powerful computing, such as cloud computing. In this regard, a number of hybrid architectures have been introduced which attempt to solve some of these problems through the capabilities of computational clouds and the offloading technique [8, 14, 16, 18, 19, and 21]. Despite their advantages, the type of services offered by hybrid architectures is not clearly defined. Moreover, none provide categorization to identify all of the offered services to existing requests in a ubiquitous environment (similar to the categorization of services in cloud computing). Although there are other introduced types of hybrid computing, such as mobile cloud computing, whose features and goals are, to some extent, similar to those of ubiquitous cloud computing, the focus of the present study is on ubiquitous cloud computing. Section 4 further explains the reason for this.
Security concerns are important in all computational environments and ubiquitous and cloud computing are no exception. Security issues in ubiquitous computing can include privacy, authentication, access control, secure boot-strapping, confidentiality, and reliability [75]. On the other hand, security concerns in cloud computing may be authorization, identification, authentication, integrity, confidentiality, availability, privacy, and non-repudiation [74]. In both computing environments, designing an architecture must take into account security issues. Particularly with hybrid architectures, security is more critical due to the interaction of cloud and ubiquitous computing with each other.
The main purpose of the present paper is to provide a complete review of services features and their categorization in ubiquitous cloud computing. Hence, there is scrutiny on pure ubiquitous computing features, in particular the input request dimension, specifying the needs of an ideal ubiquitous computing system (requiring a hybrid approach due to the shortages of pure ubiquitous computing), introducing a hybrid ubiquitous architecture based on system needs, and, finally, classifying the architecture services. In addition, the most important security concerns needed in ubiquitous cloud computing architectures are discussed.
Other sections of the current paper are as follows: The second section explores claims by other researchers about hybrid architectures and examines their services and categorization in various ubiquitous environments. In addition, it surveys the security issues in both ubiquitous and cloud environments. Section 3 provides a categorization of different types of ubiquitous system inputs and addresses the nature of requests in different ubiquitous applications. The fourth section explains the reason for focusing on ubiquitous cloud computing. Section 5 reports the expected features of the services and also the security requirements of ubiquitous cloud computing. While discussing the general features of an ideal architecture for ubiquitous cloud computing and examining its interactions, Section 6 introduces a comprehensive categorization of the different types of available services. In order to demonstrate the necessity of applying hybrid systems rather than pure systems, the sixth section also examines the applicability of these categorized services in different ubiquitous environments. At the end, Section 7 presents the conclusion and discussion.
Literature review
Various research works have been conducted in the context of hybrid ubiquitous cloud architectures. In [81,82], an ontology-based pervasive middleware is introduced which receives user commands as pervasive. After converting the commands into a suitable format, known as OntoIAS (Ontology-based Information Agent Shell), this middleware sends them to a cloud for processing. The problems faced are the limited range of applications, lack of attention to the available services on the pervasive layer, and the provision of all services by the cloud layer. In [35], an architecture named PlanetCloud is introduced, which is able to increase cloud availability and service pervasiveness by using multiple resource servers as well as a resource search system. The architecture functionality is based on social networks. However, architecture details, types of provided services, and other expected features are not explained.
In [13], due to the limitations of mobile devices as well as network shortcomings, an architecture is presented based on location-based services. By dividing tasks and utilizing outsourcing techniques, these services process requests that require intensive resources within the cloud and those which are lightweight on mobile devices. In this architecture, all communications between users and the cloud are end-to-end and through internet. Hence, when the network is disconnected, users have limited or no access to their intended services, which affects real-time applications. Also, in the description of this architecture, there is no discussion on how to control the environment and provide local services.
In [84], the UbiCloud hybrid architecture is presented. UbiCloud is for intensive applications, such as image processing, data mining, multi-media applications, etc., in which all services are assumed identical in terms of diversity and access type. In this architecture, regardless of failing to introduce architectural subsystems, there was also no discussion on the details of ubiquitous and cloud structures. In addition, since context information is not collected, users cannot influence their surrounding environment nor control it.
In [39], a platform named EUPaaS (Elastic Ubiquitous Platform as a Service) is proposed. Its main purpose is to provide real-time data services to a wide range of ubiquitous applications by utilizing the ability of real-time data processing in the cloud. Although this platform can be used in diverse applications, including the medical field, it must first be noted that its details and subsystems functionality has not yet been well defined. Secondly, the EUPaaS layer communications with the ubiquitous and cloud structures are not clear.
In [3], a four-layer hybrid architecture is presented, in which two inner layers process requests and two outer layers collect and send requests to these inner layers. Although the use of outer layers leads to the consideration of ubiquitous computing in the architecture’s design, several challenges are encountered. Firstly, the architecture communication model creates a high overhead. Secondly, the requests that need intensive data have not been considered. Thirdly, there is a strong relation between comprehensive context-awareness and low-power equipment. As a result, with the development of the context, performance may be impaired due to the resource limitations of this equipment.
Finally, [20] addresses ambient aided living systems and introduces a context-aware architecture named as COCAMAAL, which is based on five different clouds. In addition to managing sensor data and extracting context information, the architecture can monitor user activities and search for and provide appropriate situational services for them. As in most hybrid architectures, all processes are performed on clouds. Also, there is a local station for each user domain that is only responsible for collecting sensor data and sending them to the cloud. These stations play no role in providing local services to users since this would only increase the costs of deployment. Table 1 presents a brief summary of most important characteristics and limitations of above-mentioned architectures.
Various research work has been performed in order to investigate and categorize the ubiquitous services. Dissertation [59] examines a variety of different applications, user interfaces, functional frameworks, and also a number of ubiquitous architectures, such as Active Spaces, Microsoft Easy Living, CMU’s Aura, and Washington’s One World; required services for the execution of some of these cases are also suggested. Nevertheless, [59] does not propose a comprehensive categorization of services which can be utilized in all of the above-mentioned cases.
Based on employing ubiquitous services in physical hypermedia functions, [11] introduces two kinds of significant services: HInformation and Browse. The former, which includes characteristics of things and links, supports common semi-web links, while the latter, which encompasses two sub-services (DigitalBrowse and PhysicalBrowse), supports users so that a target thing is reached. Services introduced in [11] can solely be used in high-perspective architecture, which is featured in the current paper for the physical guidance of things in the real world.
By focusing on the four functional features needed by ubiquitous services, namely identification, notification, monitoring, and tracking, [32] specifies 24 different application services that have all four of the above features. Then, according to the ubiquitous computing specification, which is based on being everybody, everywhere, and at any time, the three criteria of service classification are determined: subject, place, and time.
A brief summary of characteristics and limitations of some hybrid ubiquitous computing architectures (● = Yes; ○ = No)
A brief summary of characteristics and limitations of some hybrid ubiquitous computing architectures (● = Yes; ○ = No)
Finally, the services are classified into different types based on these criteria. The main disadvantage of this classification is the services’ dependency on the type of application. In other words, services are determined based on the type of application and then classified according to three criteria. Another disadvantage of this categorization is the overlapping of the services with each other that results in rewriting many codes for each service.
However, in the European research open-code project PalCom, a ubiquitous computing project for designing computing technologies in things and rendering the surrounding user environment tangible, all services are divided into control services, streaming services, and meta services [68]. In this categorization, control services signify services that can induce change in environmental devices, such as the decrease or increase of a speaker. Streaming services are those which can unilaterally transfer data of a particular type, such as sound or image, between two components, like a service or device. However, meta services are services which cannot be used alone, but can only be employed by other services, such as logging or debugging services. Based on [68], its categorization is solely designed for PalCom. Therefore, regardless of the scenario type, only services which are presented in PalCom can be categorized as such.
In [80], the composition mechanism of ubiquitous services is such that the system using these services can effectively overcome environmental changes and errors. With this in mind, [80] presents a categorization of basic ubiquitous services based on the functionality of services and the role each play, with the services divided into three kinds of abstract service components. According to this categorization, a normal service may include a context provider, context processor, and/or an information deliverer. The context provider’s function is to recover particular sensor data. Based on the data provided by the context provider or the data inside a database, the context processor produces meaning-based information to be utilized in the information deliverer service. The information deliverer service also includes hardware resources which can present the provided information to users. In [80], this categorization is only provided to extract sensor data and to deliver proper results to users via the capability of services composition; there is no discussion about other presentable services in ubiquitous environments.
In contrast, according to the type of user personal information, as well as the expected security of services in ubiquitous applications, the authors of [46] propose a hierarchical classification for services aiming to create a balance between ubiquitous user interactions and the principle of confidentiality. This classification divides services into three types: privacy-based, protection-based, and public-based. According to the expected level of user trust while taking into account three types of information (location-aware, identity-aware, and credit history), [43] presents a category of ubiquitous services for the fixed information of applications, such as the type of application, cost of service usage, and the host executing the application. Both [46] and [43] aim to improve user security and focus more on the security aspects of services, but do not mention other service properties.
[38], on the other hand, deals with the ubiquitous services of an urban environment. Thus, all such ubiquitous services are determined and the services classified into three groups (service operation, city function, and utilization object), while the three criteria of cost, access, and type of application are taken into account. Of course, the three groups are not in conflict with each other and all three can be used for any specific service. The service operation category classifies services into public and commercial types. The public involves free services and the commercial incur costs. Services in the city function category are divided into generality and specialty types. Generality is the basic services and specialty is certain services of an urban application. Finally, the utilization object category divides services based on their application in life and industrial. Life is for services related to people’s personal lives and industrial for services related to industry. Although, an acceptable classification of services is presented in [38], it is based on services for an urban environment. Therefore, this classification cannot be generalized and poses limitations for other environments.
Finally, the authors of [50] survey presentable services in ubiquitous user-centric information systems and offer 17 kinds of services in the form of a particular scenario and based on several user features, such as the role of users, their location and profiles, and also characteristics of the utilized devices by users, such as network type and memory. These services can be allocated to different user requests according to their willingness and concept of context. The provided taxonomy of services in [50] is solely based on the function of ubiquitous information systems and set for a particular scenario. This cannot be utilized for other applications or even other scenarios in the same ubiquitous information systems application.
Various research work has investigated security in ubiquitous architectures. In [66], security issues in ubiquitous computing are explained and categorized through several applied examples. According to this study, the most serious challenges are privacy and authentication, as possible solutions should not affect the usability of the ubiquitous system. [51] investigates some of the security challenges involved in the information and services management of ubiquitous systems. This research shows that the mobile nature of ubiquitous devices is the main reason for developing secure algorithms for ubiquitous information and services management. Ubiquitous applications not only collect a wide range of privacy sensitive information from individuals and their social circles, they also control environmental equipment and so affect the lives of individuals. Therefore, [86] explores the most pressing challenges and noteworthy solutions of security and privacy in the applications of a ubiquitous smart city.
In [4], a context-aware access control model is introduced for ubiquitous environments along with its main features, including decentralization, robustness in the face of context errors, distributed trust, expandability, flexibility, and scalability. The proposed model is evaluated by a smart emergency room scenario. The study conducted in [33] indicates that ubiquitous computing environments require a trust-based secure architecture due to the lack of a central control in ubiquitous computing environments and the non-specification of users in these environments; in contrast, all architectures are based on user authentication and access control. Hence, this secure architecture introduced for ubiquitous computing is based on confidentiality. However, according to [10], protecting privacy in ubiquitous environments is a huge challenge. Therefore, in order to address this, a privacy-based service-oriented architecture is proposed for ubiquitous computing which also provides a classification for offensive attacks on privacy and the categorization of its improved technologies. Since location awareness and privacy are two sides of a coin and conflicting, [7] examines privacy in location-aware ubiquitous applications. A solution is proposed for offering services that can provide the minimum amount of privacy for the users of the environment.
[8], however, investigates information encryption methods that are usable in ubiquitous systems and introduces a block encryption method for ubiquitous computing applications that can perform ubiquitous data encryption with a slight delay. In [12], several encryption approaches are also proposed to solve the security and privacy challenges of ubiquitous computing. In all of these, the two essential features of ubiquitous computing systems are considered, including the diversity of computing resources available to ubiquitous devices and the dynamic nature of this type of computing. [57,71,89] also study the issues and challenges of access control, confidentiality, and the security of wireless communications in ubiquitous computing respectively, in addition to introducing solutions.
Security in the cloud has also been investigated from various aspects. In [60], the security challenges in cloud computing along with provided solutions are explored in general terms. By focusing on the types of cloud data and using the opposing criteria of security and applicability, this research compares four different approaches in order to safeguard confidentiality in the cloud provider. [48] presents a comprehensive categorization of security challenges in cloud computing, in which cloud security is investigated from three viewpoints: communications security, architectural dependence, and contractual concerns. In the context of architectural security, this research categorizes existing issues into four groups: virtual machines, data control, application programming interface, and access control. It has been argued that there is an essential need for a systematic review of cloud security issues based on the type of application (manufacturing systems here), because of the privacy and worthiness of the data on one hand and security risks and harm due to the nature of network systems on the other hand.
In [74], the concept of cloud security is investigated from two perspectives: cloud providers and cloud customers. In this regard, the most important challenges faced by providers and customers are generally categorized. The security challenges include service level agreements, authentication and identity management, protection of data centralization, confidentiality, access control, and accounting. In [87], five different development models are proposed by focusing on various security issues that users may encounter in cloud systems, such that those addressed here. The models are: separation, availability, migration, tunnel, and encryption models. However, in [36], a comprehensive study on various security issues of cloud computing is conducted and the types of issues are categorized into 43 different groups.
While outlining the most important security issues in the cloud and providing a layered framework for an assured cloud, [25] focuses on cloud storage and data concerns. In particular, the approaches to secure processing of data query are explained while data storage methods on external machines and the creation of queries for encrypted data are described. In contrast, [56] addresses data security in the clouds and also proposes solutions while categorizing the most important challenges of data security in the cloud. In [55], cloud security challenges are examined from three perspectives: data storage issues, identity management, and access control. There is also a review of contractual and legal considerations and the solutions proposed by others to address these challenges. While presenting existing security challenges for storing big data in clouds, [41] introduces an efficient security-aware distributed storage approach for the secure storage of big data that intelligently segments files and, after encryption, separately stores each segment’s data into cloud distributed servers. This approach aims to reduce the time of storing big data while considering security.
[15], however, investigates the existing issues and solutions in the area of secure service level agreements in cloud computing. For this purpose, a systematic mapping process is utilized which compares the security performance of various agreements with three steps: design, implementation, and conclusion. Finally, in [64], the issues and challenges of cloud security are fully indicated and categorized as the basic security concepts in cloud computing are explored. The most important threats to cloud security are also investigated. Consequently, the requirements and solutions proposed in research literature are presented for all of the discussed challenges and threats. While there is research that has separately reviewed the most critical security challenges and issues in cloud and ubiquitous computing, there has not yet been any research addressing the challenges and issues in hybrid ubiquitous environments.
Some of the most important features of ubiquitous inputs along with attributable parameters
In a ubiquitous environment, users connect to the ubiquitous system and provide system inputs or use system outputs through devices and equipment. In general terms, these devices and equipment are categorized as follows: (1) Sensor devices: such as smoke sensors, body sensors or motion detection sensors which enter inputs into the system after being installed in the environment; (2) Smart equipment: such as smart mobile phones, pocket computers or tablets with the capability of both entering inputs and displaying results to users; (3) Non-smart equipment: such as the keyboard, control panel or light keys which are solely capable of entering inputs into the system; and (4) Actuator devices: such as lamps, monitors or blood pressure alarms which solely show the resulting outputs. Apart from actuator devices which display system outputs for users, the first three categories of devices can enter inputs into the system through one of the following methods:
– Explicit method
In this method, inputs are entered into the system directly by the users and through the common input tools, such as the keyboard, mouse, touchscreen, microphone, camera, light keys, and controlling keys on a panel. Generally, these inputs have a certain purpose and should always be stored in the system for the future use. Explicit inputs are generally entered into the system through both smart and non-smart equipment.
– Implicit method
In this method, inputs are entered into the system accidentally through environmental sensors, such as smoke, temperature, pressure, weight, motion, connection, light, and the other sensors. These inputs do not necessarily have a purpose and occasionally require proper filtration before storage. Although implicit inputs are usually entered into the system through environmental sensors, in some cases, one can enter them via sensors embedded inside smart equipment, such as the barometer or accelerometer in most smart phones.
In a ubiquitous system, one can attribute several features to inputs, whether implicit or explicit. These features greatly impact the functioning of a ubiquitous system. For example, one of these features can be the priority of one input over the others. In other words, an input, whether implicit or explicit, may have higher, similar or lower priority than other inputs based on its application. For example, there may be a medical application in which several inputs are entered simultaneously: two explicit inputs, namely a request for turning on a light and a request for the submission of a list of all physicians, along with two implicit inputs, namely an increase of a patient’s blood pressure and a rise in the patient turnover at the hospital. Now, if the priority of different inputs is not specified in a system in advance, the system is incapable of identifying the nature of these inputs and responding properly. In this case, the request for turning on the light might be answered sooner than the request to assist a patient in critical condition. In Table 2, some but not all of the inputs believed to be of the highest importance in a ubiquitous system are given, along with parameters attributable to explicit or implicit cases.
However, a ubiquitous request is defined as follows.
Ubiquitous request is a kind of input which a user creates implicitly or explicitly in a ubiquitous environment and expects the system to respond to properly in a reasonable among of time.
A ubiquitous request or a request, in short, can be the demand to turn on a light, store information, or display a list of physicians in a hospital. According to this definition, all inputs are not requests and only inputs resulting in a response by the ubiquitous system can play the role of a request. For example, a temperature sensor might regularly measure the temperature of the environment and send the measured amount to the system as an implicit input. Therefore, the input temperature is a request when it turns a heating or cooling system on or off. In other words, based on the input temperature, the system responds to the surroundings of the user. According to this definition, a reasonable time is a period of time in which the fulfillment of a request is of the highest importance to the user. This period can be real-time or non-real-time and depends on some factors, such as user preferences, type of application, type of ubiquitous architecture and its performance process, system hardware capabilities, and so on.
These requests might then be categorized based on the type of resources, volume of resource requirements, and response time. The type of resources may include compute-resources, data-resources, connective-resources, energy-resources, and other resources or a combination of these. As a result, one encounters computing, data-based, connective, energy-based, and other requests or a combination of these. Moreover, requests have different volumes based on the need for resources in different applications; the volume of need for resources can be categorized into lightweight and intensive. In the example of a medical application, there are many requests, including the collected data of patients and the environment; all of these requests require previously collected data, while the computing volume of each request might be low and consist of a simple analysis and comparison (data-intensive). In contrast, there is the scientific ubiquitous system which collects user processing requests in the environment through the users’ mobile phones and sends these to a central service provider to carry out a heavy computing operation on a vast volume of data. The scientific ubiquitous system is therefore, heavy from both a computing perspective and access to data (resource-intensive). A pure ubiquitous computing system can easily answer most lightweight requests of any kind. However, the real challenge occurs when there are intensive requests. In this case, a pure system (single- or multi-domain) is not capable of fulfilling these requests, or it will limit its accomplishments.
A few application examples in ubiquitous environments based on the required resources of a request (just in computing and data-based dimensions) and real-time or non-real-time requests
The other important feature of ubiquitous requests is response time. In general, ubiquitous requests are divided into real-time and non-real-time. In a vast number of ubiquitous applications, users are willing to receive the system’s response in due time and, after a specific time, the provided response is of no use to them. In this case, these are real-time requests. In some applications, however, there is no specific time for the system to respond and the system is required to solely provide the answer. This is a case of non-real-time requests in which the time needed to provide the answer holds no significance. If the response time is non-real-time, a pure ubiquitous system might be able to provide the proper answer for the requests. However, when the response time is real-time, the processing of requests will most likely face difficulties due to the lack of resources in the pure ubiquitous system. Table 3 presents application examples in ubiquitous environments based on the required resources of a request (just in data-resource and compute-resource dimensions) and real-time or non-real-time requests, in which the type of request is identified. By examining the required resources using some of the applications mentioned in this table, it can be concluded that pure ubiquitous computing (single- or multi-domain) cannot always be desirable; hence, the processing of different requests becomes feasible via hybrid ubiquitous computing.
In the previous sections, it is concluded that, to reach Mark Weiser’s dream, pure ubiquitous computing is not responsive enough; for ubiquitous computing to be desirable, it must respond to user needs based on existing technologies. A desirable ubiquitous computing system must be capable of eliminating the pure system’s deficiencies discussed in the first section of the current paper. Moreover, it should be able to process any kind of request with any number of required resources. Now, the questions to ask are what kind of computing can provide this ideal, if software and hardware augmentation of pure ubiquitous computing are able to eliminate these challenges, and if using another computing system will provide the required capabilities on its own.
As discussed, ubiquitous computing does not claim to have all the necessary capabilities. Furthermore, a stronger computing system, like cloud computing, is not be able to fulfill ubiquitous demands for several reasons, such as a lack of context knowledge, the impossibility of controlling local devices and equipment, the limitation in the type of calling for services, and so on. Therefore, the best solution is a kind of hybrid computing which can provide the required capabilities by combining strong computing with pure ubiquitous computing. In this regard, research conducted in recent years has focused on two types of hybrid computing: mobile cloud computing [17] and ubiquitous cloud computing [72]. The purpose of both types is to offer unlimited services to a large number of users by having devices and equipment anywhere and anytime. Besides, both mobile cloud and ubiquitous cloud computing attempt to compensate for the different limitations of local devices and equipment by the high potential of cloud computing. Nevertheless, there are differences between these two computing methods.
As stated in [61], “mobile cloud computing is a rich mobile computing technology that leverages unified elastic resources of varied clouds and network technologies toward unrestricted functionality, storage, and mobility to serve a multitude of mobile devices anywhere, anytime through the channel of Ethernet or Internet regardless of heterogeneous environments and platforms based on the pay-as-you-use principle.” According to this definition, the main goal of mobile cloud computing is to compensate for the lack of resources in mobile computing in different dimensions. Nevertheless, some of the requirements of ubiquitous computing are not feasible in mobile cloud computing, including the comprehensive understanding and knowledge of the context and the possibility of controlling devices and equipment in the user environment. Hence, [62] proposes a kind of hybrid computing, namely hybrid pervasive mobile cloud computing (HPMCC), that attains the capabilities of desirable ubiquitous computing by integrating mobile cloud computing and ubiquitous computing.
A comparison of ubiquitous, cloud, mobile cloud, and ubiquitous cloud computing based on the expected features of ideal ubiquitous computing
A comparison of ubiquitous, cloud, mobile cloud, and ubiquitous cloud computing based on the expected features of ideal ubiquitous computing
Nevertheless, the present study holds that ubiquitous cloud computing can currently deliver the capabilities of idealistic ubiquitous computing by itself. Moreover, by employing a cloud as a processing basis, the offloading of massive processing to the cloud and the provision of a vast number of services are possible. Although the concept of ubiquitous cloud computing has already been introduced [72], no specific definition for this computational paradigm has been provided so far by any research study, similar to whatever exists for ubiquitous computing, cloud computing, and mobile cloud computing. By considering the ideal features, a particular definition for ubiquitous cloud computing may be proposed as follows.
Ubiquitous Cloud Computing is a type of multi-domain hybrid ubiquitous computing which employs elastic and unlimited cloud resources as the head layer and context-aware ubiquitous technologies as the bottom layer to provide a vast number of services for anyone, anything, anywhere, and anytime, in various types and quantities regardless of heterogeneity in devices and equipment; moreover, users should not be forced to pay for using some kind of services.
Definition 2 is the basis of other sections in the current paper and suggests that ubiquitous cloud computing is a combination of cloud and ubiquitous technologies, both of which together can respond to a vast variety of user requests. According to this definition, the processing of activities is not limited to a certain layer; a ubiquitous user request is processed in the first layer that is capable of responding and then the proper services are sent to the requesting user. Furthermore, an architecture based on this kind of computing should be capable of providing different services with any kind or volume of resources for any users or things (actuator devices and user equipment) found in different areas of the ubiquitous environment regardless of the request time. Noteworthy in this definition is that users are not obliged to pay the costs of using some services, a point which the next section will discuss in more detail. Table 4 compares ubiquitous, cloud, mobile cloud, and ubiquitous cloud computing against the features expected from ideal ubiquitous computing. According to this table, mobile cloud computing can be considered as a subset of ubiquitous cloud computing.
As shown in Table 4, the expected features can be categorized as follows:
– Context awareness
A computing system is context aware if it uses context to provide relevant information or services to the user; here, relevance is related to the type of user task [1]. In this definition, the context can be the position, identity, activity, time, or other information relevant to an entity (person, place, or object). The behavior of ubiquitous computing is based entirely on context awareness and all services are provided to users on this basis. Therefore, to a large extent, context awareness exists in ubiquitous computing [44,85], whereas it is not found in cloud computing [47]; of course, not using context awareness will not affect the performance of an independent cloud. There is also little context awareness in mobile cloud computing due to the use of mobile computing in the lower layer caused by various but limited sensors in mobile devices [23,53]. Because of the presence of ubiquitous devices and equipment around the users, much context awareness in ubiquitous cloud computing is expected.
– Controlling sensors and actuators
Context information is collected by sensors and the services required by the user are also applied through actuators in the user environment. It is possible to completely control sensors and actuators in ubiquitous computing [65]. However, the user is only able to perform these control operations in domains that are in contact with the user’s current domain. There is no direct control of context sensors and actuators in cloud computing because of a lack of context awareness [47]. Furthermore, users may not want to control sensors and actuators throughout the cloud due to some security concerns, such as privacy. In mobile cloud computing, context awareness is provided through mobile devices; therefore, it is only possible for the user to control the internal sensors and actuators of the mobile. However, in ubiquitous cloud computing, it is expected that users have the ability to control all their peripheral sensors and actuators. In this computing paradigm, the limitation existing in pure ubiquitous computing will also be eliminated due to the interconnectivity of all domains throughout the cloud.
– The amount of available resources
Most devices and equipment suffer from resource limitations in ubiquitous computing. Therefore, the amount of resources available in this type of computations is limited [39,88]. This restriction is one of the main reasons for using hybrid computing architectures. On the other hand, clouds logically have no limitations in resources and the resources available to them are unlimited [34]. Also, in mobile cloud computing, usable resources are unlimited due to the use of clouds as one of the architectural layers [42]. Due to the use of clouds in ubiquitous cloud computing, there should be no limitations in resources and users will be able to access as many resources as needed.
– Mobility of users
In ubiquitous computing, if the user’s geographic location changes, the use of ubiquitous services will still be possible. However, users are only able to benefit from ubiquitous services in the domains related to their current domain [84]. Since clouds are accessible everywhere via the Internet, the users of cloud computing and mobile cloud computing environments can access cloud services anywhere [19]. The users of ubiquitous cloud computing should be able to access all the provided services regardless of geographic location; this is to be expected due to the existence of the cloud infrastructure in this computational pattern and the possibility of communication among various ubiquitous domains throughout the cloud.
– Covered domain (operational range)
The definition of a covered domain is the area where services can be consistently provided to users. This feature, like the previous one, is limited in ubiquitous computing, mainly because of the lack of communication among all the ubiquitous areas [13,35]. In other words, ubiquitous capabilities cannot be consistently available to users across all domains. In cloud computing, if specified in the service level agreement, the user can consistently access all cloud services and capabilities from any location [29]. This feature in mobile cloud computing is similar to that in cloud computing. It should be noted that in both cloud computing and mobile cloud computing patterns, there may be times when no service is provided to the user, based on the terms of the agreement. While, in ubiquitous cloud computing, users must be able to consistently benefit from ubiquitous services and capabilities in every condition, even if these services are limited. The limitation that may exist in this case is related to the provisions listed in the service level agreement.
– Heterogeneity
Heterogeneity is the existence of a difference between software and hardware components in a computational environment. In ubiquitous computing, only ubiquitous components can differ from each other [70]. In cloud computing, this heterogeneity exists in cloud components. However, in mobile cloud computing, cloud and mobile components can be heterogeneous [61]. However, in ubiquitous cloud computing, ubiquitous, mobile, and cloud components can be completely non-uniform.
– Calling for services
In ubiquitous computing, services can be explicitly and implicitly called due to the presence of numerous peripheral sensors [2]. However, in cloud computing, services are only called explicitly and upon direct request by the user. In mobile cloud computing, more services are explicitly called and, due to the limited number of internal mobile sensors, the implicit service call is limited. In ubiquitous cloud computing, the possibility of explicit and implicit calling for services should exist; this is not unexpected due to the existence of the ubiquitous computing capabilities.
– Type of services
Given the limitation of different resources in ubiquitous computing, the services offered are lightweight. However, in cloud and mobile cloud computing, it is possible to provide a different range of services due to the existence of a cloud infrastructure that eliminates resource limitations [3,34]. In ubiquitous cloud computing, any type of service can be provided because of the use of clouds.
– Invisibility of final devices and equipment
In ubiquitous computing, most of the final devices and equipment are embedded in the environment around the users and so they are hidden from view [45]. However, in cloud and mobile cloud computing, these final devices and equipment are directly available to the user and thus not hidden from view. Due to the integration of ubiquitous and cloud paradigms in ubiquitous cloud computing, devices and equipment can be placed in the environment around the user, either in an embedded or in a user-viewable manner.
Given the discussion in the previous sections, it is concluded that, based on existing technologies, ubiquitous cloud computing can currently be considered as the ideal ubiquitous type. Therefore, assuming that the main criterion for selecting ubiquitous cloud computing is to access the real capabilities of ubiquitous computing, one should then regulate the service features according to what should be and not according to what is. Next, several expected service features in ubiquitous cloud computing are suggested, which can then be considered as the criteria for service categorization.
Users are able to access services any place they are and this access should not be limited to a particular domain. This feature is the reason behind the introduction of multi-domain or multi-layer architectures. In other words, by entering a ubiquitous environment, the ubiquitous user should be able to use all services at all times, regardless of the domain’s geographical area or whether the user’s registration or data is in the same or another geographical domain.
Services are embedded in the environment and its computing devices. Therefore, the processing core of the ubiquitous system should possess the ability to process and respond to the vast number of various requests (from the perspective of type and volume).
Users need not be concerned about the waste of the time during the installation, setup or execution of services. Therefore, it is critical to regulate the types of services in such a way so that their deployment and implementation in local actuators (whether mobile phones, display screens or even home refrigerators) occur quickly.
Basically, services are based on demands which are declared through requests, whether explicit (by the user) or implicit (through environmental sensors).
Services are defined and categorized so that users are not forced to pay for some services. Suggested by the previous section as the definition of ubiquitous cloud computing, this feature is remarkable and essential. In other words, users are solely charged for cloud services and should not be forced to pay for local services or the services of other ubiquitous domains. Unfortunately, this feature has not adopted by most existing ubiquitous cloud architectures which force the user to pay for any kind of service.
Utilization of services is never terminated. In other words, the user should always be able to enjoy all services in the best case and at least, in the worst case, the existing services of the current domain or adjacent domains. The continuous provision of services is one of the most significant and critical criteria. However, this is only considered in a few ubiquitous cloud architectures [3]. Due to the architecture structure and heavy dependency on clouds as the processing core, other hybrid computing architectures encounter difficulty in providing constant and permanent services.
However, from a security perspective, ubiquitous cloud computing environments are multi-domain environments in which each domain can have different security requirements and use different security mechanisms and protocols. In general, in a ubiquitous cloud computing architecture, the following concerns should be addressed so as to provide the minimum level of security required from both the cloud point of view and the ubiquitous viewpoint:
All security issues in ubiquitous computing should also be considered in ubiquitous cloud computing and their solution must be found. These concerns include authentication, encryption, access control, secure boot-strapping, privacy, confidentiality, and reliability [4,7,8,10,12,33,51,57,66,71,75,86,89]. All the security implications of cloud computing should also be considered in ubiquitous cloud computing and a solution must be found for each of them. These concerns include authorization, identification, access control, authentication, integrity, confidentiality, privacy, availability, non-repudiation, and contractual issues [15,25,36,41,48,55,56,60,64,74,87]. Since the communications of the layers in a hybrid ubiquitous architecture play an important role in architectural performance, communication security should be properly provided in such a way so as to avoid a series of threats, such as port scanning [58] and spoofing attacks [78]. These communications involve both in-layer communications and out-of-layer communications. In addition to considering the security concerns of the ubiquitous and cloud layers, it is also critical to provide security in the other layers of a hybrid architecture. Given that there is direct interaction between ubiquitous computing and cloud computing in ubiquitous cloud computing, it is imperative that the provisions of the service level agreement be reviewed so that user privacy is maintained while various location-aware services are being provided to ubiquitous users. Due to the large number of domains in a hybrid ubiquitous architecture and the heterogeneity in user hardware and software, it is important to develop security standards in order to verify users throughout the system. Due to the large volume of data in ubiquitous cloud computing, this computing paradigm faces numerous challenges, such as data loss, data incompatibility, data breach, data integrity, and data privacy. Therefore, providing solutions to ensure data security is also necessary. Given the large number of data input devices and equipment in the environment around users and the possibility that users or third parties can manipulate these without authorization, it is essential to develop solutions that limit services or discontinue all services in the case of any manipulation or the loss and theft of devices and equipment.
Categorization of services in ubiquitous cloud computing
Before the categorization of services, the structure of ubiquitous cloud computing should be regulated based on the services provided. To achieve this, according to Section 4’s suggested definition of ubiquitous cloud computing, an architecture called CLOUBI architecture (CLOud-based UBIquitous Architecture) is assumed as the basic architecture (Fig. 1). As evident in this figure, CLOUBI architecture best portrays the suggested definition for ubiquitous cloud computing which demonstrates a connection between ubiquitous domains and the computing cloud by considering the basic architecture of each. This multi-domain hybrid architecture is constituted of three layers: the user layer (the lowest layer), ubiquitous layer (middle layer), and cloud layer (highest layer). The relation between these layers is hierarchical [3,69] and the basis of connection is the ubiquitous layer (equal to the distributor layer in [69]’s definition of layers). Moreover, current domains in the ubiquitous layer are capable of establishing connections with their adjacent domains. The adjacency of two domains results from criteria such as geographical distance, the domains’ inter-dependency, or previous user profiles. Generally, the architecture in each layer is based on the accepted definitions provided in advance for both ubiquitous computing and cloud computing, which might be slightly different in detail. In Fig. 1, m numbers of ubiquitous domains are present in the ubiquitous layer, each of which include a number of users in the user layer and all of which are connected through a cloud in the cloud layer. Of course, there is no limitation on the number of clouds and so various clouds can be considered in the cloud layer.

The communication structure of CLOUBI architecture layers based on the proposed definition for ubiquitous cloud computing.
In CLOUBI architecture, each ubiquitous domain is capable of connecting to other components in three methods. In the first simplest method, to receive user requests and send the proper output after their processing, a connection is established with users through the current domain’s local devices and equipment. In this case, the user requests are in need of the local domain’s services. The second type of connection occurs when user input requests require services in one the adjacent domains, and, hence, a connection is established between the current domain and adjacent domains with these kinds of services. In this method, necessary permits must be obtained in advance in order to use services. The third type of connection is established when the current domain is incapable of responding to the request due to a lack of requested services or a lack of proper resources for user input requests and when adjacent domains are unable to process the request as well. In this method, a connection is established between the current domain and the cloud so that the user request is processed there after being sent to the cloud or it is forwarded to a non-adjacent domain via the cloud and processed there. Eventually, the cloud produces the proper results and returns these to the current domain. This connection frees users of any extra charges. Only if there is a need to send user requests to the cloud, non-adjacent domains and, of course, perhaps adjacent domains (based on the type of application and architecture policy), users have to pay the costs.
As shown in Fig. 1, there are a variety of devices and equipment which play the role of a link connecting users to the system. These devices and equipment include what is mentioned in Section 3. Enjoying mobility between domains, users in the lowest layer are capable of connecting to existing devices and equipment and entering their request to receive services. Fig. 2 presents an example of the interaction between users in domain k and the system for sending input requests and receiving output results. As depicted in this figure, user requests are first sent to the ubiquitous management system in domain k. This system will then decide to process the requests locally or send them to the cloud or one of the adjacent domains for processing. One of the notable points in CLOUBI architecture is that users of a domain can make connections to other close by users of the same domain via their own equipment. This feature is believed to decrease the loading volume of the ubiquitous system’s processing core when a connection is regulated with a close by user or there is a need for the services of a nearby user’s equipment.

Method of interaction between users of a ubiquitous domain and the ubiquitous management system for sending requests and receiving results.
In regard to the current applications of ubiquitous computing, the expected features of ubiquitous cloud computing, and the regulated architecture for ubiquitous cloud computing, it is appropriate to consider the categorization of ubiquitous cloud computing. The categorization of ubiquitous cloud services in CLOUBI architecture can be viewed from two perspectives: first, categorization based on the nature of services and, second, categorization based on the distance between the requesting and responding entities.
Nature is defined as the capabilities and facilities that a service provides for users or other services by requested users. Based on this definition, services are divided into four groups: Data, Context-aware, Software, and Hardware. The present study holds that each particular service in the ubiquitous environment can be part of one of these categories.
Data services
Data services are a group of various data and information which can be utilized in the form of a service, directly by the user in different applications or by other types of services. In most applications of these kinds of services, replication and consistency are crucial. Data may include context-based data (such as the data of global positioning systems, local tracking systems, or that of temperature, humidity, pressure, identity, and crowd); existing data collections (such as scientific collections related to weather, commercial collections regarding stocks, medical collections about medicine or disease, or news collections consisting of newspapers); user profiles (such as the turning on and off of lights when a user enters the home, the traffic history of the user commuting in the city, or the medicine taken when the user was last sick), and so on.
Context-aware services
Context-aware services are all control actions and capabilities that can be directly applied by the user or by other services requested by the user into the context. Some of these services may include enabling or disabling of a series of peripheral equipment (such as turning a light on and off). These services, which may differ in various ubiquitous domains, are heavily dependent on data services and the accuracy of their performance is directly linked to data services.
Software services
Software services are a collection of software and applications which can be employed for various functions, either directly by the user or by other user requested services. Software services may include medical, domestic, commercial, administrative, industrial, social, informational, and other applications.
Hardware services
A hardware service is the usage of a group of hardware resources, such as CPU, RAM, storage, sensors, and so on. These services can be identified and utilized in various applications. Hardware services are usually used by other ubiquitous services, especially software services. The main difference between hardware services and context-aware services is that hardware services should provide hardware resources for users whereas context-aware services control the environment around the user and so can make necessary changes to the user context.
Categorization based on distance
Based on the distance between the requesting user of a service and the service provider, services can be divided into five groups: near, local, remote, global, and far. This categorization is by no means inconsistent with categorization based on the nature of services (Section 6–1). It can be considered for any type of data, context-aware, software, and hardware services.
Near services
In a ubiquitous environment, if a number of services are provided by the existing devices and equipment in the user layer and these can be provided solely for close by users or the services requested by nearby users, then these services are called near services. Usually, such services are lightweight and not many resources are needed to provide them. Besides, their capabilities depend on the volume of existing services in the devices and equipment. An example of near services may be an application called “food order recommender” installed on a user’s smart phone as user equipment. In a restaurant environment, this application gathers the data of other users’ orders. Based on the number of orders placed by users for a particular menu item, the application suggests the most popular as the meal of choice for the smart phone user. In this example, to operate, this application needs no upper-layer resources (to be introduced later as other services) and solely requires adjacent data as near data services.
Local services
In a ubiquitous environment, if a number of services are provided by the ubiquitous system’s processing core in a specific domain and only for users of that domain, these services are called local services. The capability of these services depends on the assumed ubiquitous domain’s processing core power in terms of the number of presentable resources. Presentable local services may include local data services, local context-aware services, local software services, and local hardware services.
Remote services
Remote services are services in a multi-domain ubiquitous environment which are provided by the processing core of each domain and may be employed by users in other adjacent domains. An adjacent domain is determined based on criteria such as the geographical distance between domains, inter-dependency of domains and/or user profile data. Similar to local services, the capability of these services depends on the processing core power of the service provider domain. Presentable remote services may include remote data services, remote context-aware services, remote software services, and remote hardware services. Generally, remote services cannot be utilized by the users of a single-domain environment with a zero external connection to other domains and, as the result, with their services.
Global services
In a hybrid ubiquitous environment, global services can be employed at all places by users or their requested services. Generally, these services cannot be provided without the usage of clouds. Therefore, unlike previous cases, it can be said that these services have no limitation of resources, are identical in all areas of the ubiquitous environment, and do not differ in their demonstration. Global services may also include global data services (similar to DaaS cloud services [27,76]), global software services (similar to SaaS [5,40], and PaaS [5,73] cloud services), as well as global hardware services (similar to IaaS cloud services [5,18]). As the concept of context is meaningless within the cloud, global services cannot support context-aware services.
Far services
In a hybrid ubiquitous environment, far services refer to the services supplied by the processing core of each non-adjacent domain of the current domain; far services can be provided by a cloud for current domain users or other services requested by them. The non-adjacency of a domain to the current domain refers to the absence of any direct link between the two domains; if domains are not adjacent, they will be certainly non-adjacent. In global services, it is not possible to provide such services without utilizing clouds. The most critical achievement of far services is accessibility to the local services of all domains which are not directly connected to the current domain. Far services can also include far data services, far context-aware services, far software services, and far hardware services.
In the single-domain ubiquitous environment, only near and local services of any kind may be provided; in the multi-domain ubiquitous environment, only near, local, and remote services of any kind are possible. In other words, in single- and multi-domains, global and far services, including data, context-aware (only for far services), software and, hardware services, are not accessible to users; moreover, intensive software services and unlimited hardware services are mostly impossible to provide and, from this perspective, multi-domain environments are very limited. Furthermore, in an integrated method and without further registration, a user is not able to use all of the services provided in any desired domain, which is the main purpose of ubiquitous computing; even with further registration, there will be inconsistency of data, i.e. much of the user information in the previous domain will be completely inefficient in the new domain. Table 5 examines the possibility of using the above categorized services in single- and multi-domain pure ubiquitous environments and offers some explanations for this.
Evaluation of the possibility of using categorized services in pure ubiquitous environments
Evaluation of the possibility of using categorized services in pure ubiquitous environments
(Continued)

User access to various services in the CLOUBI architecture.
With the increase in the number of domains in a multi-domain environment, however, the efficiency and performance of a multi-domain system will decrease. This is due to a lack of hardware services and resources in the processing core of centralized multi-domain architectures and also a lack of hardware resources of the domains in distributed multi-domain architectures. It should be noted that a multi-domain environment provides services only to its adjacent domains and not to other domains; hence, it cannot be claimed that multi-domain environments are completely ubiquitous. On the other hand, in ubiquitous cloud environments, accessing any kind of near, local, remote, global, and far services is possible. Besides the combination of domains with each other and the increase in the ubiquitous processing core’s capabilities, the usage of ubiquitous cloud computing will make it possible for users to access a vast number of services in an integrated way. Ubiquitous cloud computing can fulfill all requirements by providing unlimited resources; moreover, the scalability of domains and the potential of adding new services are possible. Fig. 3 illustrates the requesting user’s method of access to CLOUBI architecture services.
It should be noted that other factors may also affect the classification of services, such as the type of security protocol, cost of service usage, or type of platform on which the service is provided. However, the present study holds that these and other similar criteria do not alter the nature of the services and can be considered in the form of service properties when defining the service. Therefore, it is not necessary to create a categorization based on these criteria. For example, when defining the service class, a property can be considered for the cost of service and, when defining a particular service, this property can be initialized so the usage cost can be calculated when a service is utilized by the users.
Figure 4, however, shows the communication standards and protocols required to connect the different parts of the proposed architecture when implemented. As a user enters a domain, he/she is able to connect to different parts of the CLOUBI architecture through the ubiquitous devices and mobile equipment in the user layer of the domain and so access different services. As Fig. 4 shows, the communication between ubiquitous devices and mobile equipment in the domain user layer can be established through one of the communication standards, including Bluetooth, Infrared, ZigBee, and RFID; on the other hand, the communication of these devices and equipment with the components in the ubiquitous layer of the domain can be set up via a wired/wireless local network. In the ubiquitous layer of each domain, a component called a cloudlet is employed. A cloudlet is able to communicate with similar components in other adjacent domains and offer remote services while processing user requests and providing local services. The adjacent domains are the domains connected to the current domain via a wired/wireless local area network. The cloudlet component also provides the connection between the ubiquitous layer of the current domain and the clouds in the cloud layer through the Internet so that global and far services can be offered to users in the domain. Cloudlets are, in fact, private clouds that can be placed locally in the user environment, depending on the type of application [6]. In the CLOUBI architecture, if there is no cloudlet in the ubiquitous layer, devices and equipment connect directly to the clouds in the cloud layer over the Internet so that services run consistently and continuously.
The current paper examines the characteristics and categorization of services in ubiquitous cloud computing. With this aim and given the deficiencies of pure ubiquitous computing, the reasons for using hybrid architectures and especially ubiquitous cloud architectures were surveyed. Next, considering the nature of user requests in a ubiquitous environment, the expected requirements of services were suggested, which a hybrid ubiquitous architecture should provide as a desirable ubiquitous architecture. A ubiquitous cloud architecture called CLOUBI was introduced as basic architecture. Based on the requirements expected of desirable ubiquitous computing and the structure of the basic architecture, two kinds of service categorization were proposed for this architecture: one based on the nature of services and the other on the distance between the service requester and the service provider. Considering the lack of regular service categorization in ubiquitous computing, the present work considers these two categorizations to be functional and beneficial for other research.

Initial communication standards and protocols needed for implementing the proposed CLOUBI architecture.
From the perspective of ubiquitous services’ applicability, the current study believes these services must be defined and categorized in such a way so as to allow their use in any application. In other words, a general class should be presented to define ubiquitous services so that any type of application can customize and utilize the services based on its particular needs and specifications, instead of utilizing its own exclusive services. This eliminates the services’ dependency on applications and presents a single definition of a service across the ubiquitous environment. The greatest advantage of the present study is its general classification of services; one is based on the nature of the services and the other on the distance between the service requester and the service provider, both of which can be used in any application. These classifications are based on a new hybrid architecture called CLOUBI, whose aim is to achieve an ideal ubiquitous architecture by combining the capabilities of cloud and ubiquitous computing with each other. In addition, due to the importance of security in all computational architectures, the most critical security concerns related to ubiquitous cloud computing architectures are also investigated in the current paper.
The currently proposed architecture is also advantageous when compared with existing architectures. Firstly, the proposed CLOUBI architecture is a three-layer architecture. The current study believes that a hybrid ubiquitous architecture should only have three layers. Thus, while maintaining performance at a satisfactory level, it reduces user costs and, at the same time, overcomes the resource limitations in a pure ubiquitous architecture. By decreasing the number of layers, the user’s dependence on the cloud increases, while the ability to comprehensively use ubiquitous capabilities reduces. Yet, by increasing the number of layers, the user costs of hardware and support for maintaining intermediate layers will greatly rise, while the management process grows more complicated. Secondly, in this comparison with other architectures, the currently proposed architecture is able to provide services in the manner desired by the user and which are independent of the type of resources available to users. In this architecture, according to the type of user request and the location of the service, any service type can be provided due to the classification of services. Additionally, while allowing the user to control all the aspects of peripheral sensors and actuators, the cloud presence overcomes all the limitations of pure ubiquitous architectures.
Follow-up work to the present research on ubiquitous cloud computing may encompass a variety of areas. One is the precise compilation of hybrid architecture details in such a way that the expected features of an ideal ubiquitous computing pattern may be fulfilled. The next work can be devising a generic model for symbolically defining the service that enables modeling services for different applications by focusing on the quality of service criteria. The development of various algorithms for hybrid architecture is another potential research area; this is highly important in view of the ever-increasing number of ubiquitous devices and equipment. Among these algorithms are context-based, scheduling, resource allocation, offloading, security, and data management algorithms. Furthermore, this computational pattern requires the implementation of a simulator to evaluate the efficiency of various algorithms. Another significant implication that should be addressed in ubiquitous cloud computing is the concept of security in different dimensions, whereas the current study only briefly addresses some of the security concerns in a hybrid architecture as further consideration is out of the scope of the present research.
