U.S. patent application number 16/708481 was filed with the patent office on 2020-04-16 for contextual remote management of virtual app lifecycle.
The applicant listed for this patent is International Business Machines Corporation. Invention is credited to Kuntal DEY, Vijay EKAMBARAM, Enara C. VIJIL.
Application Number | 20200120189 16/708481 |
Document ID | / |
Family ID | 59629382 |
Filed Date | 2020-04-16 |
United States Patent
Application |
20200120189 |
Kind Code |
A1 |
DEY; Kuntal ; et
al. |
April 16, 2020 |
CONTEXTUAL REMOTE MANAGEMENT OF VIRTUAL APP LIFECYCLE
Abstract
Systems and methods for managing app lifecycles on a user
device. A user device context is determined and a set of server
based apps associated with the context is determined based on the
context and a set of conditions associated with server based apps.
An indicator for user interface elements for each server based app
is sent with the indication of the context. These user interface
elements are displayed to a user of the device. In an example,
these user interface elements are displayed on a default pane of
the device. A user interface element in some examples is able to be
selected by a single interaction. Interactions between a user and a
user interface for a selected app are received at a. The user
interactions are processed to produce results based on the user
interface inputs, and the results are sent.
Inventors: |
DEY; Kuntal; (New Delhi,
IN) ; EKAMBARAM; Vijay; (Tamilnadu, IN) ;
VIJIL; Enara C.; (Croton on Hudson, NY) |
|
Applicant: |
Name |
City |
State |
Country |
Type |
International Business Machines Corporation |
Armonk |
NY |
US |
|
|
Family ID: |
59629382 |
Appl. No.: |
16/708481 |
Filed: |
December 10, 2019 |
Related U.S. Patent Documents
|
|
|
|
|
|
Application
Number |
Filing Date |
Patent Number |
|
|
15052091 |
Feb 24, 2016 |
10530896 |
|
|
16708481 |
|
|
|
|
Current U.S.
Class: |
1/1 |
Current CPC
Class: |
G06Q 50/01 20130101;
G06Q 30/00 20130101; H04L 12/4625 20130101; G06F 9/451 20180201;
G06F 8/61 20130101; H04L 67/22 20130101; G06F 9/44505 20130101;
H04L 67/42 20130101; H04L 67/306 20130101; G06F 8/62 20130101 |
International
Class: |
H04L 29/06 20060101
H04L029/06; G06F 9/451 20060101 G06F009/451; H04L 12/46 20060101
H04L012/46; G06Q 50/00 20060101 G06Q050/00; G06Q 30/00 20060101
G06Q030/00; G06F 9/445 20060101 G06F009/445; G06F 8/61 20060101
G06F008/61 |
Claims
1. A method on a server, the method comprising: determining a first
context for a user's device, the first context being a context of
the user's device at a first timepoint; determining, based on the
first context and a respective set of context related conditions
defined for each server based app within a plurality of server
based apps, a first set of server based apps associated with the
first context; determining, based on the first context and the
respective set of context related conditions, a display position
for a respective indicator of a respective user interface element
of one or more server based apps within the first set of server
based apps; sending, in association with an indication of the first
context, a respective indicator of a respective user interface
element for each server based app within the first set of server
based apps; sending to the user's device, based on determining the
display position, an indication of the display position for the
respective indicator of the respective user interface element of
the one or more server based apps within the first set of server
based apps; receiving, at a server from the user's device based on
sending the respective indicator, user interface inputs associated
with a selected user interface for a selected app within the first
set of server based apps; processing, based on receiving the user
interface inputs, the user interface inputs to produce results
based on the user interface inputs; and sending, based on the
producing, the results.
2. The method of claim 1, further comprising sending, in
association with the respective indicator of the respective user
interface element for each server based app within the first set of
server based apps, an indication of the first context.
3. The method of claim 1, wherein determining the first context is
based on context related information received from the user's
device.
4. The method of claim 1, wherein determining the first context is
based on at least one of user device location, user device
movement, user device communications status, user device
communications history, social media contacts for a user of the
user device, social media activities of a user of the user device,
physiological information of a user associated with the user
device, calendar entries for a user of the user device, preferences
of a user of the user device, or information within a profile of a
user of the user device.
5. The method of claim 1, further comprising: determining a second
context for the user's device, the second context being a context
at a second timepoint after the first timepoint, the second context
being a change in context from the first context; determining,
based on the second context and the respective set of context
related conditions defined for each server based app within the
plurality of server based apps, a second set of server based apps;
and sending, to the user's device based on determining the second
set of server based apps, an indication of the second context in
association with a respective indicator of a respective user
interface element for each app within the second set of server
based apps.
6. The method of claim 1, further comprising: determining that one
or more context related conditions of the respective set of context
related conditions defined for at least one of the server based app
from the first set of server based apps fails to be satisfied; and
removing the respective indicator for the at least one of the
server based app from the user's device.
7. The method of claim 1, wherein determining that the one or more
context related conditions of the respective set of context related
conditions defined for the at least one of the server based app
fails to be satisfied comprises: determining a second context for
the user's device, the second context being a context at a second
timepoint after the first timepoint, the second context being
different from the first context; and determining that the second
context does not satisfy a set of context related conditions
associated with a particular app within the first set of server
based apps.
8. The method of claim 1, further comprising: receiving, from a
sponsor of each app within the first set of server based apps prior
to determining the first context, the respective set of context
related conditions for the each app within the first set of server
based apps, wherein determining the first set of server based apps
associated with the first context comprises comparing the first
context for the user's device to each respective set of context
related conditions for each app within the first set of server
based apps.
9. The method of claim 8, further comprising: determining a second
context for the user's device, the second context being a context
at a second timepoint after the first timepoint, the second context
being different from the first context; determining that the second
context does not satisfy any set of context related conditions
associated with any app within the first set of server based apps;
and sending to the user's device, based on determining that the
second context does not satisfy any set of context related
conditions for each app within the first set of server based apps,
an indication to present a default set of apps.
10. A method on a user device, the method comprising: determining a
present user device context; receiving, from a remote processor, a
respective indicator of a respective user interface element
associated with each respective server based app within a first set
of server based apps, each respective indicator indicating a user
interface element to display for selection of its associated server
based app; receiving, at the user device from the remote processor,
a respective indication of a device context defined for at least
each server based app of the first set of server based apps;
determining that the present user device context matches the
respective indication of a device context for one or more server
based apps of the first set of server based apps; receiving, from
the remote processor, a respective display position for the
respective indicator of the respective user interface element
associated with at least each of the one or more server based apps;
and displaying, based on receiving the respective indicator and
based on determining that the present user device context matches
the respective indication of a device context, the respective user
interface element associated with each of the one or more server
based apps at the respective display position.
11. The method of claim 10, further comprising: receiving, based on
displaying the respective user interface element, a selection of a
selected user interface element that is associated with a selected
server based app, the selected server based app executing on the
remote processor and interacting with a user interface components
of the user device; presenting on a display of the user device,
based on the selection, a user interface for the selected server
based app; and exchanging with the remote processor, in conjunction
with the user interface, information between the selected server
based app executing on the remote processor and user interface
components of the user device.
12. The method of claim 10, further comprising: storing, in
association with the indication of a device context, the respective
indicator of the respective user interface element associated with
each respective server based app within the first set of server
based apps; and determining, after the storing, a change in a user
device context to a new device context as the present user device
context, wherein the determining that the present user device
context matches the indication of a device context is based on
determining the change to a new device context.
13. The method of claim 10, wherein the present user device context
comprises at least one of user device location, user device
movement, user device communications status, user device
communications history, social media contacts for a user of the
user device, social media activities of a user of the user device,
physiological information of a user associated with the user
device, calendar entries for a user of the user device, preferences
of a user of the user device, or information within a profile of a
user of the user device.
14. The method of claim 10, further comprising: determining a new
present user device context; determining that the new present user
device context no longer matches the indication of the device
context; and removing, based on determining that the new present
user device context no longer matches the indication of the device
context, the respective user interface elements associated with
each server based app with in the first set of server based
apps.
15. The method of claim 10, wherein the respective user interface
element comprises an app icon.
16. The method of claim 10, wherein displaying the respective user
interface element comprises displaying the respective user
interface element on a display of a mobile device.
17. The method of claim 10, wherein the selection of a selected
user interface element comprises at least one of a single click, a
single tap, or a single touch of the respective user interface
element.
18. The method of claim 10, wherein the respective display position
specifies a respective location on a display of a plurality of
interface indicators on the user device, and wherein the displaying
comprises displaying the respective indicator of the respective
user interface element at the respective display position on a
display of a plurality of interface indicators on the user
device.
19. A method on a server, the method comprising: determining a
context for a user's device, wherein the context is a context of
the user's device at a given point in time; determining, based on
the context and a respective set of context related conditions
defined for each server based app within a plurality of server
based apps, a set of server based apps associated with the context,
the set of server based apps comprising a first server based app
and a second server based app; determining, based on the context
and the respective set of context related conditions defined, at
least a first display position on the user's device for a
respective indicator of the first server based app and a second
display position on the user's device for the respective indicator
of the second server based app, wherein the first display position
and the second display position are relative to each other; and
sending, to the user's device and in association with an indication
of the first context, a respective indicator of a respective user
interface element for each server based app within the set of
server based apps, and the at least first display position and the
second display position for the respective indicators of the first
and second server based apps.
20. The method of claim 19, further comprising: receiving, at a
server from the user's device based on sending the respective
indicator, user interface inputs associated with a selected user
interface for a selected app within the first set of server based
apps; processing, based on receiving the user interface inputs, the
user interface inputs to produce results based on the user
interface inputs; sending, based on the producing, the results;
determining that one or more context related conditions of the
respective set of context related conditions defined for at least
one of the server based app from the first set of server based apps
fails to be satisfied; and removing the respective indicator for
the at least one of the server based app from the user's device.
Description
BACKGROUND
[0001] The present disclosure generally relates to the field of
management of applications on a device, and more particularly to
remotely managing the lifecycle of applications based on context
information relating to a user of the device.
[0002] User computing equipment, such as cellular phones, personal
electronic device, and the like, are increasingly able to host
applications to provide useful services or information to a user.
The usefulness of having dedicated applications, or "apps," on a
user device has led to an increase in the number of apps that are
of interest to a user.
BRIEF SUMMARY
[0003] A method on a server includes determining a first context
for a user's device, where the first context being a context of the
user's device at a timepoint. The method further includes
determining, based on the first context and a respective set of
context related conditions associated with each server based app
within at least one server based app, a first set of server based
apps associated with the first context. The method also includes
sending, in association with the indication of the first context, a
respective indicator of a respective user interface element for
each server based app within the first set of server based apps.
The method further includes receiving, at a server from the user's
device based on sending the respective indicator, user interface
inputs associated with a selected user interface for a selected app
within the first set of server based apps. The method additionally
includes processing, based on receiving the user interface inputs,
the user interface inputs to produce results based on the user
interface inputs. The method further includes sending, based on the
producing, the results.
[0004] In one example, a method on a user device includes
determining a present user device context and receiving, from a
remote processor, a respective indicator of a respective user
interface element associated with each respective server based app
within a first set of server based apps. Each respective indicator
indicating a user interface element to display for selection of its
associated server based app. The method further includes receiving,
in association with the first set of server based apps, an
indication of a device context and determining that the present
user device context matches the indication of a device context. The
method further includes displaying, based on receiving the
respective indicator and based on determining that the present user
device context matches the indication of a device context, the
respective user interface element associated with each server based
app within the first set of server based apps. In an example, the
respective user interface elements are displayed on a display along
with other user interface elements. The method also includes
receiving, based on displaying the respective user interface
element, a selection of a selected user interface element that is
associated with a selected server based app. In an example, this
selection is able to be made by a single interaction with the
selected user interface element. The selected server based app
executing on the remote processor and interacting with a user
interface components of the user device. The method also includes
presenting on a display of the user device, based on the selection,
a user interface for the selected server based app. The method
further includes exchanging with the remote processor, in
conjunction with the user interface, information between the
selected server based app executing on the remote processor and
user interface components of the user device.
BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWINGS
[0005] The accompanying figures where like reference numerals refer
to identical or functionally similar elements throughout the
separate views, and which together with the detailed description
below are incorporated in and form part of the specification, serve
to further illustrate various examples and to explain various
principles and advantages all in accordance with the present
disclosure, in which:
[0006] FIG. 1 illustrates a geographic environment, in accordance
with one example;
[0007] FIG. 2 illustrates two example shopping center area user
device displays, according to an example;
[0008] FIG. 3 illustrates example city center shopping area user
device displays, according to an example;
[0009] FIG. 4 illustrates cloud based app management and deployment
environment, according to an example;
[0010] FIG. 5 illustrates a present device context app management
platform process, according to an example;
[0011] FIG. 6 illustrates a multiple device contexts app display
definition process, according to an example;
[0012] FIG. 7 illustrates a user device process, according to an
example;
[0013] FIG. 8 depicts a cloud computing environment according to an
embodiment of the present invention;
[0014] FIG. 9 depicts abstraction model layers according to an
embodiment of the present invention; and
[0015] FIG. 10 is a block diagram illustrating one example of an
information processing system according to one example.
DETAILED DESCRIPTION
[0016] The below described system and method operate to provide an
improved user's experience when using a mobile device to access
information or perform other communications associated with
businesses or other entities that are relevant to the user's
context. In an example, a context of a user's device, and therefore
a context associated with a user of that device, is determined
Based on this determined context, processes on a remote server,
such as within a cloud based computing infrastructure, performs
lifecycle management of various special purpose processing
applications, referred to herein as "apps," on that user's device.
In an example, such lifecycle management is able to include
installation, management, operational support, and de-installation
of one or more capabilities on the user device. These capabilities
in one example are server based apps that allow a user to perform
processing, access data, perform other tasks, or combinations of
these, via the user interface of the user device. In an example, a
server based app is enabled on the user device by providing a user
interface on the device that communicates with, and exchanges data
with, a remote computing device such as a server or other cloud
based infrastructure. The cloud based infrastructure in an example
is able to perform processing, data storage, other operational
support, or combinations of these, based on the user interface
provided on the user's device.
[0017] FIG. 1 illustrates a geographic environment 100, according
to an example. The geographic environment 100 in this example
includes two commercial areas, a shopping center 102, and a
downtown city center 104 that includes a number of retail and other
consumer oriented businesses. A relatively small number of stores,
retail and other consumer oriented businesses are shown in this
geographic environment 100 in order to more concisely describe
relevant aspects of the operation of the described systems and
methods. As is generally understood, such shopping centers and city
centers are able to have a large number and a large variety of
businesses and other venues that are able to be spread over a
generally large geographic area in a variety of configurations over
that area.
[0018] In the illustrated geographic environment 100, the shopping
center 102 includes a store A 102, a store B 122, and a store C
124. In this depiction, these three stores are shown in a line from
left to right in the drawing, with store B 122 between store A 120
and store C 124, which are respectively at the ends of this line. A
first user 110 and a second user 112 are shown in different areas
of the shopping center 102. In the particular configuration of this
illustration, the first user 110 is shown near store A 120, and the
second user 112 is shown near store C 124.
[0019] The city center 104 includes movie 130, a shop N 132, a
department store 134 and a restaurant 136. In this depiction, the
movie 130, shop N 132 and department store 134 shown in a rough
line from left to right in the drawing, with shop N 132 between the
movie 130 and the department store 134, which are respectively at
the ends of this line. The restaurant 136 is shown to be opposite
the movie 130. A third user 114 and a forth user 116 are also shown
in different areas of the city center 104. In particular, the third
user 114 is shown to be close to the restaurant 136 and between the
movie 130 and restaurant 136. The fourth user 116 is shown near the
department store 134. An arrow near the third user 114 indicates
that the user is in motion and moving towards the movie 130 and
shop N 132, and therefore away from the restaurant 136. An arrow
near the fourth user 116 shows that the fourth user 116 is moving
in a direction generally towards the opposite end of the
illustrated city center 104, and therefore generally towards the
restaurant 136 and movie 130.
[0020] The users in the geographic environment 100 each have a
respective user device that wirelessly communicates with a wireless
communications infrastructure. In the illustrated geographic
environment 100, the user's devices are able to wirelessly
communicate with either a first wireless communications station 140
and/or a second wireless communications station 142. In general,
the user's devices are able to communicate, either wirelessly or
via a wired connection, through any suitable communications
interface. In various examples, user devices used by any of the
first user 110, the second user 112, the third user 114, the fourth
user 116, or any combinations of these, are able to communicate via
cellular data services, short range wireless links such as
Wi-Fi.RTM., Bluetooth.RTM., any suitable technique, or combinations
of these. In the illustrated example, the user devices communicate
with a server 144 through one or both of the first wireless
communications station 140 or the second wireless communications
station 142. In various examples the server 144 is able to consist
of a server, any suitable cloud computing infrastructure, or
combinations of these.
[0021] The server 144 in an example is a cloud computing platform
that includes functions to perform lifecycle management of apps on
the user devices used by each of the four users depicted in the
geographic environment 100. These apps in an example are able to
include apps that allow the user to receive information relevant to
the stores, retail businesses, or other consumer based businesses
that likely to be of interest to the particular user of the
respective user's devices. In an example, the server 144 operates
to install, manage operations of, support operations of, uninstall,
perform other lifecycle maintenance for, or combinations of these,
the apps on user devices associated with each of the depicted
users.
[0022] FIG. 2 illustrates two example shopping center area user
device displays 200, according to an example. The two example
shopping center area user device displays 200 depict a first
display 202 and a second display 204. The first display 202 shows
example icons displayed on a display of the device of the first
user 110 when that user is in the location in the shopping center
102 shown in FIG. 1. The second display 204 shows example icons
displayed on a display of the device of the second user 112 that
user is in the location in the shopping center 102 shown in FIG. 1.
The first display 202 and the second display 204 each depict a
display of app icons for apps where some of those icons have been
selected to be displayed on the respective devices based on a
context determined for that device, which is assumed to be a
context associated with the user of that device.
[0023] The depicted icons are examples of user interface elements
associated with apps that are able to be used in conjunction with
the user device. The icons illustrated in the two example shopping
center area user device displays 200 include two types of icons,
virtual icons and local icons. Virtual icons in one example include
user interface elements that are associated with and that therefore
represent sever based apps. A user is able to use a server based
app in one example by selecting the virtual icon associated with
the selected app. The selection of an icon is able to be made by
any suitable technique, such as by touching a touch sensitive
screen in the vicinity of the display of the icon. Examples of
server based apps include cloud based apps that operate by at least
partially performing some functions on a remote processor, and
those functions are able to interact with user interfaces that are
presented on the user's device.
[0024] Virtual icons in one example are able to be managed by a
virtual icon manager that operates on a remote server. In an
example, the virtual icon manager is implemented by processing
performed within a cloud computing infrastructure. The virtual icon
manager in some examples is able to add icons to the display of a
user's device, determine positions at which to place each icon on
the display of the user's device, control operation of server based
apps and the interaction with user interfaces operating on the
user's device, remove virtual icons from the display of the user's
device, or combinations of these. In some examples, the virtual
icon manager is able to manage the lifecycle of server based apps
on the user's device, where those server based apps are represented
by virtual icons provided by to the user's device by the virtual
icon manager.
[0025] In addition to the virtual icons, the two example shopping
center area user device displays 200 depict user device displays
that include local app icons. Local app icons in an example are
icons associated with apps that are installed on the user's device
and which primarily execute on the user's device. In some examples,
local icon apps are associated with apps that include apps
installed under the control of the user of the device.
[0026] The first display 202 includes two virtual icons that were
selected based on the context of the device used by the first user
110. As described above, the first user 110 is in the vicinity of
Store A 120, and also near Store B 122. As shown in FIG. 1, Store C
124 is further from the first user 110 at that time. Because the
first user 110 is closest to Store A 120 and Store B 122 and is
further from store C 124, the first display 202 has a first icon
230 that is associated with a server based app for Store A 120 and
a second icon 232 that is associated with a server based app for
store B 122. In addition to using the device's context to select
which icons to display on the first display, the locations on the
user's device display of these icons is also determined based on
the context of the user's device. For example, the first icon 230
representing a server based app for Store A 120 is placed above on
the second icon 232 representing a server based app for store B 122
because the user is located closer to Store A 120 than Store B 122.
In the illustrated example, the two virtual app icons are placed
above a first local app icon 234, although any other placement and
arrangement is able to be determined by the remote server.
[0027] The second display 204 also includes two virtual icons that
were selected based on the context of the device used by the second
user 112. As described above, the second user 112 is in the
vicinity of Store C 124, and also near Store B 122. As shown in
FIG. 1, Store A 120 is further from the second user 112 at that
time. Because the second user 112 is closest to Store C 124 and
Store B 122 and is further from Store A 120, the second display 204
has a third icon 220 that is associated with a server based app for
Store C 124 and a fourth icon 222 that is associated with a server
based app for store B 122. In addition to using the device's
context to select which icons to display on the first display, the
locations on the user's device display of these icons is also
determined based on the context of the user's device. For example,
the third icon 220 representing a server based app for Store C 124
is placed above on the fourth icon 222 representing a server based
app for store B 122 because the user is located closer to Store C
124 than Store B 122. In the illustrated example, the two virtual
app icons are placed above a second local app icon 224, although
any other placement and arrangement is able to be determined by the
remote server.
[0028] FIG. 3 illustrates example city center shopping area user
device displays 300, according to an example. The example city
center shopping area user device displays 300 depicts a third
display 302 and a fourth display 304. The third display 302 shows
example icons displayed on a display of the device of the third
user 114 when that user is in the location in the city center 104
shown in FIG. 1. The fourth display 304 shows example icons
displayed on a display of the device of the fourth user 116 when
that user is in the location of the shopping area in the city
center 104 shown in FIG. 1. As is similarly displayed for the two
example shopping center area user device displays 200, the third
display 302 and the fourth display 304 each depict a display of app
icons for apps where some of those icons have been selected to be
displayed on the respective devices based on a context determined
for that device, which is assumed to be a context associated with
the user of that device.
[0029] The icons displayed in the example city center shopping area
user device displays 300 are similar to those discussed above with
regards to the example city center shopping area user device
displays 300. For example the city center shopping area user device
displays 300 include virtual icons, which represent server based
apps, and local icons that represent apps locally installed on the
device. As is discussed above, the virtual icons in some examples
are able to be managed by the above described virtual icon
manager.
[0030] The third display 302 includes three virtual icons that were
selected based on the context of the device used by the third user
114. As described above, the third user 114 is close to the
restaurant 136 and between the movie 130, and the restaurant 136.
In this illustrated example, the third user 114 is shown by an
arrow to be moving away from the restaurant 136 and towards Shop N
132. The illustrated third display 302 includes virtual icons that
are selected based not only on the location of the third user 114,
but also based on the movement of the third user 114. Because the
third user 114 is moving towards Shop N 132, the third display
presents a third display first virtual icon 320 at the top of the
presented icons as was selected to be an icon associated with a
virtual app for Shop N 132. The virtual icon selected to be
displayed and positioned below the top icon is a third display
second virtual icon 322 that is associated with an app for the
movie 130.
[0031] Although the third user 114 is closer to the restaurant 136
than the Store N 132, or movie 130, the third user 114 as shown in
FIG. 1 is moving away from the restaurant 136 and towards those
other two locations. Because the third user 114 is close to the
restaurant 136, a third display third virtual icon 324 is displayed
in this example at the bottom of the third display 302 where the
third display third virtual icon 324 is associated with a server
based app associated with the restaurant 136. The virtual icon for
the restaurant 136 is shown at the bottom of the virtual icons
because it is determined in this example to be of less interest to
the third user 114 given the third user's movement away from that
location. In further examples, a virtual icon associated with the
restaurant may be placed more prominently on a display based on
other factors, such as the display being presented near a customary
meal time for the third user, based on a preference of the third
user for the particular restaurant 136 or a chain of restaurants to
which restaurant 136 may belong, based on other factors, or
combinations of these.
[0032] The fourth display 304 includes two virtual icons that were
selected based on the context of the device used by the fourth user
116. As described above, the fourth user 116 is in the vicinity of
the department store 134, but moving towards the opposite end of
the city center 104 and thus more towards the movie 130 and
restaurant 136. In addition to the context of the user device based
on the device's location, additional information is used in this
example to determine the set of virtual icons and their display
locations on the fourth display 304. In this example, information
gathered from the personal calendar for the fourth user 116, which
is available to one or both of the user device used by the fourth
user 116 and the cloud based virtual icon manager, indicates that
the fourth user 116 is scheduled to meet a friend in a few minutes.
Because the fourth user 116 is scheduled meet a friend, the cloud
based virtual icon manager in an example selects virtual icons for
server based apps that are appropriate for meeting friends, such as
a restaurant 136 or movie 130. Locations less likely to be of
interest when meeting friends, such as Shop N 132 or Department
Store 134 are given less priority in selecting virtual icons to
present to the user.
[0033] The fourth display 304 has a fourth display first virtual
icon 330 that is an icon associated with an app for the restaurant
136. Below that is a fourth display second virtual icon 332 that is
an icon associated with a server based app for the movie 130. Below
these two virtual icons on the fourth display 304 is a fourth
display third virtual icon 334, which in this example is for a
server based app associated with store N 132, and a fourth display
fourth virtual icon 336, which in this example is for a server
based app associated with the department store 134. In this
example, the icon for a server based app associated with Shop N 132
is selected to be shown above the icon for the department store 134
based on the movement of the fourth user 116 towards the Shop N
132, even though the fourth user 116 is closer to the department
store 134. The fourth display 304 further includes a local app
icon, a fourth display first local icon 338 and a fourth display
second local icon 338. As discussed above, the local app icons are
associated with apps installed on the user's device. In further
examples, the any arrangement of virtual icons and local icons is
able to be specified, including intermingling local icons with
virtual icons on the display.
[0034] FIG. 4 illustrates a cloud based app management and
deployment environment 400, according to an environment. The
illustrated cloud based app management and deployment environment
400 depicts three fundamental components, a sponsor component 402,
a cloud infrastructure component 406, and user devices 404. As
described below, these components interact with each other to
deliver and maintain a relevant set of virtual icons on a user's
device to allow the user to use server based apps that are relevant
to the context of the user.
[0035] The sponsor component 402 includes a number of app sponsors,
such as app sponsor 1 430, app sponsor 2 432, and app sponsor N
434. These app sponsors in some examples include operators of
retail and other businesses, such as are discussed above in FIG. 1.
For example, the operators of the stores in the shopping center 102
and the shops, stores, movies and restaurants in the city center
104 are each able to individually control one or more apps
associated with a business that a user is able to use to receive
information from, or otherwise interact with, that particular
business.
[0036] Each app sponsor has a corresponding sponsor interface, such
as the sponsor 1 interface 440, sponsor 2 interface 442, and
sponsor N interface 444. These interfaces in one example include a
cloud computing platform interface, such as an Internet Web browser
or other computer communications program. In an example, one or
more centrally located terminals or other user interface devices
are able to be located in the vicinity of several sponsors, such as
in an office of the shopping center 102 or a management office for
the city center 104. These interfaces in an example allow a user,
such as a person working for the particular app sponsor, to provide
information to, and otherwise control or interact with, the cloud
based computing platform that operates to provide certain cloud
based apps deployed to the user devices 404. In an example, the app
sponsors are able to dynamically register or unregister one or more
server based apps to enable or disable to server based app to be
available for deployment to devices in the user devices 404,
otherwise configure, or control the server based app to present
desired information, perform desired processing, or otherwise
configure the server based app, or otherwise control the server
based app's operation and deployment to user devices.
[0037] The user devices 404 include multiple user devices, such as
the illustrated user devices 404. The user devices 404 are
representative of any suitable user device, such as a smart phone,
personal digital assistant (PDA), other devices used by
individuals, or any other suitable device. The user devices 404
include a display 410 on which data, images, text, other visual
information, or combinations of these, are presented. The
illustrated display 410 includes a User Interface (UI) element 1
412, UI element 2 414, and a UI element N 416. In an example, these
UI elements are icons presented on the display 410 of a user device
in the user devices 404. Each of these UI elements, such as each
icon, is associated with a particular app that is available for use
by the user of a user device within the user devices 404. In an
example, the display 410 is a touch sensitive display that allows a
user to provide input by touching particular areas of the display
410. In an example with a touch sensitive display, a user is able
to initiate operation of an app by touching, or otherwise
selecting, a particular UI element on a touch sensitive display and
an app associated with that UI element will start and provide a
corresponding user interface to the user to use that selected app.
In various examples, the UI elements are able to be associated with
local apps, which have at least one component installed on the user
devices 404, or server based apps that include processing operating
on a cloud based server and that interact with user interface
elements provided on the user devices 404.
[0038] The user devices 404 of one example includes a processor 420
and memory 421. The processor 420 executes programs defined by
applications stored in the memory 421. In an example, the memory
421 is able to store data defining programs or apps such as a
server based app user interface manager 422, a device context
manager 424, and one or more local apps 428. The server based app
user interface manager 422 is an executable program in some
examples that controls the display of virtual icons associated with
server based apps on the display 410. The device context manager
424 in one example monitors indications of the user device context
and reports relevant information regarding the present user device
context to the cloud infrastructure component 406. Additionally,
the memory 421 is able to store one or more local apps 428 that are
apps executed by the processor 420 of the user device.
[0039] The memory 421 further includes a user interface indicators,
locations and associated context storage 426. The user interface
indicators, locations and associated context storage 426 in one
example, stores a number of user interface indicators, such as
icons, for virtual apps that correspond to server based apps. In
addition to user interface indicators for one or more server based
apps, the user interface indicators, locations and associated
context storage 426 in some examples stores locations at which
those user interface indicators, such as icons, are to be displayed
on the display 410. Additionally, the user interface indicators,
locations and associated context storage 426 is able to store
specifications of the user devices contexts in which certain server
based apps are to be displayed on the display 410. For example, a
particular server based app is able to specify that its icon is to
be displayed when the user device is within a specified geographic
location.
[0040] The cloud infrastructure component 406 includes an app
management platform 470 and an execution platform 450. The app
management platform 470 and the execution platform 450 in an
example are provided on a cloud based infrastructure that allows
the virtual access of all of their functions via a suitable
communications network. Although the app management platform 470
and the execution platform 450 are each shown as one element that
are in communications with one another, the actual realization of
these function is sable to have any structure in a cloud computing
infrastructure.
[0041] The app management platform 470 includes an app sponsor
registration manager 472. The app sponsor registration manager 472
interacts with app sponsors within the app sponsor component 402,
such as via the sponsor interfaces described above, to configure
the server based apps for deployment to and use on the user devices
404. In an example, the app sponsor registration manager 472 allows
a sponsor of a server based app, such as a store owner or other
promoter of a business, to register or unregister one or more of
that sponsor's server based app in order to enable or disable one
or more of that sponsor's server based app to be available to
client devices. In an example, the app sponsor registration manager
472 allows app sponsors to setup installers and uninstallers to
install or uninstall the sponsor's server based apps onto user
devices. The app sponsor registration manager 472 in some examples
further allows an app sponsor to upload, configure, otherwise
manipulate, or combinations of these, the server based apps that
are provided through, and that execute on, the cloud based
infrastructure for use by users, such as via a user interface
provided on the user devices 404. In some examples, the app sponsor
registration manager 472 allows the app sponsor to specify device
context related conditions that control when a User Interface
element, such as an icon, associated with a particular server based
app is to be loaded onto or removed from a particular user device
within the user devices 404.
[0042] The app management platform 470 further includes a user
device virtual app lifecycle control manager 474. The user device
virtual app lifecycle control manager 474 controls the user
interface elements provided to, removed from, otherwise altered or
manipulated, or combinations of these, from the user devices 404.
In an example, the app lifecycle control manager 474 invokes
install and uninstall scripts to install or remove user interface
elements, such as icons, onto the user device for selected server
based apps. In some examples, the app lifecycle control manager 474
also loads or removes appropriate parameters for each installed or
uninstalled user interface element, such as parameters for
installing a representation of the server based app, transferring
an icon image and information used to identify the server based app
as part of the installation process of the virtual app onto the
user device.
[0043] In some examples, the app lifecycle control manager 474
further monitors context related information for each user device,
and determines which user devices satisfy context related
conditions specified for installation of, removal of, modification
of, other modifications of, or combinations of these, one or more
server based apps. As discussed above, an app sponsor is able to
specify context related conditions cause a virtual app to be
installed on to a user device when the context of that user device
satisfies those specified conditions. In one example, the app
lifecycle control manager 474 receives various data from the app
sponsor registration manager 472 to define server based apps to
deploy to various user devices, to define the associated contexts
in which to deploy certain server based apps, to specify other
operational information, or combinations of these. The app
management platform 470 in one example receives app related
information and data such as the above described information and
data provided by the app sponsors from the app sponsor registration
manager 472.
[0044] In addition to, or in place of, conditions specified by an
app sponsor, other device context related conditions are able to be
specified by any suitable source. For example, context related
conditions are able to be based on fixed geographical locations. In
an example, the app lifecycle control manager 474 is able to be
configured with one or more geographic locations associated with
each server based app where the geographic locations correspond to
a geographic vicinity near each store or other facility that is
associated with the server based app. In such an example, each user
device reports its present location to the app lifecycle control
manager 474. The app lifecycle control manager 474 then compares
the present location of each user device with the location related
context conditions specified for each server based app. When the
present location of a user device satisfies the location based
context for a server based app, and also satisfies any other
context based conditions for that server based app, the app
lifecycle control manager 474 then operates to cause a user
interface element to be installed onto the user device for the
server based app whose context related conditions have been
satisfied.
[0045] The execution platform 450 in one example includes the cloud
based components that manage and support the operation and
deployment of server based apps, also referred to as virtual apps,
in conjunction with user devices 404. The execution platform 450
includes a virtual app storage 462 that stores executable software
executed within the cloud based infrastructure to perform the
functions provided by server based apps. The execution platform
further includes a virtual app installer 460 that manages the
installation of virtual apps onto user devices. In an example,
installation of a particular virtual app onto a user device
includes sending a definition of an icon associated with the
particular server based virtual app to the user device, along with
information identifying the server based app that allows the user
device to exchange information with and otherwise inter-operate
with the server based app executing on the cloud based
infrastructure. The execution platform 450 further includes a
virtual app uninstaller 466 that manages de-installation of virtual
apps from user devices. In an example, the virtual app uninstaller
466 communicates with the user device to cause icons for apps to be
removed when the context specifications for those apps are no
longer satisfied by the context of the user device.
[0046] The execution platform 450 includes a server based app
execution component 452. The server based app execution component
452 implements the processing to perform the functions of the
server based apps supported by the cloud infrastructure component
406. The server based app election component 452 in an example
operates with an interface to user devices 454 to exchange user
interface data with the user interfaces provided on the user
devices 404 with which each server based app executing via the
server based app execution component 452.
[0047] FIG. 5 illustrates a present device context app management
platform process 500, according to an example. The present device
context app management platform process 500 illustrates an example
process flow performed by a cloud infrastructure component 406 as
discussed above. The illustrated present device context app
management platform process 500 receives information from a user
device that conveys the present context of the user's device. Based
on that present context, the present device context app management
platform process 500 determines selected virtual apps to be
presented to the user of the user device, conveys icons for those
selected virtual apps to the user device, and supports operation of
those selected virtual apps by performing the processing associated
with each of the selected virtual apps the user of the user device
is using. In an example, the present context includes not only a
location of the user's device, but other information such as
ambient temperature, speed and direction of movement, other
information, or combinations of these. In an example, the present
device context app management platform process 500 is performed on
a cloud based infrastructure and interacts with user interface
elements provided on the user device. In general, many instances of
the illustrated present device context app management platform
process 500 are able too operate to support many user devices or
multiple virtual apps operating contemporaneously on a particular
user device.
[0048] The present device context app management platform process
500 begins by receiving, at 502, context related information for
each server based app. In an example, this context related
information is received from the sponsor of each server based app.
In general, each server based app is able to have an associated
specification of context related conditions that control when the
server based app is presented to a user of a user's device.
[0049] The present device context app management platform process
500 continues by determining, at 504, a present context of the
user's device. This present context in one example is determined
based upon context related information that is determined and
reported by a user device. The context related information in other
examples are able to be determined, reported, or both, by any
suitable technique either operating on the user device or by
monitoring that is separate from the user device. In an example,
the present context is a context at a first timepoint that is
sufficiently close to the present time such that the reported
context is relevant to the user of the user device. The present
context in an example is determined by assembling the received
context related information into a form to facilitate comparison to
specified context related conditions for each app. In an example,
determining the user device context is able to be based on any
context status associated with the user device, such as the user
device location, user device movement, user device communications
status, user device communications history, social media contacts
for a user of the user device, social media activities of a user of
the user device, physiological information of a user associated
with the user device, calendar entries for a user of the user
device, preferences of a user of the user device, or information
within a profile of a user of the user device, or combinations of
these.
[0050] The present device context app management platform process
500 determines, at 506, a set of server based apps that are
associated with the determined present context for the user device.
This determination in an example is based upon a comparison of the
received context related information for each server based app and
the determined present context of a user device.
[0051] A determination is then made, at 508, if any server based
apps are determined to be associated with the determined present
context of the user device. In an example, server based apps are
associated with the determined present context of the user device
when the received context related information matches the context
related conditions specified for the server based app.
[0052] If it is determined that there are no server based apps
associated with the present device context, the set of server based
apps is set to a default set of server based apps, at 510. In an
example, the default set of server based apps is defined to be no
server based apps. In further examples, the default set of server
based apps is defined to be a set of server based apps that are
considered to be of general interest to users regardless of the
context of the user device.
[0053] After determining the set of server based apps as either
server based apps associated with the present context or as a
default set, the present device context app management platform
process 500 determines, at 512, a position in the display to be
presented on the user device for each virtual icon associated with
each server based app in the determined set of server based apps.
The determined position is able to be specified as positions
relative to other virtual icons, relative to other virtual icons
and local app icons, as positions relative to local app icons, as
absolute locations on the display, as any suitable location
specification, or as any combination of these.
[0054] Icons and a specification of the determined location on the
display for each icon for each server based app within the set of
server based apps are sent to the device, at 514. These icons are
then displayed by the user device. A user of the user device is
able to select an icon by any suitable technique, and begin access
to a server based app associated with the icon selected by the
user. In various examples, once a user selects an icon for a
particular server based app, a user interface for the selected
server based app is presented on the user device. This user
interface for the selected server based app is able to be provided
alone with the icon associated with that server based app, or the
present device context app management platform process 500 is able
to send such user interface definitions based on receiving an
indication of a user input selecting the icon.
[0055] The present device context app management platform process
500 receives, at 516, user inputs for a selected app in the set of
apps. In some examples, these user inputs are able to include an
input to select an icon for a particular server based app as well
as other user inputs to the user interface associated with the
selected server based app. Based on these received user inputs, the
present device context app management platform process 500
processes the user inputs to produce results. These results are
able to include, for example, a different user interface to present
to the user on the display of the user device, information to be
presented to the user on the user interface device, any other type
of result, or combinations of these.
[0056] The present device context app management platform process
500 sends, at 520, these results to the user device. In general,
these results are presented to the user on a visual, audio, or
other output device and are able to allow further inputs to be
received from the user.
[0057] A determination is then made, at 522, if the device context
has changed. This determination is able to be based upon receiving
context related information from the user device, receiving
information from any other source, or combinations of these, as is
discussed above with regards to determining the present context of
the user device, at 504. In an example, determining if the device
context has changed includes determining a second context of the
user device at a second timepoint, where that second timepoint is
subsequent to the first timepoint at which the user device context
was determined, at 504.
[0058] If the device context has not changed, the present device
context app management platform process 500 returns to receiving,
at 516, user inputs as is described above. If the device context
has changed, the present device context app management platform
process 500 returns to determining, at 506, server based apps that
are associated with this new context and continues with the
subsequent processing described above.
[0059] FIG. 6 illustrates a multiple device contexts app display
definition process 600, according to an example. The multiple
device contexts app display definition process 600 is similar to
the present device context app management platform process 500
discussed above but determines multiple sets of server based apps,
where each set of server based apps includes server based app icons
and associated information for each of multiple device contexts.
These multiple sets of server based apps are sent, along with a
definition of each associated context, to the user device. This
allows the user device to autonomously determine and present
relevant virtual app icons based on the context of the user device
as determined at the user device.
[0060] The multiple device contexts app display definition process
600 begins by setting, at 602, a first context as a present
context. As discussed above, each server based app is able to have
an associated specification of context related conditions that
controls when the server based app is presented to a user of a
user's device. The multiple device contexts app display definition
process 600 determines or defines sets of context related
conditions for a number of server based apps for a number of
defined contexts. In one example, theses sets of context related
conditions for a number of server based apps are created at a time
prior to sending those sets of context related conditions user
devices. In this manner, the user device is able to compare stored
sets of context related conditions and if the context related
conditions of one of those sets is satisfied by a present context
of that user device, icons for server based apps associated with
the matched set of context related conditions can be displayed by
the user devices 404 independent of interaction with the cloud
infrastructure component 406.
[0061] The contexts defined by the multiple device contexts app
display definition process 600 are able to be selected based on any
suitable criteria. For example, in the above described example
depicted in FIG. 1, a set of geographic locations within the
shopping center 102 are able to be defined such that each context
in the set of defined contexts corresponds to being near each store
within the shopping center 102. In one example, setting this first
context as a present context corresponds to determining a first
context of a user device at a first timepoint. In this example, the
first timepoint corresponds to a time in the future at which the
user device will satisfy the conditions for this first context, and
thus result in the display of associated icons, as is described
below.
[0062] The multiple device contexts app display definition process
600 determines, at 606, a set of server based apps that are
associated with the present context for the user device. The
multiple device contexts app display definition process 600
determines, at 606, a position in the display to be presented on
the user device for each virtual icon associated with each server
based app in the determined set of server based apps. The
determined position is able to be specified as positions relative
to other virtual icons, relative to other virtual and local app
icons, as positions relative to local app icons, as absolute
locations on the display, as any suitable location specification,
or as any combination of these.
[0063] Icons and a specification of the determined location on the
display for each icon for each server based app within the set of
server based apps are sent to the device, at 608. In general, these
icons and associated data are stored on the user device and when
the user device determines its context matches one of the
determined contexts, the set of server based apps is then displayed
to the user of the user device.
[0064] A determination is made as to whether more contexts are to
be processed, at 610. If more contexts are to be processed, a new
context is determined and set as the present context, at 612. In an
example, this iteration of determining a new context is an example
of determining a second context at a second timepoint that is after
the first timepoint. In this example, the second timepoint is the
timepoint at which the context of the user device satisfies the
context conditions for a subsequently determined set of server
based apps. If it is determined that no more contexts are to be
processed, user inputs associated with a server based app are
received and processed, at 620.
[0065] In an example, the multiple device contexts app display
definition process 600 receives, at 622, user inputs for a selected
app in the set of apps. In some examples, these user inputs are
able to include an input to select an icon for a particular server
based app as well as other user inputs to the user interface
associated with the selected server based app. Based on these
received user inputs, the multiple device contexts app display
definition process 600 processes, at 624, the user inputs to
produce results. These results are able to include, for example, a
different user interface to present to the user on the display of
the user device, information to be presented to the user on the
user interface device, any other type of result, or combinations of
these.
[0066] The multiple device contexts app display definition process
600 sends, at 626, these results to the user device. If the device
context has not changed, the multiple device contexts app display
definition process 600 returns to receiving, at 622, user inputs as
is described above. It is noted that the user input reception and
processing 620 in this example is performed independently of an
indication of the context of the user device being provided to the
server based app, or to the cloud infrastructure component 406
discussed above.
[0067] FIG. 7 illustrates a user device process 700, according to
an example. The user device process 700 is an example of a process
performed by a processor 420 within a user device within the user's
devices 404 as is described above. In an example, the user device
process 700 includes processing defined by the server based app
user interface manager 422. The user device performing the user
device process 700 in some examples is able to be a mobile device,
such as a mobile phone, cellular phone, cellular smart phone, other
mobile device, any other suitable device, or combinations of
these.
[0068] The user device process 700 beings by determining, at 702, a
present context of the user device. The present context is able to
include, for example, the present location of the user device, a
speed and direction of movement of the user device, a state or
history of voice communications (such as phone usage) of the user
device, preferences or other information stored within a profile of
a user of the user device, activities of a user associated with the
user device as determined by, for example, social circles and
activities, physiological parameters of the user, calendar, other
context parameters, or combinations of these.
[0069] The user device process 700 sends, at 704, in one example
the determined present context to a server. In some examples, the
server, such as within a cloud based infrastructure, is able to
respond to the determined context of the user device and provide,
modify, remove, or combinations of these, based on the present
context of the user device as determined by the user device and
reported to the cloud based infrastructure.
[0070] The user device process 700 receives, at 706, icons for each
app within a set of server based apps. In some example, these icons
are examples of user interface elements that can be displayed to a
user of the user device. In some examples, processing within a
cloud based infrastructure determines which apps to include within
the set of server based apps are selected based upon the present
context of the user's device. The processing within the cloud based
infrastructure then sends icons for each app within the set of
server based apps to the user device.
[0071] The user device process 700 in some examples receives, at
708, a location for display each icon within the received icons for
each app within the set of server based apps. The location at which
to display each icon is able to be determined by processing within
a cloud based infrastructure in order to, for example, place more
relevant icons at the top of the display of virtual icons. In some
examples, the location at which to display each of these virtual
icons is able to be specified relative to local icons for locally
installed apps on the user's device so that virtual icons and local
icons are able to be interleaved on the display presented to the
user of the user device.
[0072] The user device process 700 in some examples receives, at
710, an indication of a context associated with the set of server
based apps for which associated icons were received. This
indication of context allows processing within the user device to
determine if the present context of the user device matches the
context associated with the set of server based apps, and therefore
the icons associated with the set of server based apps should be
displayed on the display of the user device.
[0073] The received icons, display location, and context associated
with the set of server based apps are stored, at 712. Storing these
data allows subsequent processing by the user device to determine
if the user device enters a context that satisfies contexts for a
set of server based apps. Upon such as determination, the user
device is then able to retrieve and display the icons associated
with the set of server based apps whose context conditions are
satisfied by the device's context, such as is described below.
Storing these context indications allows reducing the amount of
data transmitted between the user device and the cloud computing
infrastructure.
[0074] A determination is made in some examples as to whether the
present device context matches a stored indication of a context
associated with a set of server based apps, at 714. If such a match
is not determined, the user device process 700 determines, at 716,
the present device context and returns to the determination, at
714. In some examples, the newly determined present device context
is also sent to a server, as is described above. In some examples,
a server receiving the new device context is able to send
additional icons to the user device, at which point the user device
will display those icons as described above.
[0075] In some examples, after determining the present device
context, at 716, a determination is made, at 730, as to whether the
present device context does not satisfy conditions for an icon that
is displayed on the display of the user device. If the present
device context does not satisfy conditions for an icon that is
displayed on the display of the user device, that displayed icon
whose conditions are no longer satisfied is removed, or
uninstalled, at 732 from the presentation on the user display. If
it is determined that the present device context does satisfy
conditions for the icons displayed on the user device display, or
after icons whose conditions are no longer satisfied are removed or
uninstalled, the user device process 700 returns to determining, at
714, if the present device context matches a stored indication of a
context, and performs the above described subsequent
processing.
[0076] If it is determined, at 714, that the present device context
matches a stored indication of a context associated with a set of
server based apps, the user device process 700 displays, at 720,
icons in specified location for each server based app in a set of
server based apps associated with the present context. Once these
icons are displayed, a user is able to select a server based app by
selecting one of the displayed icons. In some examples, the display
of icons for server based apps is able to be interleaved with icons
for apps stored on the user device. The equipment used to display
the icons in one example is able to be a display of a mobile
device, such as a cellular telephone or smart phone. In some
examples, the icons for the server based apps are displayed in a
default pane of the display of the device. This default pane is
able to also include icons for locally installed apps or other apps
or functions able to be accessed or used by a user of the device
displaying the icons.
[0077] A determination is made, at 722, if an icon is selected. In
an example, a user is able to select an icon by pressing a touch
sensitive display of the user device in the vicinity of a display
of the icon of the desired server based app. Such an icon selection
in one example is able to be made by a single interaction, such as
a single click, single touch, or single tap of the icon displayed
on the user's device. If it is determined that an icon is not
selected, the user device process 700 determines, at 714, if the
present device context matches a stored indication of a context,
and performs the above described subsequent processing.
[0078] If it is determined that an icon is selected, the user
device process 700 presents, at 724, a user interface for a server
based app associated with the selected icon. In an example, the
user interface for a selected server based app is able to be
provided by the cloud based infrastructure, the user interface is
able to be stored on the user device, or the user interface is able
to be obtained through any suitable technique.
[0079] The user device process 700 then exchanges, at 726, data
with the selected server based app. In an example, the user
interface provided by the user device accepts user inputs and
forwards those inputs the selected server based app, such as an app
operating on the execution platform 450 discussed above. The server
based app is then able to determine results, either based on or
independent of the user inputs, and provide those results to the
user device for display to the user, such as via a user interface
provided for that server based app on the user device. The user
device process 700 then returns to determining, at 714, if the
present device context matches a stored indication of a context,
and performs the above described subsequent processing.
[0080] It is understood in advance that although this disclosure
includes a detailed description on cloud computing, implementation
of the teachings recited herein are not limited to a cloud
computing environment. Rather, embodiments of the present invention
are capable of being implemented in conjunction with any other type
of computing environment now known or later developed.
[0081] Cloud computing is a model of service delivery for enabling
convenient, on-demand network access to a shared pool of
configurable computing resources (e.g. networks, network bandwidth,
servers, processing, memory, storage, applications, virtual
machines, and services) that can be rapidly provisioned and
released with minimal management effort or interaction with a
provider of the service. This cloud model may include at least five
characteristics, at least three service models, and at least four
deployment models.
[0082] Characteristics are as follows:
[0083] On-demand self-service: a cloud consumer can unilaterally
provision computing capabilities, such as server time and network
storage, as needed automatically without requiring human
interaction with the service's provider.
[0084] Broad network access: capabilities are available over a
network and accessed through standard mechanisms that promote use
by heterogeneous thin or thick client platforms (e.g., mobile
phones, laptops, and PDAs).
[0085] Resource pooling: the provider's computing resources are
pooled to serve multiple consumers using a multi-tenant model, with
different physical and virtual resources dynamically assigned and
reassigned according to demand There is a sense of location
independence in that the consumer generally has no control or
knowledge over the exact location of the provided resources but may
be able to specify location at a higher level of abstraction (e.g.,
country, state, or datacenter).
[0086] Rapid elasticity: capabilities can be rapidly and
elastically provisioned, in some cases automatically, to quickly
scale out and rapidly released to quickly scale in. To the
consumer, the capabilities available for provisioning often appear
to be unlimited and can be purchased in any quantity at any
time.
[0087] Measured service: cloud systems automatically control and
optimize resource use by leveraging a metering capability at some
level of abstraction appropriate to the type of service (e.g.,
storage, processing, bandwidth, and active user accounts). Resource
usage can be monitored, controlled, and reported providing
transparency for both the provider and consumer of the utilized
service.
[0088] Service Models are as follows:
[0089] Software as a Service (SaaS): the capability provided to the
consumer is to use the provider's applications running on a cloud
infrastructure. The applications are accessible from various client
devices through a thin client interface such as a web browser
(e.g., web-based e-mail). The consumer does not manage or control
the underlying cloud infrastructure including network, servers,
operating systems, storage, or even individual application
capabilities, with the possible exception of limited user-specific
application configuration settings.
[0090] Platform as a Service (PaaS): the capability provided to the
consumer is to deploy onto the cloud infrastructure
consumer-created or acquired applications created using programming
languages and tools supported by the provider. The consumer does
not manage or control the underlying cloud infrastructure including
networks, servers, operating systems, or storage, but has control
over the deployed applications and possibly application hosting
environment configurations.
[0091] Infrastructure as a Service (IaaS): the capability provided
to the consumer is to provision processing, storage, networks, and
other fundamental computing resources where the consumer is able to
deploy and run arbitrary software, which can include operating
systems and applications. The consumer does not manage or control
the underlying cloud infrastructure but has control over operating
systems, storage, deployed applications, and possibly limited
control of select networking components (e.g., host firewalls).
[0092] Deployment Models are as follows:
[0093] Private cloud: the cloud infrastructure is operated solely
for an organization. It may be managed by the organization or a
third party and may exist on-premises or off-premises.
[0094] Community cloud: the cloud infrastructure is shared by
several organizations and supports a specific community that has
shared concerns (e.g., mission, security requirements, policy, and
compliance considerations). It may be managed by the organizations
or a third party and may exist on-premises or off-premises.
[0095] Public cloud: the cloud infrastructure is made available to
the general public or a large industry group and is owned by an
organization selling cloud services.
[0096] Hybrid cloud: the cloud infrastructure is a composition of
two or more clouds (private, community, or public) that remain
unique entities but are bound together by standardized or
proprietary technology that enables data and application
portability (e.g., cloud bursting for load-balancing between
clouds).
[0097] A cloud computing environment is service oriented with a
focus on statelessness, low coupling, modularity, and semantic
interoperability. At the heart of cloud computing is an
infrastructure comprising a network of interconnected nodes.
[0098] Referring now to FIG. 8, illustrative cloud computing
environment 802 is depicted. As shown, cloud computing environment
802 comprises one or more cloud computing nodes 820 with which
local computing devices used by cloud consumers, such as, for
example, personal digital assistant (PDA) or cellular telephone
804, desktop computer 086, laptop computer 808, and/or automobile
computer system 810 may communicate. Nodes 820 may communicate with
one another. They may be grouped (not shown) physically or
virtually, in one or more networks, such as Private, Community,
Public, or Hybrid clouds as described hereinabove, or a combination
thereof. This allows cloud computing environment 802 to offer
infrastructure, platforms and/or software as services for which a
cloud consumer does not need to maintain resources on a local
computing device. It is understood that the types of computing
devices 804-810 shown in FIG. 1 are intended to be illustrative
only and that computing nodes 820 and cloud computing environment
802 can communicate with any type of computerized device over any
type of network and/or network addressable connection (e.g., using
a web browser).
[0099] Referring now to FIG. 9, a set of functional abstraction
layers provided by cloud computing environment 802 (FIG. 1) is
shown. It should be understood in advance that the components,
layers, and functions shown in FIG. 9 are intended to be
illustrative only and embodiments of the invention are not limited
thereto. As depicted, the following layers and corresponding
functions are provided:
[0100] Hardware and software layer 902 includes hardware and
software components. Examples of hardware components include:
mainframes 910; RISC (Reduced Instruction Set Computer)
architecture based servers 912; servers 914; blade servers 916;
storage devices 918; and networks and networking components 920. In
some embodiments, software components include network application
server software 922 and database software 924.
[0101] Virtualization layer 904 provides an abstraction layer from
which the following examples of virtual entities may be provided:
virtual servers 930; virtual storage 932; virtual networks 934,
including virtual private networks; virtual applications and
operating systems 936; and virtual clients 938.
[0102] In one example, management layer 906 may provide the
functions described below. Resource provisioning 940 provides
dynamic procurement of computing resources and other resources that
are utilized to perform tasks within the cloud computing
environment. Metering and Pricing 942 provide cost tracking as
resources are utilized within the cloud computing environment, and
billing or invoicing for consumption of these resources. In one
example, these resources may comprise application software
licenses. Security provides identity verification for cloud
consumers and tasks, as well as protection for data and other
resources. User portal 944 provides access to the cloud computing
environment for consumers and system administrators. Service level
management 946 provides cloud computing resource allocation and
management such that required service levels are met. Service Level
Agreement (SLA) planning and fulfillment 948 provide
pre-arrangement for, and procurement of, cloud computing resources
for which a future requirement is anticipated in accordance with an
SLA.
[0103] Workloads layer 908 provides examples of functionality for
which the cloud computing environment may be utilized. Examples of
workloads and functions which may be provided from this layer
include: mapping and navigation 950; software development and
lifecycle management 952; virtual classroom education delivery 954;
data analytics processing 956; transaction processing 958; and
ghost app server 960.
Information Processing System
[0104] Referring now to FIG. 10, this figure is a block diagram
illustrating an information processing system that can be utilized
in various examples of the present disclosure. The information
processing system 1002 is based upon a suitably configured
processing system configured to implement one or more embodiments
of the present disclosure. Any suitably configured processing
system can be used as the information processing system 1002 in
embodiments of the present disclosure. In another embodiment, the
information processing system 1002 is a special purpose information
processing system configured to perform one or more embodiments
discussed above. The components of the information processing
system 1002 can include, but are not limited to, one or more
processors or processing units 1004, a system memory 1006, and a
bus 1008 that couples various system components including the
system memory 1006 to the processor 1004.
[0105] The bus 1008 represents one or more of any of several types
of bus structures, including a memory bus or memory controller, a
peripheral bus, an accelerated graphics port, and a processor or
local bus using any of a variety of bus architectures. By way of
example, and not limitation, such architectures include Industry
Standard Architecture (ISA) bus, Micro Channel Architecture (MCA)
bus, Enhanced ISA (EISA) bus, Video Electronics Standards
Association (VESA) local bus, and Peripheral Component
Interconnects (PCI) bus.
[0106] The system memory 1006 can also include computer system
readable media in the form of volatile memory, such as random
access memory (RAM) 1010 and/or cache memory 1012. The information
processing system 1002 can further include other
removable/non-removable, volatile/non-volatile computer system
storage media. By way of example only, a storage system 1014 can be
provided for reading from and writing to a non-removable or
removable, non-volatile media such as one or more solid state disks
and/or magnetic media (typically called a "hard drive"). A magnetic
disk drive for reading from and writing to a removable,
non-volatile magnetic disk (e.g., a "floppy disk"), and an optical
disk drive for reading from or writing to a removable, non-volatile
optical disk such as a CD-ROM, DVD-ROM or other optical media can
be provided. In such instances, each can be connected to the bus
1008 by one or more data media interfaces. The memory 1006 can
include at least one program product having a set of program
modules that are configured to carry out the functions of various
examples described above.
[0107] Program/utility 1016, having a set of program modules 1018,
may be stored in memory 1006 by way of example, and not limitation,
as well as an operating system, one or more application programs,
other program modules, and program data. Each of the operating
system, one or more application programs, other program modules,
and program data or some combination thereof, may include an
implementation of a networking environment. Program modules 1018
generally carry out the functions and/or methodologies of the above
described processes and systems.
[0108] The information processing system 1002 can also communicate
with one or more external devices 1020 such as a keyboard, a
pointing device, a display 1022, and the like. The information
processing system 1002 is further able to communicate with one or
more devices that enable a user to interact with the information
processing system 1002; and/or any devices (e.g., network card,
modem, etc.) that enable computer system/server 1002 to communicate
with one or more other computing devices. Such communication can
occur via I/O interfaces 1024. Still yet, the information
processing system 1002 can communicate with one or more networks
such as a local area network (LAN), a general wide area network
(WAN), and/or a public network (e.g., the Internet) via network
adapter 1026. As depicted, the network adapter 1026 communicates
with the other components of information processing system 1002 via
the bus 1008. Other hardware and/or software components can also be
used in conjunction with the information processing system 1002.
Examples include, but are not limited to: microcode, device
drivers, redundant processing units, external disk drive arrays,
RAID systems, tape drives, and data archival storage systems.
Non-Limiting Examples
[0109] As will be appreciated by one skilled in the art, aspects of
the present invention may be a system, a method, and/or a computer
program product. The computer program product may include a
computer readable storage medium (or media) having computer
readable program instructions thereon for causing a processor to
carry out aspects of the present invention.
[0110] The computer readable storage medium can be a tangible
device that can retain and store instructions for use by an
instruction execution device. The computer readable storage medium
may be, for example, but is not limited to, an electronic storage
device, a magnetic storage device, an optical storage device, an
electromagnetic storage device, a semiconductor storage device, or
any suitable combination of the foregoing. A non-exhaustive list of
more specific examples of the computer readable storage medium
includes the following: a portable computer diskette, a hard disk,
a random access memory (RAM), a read-only memory (ROM), an erasable
programmable read-only memory (EPROM or Flash memory), a static
random access memory (SRAM), a portable compact disc read-only
memory (CD-ROM), a digital versatile disk (DVD), a memory stick, a
floppy disk, a mechanically encoded device such as punch-cards or
raised structures in a groove having instructions recorded thereon,
and any suitable combination of the foregoing. A computer readable
storage medium, as used herein, is not to be construed as being
transitory signals per se, such as radio waves or other freely
propagating electromagnetic waves, electromagnetic waves
propagating through a waveguide or other transmission media (e.g.,
light pulses passing through a fiber-optic cable), or electrical
signals transmitted through a wire.
[0111] Computer readable program instructions described herein can
be downloaded to respective computing/processing devices from a
computer readable storage medium or to an external computer or
external storage device via a network, for example, the Internet, a
local area network, a wide area network and/or a wireless network.
The network may comprise copper transmission cables, optical
transmission fibers, wireless transmission, routers, firewalls,
switches, gateway computers, and/or edge servers. A network adapter
card or network interface in each computing/processing device
receives computer readable program instructions from the network
and forwards the computer readable program instructions for storage
in a computer readable storage medium within the respective
computing/processing device.
[0112] Computer readable program instructions for carrying out
operations of the present invention may be assembler instructions,
instruction-set-architecture (ISA) instructions, machine
instructions, machine dependent instructions, microcode, firmware
instructions, state-setting data, or either source code or object
code written in any combination of one or more programming
languages, including an object oriented programming language such
as Smalltalk, C++ or the like, and conventional procedural
programming languages, such as the "C" programming language or
similar programming languages. The computer readable program
instructions may execute entirely on the user's computer, partly on
the user's computer, as a stand-alone software package, partly on
the user's computer and partly on a remote computer or entirely on
the remote computer or server. In the latter scenario, the remote
computer may be connected to the user's computer through any type
of network, including a local area network (LAN) or a wide area
network (WAN), or the connection may be made to an external
computer (for example, through the Internet using an Internet
Service Provider). In some embodiments, electronic circuitry
including, for example, programmable logic circuitry,
field-programmable gate arrays (FPGA), or programmable logic arrays
(PLA) may execute the computer readable program instructions by
utilizing state information of the computer readable program
instructions to personalize the electronic circuitry, in order to
perform aspects of the present invention.
[0113] Aspects of the present invention are described herein with
reference to flowchart illustrations and/or block diagrams of
methods, apparatus (systems), and computer program products
according to embodiments of the invention. It will be understood
that each block of the flowchart illustrations and/or block
diagrams, and combinations of blocks in the flowchart illustrations
and/or block diagrams, can be implemented by computer readable
program instructions.
[0114] These computer readable program instructions may be provided
to a processor of a general purpose computer, special purpose
computer, or other programmable data processing apparatus to
produce a machine, such that the instructions, which execute via
the processor of the computer or other programmable data processing
apparatus, create means for implementing the functions/acts
specified in the flowchart and/or block diagram block or blocks.
These computer readable program instructions may also be stored in
a computer readable storage medium that can direct a computer, a
programmable data processing apparatus, and/or other devices to
function in a particular manner, such that the computer readable
storage medium having instructions stored therein comprises an
article of manufacture including instructions which implement
aspects of the function/act specified in the flowchart and/or block
diagram block or blocks.
[0115] The computer readable program instructions may also be
loaded onto a computer, other programmable data processing
apparatus, or other device to cause a series of operational steps
to be performed on the computer, other programmable apparatus or
other device to produce a computer implemented process, such that
the instructions which execute on the computer, other programmable
apparatus, or other device implement the functions/acts specified
in the flowchart and/or block diagram block or blocks.
[0116] The flowchart and block diagrams in the Figures illustrate
the architecture, functionality, and operation of possible
implementations of systems, methods, and computer program products
according to various embodiments of the present invention. In this
regard, each block in the flowchart or block diagrams may represent
a module, segment, or portion of instructions, which comprises one
or more executable instructions for implementing the specified
logical function(s). In some alternative implementations, the
functions noted in the block may occur out of the order noted in
the figures. For example, two blocks shown in succession may, in
fact, be executed substantially concurrently, or the blocks may
sometimes be executed in the reverse order, depending upon the
functionality involved. It will also be noted that each block of
the block diagrams and/or flowchart illustration, and combinations
of blocks in the block diagrams and/or flowchart illustration, can
be implemented by special purpose hardware-based systems that
perform the specified functions or acts or carry out combinations
of special purpose hardware and computer instructions.
[0117] The terminology used herein is for the purpose of describing
particular embodiments only and is not intended to be limiting of
the invention. As used herein, the singular forms "a", "an" and
"the" are intended to include the plural forms as well, unless the
context clearly indicates otherwise. It will be further understood
that the terms "comprises" and/or "comprising," when used in this
specification, specify the presence of stated features, integers,
steps, operations, elements, and/or components, but do not preclude
the presence or addition of one or more other features, integers,
steps, operations, elements, components, and/or groups thereof.
[0118] The description of the present invention has been presented
for purposes of illustration and description, but is not intended
to be exhaustive or limited to the invention in the form disclosed.
Many modifications and variations will be apparent to those of
ordinary skill in the art without departing from the scope and
spirit of the invention. The embodiment was chosen and described in
order to best explain the principles of the invention and the
practical application, and to enable others of ordinary skill in
the art to understand the invention for various embodiments with
various modifications as are suited to the particular use
contemplated.
* * * * *