(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-12-08
(45)【発行日】2022-12-16
(54)【発明の名称】アプリケーション動作要求の解析を介したアプリケーション機能のリカバリ
(51)【国際特許分類】
G06F 11/07 20060101AFI20221209BHJP
G06F 8/65 20180101ALI20221209BHJP
【FI】
G06F11/07 193
G06F8/65
G06F11/07 140S
(21)【出願番号】P 2020503712
(86)(22)【出願日】2018-07-16
(86)【国際出願番号】 IB2018055227
(87)【国際公開番号】W WO2019021104
(87)【国際公開日】2019-01-31
【審査請求日】2021-07-05
(32)【優先日】2017-07-24
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】513020939
【氏名又は名称】ウーバー テクノロジーズ,インコーポレイテッド
(74)【代理人】
【識別番号】110001243
【氏名又は名称】弁理士法人谷・阿部特許事務所
(72)【発明者】
【氏名】ツォーマス サンテリ アートマン
(72)【発明者】
【氏名】ナヴィーン ナラヤナン
(72)【発明者】
【氏名】ブルース マクラーレン スタンリー
【審査官】石川 亮
(56)【参考文献】
【文献】国際公開第2013/038489(WO,A1)
【文献】特開2004-178296(JP,A)
【文献】国際公開第2004/061681(WO,A1)
【文献】米国特許出願公開第2012/0166883(US,A1)
【文献】特開2012-138001(JP,A)
【文献】特開2016-006659(JP,A)
【文献】米国特許出願公開第2009/0328098(US,A1)
【文献】米国特許出願公開第2009/0292959(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 11/07
G06F 8/65
(57)【特許請求の範囲】
【請求項1】
アプリケーションの機能性をリカバリするための方法であって、
ネットワークシステムによって、(i)前記ネットワークシステムから遠隔にあり、かつ(ii)メイン部分およびリカバリ部分を有するアプリケーションを実行しているデバイスから、リカバリ命令の要求を受信するステップであって、前記要求は、前記アプリケーションの前記リカバリ部分によって生成され、前記アプリケーションの前記メイン部分の動作に影響するソフトウェアパッケージのセットを指定する、ステップと、
前記アプリケーションの前記メイン部分の動作を反映する動作要求のセットを識別するステップと、
前記動作要求のセットと、前記ソフトウェアパッケージのセットに関連付けられた予期される動作要求のセットとの違いに少なくとも部分的に基づいて、前記アプリケーションの前記メイン部分を修正するためのリカバリ命令のセットを判定するステップと、
前記リカバリ命令のセットを前記デバイスに提供するステップと
を含む方法。
【請求項2】
前記アプリケーションの前記メイン部分の機能のセットから少なくとも1つの欠陥機能を識別するステップであって、各欠陥機能は前記アプリケーションの前記メイン部分の動作に影響する前記ソフトウェアパッケージのセットのうちの少なくとも1つに関連付けられている、ステップをさらに含み、
前記リカバリ命令のセットを判定するステップは、前記少なくとも1つの欠陥機能に関連付けられた前記ソフトウェアパッケージのセットのうちの前記少なくとも1つを修正するための命令を判定するステップを含む
請求項1の方法。
【請求項3】
前記少なくとも1つの欠陥機能の動作に影響する候補ソフトウェアパッケージのセットを識別するステップと、
前記候補ソフトウェアパッケージのセットから1つまたは複数のソフトウェアパッケージを選択するステップと
をさらに含む、請求項2の方法。
【請求項4】
前記候補ソフトウェアパッケージ
のセットを識別するステップは、
前記候補ソフトウェアパッケージのセットによって影響される候補動作要求のセットを識別するために、前記アプリケーションの前記メイン部分の静的解析を実施するステップと、
受信された動作要求および前記候補ソフトウェアパッケージに関連付けられた前記候補動作要求に基づいて、前記候補ソフトウェアパッケージのセットから異常なソフトウェアパッケージを選択するステップと
を含む、請求項3の方法。
【請求項5】
前記候補ソフトウェアパッケージ
のセットを識別するステップは、前記候補ソフトウェアパッケージのセットおよび前記デバイスの受信された動作要求のセットと、候補ソフトウェアパッケージの第2のセットおよび第2のデバイスの受信された動作要求の第2のセットとの比較に基づく、請求項3の方法。
【請求項6】
前記第2のデバイスが正常に動作しているとき、前記比較は、前記デバイスと前記第2のデバイスとの間で相違したソフトウェアパッケージを候補ソフトウェアパッケージとして識別する、請求項5の方法。
【請求項7】
前記第2のデバイスが異常に動作しているとき、前記比較は、第1のデバイスと前記第2のデバイスとの間で同じようなソフトウェアパッケージを候補ソフトウェアパッケージとして識別する、請求項5の方法。
【請求項8】
機能のセットに基づいて、前記アプリケーションの前記メイン部分の動作を反映する予期される動作要求のセットを識別するステップをさらに含み、
前記リカバリ命令のセットを判定するステップは、前記予期される動作要求のセットにさらに基づく、請求項1の方法。
【請求項9】
前記リカバリ命令のセットは、前記デバイスにインストールされた第2のアプリケーションを実行するための命令を含む、請求項1の方法。
【請求項10】
前記リカバリ命令のセットを
判定するステップは、
以前に提供されたリカバリ命令のセットを識別するステップを含み、
前記リカバリ命令のセットは、前記以前に提供されたリカバリ命令のセットに基づく
請求項1の方法。
【請求項11】
前記リカバリ命令のセットを
前記デバイスに提供するステップは、
ソフトウェアパッケージの同じようなセットを備える前記アプリケーションを実行するデバイスのセットを判定するステップと、
前記リカバリ命令のセットを前記デバイスのセットに送るステップと
を含む、請求項1の方法。
【請求項12】
アプリケーションをリカバリする工程を実施するシステムのプロセッサによって実行可能なコンピュータプログラム命令を記憶する非一時的なコンピュータ可読記憶媒体であって、前記コンピュータプログラム命令は、前記プロセッサによって実行されると、前記プロセッサに、
ネットワークシステムによって、(i)前記ネットワークシステムから遠隔にあり、かつ(ii)メイン部分およびリカバリ部分を有するアプリケーションを実行しているデバイスから、リカバリ命令の要求を受信することであって、前記要求は、前記アプリケーションの前記リカバリ部分によって生成され、前記アプリケーションの前記メイン部分の動作に影響するソフトウェアパッケージのセットを指定する、ことと、
前記アプリケーションの前記メイン部分の動作を反映する、前記デバイスから受信された動作要求のセットを識別することと、
前記動作要求のセットと、前記ソフトウェアパッケージのセットに関連付けられた予期される動作要求のセットとの違いに少なくとも部分的に基づいて、前記アプリケーションの前記メイン部分を修正するためのリカバリ命令のセットを判定することと、
前記リカバリ命令のセットを前記デバイスに提供することと
を実施させる、非一時的なコンピュータ可読記憶媒体。
【請求項13】
前記アプリケーションの前記メイン部分の機能のセットから少なくとも1つの欠陥機能を識別することであって、各欠陥機能は前記アプリケーションの前記メイン部分の動作に影響する前記ソフトウェアパッケージのセットのうちの少なくとも1つに関連付けられている、ことをさらに含み、
前記リカバリ命令のセットを判定することは、前記少なくとも1つの欠陥機能に関連付けられた前記ソフトウェアパッケージのセットのうちの前記少なくとも1つを修正するための命令を判定することを含む
請求項12の非一時的なコンピュータ可読記憶媒体。
【請求項14】
前記少なくとも1つの欠陥機能の動作に影響する候補ソフトウェアパッケージのセットを識別することと、
前記候補ソフトウェアパッケージのセットから1つまたは複数のソフトウェアパッケージを選択することと
をさらに含む、請求項13の非一時的なコンピュータ可読記憶媒体。
【請求項15】
前記候補ソフトウェアパッケージ
のセットを識別することは、
前記候補ソフトウェアパッケージのセットによって影響される候補動作要求のセットを識別するために、前記アプリケーションの前記メイン部分の静的解析を実施することと、
受信された動作要求および前記候補ソフトウェアパッケージに関連付けられた前記候補動作要求に基づいて、前記候補ソフトウェアパッケージのセットから異常なソフトウェアパッケージを選択することと
を含む、請求項14の非一時的なコンピュータ可読記憶媒体。
【請求項16】
前記候補ソフトウェアパッケージ
のセットを識別することは、前記候補ソフトウェアパッケージのセットおよび前記デバイスの受信された動作要求のセットと、候補ソフトウェアパッケージの第2のセットおよび第2のデバイスの受信された動作要求の第2のセットとの比較に基づく、請求項14の非一時的なコンピュータ可読記憶媒体。
【請求項17】
前記第2のデバイスが正常に動作している場合、前記比較は、第1のデバイスと前記第2のデバイスとの間で相違したソフトウェアパッケージを候補ソフトウェアパッケージとして識別する、請求項16の非一時的なコンピュータ可読記憶媒体。
【請求項18】
前記第2のデバイスが異常に動作しているとき、前記比較は、前記デバイスと前記第2のデバイスとの間で同じようなソフトウェアパッケージを候補ソフトウェアパッケージとして識別する、請求項16の非一時的なコンピュータ可読記憶媒体。
【請求項19】
機能のセットに基づいて、前記アプリケーションの前記メイン部分の動作を反映する予期される動作要求のセットを識別することをさらに含み、
前記リカバリ命令のセットを判定することは、前記予期される動作要求のセットにさらに基づく、請求項12の非一時的なコンピュータ可読記憶媒体。
【請求項20】
前記リカバリ命令のセットは、前記デバイスにインストールされた第2のアプリケーションを実行するための命令を含む、請求項12の非一時的なコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本説明は、一般に、デバイス上で実行しているアプリケーションの機能性を回復することに関し、より詳細には、アプリケーションの機能性を回復するために、デバイス上で実行している異常なソフトウェアパッケージを検出し、判定し、訂正することに関する。
【背景技術】
【0002】
クライアントデバイスおよびそれらのインストールされたアプリケーションは、アプリケーションに含まれたソフトウェアパッケージの実行を通じて、様々な機能をユーザに提供する。例えば、アプリケーションは、インターネット上の情報にアクセスする、ユーザ間でメッセージを送る、その他の能力を提供することによって、旅行を調整するためにユーザを接続する機能を提供することができる。クライアントデバイスおよびアプリケーションが修正されるとき、これらの修正がアプリケーションの実行に影響し、アプリケーションの機能が異常になることを引き起こして、アプリケーション動作目標の効果的な完遂を妨げることがある。
【0003】
いくつかの事例において、機能不良のアプリケーションは、アプリケーションが最適ではない状態で動作するのを許可するユーザによって認識されなくなり、アプリケーションが十分な機能性を実現するのを妨げることがある。より害のあるケースでは、機能不良はユーザによって認識され得るものの、機能不良それ自体が、ユーザがアプリケーションを回復することを妨げる。従って、アプリケーションの欠陥機能を自動的に検出し、訂正するための方法を提供することが望ましい。
【発明の概要】
【0004】
アプリケーションリカバリシステム(本明細書において、簡略化のために「システム」とも呼ばれる)が、異常なアプリケーションの動作を識別してアプリケーションを適正な動作に戻すためのアクションを取ることによって、アプリケーションをリカバリする。アプリケーションリカバリは、異種のクライアントデバイスが、同じアプリケーションを動作させて同じ機能を提供するが、異なるように構成されている環境において、挑戦的である。例えば、第1のクライアントデバイスがソフトウェアパッケージの第1のセットを備えたアプリケーションを含み、第2のクライアントデバイスがソフトウェアパッケージの第2のセットを備えたアプリケーションを含む、2つのクライアントデバイスが同じ機能を提供する。インストールされたソフトウェアパッケージを通じて、各アプリケーションは、アプリケーションの機能を提供するサービスにおいてアプリケーションリカバリシステムと通信しているサーバへの動作要求のセットを生成する。例えば、ライダーとプロバイダとの間で旅行を調整するためのアプリケーションを提供するために、ライダーのデバイスは、ライダーの場所を指定する、目的地について照会する、地図データを表示する、その他のための動作要求を生成することができる。欠陥機能を識別し、訂正し、リカバリ命令のセットを判定するために、システムは、デバイスのためにインストールされたソフトウェアパッケージ、およびデバイスによって生成された動作要求を識別する。
【0005】
本明細書における例によれば、リカバリ命令のセットを判定するために、ネットワークシステムが、最初にアプリケーションの異常な動作を識別する。アプリケーションの異常な動作は、アプリケーションに関連付けられた少なくとも1つの欠陥機能が存在することを示す。ネットワークシステムは、例えば、実行しているソフトウェアアプリケーションの生成された動作要求を解析することによって、異常な動作を識別することができる。クライアントデバイスは、インストールされたソフトウェアパッケージ(またはインストールされたソフトウェアパッケージの識別子)を含むリカバリ命令の要求をネットワークシステムに送って、欠陥機能を識別するのを支援する。
【0006】
ネットワークシステムは、受信されたインストールされたソフトウェアパッケージ(またはインストールされたソフトウェアパッケージの識別子)を使用して、アプリケーションの予期される動作を識別する。識別された予期される動作に基づいて、ネットワークシステムは、アプリケーションの動作に影響していることがある欠陥機能、およびそれらの関連付けられたソフトウェアパッケージを識別する。識別は、リカバリ要求、クライアントデバイスデータストア、ソフトウェアパッケージデータストア、またはリカバリ命令データストアなどの、システムに含まれる任意の情報に基づいていてよい。
【0007】
ネットワークシステムは、識別された欠陥機能、関連付けられたソフトウェアパッケージ、および/またはアプリケーションの動作のための環境における任意の他の情報に基づいて、要求するクライアントデバイスのためのリカバリ命令のセットを判定する。一例において、リカバリ命令は、クライアントデバイスによって実行されるとき、ソフトウェアパッケージを無効化し、修正し、または削除することができる。リカバリ命令のセットを判定するとき、ネットワークシステムはまた、同じようなソフトウェアパッケージを有する他の要求のために、リカバリ命令のセットを修正することができる。リカバリ命令のセットを判定した後で、ネットワークシステムは、リカバリ命令を、要求するクライアントデバイスに提供する。要求するクライアントデバイスは、アプリケーションがリカバリされるように、リカバリ命令をクライアントデバイスおよびアプリケーションに適用する。
【0008】
この概要並びに以下の詳細な説明において説明される特徴および利点は、全てを包括するものではない。多くの追加の特徴および利点が、本書の図面、明細書、および特許請求の範囲を考慮して、当業者には明らかとなるであろう。
【図面の簡単な説明】
【0009】
【
図1】いくつかの実施形態に従って、機能不良のアプリケーションをリカバリすることができる旅行調整システムのためのシステム環境の高レベルブロック図である。
【
図2】いくつかの例示的な実施形態に従って、アプリケーションをリカバリするためのリカバリ命令のセットを判定するために使用される、数個のクライアントデバイスおよびそれらの関連付けられた機能、並びに動作要求の表の図である。
【
図3】いくつかの実施形態に従って、ネットワークシステムがアプリケーションをリカバリするための方法を例証するフロー図である。
【
図4】いくつかの実施形態に従って、クライアントデバイスがアプリケーションをリカバリするための方法を例証するフロー図である。
【
図5】いくつかの実施形態に従って、マシン可読媒体から命令を読み出し、実行するためのマシンの例証の図である。
【発明を実施するための形態】
【0010】
図面は、例証の目的のためだけに本発明の実施形態を表す。当業者は、以下の説明から、本明細書で例証される構造および方法の代替的実施形態が、本明細書で説明される本発明の原理から逸脱せずに採用され得ることを容易に認識するであろう。
【0011】
最新のクライアントデバイスは、ほとんどあらゆるタイプの環境において幅広い範囲の機能を成し遂げることができる。機能は、クライアントデバイス上で実行しているアプリケーションによって達成される。この説明のコンテキストにおいて、機能は、クライアントデバイス上で実行しているアプリケーションの高レベルな動作目標に相当する。いくつかの事例において、アプリケーションは、機能不良であることがあり、クライアントデバイスは、環境においてアプリケーションの機能を提供しない(または不適正に提供する)ことがある。数個のクライアントデバイス100が同じアプリケーションを実行し、同じ機能を提供しているが、各クライアントデバイスが異なるバージョンのアプリケーションをインストールされている環境においては、個々のクライアントデバイス上で機能不良の原因を判定することが困難である。
【0012】
図1は、いくつかの実施形態に従って、ネットワークシステム130を介して、クライアントデバイス100上の機能不良のアプリケーションをリカバリするためのシステム環境の高レベルブロック図である。
図1は、クライアントデバイス100と、ユーザ108と、ネットワーク120と、ネットワークシステム130とを含む。システム環境の代替的実施形態は、任意の数のユーザデバイス100、並びに多数のネットワークシステム130を有することができる。
図1の様々なエンティティによって実施される特定の機能は、異なる実施形態において多様であってよい。例えば、システム130は、ユーザ間で旅行を調整するために使用されてよく、各ユーザは、それぞれのユーザデバイス100を操作する。
【0013】
各クライアントデバイス100は、アプリケーション102を実行するために、1人または複数のユーザ108によって使用されるコンピューティングデバイスである。クライアントデバイス100は、例えば、クライアントデバイス100のユーザインターフェースを介してネットワークシステム130と対話するアプリケーション102を実行するモバイルコンピューティングシステムであってよい。他の実施形態において、クライアントデバイス100は、任意の他のネットワーク対応デバイスである。
【0014】
ユーザ108がクライアントデバイス100を操作するとき、アプリケーション102は、環境において任意の数の機能を実施することができる。この説明のコンテキストにおいて、機能は、クライアントデバイス100上で実行しているアプリケーション102の高レベルな動作目標に相当する。例えば、機能を実施することは、ユーザ間で旅行を調整することであってよい。追加として、各アプリケーション102は、任意の数の機能を含むことができ、各機能は、任意の数のサブ機能を有することができる。サブ機能は、全体として機能を形成する、機能のさらなる分割であってよい。上の例を使用すれば、ユーザ間で旅行を調整する機能は、ユーザに旅行を提供するサブ機能、およびユーザに旅行を要求するサブ機能を有することができる。
【0015】
アプリケーションが適切に実行しているとき、アプリケーションの機能は、アプリケーションの動作目標を提供する。反対に、機能不良のアプリケーションにおいて、機能は不適正に実行しており、アプリケーションの動作目標を提供しない。この開示のコンテキストにおいて、適正に実行している機能は、通常機能と呼ばれることになり、不適正に実行している機能は、欠陥機能と呼ばれることになる。同じように、アプリケーションの動作目標を首尾よく提供するアプリケーションは、正常に動作すると説明され、アプリケーションの動作目標を提供しないアプリケーションは、異常に動作すると説明される。
【0016】
クライアントデバイス100は、それぞれのクライアントデバイス100のプロセッサ上で実行しているアプリケーション102および二次的アプリケーション114などのソフトウェアアプリケーションを含む。クライアントデバイス100上で実行しているアプリケーション102は、環境において機能を実施する。二次的アプリケーション114は、アプリケーション102のリカバリに関連付けられた機能を実施する(例えば、リカバリ命令のセットをロードする、またはリカバリ命令のセットを実行する)ことができる。いくつかの実施形態において、二次的アプリケーション114の機能性は、アプリケーション102に含まれる。追加として、アプリケーションとリカバリアプリケーションとは、互いに、およびネットワーク120を介してネットワークシステム130と通信することができる。アプリケーション102(および114)の例は、トランスポート調整アプリケーション、ウェブブラウザ、ソーシャルネットワーキングアプリケーション、メッセージングアプリケーション、ゲーミングアプリケーション、メディア消費アプリケーション、その他であってよい。各アプリケーション102は、クライアントデバイス100、クライアントデバイスユーザ108、またはクライアントデバイスユーザのグループに関連付けられた、ネットワークシステム130上のユーザアカウントにリンクされてよい。
【0017】
アプリケーション102は、アプリケーションの機能を実行するためのいくつかのソフトウェアパッケージ104を含む。ソフトウェアパッケージ104は、アプリケーション102の機能を可能にし、それが環境において実行しているとき、アプリケーションの様々な動作アクティビティに影響する。本明細書において言及されるとき、ソフトウェアパッケージ104は、クライアントデバイス100のプロセッサ上で動作するコンピュータ命令のセットである。いくつかの実施形態において、ソフトウェアパッケージ104は、ハードウェア(例えば、計算論理を含むハードウェア)、ファームウェア、および/またはソフトウェアパッケージ104の実行を許可する任意の他のコンポーネントにおいて実装されてよい。ソフトウェアパッケージ104は、開示された方法の一実施形態に相当し、他の実施形態は、他のソフトウェアパッケージ104を含むことができる。
【0018】
例えば、第1のクライアントデバイス100a上で実行しているアプリケーション102の機能は、旅行を調整することである(例えば、旅行調整アプリケーション)。第1のクライアントデバイス100a上で実行しているアプリケーション102は、旅行調整アプリケーションの機能を実行するためのソフトウェアパッケージ104aおよび104bを含む。さらにコンテキストを提供すると、ソフトウェアパッケージ104aは、ユーザ間で旅行を調整することに関連付けられており、一方、ソフトウェアパッケージ104bは、ネットワークとインターフェース接続することに関連付けられており、それらの両方が、アプリケーションの機能に関連付けられている。いくつかのケースにおいて、ソフトウェアパッケージは、アプリケーションの動作アクティビティに影響することなく、アプリケーションの動作についてのパラメータ(例えば、ソフトウェア設定)を指定することができる。
【0019】
他の実施形態において、様々なクライアントデバイス100は、同じ機能を達成するために、任意の数の同じような、または相違したソフトウェアパッケージ104を稼働することができる。これらの実装のいずれかにおいて、ソフトウェアパッケージ104は、クライアントデバイスのコンピュータ可読永続ストレージデバイス上に記憶され、メモリの中にロードされ、クライアントデバイスのコンピュータの1つまたは複数のプロセッサによって実行され得る。例えば、第2のクライアントデバイス100b上で実行しているアプリケーション102は、トランスポート調整アプリケーションである。第2のクライアントデバイス100b上で実行しているアプリケーション102は、旅行を調整することに関連付けられた同じようなソフトウェアパッケージ104aを含む。しかしながら、第2のクライアントデバイス100b上で実行しているアプリケーション102は、ネットワークとインターフェース接続することに関連付けられた相違したソフトウェアパッケージ104cを含む。この例において、デバイス100が異なるモデルであることから、各デバイス上でネットワークとインターフェース接続することに関連付けられたソフトウェアパッケージは、相違している。
【0020】
代替的実施形態において、アプリケーション102は、本明細書で説明されるソフトウェアパッケージ104を欠く、および/または、ソフトウェアパッケージ104の中で機能性を異なるやり方で促進することがある。説明された実施形態において、ソフトウェアパッケージ104は、アプリケーション102の一部を形成するスタンドアロンソフトウェアパッケージとして実装される。しかしながら、ソフトウェアパッケージはまた、アプリケーションそれ自体の部分であることなしに、アプリケーション102の動作に影響することがある。例えば、アプリケーション102に影響するソフトウェアパッケージ104は、他のアプリケーションにもまた影響する、より大きくてより複雑なソフトウェアパッケージの一部であることがある。同様に、ソフトウェアパッケージ104は、1つまたは複数の、静的にまたは動的にリンクされたライブラリであってもよい。
【0021】
アプリケーション102の動作の間、動作要求のセット(例えば、場所情報を受信する、トランスポートプロバイダを要求する、など)が通常生成され、アプリケーションの機能に関連付けられる。これらの動作要求は、特定のアプリケーションにインストールされたソフトウェアパッケージによって修正される、または影響されることがある。例によれば、ユーザは、ユーザデバイス100のインターフェースを介して、アプリケーション102を操作する。ユーザデバイス100(またはその上の対応するアプリケーション)は、ソフトウェアパッケージ104の実行、および生成されていることも、いないこともある動作要求を説明するデータを集める。正常な動作の間、ソフトウェアアプリケーションによって生成された動作要求の適正な実行は、環境においてアプリケーションの通常機能を全体として実施する。
【0022】
大まかに、動作要求は、環境において機能の実行を促進する、アプリケーション102の任意の動作として説明されてよい。これらの要求は、通常、アプリケーションの機能、およびクライアントデバイスの他のコンポーネントへの要求またはネットワーク上の他のシステムへの要求などの、アプリケーションから他のサービスまたはデバイスへの要求を反映する。追加の例として、動作要求は、クライアントデバイスインターフェースを介してクライアントデバイスへの入力を受信すること、クライアントデバイスインターフェースを介してクライアントデバイス上で出力を生み出すこと、任意の他のクライアントデバイスインターフェース対話、サーバへの要求、サーバからの入力、他のソフトウェアパッケージへの要求、他のソフトウェアパッケージからの入力、他のアプリケーションへの要求、他のアプリケーションからの入力、データベースへの要求、データベースからの入力、クライアントデバイスのコンポーネント(例えば、アンテナ、ユーザインターフェース、スピーカ、その他)からの入力、または環境においてアプリケーションによって生成され得る任意の他の動作要求を含むことができる。
【0023】
別の例を提供すると、第1のクライアントデバイス100a上で実行しているアプリケーション102は、トランスポートを調整する機能を提供する。第1のクライアントデバイス100a上で実行しているアプリケーション102は、実行されるとき、トランスポートを調整するために、ユーザ108がネットワークシステム130と対話することを共に許可する動作要求のセットを生み出すソフトウェアパッケージ104を含む。一例において、アプリケーション102は、実行されるとき、クライアントデバイスの場所を判定するための動作要求を生成するソフトウェアパッケージ104aを含む。追加として、アプリケーション102は、実行されるとき、ネットワークシステム130に旅行を要求するための動作要求を生成するソフトウェアパッケージ104bを含む。
【0024】
いくつかの実施形態において、一般には動作要求を実行することと呼ばれるが、所与の機能またはソフトウェアパッケージの動作要求は、ユーザ108がインターフェースと対話するときにユーザデバイス100からの通信の連続としてネットワークシステム130に送られてもよい。同じように、動作要求は、デバイス内動作要求実行の間、区分的なやり方で送られてもよい。同様に、ネットワークシステム130は、リカバリ命令を、通信の連続としてクライアントデバイス100に送ることができる。
【0025】
以前に説明されたように、アプリケーション102のソフトウェアパッケージ104の実行は、環境においてアプリケーションの通常機能を全体として提供する動作要求を生成する。通常、正常な動作の間、各ソフトウェアパッケージ104は、実行されるとき、動作要求の固有のセットを生成する。これらの動作要求は、予期される動作要求と称される。予期される動作要求は、システム内で多様な方法を使用して判定されてよい。例えば、アプリケーション102のプログラマがアプリケーションまたはソフトウェアパッケージの配布に先立って予期される動作要求を判定してもよいし、予期される動作要求がソフトウェアパッケージデータストアに記憶されてよいし、クライアントデバイスのユーザがクライアントデバイスのために予期される動作要求を設定してもよいし、ネットワークシステムがソフトウェアパッケージの静的解析を実施してもよいし、ネットワークシステムが環境における別のエンティティから予期される動作要求のセットを受信してもよいし、ネットワークシステムが環境内で正常に機能するクライアントデバイスに基づいて予期される動作要求のセットを構築してもよい、などである。いくつかの実施形態において、予期される動作要求はまた、予期される動作要求がいつ生じるかを示すタイミングまたは順序構造を含んでもよい。
【0026】
しかしながら、アプリケーションが異常に動作している場合、アプリケーションは、少なくとも1つの欠陥機能を含むことがある。いくつかのケースにおいて、欠陥機能は、機能不良であるソフトウェアパッケージによって引き起こされる。これらのソフトウェアパッケージは、異常なソフトウェアパッケージと称される。異常なソフトウェアパッケージは、予期される動作要求とは異なる動作要求を生成することがある。一例示的な実施形態において、3つのタイプの異なる動作要求、すなわち、予期される動作要求に追加して生成される追加の動作要求(例えば、余分な動作要求)、予期される動作要求の代わりに生成される動作要求(例えば、置換動作要求)、および予期される動作要求からの動作要求の欠如(例えば、足りない動作要求)があり得る。便宜上、これらの動作要求は、全体として異常な動作要求と呼ばれる。従って、アプリケーションが異常に動作しているとき、それは、アプリケーションの機能を提供することに失敗した異常な動作要求を生成することがある。一例において、異常な動作要求は、クラッシュ報告に含まれる。同じような実施形態において、ネットワークシステムは、異常な動作要求からクラッシュ報告を生成することができる。
【0027】
いくつかの事例において、アプリケーションは、異常な動作要求をなおも生み出しながら、機能を正常に首尾よく提供することがある。すなわち、生成された異常な動作要求が、アプリケーションの動作目標を阻止しないことがある。これらのケースにおいて、異常な動作要求は、環境においてアプリケーションの機能を非効率に実行すると見られてよい。機能はなおも提供され得る(かつユーザの観点からは明らかなエラーは存在しないことがある)が、本明細書で説明されるものなどの同じような方法は、非効率なアプリケーションを識別し、訂正するために使用されてよい。
【0028】
アプリケーションはまた、リカバリソフトウェアパッケージ110を含むことができる。リカバリソフトウェアパッケージ110は、アプリケーション102のためのリカバリ命令を要求し、適用する。一事例において、リカバリ命令の要求および適用は、クライアントデバイス上でアプリケーションが実行される各インスタンスで(例えば、アプリケーションローディングの間)生じる。リカバリソフトウェアパッケージ110はまた、アプリケーション102の動作要求をモニタすることができる。これらの動作要求は、リカバリ命令の要求の一部として、リカバリソフトウェアパッケージ110によってネットワークシステム130に提供されてよい。代替的実施形態において、リカバリソフトウェアパッケージは、任意の他の時間(例えば、ユーザからの入力に基づいて、ネットワークシステムから受信された通知に基づいて、時間閾値に基づいて、デバイスデータストアに記憶された情報に基づいて、など)に、リカバリ命令を要求し、適用することができる。
【0029】
一例において、リカバリソフトウェアパッケージ110は、ネットワーク120を介して、ネットワークシステム130にリカバリ命令のセットを要求する。リカバリ命令のセットは、アプリケーション102、二次的アプリケーション114、またはクライアントデバイス100によって適用されるとき、アプリケーションの機能を修正することができる。例えば、リカバリ命令は、異常な機能が正常な機能に戻るように、アプリケーション(またはクライアントデバイス)を修正する。
【0030】
例によれば、リカバリ命令の要求は、アプリケーション102の異常な機能を判定するために、リカバリソフトウェアパッケージ110によってネットワークシステム130に送られる。要求は、環境においてクライアントデバイスが動作するときの任意の時点で生じ得る。一例において、要求は、アプリケーションマニフェスト、デバイスマニフェスト、およびアプリケーションを実行することに関連付けられた生成された動作要求のいずれかを含むことができる。アプリケーションマニフェストは、アプリケーションのインストールされたソフトウェアパッケージ、アプリケーションのバージョン番号、生成され得る動作要求のリスト、アプリケーション設定、その他を含むことができる。デバイスマニフェストは、インストールされたアプリケーションのリスト、表示設定、およびネットワーク設定、その他を含むことができる。さらに、要求は、デバイスデータストアに含まれた情報、クライアントデバイスの場所、またはリカバリソフトウェアパッケージによって実行された以前のリカバリ命令を含むことができる。
【0031】
リカバリソフトウェアパッケージ110は、ネットワークシステム130からリカバリ命令のセットを受信して、アプリケーションのソフトウェアパッケージ104を修正することができる。リカバリ命令を実行した後で、リカバリソフトウェアパッケージ110は、いくつかの実施形態において、アプリケーション102からの動作要求が今、予期される動作要求と一致しているかどうかを判定し、判定に基づいて、ネットワークシステム130にリカバリ命令の新しいセットを要求することができる。これらの事例において、リカバリ命令の後続の要求は、以前に実行されたリカバリ命令に関連付けられた情報および動作要求を含むことができる。
【0032】
リカバリ命令は、任意の数の命令を含んでおり、アプリケーション102をリカバリすることができる。いくつかの例示的な命令は、任意の数のソフトウェアパッケージを無効化すること、取り除くこと、若しくは追加すること、インストールされたソフトウェアパッケージを修正すること、アプリケーションによって提供された機能を無効化すること、取り除くこと、修正すること、若しくは機能に追加すること、デバイスデータストアにおける情報を取り除くこと、追加すること、若しくは修正すること(例えば、パスワード、キャッシュをクリアすること、など)、アプリケーションを回復することを支援するために二次的アプリケーションにアクセスすること(例えば、ユーザが実施するための命令を取り出すためにウェブブラウザを開くこと)、実行されるとき、ソフトウェアパッケージによって生成された動作要求を修正すること、またはアプリケーション102をリカバリすることができる任意の他の命令を含む。
【0033】
リカバリソフトウェアパッケージ110は、アプリケーションの意図される機能を提供するアプリケーションの「メイン部分」に「伴うもの」または二次的部分として見られてよい。この例において、アプリケーションのメイン部分は、アプリケーションの1つまたは複数の機能を実行することに関連付けられたソフトウェアパッケージに関し、それらのソフトウェアパッケージを含む。すなわち、リカバリソフトウェアパッケージ110はアプリケーション102内で実行しているが、ソフトウェアパッケージ104によって提供される機能は、リカバリパッケージ110の実行に影響しない。
【0034】
リカバリソフトウェアパッケージ110の機能を例証するために、異常なソフトウェアパッケージを含むアプリケーションの簡単な例を続ける。リカバリパッケージは、リカバリ命令の要求をネットワークシステム130に送る。リカバリパッケージは、ネットワークシステム130からリカバリ命令のセットを受信する。リカバリ命令は、アプリケーション102の異常な動作を引き起こす欠陥機能に関連付けられた異常なソフトウェアパッケージの計算論理に対する修正と、二次的アプリケーション114を実行するための命令とを含む。リカバリソフトウェアパッケージ110は、アプリケーションをリカバリするリカバリ命令を実行する。異常な機能を判定すること、および環境内でアプリケーションをリカバリすることの追加の例は、
図2に関してより詳細に議論される。
【0035】
追加として、または代替として、リカバリソフトウェアパッケージ110は、動作要求の一貫したモニタリングおよび解析に基づいて、アプリケーションが異常に動作していることを判定する。一例によれば、異常な動作要求の生成は、アプリケーションが異常に動作していることを示す。このケースにおいて、アプリケーションが異常に動作していることを判定することは、ネットワークシステム130による解析のために、生成された動作要求を、ネットワーク120を介してネットワークシステム130に送ることを含むことができる。いくつかの実施形態において、リカバリパッケージ110は、ネットワークシステム130にアクセスすることなしに、アプリケーションが異常に機能していると判定する。生成された動作要求に追加して、アプリケーション102は、それらの要求の実行が普通ではないときに、異常に動作するように判定されてよい。他の実施形態において、リカバリソフトウェアパッケージ110は、動作要求が一定の量の時間の後で実行されないとき、実行された動作要求の応答時間が異常であるとき(例えば、閾値を上回る、または下回る)、生成された動作要求が繰り返して実行されるとき(例えば、実行ループ)、生成された動作要求が実行されないとき、実行された動作要求が異常な応答をもたらすときに(例えば、デバイスのGPSに照会することがデバイス時間を返す)、またはアプリケーションが異常に機能していることを示す動作要求の任意の他の解析で、アプリケーションが異常に動作していることを判定することができる。他の実施形態において、障害判定コンポーネントまたはモジュール142が、異常な動作の同じような判定を行うことができる。
【0036】
図1のクライアントデバイスを続けると、デバイスデータストア112は、デバイスユーザ、クライアントデバイス100、ユーザアカウント、その他に関連付けられた情報を収容する。この情報は、環境内でアプリケーションの機能を提供するとき、アプリケーション102によってアクセスされてよい。さらに、情報は、リカバリ命令を実行するとき、アクセスされ、修正され、または削除されてもよい。一実施形態において、情報は、ソフトウェアパッケージおよび動作要求を、固有のデバイス、ユーザアカウント、デバイスのグループ、およびユーザアカウントのグループに適応させるために(例えば、スクリーンサイズに基づいて出力を表示すること、言語設定に基づいてデータを入力すること、その他)使用されてよい。デバイスデータストアに記憶された情報は、デバイス間セキュリティメトリクス、デバイス内セキュリティメトリクス、ネットワークセキュリティメトリクス、認証プロトコル、ユーザアカウント情報および選好、クライアントデバイス情報および選好、デバイスユーザ情報および選好、選好および変更の記録、並びに場所ベースの情報、クライアントデバイス上で実行しているアプリケーション、クライアントデバイス上で実行しているソフトウェアパッケージ、ソフトウェアパッケージに関連付けられた修正、予期される動作要求および異常な動作要求、並びに環境においてアプリケーションをリカバリすることに関連付けられた任意の他の情報を含むことができる。
【0037】
例えば、デバイスデータストア112は、デバイスユーザ108のための支払情報を記憶することができる。アプリケーション102の機能が、支払情報へのアクセスを求め、アプリケーションは、動作要求に応答して、デバイスデータストアにおける情報にアクセスすることができる。別の例として、デバイスデータストアは、クライアントデバイスのためのデバイス内セキュリティメトリクスを記憶することができる。アプリケーション102の機能が、クライアントデバイスのハードウェア構成へのアクセスを求め、アプリケーションは、記憶されたデバイス内セキュリティメトリクス(例えば、アクセスを妨げる、または許可する)に基づいた動作要求に応答して、構成にアクセスすることができる。
【0038】
クライアントデバイス100は、ネットワーク120を使用して、環境内の他のクライアントデバイスおよびネットワークシステムと通信することができる。ネットワーク120は、クライアントデバイス100とネットワークシステム130との間の通信経路に相当する。一実施形態において、ネットワーク120はインターネットであるが、LAN、MAN、WAN、モバイル、有線、若しくは無線ネットワーク、クラウドコンピューティングネットワーク、プライベートネットワーク、または仮想プライベートネットワーク、およびそれらの任意の組み合わせを含むが限定はされない、任意のネットワークであってもまたよい。追加として、リンクの全てまたはいくつかは、セキュアソケットレイヤ(SSL)、セキュアHTTP、および/または仮想プライベートネットワーク(VPN)などの従来の暗号化技術を使用して暗号化されてもよい。別の実施形態において、エンティティは、上で説明されたものに代えて、またはそれらに追加して、カスタムのおよび/または専用のデータ通信技術を使用することができる。
【0039】
ネットワークシステム130は、ネットワーク120を介して、クライアントデバイス100上で実行しているアプリケーション102の機能を提供することを支援し、アプリケーション102をリカバリすることを促進する。ネットワークシステム130は、リカバリイベントモジュール140と、障害判定モジュール142と、リカバリ命令モジュール144と、クライアントデバイスデータストア150と、ソフトウェアパッケージデータストア152と、リカバリ命令データストア154とを含む。ネットワークシステム130は、クライアントデバイス上のアプリケーションから動作要求を受信することができる。応答して、ネットワークシステム130は、要求された動作を提供することができる。例えば、旅行調整アプリケーション120は、最も近い旅行プロバイダの場所の要求を含む動作要求を、ネットワークシステム130に送る。ネットワークシステム130は、最も近いプロバイダの場所を判定し、クライアントデバイス100上の要求するアプリケーションに情報を返す。追加として、ネットワークシステム130は、リカバリ命令の要求を受信し、要求に基づいてリカバリ命令のセットを判定し、リカバリ命令を要求元に送ることができる。
【0040】
ネットワークシステム130は、指定された機能性を提供するためのハードウェアコンポーネントおよび/または計算論理を指す、いくつかの「モジュール」を含む。すなわち、モジュールは、ハードウェア、ファームウェア、および/またはソフトウェア(例えば、計算論理を含むハードウェアサーバ)で実装されてよく、他の実施形態は、追加のモジュールを含んでもよいし、機能性をモジュール間で分散してもよいし、機能性をより多い、またはより少ないモジュールに属するとしてもよいし、スタンドアロンプログラムとして、またはプログラムのネットワークの一部として実装されてもよいし、プロセッサによって実行可能なメモリの中にロードされてもよい。
【0041】
ネットワークシステム130は、リカバリイベントモジュール140を含むことができる。リカバリイベントモジュール140は、リカバリソフトウェアパッケージ110と対話して、アプリケーションのためのリカバリ命令を提供する。大まかに、リカバリイベントモジュール140は、クライアントデバイス100からリカバリ命令の要求を受信し、要求を障害判定モジュール142に送り、リカバリ命令モジュール144からリカバリ命令のセットを受信し、リカバリ命令をクライアントデバイス100に送る。いくつかの実施形態において、リカバリイベントモジュール140は、様々なネットワーク120経路を使用して、リカバリ命令をクライアントデバイス100に通信するように構成される。例えば、異常に動作するアプリケーションがもはや第1の通信プロトコル(例えば、アプリケーション内通信)を介してリカバリ命令を受信することができない場合、リカバリイベントモジュール140は、第2の通信プロトコル(例えば、SMSメッセージ)を介してリカバリ命令をクライアントデバイス100に提供することができる。いくつかの実施形態において、リカバリイベントモジュール140は、リカバリ命令を、要求するアプリケーションと同じようなアプリケーション102に送り、同じようなアプリケーションは、判定されたリカバリ命令に関連付けられたソフトウェアパッケージまたはクライアントデバイス情報を含む。
【0042】
ネットワークシステム130は、リカバリイベントモジュール140からリカバリ要求を受信する障害判定モジュール142を含むことができる。以前に説明されたように、リカバリ要求は、アプリケーションマニフェスト、デバイスマニフェスト、動作要求、またはアプリケーションの欠陥機能を判定するのを支援することができる任意の他の情報を含むことができる。障害判定モジュールは、受信されたリカバリ要求に基づいて、要求するクライアントデバイスのための予期される動作要求のセットを判定する。障害判定モジュールは次いで、受信されたリカバリ要求、予期される動作要求のセット、および機能を提供するクライアントデバイスから受信された実際の動作要求に基づいて、欠陥機能およびその関連付けられたソフトウェアパッケージを識別する。障害判定モジュールはまた、欠陥機能を引き起こす関連付けられたソフトウェアパッケージから、異常なソフトウェアパッケージを識別する。欠陥機能および関連付けられたソフトウェアパッケージを判定するための様々な方法が、本明細書で説明される。
【0043】
一実施形態において、障害判定モジュール142は、予期される動作要求と異常な動作要求との違いを解析することによって、欠陥機能および異常なソフトウェアパッケージを判定することができる。すなわち、障害判定モジュールは、アプリケーションの予期される動作要求を判定し(または予期される動作要求にアクセスし)、それをアプリケーションの受信された動作要求と比較する。予期される動作要求と受信された動作要求(すなわち、異常な動作要求)との違いに基づいて、障害判定モジュールは、アプリケーションが欠陥機能を含むことを判定する。この例において、受信された動作要求に関連付けられたソフトウェアパッケージの全てが、異常なソフトウェアパッケージであることがある。
【0044】
別の実施形態において、障害判定モジュール142は、受信された動作要求を解析することによって、欠陥機能を判定することができる。このケースにおいて、障害判定モジュールは、以前の例と同じような異常な動作要求を判定する。しかしながら、この例において、障害判定モジュールは、アプリケーションマニフェストから、異常な動作要求に関連付けられたソフトウェアパッケージのリストを判定する。いくつかの例において、ソフトウェアパッケージは、ソフトウェアパッケージデータストアまたはクライアントデバイスデータストアからアクセスされてよい。障害判定モジュールは、異常な動作要求に関連付けられたソフトウェアパッケージのリストを解析し、リストにおけるどのソフトウェアパッケージが欠陥機能を引き起こしている可能性が最も高いかを判定する。異常な機能を引き起こしているソフトウェアパッケージの判定は、異常な動作要求の数、異常な動作要求の深刻度、どのくらい最近ソフトウェアパッケージがインストールされたか、その他のうちのいずれかに基づいて、各ソフトウェアパッケージをスコア付けすることを含むことができる。
【0045】
別の実施形態において、障害判定モジュールは、受信された要求のアプリケーションマニフェストに含まれるソフトウェアパッケージの静的解析に基づいて、欠陥機能およびその関連付けられたソフトウェアパッケージを判定する。1つの変形において、ソフトウェアパッケージは、ソフトウェアパッケージデータストア152に記憶されている。静的解析は、ソフトウェアパッケージを解析し、アプリケーションによって実行されるときに各ソフトウェアパッケージによって生成され得る動作要求を判定する。いくつかのケースにおいて、静的解析は、ソフトウェアパッケージをさらに解析し、予期される動作要求と異常な動作要求(例えば、ユーザ入力エラー、変数の変更、予期されていないソフトウェアパッケージ対話、ソフトウェアバグ、など)との任意の組み合わせを、実行しているソフトウェアパッケージがどのように生成することができるのかを判定する。静的解析に基づいて、障害判定モジュールは、欠陥機能およびそれらの関連付けられたソフトウェアパッケージを識別することができる。
【0046】
別の実施形態において、障害判定モジュール142は、クライアントデバイスデータストアにアクセスして、要求するクライアントデバイスから受信された動作要求およびソフトウェアパッケージを、環境内の代替クライアントデバイスのソフトウェアパッケージおよび予期される動作要求と比較することができる。例えば、障害判定モジュールは、代替デバイスが環境において正常に動作していることを以前に判定している。障害判定モジュールは、代替デバイスの予期される動作要求を、要求するデバイスの受信された動作要求と比較することができる。予期される動作要求/受信された動作要求間の違いの比較に基づいて、障害判定モジュールは、受信された動作要求が異常であることを判定する。さらに、代替デバイス/要求するデバイスの関連付けられたアプリケーションおよびデバイスマニフェストに基づいて、障害判定モジュールは、異常な動作要求を引き起こす欠陥機能および関連付けられたソフトウェアパッケージを判定することができる。代替クライアントデバイスが異常に動作している場合、同じような解析が行われてよく、障害判定モジュールは、異常な動作を引き起こし得るクライアントデバイス間で同じようなソフトウェアパッケージを判定することができる。
【0047】
これらの様々な手段によって、障害判定モジュール142は、要求するアプリケーション上で実行しているソフトウェアパッケージ、予期される動作要求と異常な動作要求との関連付けられたセット(もしあれば)、またはリカバリ要求に関連付けられた任意の他の情報のうちのいずれかに基づいて、アプリケーションの欠陥機能を判定することができる。同じように、各ソフトウェアパッケージが欠陥機能に関連付けられるとき、障害判定モジュールは、欠陥機能を引き起こしていることがあるソフトウェアパッケージ104を判定することができる。これらのソフトウェアパッケージは、候補ソフトウェアパッケージのうちの1つまたは複数の動作に影響することによってアプリケーションをリカバリするための、リカバリ命令のための候補ソフトウェアパッケージとして識別される。
【0048】
ネットワークシステムはまた、リカバリ命令モジュール144を含むことができる。リカバリ命令モジュール144は、障害判定モジュール142から欠陥機能を受信する。その結果、リカバリ命令モジュール144は、リカバリ命令のセットを要求するアプリケーション102の機能性をリカバリするために、判定された欠陥機能に関連付けられたリカバリ命令のセットを判定する。候補ソフトウェアパッケージのためのリカバリ命令のセットの判定は、要求するアプリケーション102から受信された動作要求、アプリケーションマニフェスト、デバイスマニフェスト、候補ソフトウェアパッケージ、クライアントデバイスデータストアに記憶された受信された情報、リカバリ命令データストア154に記憶されたリカバリ命令および情報、またはアプリケーションをリカバリすることを支援することができる、環境における任意の他の情報に基づいていてよい。
【0049】
一般に、リカバリ命令は、アプリケーションの前の動作要求および前のリカバリ命令に基づいて、アプリケーションのために選択されてよい。アプリケーションが正常に動作するとき、リカバリ命令は、アプリケーションへの修正または変更を提供しなくてもよい。正常でない動作が存在するとき、リカバリ命令は、様々な程度に、アプリケーションの動作にインパクトを与える、またはユーザにインパクトを与える命令を選択することができる。例えば、ソフトウェアパッケージを無効化するリカバリ命令を提供することは、キャッシュされたデータを削除すること、またはユーザにログインを再登録することを求めること、または二次的アプリケーションにユーザへの命令を提供させることよりも、ユーザ体験に対して低いインパクトを作り出すことがある。それに応じて、リカバリ命令は、前のリカバリ命令に従って、リカバリ命令のインパクトのレベルを段階的に上昇させることができる。ソフトウェアパッケージによって引き起こされた問題を自動的に解決するよう試みるために、リカバリ命令モジュール144は、リカバリ命令によりどのソフトウェアモジュールが影響するのかを判定することができる。
【0050】
一実施形態において、リカバリ命令モジュール144は、判定された候補ソフトウェアパッケージリカバリイベントモジュールにアクセスして、リカバリ命令のセットを判定することができる。このケースにおいて、リカバリ命令は、リカバリ命令データストアに記憶されたリカバリ命令のリストのうちの1つであってよい。リストにおけるリカバリ命令の各セットは、欠陥機能および候補ソフトウェアパッケージに以前に関連付けられていることがある。
【0051】
別の実施形態において、リカバリ命令モジュールは、リカバリ命令の要求において受信された情報に基づいて、数個の候補に対する単一の候補ソフトウェアパッケージを、訂正するための異常なソフトウェアパッケージとして選択する。この実施形態において、リカバリ命令モジュールは、多数のソフトウェアパッケージを同時に訂正するのではなく、リカバリ命令のセットにつき1つの候補ソフトウェアパッケージのみを訂正するように構成されてよい。
【0052】
別の例において、要求するアプリケーション102に送られたリカバリ命令のセットは、候補ソフトウェアパッケージ104に関連付けられた、リカバリ命令データストア154に記憶されたリカバリ命令のセットであってもよい。リカバリ命令モジュール144は、判定された欠陥機能およびリカバリ要求に基づいて、記憶されたリカバリ命令のセットを修正することができる。リカバリ命令モジュール144は、修正されたリカバリ命令のセットを、リカバリ命令のセットを要求するアプリケーション102に送ることができる。別の実施形態において、リカバリ命令のセットは、同じようなソフトウェアパッケージおよび修正を実行するアプリケーションに以前に提供され、リカバリ命令データストア154に記憶されたリカバリ命令のセットであってもよい。
【0053】
別の実施形態においては、クライアントデバイス100に提供されたリカバリ命令のセットがクライアントデバイスを維持し、クライアントデバイスは、異常に動作し続ける。クライアントデバイスは再び、リカバリ要求をネットワークシステム130に送る。ここで、ネットワークシステム130は、クライアントデバイスに提供された以前のリカバリ命令のセットと同じようなリカバリ命令のセットを判定することがある。このケースにおいて、リカバリ命令モジュール144は、クライアントデバイスから受信された動作要求が変化していないと判定し、アプリケーションをリカバリするための新しいリカバリ命令のセットを生成することができる。
【0054】
ネットワークシステムは、クライアントデバイスデータストアと、ソフトウェアパッケージデータストアと、リカバリ命令データストアとを含むことができる。クライアントデバイスデータストアは、ソフトウェアパッケージを実行すること、修正を実行すること、ユーザ情報、クライアントデバイス情報などの、クライアントデバイスに関連付けられた情報、記憶された情報のいずれかに関連付けられた動作要求、および記憶された情報のいずれかに関連付けられた機能を記憶することができる。ソフトウェアパッケージデータストアは、アプリケーション102に関連付けられたソフトウェアパッケージ104の全ておよび修正106を含むことができる。リカバリ命令データストア154は、アプリケーション102の機能性をリカバリすることに関連付けられたリカバリ命令の全てを含むことができる。
【0055】
アプリケーションリカバリ
図2は、ネットワークシステム130およびクライアントデバイスがアプリケーションをリカバリするために取ることができるプロセスの例を例証する表である。
【0056】
はじめに、例証されるクライアントデバイス100の全てが、アプリケーション102を実行している。アプリケーションは、環境において、機能210「A」、「B」および「C」を提供することができる。第1の例として、ビンスが彼のクライアントデバイス100a上でアプリケーション102のインターフェースを使用するとき、実行しているアプリケーションは、機能210「A」を提供する。ビンスのクライアントデバイス100aは、機能「A」に関連付けられたソフトウェアパッケージ220「1」および「2」を含む。リカバリソフトウェアパッケージ110は、ネットワークシステム130にリカバリ命令のセットを要求する(230)。例えば、要求は、デバイスプロファイル(すなわち、ハードウェア構成、など)と、アプリケーションプロファイル(すなわち、インストールされたソフトウェアパッケージ、など)とを含む。いくつかの実施形態において、要求は、予期される動作要求と、リカバリソフトウェアパッケージによって判定された異常な動作要求とを含むことができる。ネットワークシステムは、機能210「A」、並びにソフトウェアパッケージ「1」および「2」に関連付けられた予期される動作要求のセット240「θ」を判定する。ビンスのクライアントデバイスは、ソフトウェアパッケージ「1」および「2」がアプリケーションによって実行されるとき、実際の動作要求250「α」を生成する。このように、ネットワークシステム130は、実際の動作要求「α」が異常な動作要求であることを判定する。ネットワークシステム130は、障害判定モジュール142およびリカバリ命令モジュール144を使用して、リカバリ要求および判定された異常な機能、並びに関連付けられたソフトウェアパッケージに基づいて、アプリケーションをリカバリするためのリカバリ命令のセット「Φ」を判定する(260)。
【0057】
続けると、アリスがアプリケーションのインターフェースを使用するとき、実行しているアプリケーションは、機能210「A」を提供する。アリスのクライアントデバイス100b上で実行しているアプリケーション102は、機能「A」に関連付けられたソフトウェアパッケージ220「1」を含む。リカバリソフトウェアパッケージ110は、ネットワークシステム130にリカバリ命令のセットを要求する(230)。この事例において、ネットワークシステム130は、機能「A」およびソフトウェアパッケージ「1」に関連付けられた予期される動作要求240は存在しないことを判定する。アリスのクライアントデバイス100bは、ソフトウェアパッケージ「1」がアプリケーションによって実行されるとき、実際の動作要求250「γ」を生成する。このように、実際の動作要求「γ」は異常な動作要求であり、ネットワークシステム130は、アプリケーションの異常な機能を判定する。ネットワークシステム130は、障害判定モジュール142およびリカバリ命令モジュール144を使用して、受信されたリカバリ要求および判定された異常な機能、並びに関連付けられたソフトウェアパッケージに基づいて、アプリケーションをリカバリするためのリカバリ命令のセット「Δ」を判定する(260)。
【0058】
別の例において、ニックが実行しているアプリケーションのインターフェースを使用するとき、実行しているアプリケーションは、機能210「A」および「B」を提供する。ニックのクライアントデバイス100c上で実行しているアプリケーションは、機能「A」および「B」に関連付けられたソフトウェアパッケージ220「1」および「3」を含む。リカバリソフトウェアパッケージ110は、ネットワークシステム130にリカバリ命令のセットを要求する(230)。ネットワークシステム130は、機能「A」および「B」、並びにソフトウェアパッケージ「1」および「3」に関連付けられた予期される動作要求のセット240「θ」を判定する。ニックのクライアントデバイス100cは、ソフトウェアパッケージ「1」および「3」がアプリケーションによって実行されるとき、実際の動作要求250を生成しない。このケースにおいて、生成される動作要求がないことは、異常な動作要求を指し示し、ネットワークシステムは、アプリケーションの異常な機能を判定する。ネットワークシステムは、障害判定モジュール142およびリカバリ命令モジュール144を使用して、受信されたリカバリ要求および判定された異常な機能、並びに関連付けられたソフトウェアパッケージに基づいて、アプリケーションをリカバリするためのリカバリ命令のセット「Φ」を判定する。
【0059】
最後に、メアリがアプリケーションのインターフェースを使用するとき、実行しているアプリケーションは、機能210「C」を提供する。メアリのクライアントデバイス100dは、機能「C」に関連付けられたソフトウェアパッケージ「2」を含む。リカバリソフトウェアパッケージ110は、ネットワークシステム130にリカバリ命令のセットを要求する(230)。ネットワークシステムは、ソフトウェアパッケージ「2」がアプリケーションによって実行されるとき、予期される動作要求のセット240「α」を判定する。メアリのクライアントデバイスは、ソフトウェアパッケージ「2」がアプリケーションによって実行されるとき、実際の動作要求のセット240「α」を生成する。この例において、異常な動作要求は存在しない。ネットワークシステム130は、機能「C」が正常であることを判定し、メアリのクライアントデバイスに対するリカバリ命令のセットを判定しない(260)。
【0060】
図2で説明された状況は、例として提供される。任意の数のデバイス、機能、ソフトウェアパッケージ、動作要求、およびリカバリ命令が、アプリケーションをリカバリするために使用されてよいことに留意されたい。
【0061】
図3は、いくつかの実施形態に従って、アプリケーションのリカバリを実証するデータフローを例証するデータフロー図である。
図3の代替的実施形態は、より多い、より少ない、または異なるステップを含んでもよく、ステップは、
図3で例証されたもの、および本明細書で説明されたものとは異なる順序で実施されてもよい。一実施形態において、
図3のデータフローは、ネットワークシステム130上で生じ得るが、環境内の任意の要素または要素の組み合わせの上で生じてもよい。
【0062】
はじめに、クライアントデバイスが、アプリケーションを実行しており、正常に機能している。アプリケーションが通常機能を提供しているとき、ネットワークシステムは、ネットワークを介して、クライアントデバイスから動作要求を受信する(310)。ネットワークシステムは、要求に基づいて、動作要求に対する応答をクライアントデバイスに提供する(320)。この実施形態において、ネットワークシステム130は、クライアントデバイスからの動作要求に応え、よって、それが受信する動作要求を解析することができる。解析のための追加の動作要求がまた、アプリケーションからの動作要求に応える他のシステムから受信されてもよく、クライアントデバイス内の動作要求は、リカバリ要求によって提供されてもよい。
【0063】
ネットワークシステム130は、例えば、アプリケーションがリカバリパッケージをロードするとき、またはリカバリパッケージがアプリケーションの異常な機能を識別するとき、アプリケーションを実行するクライアントデバイス100のリカバリパッケージから、ネットワーク120を介して、リカバリ要求を受信する(330)。要求は、動作要求を含む、アプリケーションおよびクライアントデバイスに関する情報、デバイスマニフェスト、アプリケーションマニフェスト、並びにクライアントデバイスデータストアからの情報を含むことができる。障害判定モジュールが、クライアントデバイスの予期される動作を識別する(340)。クライアントデバイスの予期される動作を識別すること(340)は、以前に説明された方法のいずれかにおける、予期される動作要求および異常な動作要求のセットを判定することを含むことができる。
【0064】
続けると、障害判定モジュールが、予期される動作要求と異常な動作要求との識別に基づいて、欠陥機能を識別する(350)。障害判定モジュールは、識別された欠陥機能、受信されたリカバリ要求、異常な動作要求、および予期される動作要求に基づいて、欠陥機能に影響するインストールされたソフトウェアパッケージを識別する(360)。
【0065】
リカバリ命令モジュールが、識別された欠陥機能、動作要求、および受信された要求に基づいて、リカバリ命令のセットを判定する(370)。終わりに、リカバリイベントモジュールが、判定されたリカバリ命令を要求するクライアントデバイスに提供する(380)。
【0066】
図4は、いくつかの実施形態に従って、アプリケーションの機能性をリカバリするためのデータフローを例証するデータフロー図である。
図4の代替的実施形態は、より多い、より少ない、または異なるステップを含んでもよく、ステップは、
図4で例証されたもの、および本明細書で説明されたものとは異なる順序で実施されてもよい。一般に、
図4のデータフローは、クライアントデバイス100上で生じ得るが、環境内の任意の要素または要素の組み合わせの上で生じてもよい。
【0067】
はじめに、クライアントデバイスが、アプリケーションをロードする(410)。アプリケーションは、リカバリソフトウェアパッケージをロードし(420)、アプリケーションのメイン部分をその関連付けられたソフトウェアパッケージとロードする(412)。アプリケーションのメイン部分および関連付けられたソフトウェアパッケージは、動作要求をサーバに提供し(414)、引き換えに動作を受信する(416)。
【0068】
リカバリソフトウェアパッケージは、デバイスプロファイルおよびアプリケーションプロファイルを含むリカバリ要求を、ネットワークシステムに送信する(430)。応答して、リカバリソフトウェアパッケージは、(必要であれば)ネットワークシステムからリカバリ命令のセットを受信する(440)。リカバリソフトウェアパッケージは、リカバリ命令をアプリケーションに適用して(450)、アプリケーションの機能をリカバリする。
【0069】
いくつかの実施形態において、リカバリソフトウェアパッケージは、アプリケーションのメイン部分の生成された動作要求を、それがそれらの機能に関連付けられた動作要求を生成するとき、モニタする(460)。以前に説明されたように、リカバリソフトウェアパッケージは、アプリケーションの異常な機能を識別し(470)、識別されたアプリケーションの異常な機能に基づいて、リカバリ要求をネットワークシステムに送信する(480)ことができる。
【0070】
図5は、マシン可読媒体から命令を読み取り、実行するための例示的なマシンのコンポーネントを例証するブロック図である。とりわけ、
図5は、コンピュータシステム500の例示的な形態でのシステム130およびクライアントデバイス100の図表現を示す。コンピュータシステム500は、本明細書で説明される方法論(またはプロセス)のうちのいずれか1つまたは複数をマシンに実施させるための命令524(例えば、プログラムコードまたはソフトウェア)を実行するために使用されてよい。代替的実施形態において、マシンは、スタンドアロンデバイス、または他のマシンに接続する接続された(例えば、ネットワーク化された)デバイスとして動作する。ネットワーク化された展開において、マシンは、サーバ-クライアントネットワーク環境におけるサーバマシン若しくはクライアントマシンの立場において、またはピアツーピア(または分散化された)ネットワーク環境におけるピアマシンとして動作することができる。
【0071】
マシンは、サーバコンピュータ、クライアントコンピュータ、パーソナルコンピュータ(PC)、タブレットPC、セットトップボックス(STB)、スマートフォン、モノのインターネット(IoT)アプライアンス、ネットワークルータ、スイッチ若しくはブリッジ、またはそのマシンによって取られることになるアクションを指定する命令524を(順次に、または別のやり方で)実行することが可能な任意のマシンであってよい。さらに、単一のマシンのみが例証されているが、用語「マシン」はまた、本明細書で議論された方法論のうちのいずれか1つまたは複数を実施するために、個々に、または共同で命令524を実行するマシンの任意の集まりを含むように解釈されるものとする。
【0072】
例示的なコンピュータシステム500は、1つまたは複数の処理ユニット(一般に、プロセッサ502)を含む。プロセッサ502は、例えば、中央処理ユニット(CPU)、グラフィックス処理ユニット(GPU)、デジタル信号プロセッサ(DSP)、コントローラ、ステートマシン、1つ若しくは複数の特定用途向け集積回路(ASIC)、1つ若しくは複数の無線周波数集積回路(RFIC)、またはこれらの任意の組み合わせである。コンピュータシステム500はまた、メインメモリ504を含む。コンピュータシステムは、ストレージユニット516を含んでもよい。プロセッサ502、メモリ504、およびストレージユニット516は、バス508を介して通信する。
【0073】
追加として、コンピュータシステム500は、静的メモリ506、(例えば、プラズマ表示パネル(PDP)、液晶表示(LCD)、またはプロジェクタを駆動するための)グラフィックス表示装置510を含むことができる。コンピュータシステム500はまた、英数字入力デバイス512(例えば、キーボード)、カーソル制御デバイス514(例えば、マウス、トラックボール、ジョイスティック、動きセンサ、または他のポインティング器具)、信号生成デバイス518(例えば、スピーカ)、およびネットワークインターフェースデバイス520を含むことができ、これらもまたバス508を介して通信するように構成される。
【0074】
ストレージユニット516は、本明細書で説明される方法論または機能のうちのいずれか1つ若しくは複数を具現化する命令524(例えば、ソフトウェア)がその上に記憶されるマシン可読媒体522を含む。例えば、命令524は、
図1で説明されたシステム130のモジュールの機能性を含むことができる。命令524はまた、コンピュータシステム500によるそれの実行の間、メインメモリ504内またはプロセッサ502内(例えば、プロセッサのキャッシュメモリ内)に、完全に、または少なくとも部分的に常駐することができ、メインメモリ504およびプロセッサ502はまた、マシン可読媒体を成している。命令524は、ネットワークインターフェースデバイス520を介して、ネットワーク526上で送信されても、または受信されてよい。
【0075】
マシン可読媒体522は例示的な実施形態において単一の媒体として示されているが、用語「マシン可読媒体」は、命令524を記憶することができる単一の媒体または多数の媒体(例えば、集中化若しくは分散化されたデータベース、または関連付けられたキャッシュおよびサーバ)を含むように解釈されるべきである。用語「マシン可読媒体」はまた、マシンによる実行のための、かつ本明細書で開示された方法論のうちのいずれか1つまたは複数をマシンに実施させる命令524を記憶することが可能な任意の媒体を含むように解釈されるものとする。用語「マシン可読媒体」は、ソリッドステートメモリ、光学媒体、および磁気媒体の形態でのデータリポジトリを含むが、それに限定はされない。
【0076】
代替的検討事項
実施形態の上述の説明は、例証の目的のために提示されており、網羅的であること、または特許権を開示された厳密な形態に限定することも意図されていない。当業者は、上の開示に照らして多くの修正および変形が可能であることを認めることができる。例えば、本開示は、潜在的な安全上の出来事におけるプロバイダの関与を予測することを議論するが、本明細書における方法およびシステムは、より一般的に、機械学習モデルを使用して潜在的な出来事における関与を予測したい任意の目的のために使用されてもよい。
【0077】
この説明のいくつかの部分は、情報に対する動作のアルゴリズムおよび記号的表現の点から実施形態を説明している。これらのアルゴリズムの説明および表現は、データ処理技術における当業者によって、彼らの仕事の内容を他の当業者に効果的に伝えるためによく使用される。これらの動作は、機能的に、計算的に、または論理的に説明されながら、コンピュータプログラム、または同等の電気回路、マイクロコード、その他によって実装されることになると理解される。さらに、一般性を損なうことなく、動作のこれらの配列をモジュールと呼ぶことが時に好都合であることもまた分かっている。説明された動作およびそれらの関連付けられたモジュールは、ソフトウェア、ファームウェア、ハードウェア、またはそれらの任意の組み合わせで具現化されてよい。
【0078】
本明細書で説明されるステップ、動作、またはプロセスのいずれも、1つ若しくは複数のハードウェアまたはソフトウェアモジュールを用いて、単独で、または他のデバイスとの組み合わせで実施または実装されてよい。一実施形態において、ソフトウェアモジュールは、説明されたステップ、動作、またはプロセスのいずれかまたは全てを実施するための、コンピュータプロセッサによって実行され得るコンピュータプログラムコードを収容するコンピュータ可読媒体を含むコンピュータプログラム製品で実装される。
【0079】
実施形態はまた、本明細書における動作を実施するための装置に関することがある。この装置は、求められる目的のために特別に組み立てられてもよく、および/または、それは、コンピュータに記憶されたコンピュータプログラムによって、選択的にアクティブにされる、または再構成される汎用コンピューティングデバイスを含んでもよい。そのようなコンピュータプログラムは、コンピュータシステムバスに結合され得る、非一時的な有形のコンピュータ可読記憶媒体、または電子命令を記憶するために好適な任意のタイプの媒体に記憶されてよい。さらに、本明細書で言及されたあらゆるコンピューティングシステムは、単一のプロセッサを含んでもよいし、または増加されるコンピューティング性能のために多数のプロセッサ設計を採用するアーキテクチャであってもよい。
【0080】
実施形態はまた、本明細書で説明されるコンピューティングプロセスによって生み出される製品に関することがある。そのような製品は、コンピューティングプロセスからの結果による情報を含むことができ、ここで情報は、非一時的な有形のコンピュータ可読記憶媒体上に記憶され、本明細書で説明されるコンピュータプログラム製品または他のデータの組み合わせの任意の実施形態を含むことができる。
【0081】
最後に、本明細書で使用される言語は、主に読みやすさおよび教育的な目的のために選択されており、それは本発明の主題を線引きする、または制限するために選択されていないことがある。従って、特許権の範囲は、この詳細な説明によって限定されるのではなく、むしろ本明細書に基づいた出願に発生する任意の請求項によって限定されることが意図される。それに応じて、実施形態の開示は、以下の特許請求の範囲に記述される特許権の範囲の限定ではなく、例証であることが意図される。