(57)【要約】アプリケーションリカバリシステムが、アプリケーションが異常に動作していることを判定してアプリケーションにリカバリ命令を提供することによって、クライアントデバイス上で実行しているアプリケーションをリカバリするように構成される。クライアントデバイス上で実行しているアプリケーションは、アプリケーションのメイン部分と、アプリケーションのリカバリ部分とを含む。アプリケーションのリカバリ部分は、リカバリ命令の要求をネットワークシステムに送る。ネットワークシステムは、リカバリ要求を受信し、アプリケーションのメイン部分によって生成された動作要求を解析して、欠陥機能およびそれらの関連付けられたソフトウェアパッケージを識別する。リカバリ命令は、識別された欠陥機能およびそれらの関連付けられたソフトウェアパッケージに基づいて判定され、クライアントデバイスに送られる。クライアントデバイスは、リカバリ命令を適用して、アプリケーションが正常な動作をリカバリするように、アプリケーションを修正する。
2020528620.tif 000002
【特許請求の範囲】
【請求項１】
アプリケーションの機能性をリカバリするための方法であって、
ネットワークシステムによって、（i）前記ネットワークシステムから遠隔にあり、かつ（ii）メイン部分およびリカバリ部分を有するアプリケーションを実行しているデバイスから、リカバリ命令の要求を受信するステップであって、前記要求は、前記アプリケーションの前記リカバリ部分によって生成され、前記アプリケーションの前記メイン部分の動作に影響するソフトウェアパッケージのセットを指定する、ステップと、
前記アプリケーションの前記メイン部分の動作を反映する動作要求のセットを識別するステップと、
前記動作要求のセットと、前記ソフトウェアパッケージのセットに関連付けられた予期される動作要求のセットとの違いに少なくとも部分的に基づいて、前記アプリケーションの前記メイン部分を修正するためのリカバリ命令のセットを判定するステップと、
前記リカバリ命令のセットを前記デバイスに提供するステップと
を含む方法。
【請求項２】
前記アプリケーションの前記メイン部分の機能のセットから少なくとも１つの欠陥機能を識別するステップであって、各欠陥機能は前記アプリケーションの前記メイン部分の動作に影響する前記ソフトウェアパッケージのセットのうちの少なくとも１つに関連付けられている、ステップをさらに含み、
前記リカバリ命令のセットを判定するステップは、前記少なくとも１つの欠陥機能に関連付けられた前記ソフトウェアパッケージのセットのうちの前記少なくとも１つを修正するための命令を判定するステップを含む
請求項１の方法。
【請求項３】
前記少なくとも１つの欠陥機能の動作に影響する候補ソフトウェアパッケージのセットを識別するステップと、
前記候補ソフトウェアパッケージのセットから１つまたは複数のソフトウェアパッケージを選択するステップと
をさらに含む、請求項２の方法。
【請求項４】
少なくとも１つの候補ソフトウェアパッケージを識別するステップは、
候補ソフトウェアパッケージのセットによって影響される候補動作要求のセットを識別するために、前記アプリケーションの前記メイン部分の静的解析を実施するステップと、
受信された動作要求および前記候補ソフトウェアパッケージに関連付けられた前記候補動作要求に基づいて、前記候補ソフトウェアパッケージのセットから異常なソフトウェアパッケージを選択するステップと
を含む、請求項３の方法。
【請求項５】
少なくとも１つの候補ソフトウェアパッケージを識別するステップは、前記候補ソフトウェアパッケージのセットおよび前記デバイスの受信された動作要求のセットと、候補ソフトウェアパッケージの第２のセットおよび第２のデバイスの受信された動作要求の第２のセットとの比較に基づく、請求項３の方法。
【請求項６】
前記第２のデバイスが正常に動作しているとき、前記比較は、前記デバイスと前記第２のデバイスとの間で相違したソフトウェアパッケージを候補ソフトウェアパッケージとして識別する、請求項５の方法。
【請求項７】
前記第２のデバイスが異常に動作しているとき、前記比較は、第１のデバイスと前記第２のデバイスとの間で同じようなソフトウェアパッケージを候補ソフトウェアパッケージとして識別する、請求項５の方法。
【請求項８】
機能のセットに基づいて、前記アプリケーションの前記メイン部分の動作を反映する予期される動作要求のセットを識別するステップをさらに含み、
前記リカバリ命令のセットを判定するステップは、前記予期される動作要求のセットにさらに基づく、請求項１の方法。
【請求項９】
前記リカバリ命令のセットは、前記デバイスにインストールされた第２のアプリケーションを実行するための命令を含む、請求項１の方法。
【請求項１０】
前記リカバリ命令のセットを修正するステップは、
以前に提供されたリカバリ命令のセットを識別するステップを含み、
前記リカバリ命令のセットは、前記以前に提供されたリカバリ命令のセットに基づく
請求項１の方法。
【請求項１１】
前記リカバリ命令のセットを修正するステップは、
ソフトウェアパッケージの同じようなセットを備える前記アプリケーションを実行するデバイスのセットを判定するステップと、
前記リカバリ命令のセットを前記デバイスのセットに送るステップと
を含む、請求項１の方法。
【請求項１２】
アプリケーションをリカバリする工程を実施するシステムのプロセッサによって実行可能なコンピュータプログラム命令を記憶する非一時的なコンピュータ可読記憶媒体であって、前記コンピュータプログラム命令は、前記プロセッサによって実行されると、前記プロセッサに、
ネットワークシステムによって、（i）前記ネットワークシステムから遠隔にあり、かつ（ii）メイン部分およびリカバリ部分を有するアプリケーションを実行しているデバイスから、リカバリ命令の要求を受信することであって、前記要求は、前記アプリケーションの前記リカバリ部分によって生成され、前記アプリケーションの前記メイン部分の動作に影響するソフトウェアパッケージのセットを指定する、ことと、
前記アプリケーションの前記メイン部分の動作を反映する、前記デバイスから受信された動作要求のセットを識別することと、
前記動作要求のセットと、前記ソフトウェアパッケージのセットに関連付けられた予期される動作要求のセットとの違いに少なくとも部分的に基づいて、前記アプリケーションの前記メイン部分を修正するためのリカバリ命令のセットを判定することと、
前記リカバリ命令のセットを前記デバイスに提供することと
を実施させる、非一時的なコンピュータ可読記憶媒体。
【請求項１３】
前記アプリケーションの前記メイン部分の機能のセットから少なくとも１つの欠陥機能を識別することであって、各欠陥機能は前記アプリケーションの前記メイン部分の動作に影響する前記ソフトウェアパッケージのセットのうちの少なくとも１つに関連付けられている、ことをさらに含み、
前記リカバリ命令のセットを判定することは、前記少なくとも１つの欠陥機能に関連付けられた前記ソフトウェアパッケージのセットのうちの前記少なくとも１つを修正するための命令を判定することを含む
請求項１２の非一時的なコンピュータ可読記憶媒体。
【請求項１４】
前記少なくとも１つの欠陥機能の動作に影響する候補ソフトウェアパッケージのセットを識別することと、
前記候補ソフトウェアパッケージのセットから１つまたは複数のソフトウェアパッケージを選択することと
をさらに含む、請求項１３の非一時的なコンピュータ可読記憶媒体。
【請求項１５】
前記少なくとも１つの候補ソフトウェアパッケージを識別することは、
候補ソフトウェアパッケージのセットによって影響される候補動作要求のセットを識別するために、前記アプリケーションの前記メイン部分の静的解析を実施することと、
受信された動作要求および前記候補ソフトウェアパッケージに関連付けられた前記候補動作要求に基づいて、前記候補ソフトウェアパッケージのセットから異常なソフトウェアパッケージを選択することと
を含む、請求項１４の非一時的なコンピュータ可読記憶媒体。
【請求項１６】
前記少なくとも１つの候補ソフトウェアパッケージを識別することは、前記候補ソフトウェアパッケージのセットおよび前記デバイスの受信された動作要求のセットと、候補ソフトウェアパッケージの第２のセットおよび第２のデバイスの受信された動作要求の第２のセットとの比較に基づく、請求項１４の非一時的なコンピュータ可読記憶媒体。
【請求項１７】
前記第２のデバイスが正常に動作している場合、前記比較は、第１のデバイスと前記第２のデバイスとの間で相違したソフトウェアパッケージを候補ソフトウェアパッケージとして識別する、請求項１６の非一時的なコンピュータ可読記憶媒体。
【請求項１８】
前記第２のデバイスが異常に動作しているとき、前記比較は、前記デバイスと前記第２のデバイスとの間で同じようなソフトウェアパッケージを候補ソフトウェアパッケージとして識別する、請求項１６の非一時的なコンピュータ可読記憶媒体。
【請求項１９】
機能のセットに基づいて、前記アプリケーションの前記メイン部分の動作を反映する予期される動作要求のセットを識別することをさらに含み、
前記リカバリ命令のセットを判定することは、前記予期される動作要求のセットにさらに基づく、請求項１２の非一時的なコンピュータ可読記憶媒体。
【請求項２０】
前記リカバリ命令のセットは、前記デバイスにインストールされた第２のアプリケーションを実行するための命令を含む、請求項１２の非一時的なコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本説明は、一般に、デバイス上で実行しているアプリケーションの機能性を回復することに関し、より詳細には、アプリケーションの機能性を回復するために、デバイス上で実行している異常なソフトウェアパッケージを検出し、判定し、訂正することに関する。
【背景技術】
【０００２】
クライアントデバイスおよびそれらのインストールされたアプリケーションは、アプリケーションに含まれたソフトウェアパッケージの実行を通じて、様々な機能をユーザに提供する。例えば、アプリケーションは、インターネット上の情報にアクセスする、ユーザ間でメッセージを送る、その他の能力を提供することによって、旅行を調整するためにユーザを接続する機能を提供することができる。クライアントデバイスおよびアプリケーションが修正されるとき、これらの修正がアプリケーションの実行に影響し、アプリケーションの機能が異常になることを引き起こして、アプリケーション動作目標の効果的な完遂を妨げることがある。
【０００３】
いくつかの事例において、機能不良のアプリケーションは、アプリケーションが最適ではない状態で動作するのを許可するユーザによって認識されなくなり、アプリケーションが十分な機能性を実現するのを妨げることがある。より害のあるケースでは、機能不良はユーザによって認識され得るものの、機能不良それ自体が、ユーザがアプリケーションを回復することを妨げる。従って、アプリケーションの欠陥機能を自動的に検出し、訂正するための方法を提供することが望ましい。
【発明の概要】
【０００４】
アプリケーションリカバリシステム（本明細書において、簡略化のために「システム」とも呼ばれる）が、異常なアプリケーションの動作を識別してアプリケーションを適正な動作に戻すためのアクションを取ることによって、アプリケーションをリカバリする。アプリケーションリカバリは、異種のクライアントデバイスが、同じアプリケーションを動作させて同じ機能を提供するが、異なるように構成されている環境において、挑戦的である。例えば、第１のクライアントデバイスがソフトウェアパッケージの第１のセットを備えたアプリケーションを含み、第２のクライアントデバイスがソフトウェアパッケージの第２のセットを備えたアプリケーションを含む、２つのクライアントデバイスが同じ機能を提供する。インストールされたソフトウェアパッケージを通じて、各アプリケーションは、アプリケーションの機能を提供するサービスにおいてアプリケーションリカバリシステムと通信しているサーバへの動作要求のセットを生成する。例えば、ライダーとプロバイダとの間で旅行を調整するためのアプリケーションを提供するために、ライダーのデバイスは、ライダーの場所を指定する、目的地について照会する、地図データを表示する、その他のための動作要求を生成することができる。欠陥機能を識別し、訂正し、リカバリ命令のセットを判定するために、システムは、デバイスのためにインストールされたソフトウェアパッケージ、およびデバイスによって生成された動作要求を識別する。
【０００５】
本明細書における例によれば、リカバリ命令のセットを判定するために、ネットワークシステムが、最初にアプリケーションの異常な動作を識別する。アプリケーションの異常な動作は、アプリケーションに関連付けられた少なくとも１つの欠陥機能が存在することを示す。ネットワークシステムは、例えば、実行しているソフトウェアアプリケーションの生成された動作要求を解析することによって、異常な動作を識別することができる。クライアントデバイスは、インストールされたソフトウェアパッケージ（またはインストールされたソフトウェアパッケージの識別子）を含むリカバリ命令の要求をネットワークシステムに送って、欠陥機能を識別するのを支援する。
【０００６】
ネットワークシステムは、受信されたインストールされたソフトウェアパッケージ（またはインストールされたソフトウェアパッケージの識別子）を使用して、アプリケーションの予期される動作を識別する。識別された予期される動作に基づいて、ネットワークシステムは、アプリケーションの動作に影響していることがある欠陥機能、およびそれらの関連付けられたソフトウェアパッケージを識別する。識別は、リカバリ要求、クライアントデバイスデータストア、ソフトウェアパッケージデータストア、またはリカバリ命令データストアなどの、システムに含まれる任意の情報に基づいていてよい。
【０００７】
ネットワークシステムは、識別された欠陥機能、関連付けられたソフトウェアパッケージ、および／またはアプリケーションの動作のための環境における任意の他の情報に基づいて、要求するクライアントデバイスのためのリカバリ命令のセットを判定する。一例において、リカバリ命令は、クライアントデバイスによって実行されるとき、ソフトウェアパッケージを無効化し、修正し、または削除することができる。リカバリ命令のセットを判定するとき、ネットワークシステムはまた、同じようなソフトウェアパッケージを有する他の要求のために、リカバリ命令のセットを修正することができる。リカバリ命令のセットを判定した後で、ネットワークシステムは、リカバリ命令を、要求するクライアントデバイスに提供する。要求するクライアントデバイスは、アプリケーションがリカバリされるように、リカバリ命令をクライアントデバイスおよびアプリケーションに適用する。
【０００８】
この概要並びに以下の詳細な説明において説明される特徴および利点は、全てを包括するものではない。多くの追加の特徴および利点が、本書の図面、明細書、および特許請求の範囲を考慮して、当業者には明らかとなるであろう。
【図面の簡単な説明】
【０００９】
【図１】いくつかの実施形態に従って、機能不良のアプリケーションをリカバリすることができる旅行調整システムのためのシステム環境の高レベルブロック図である。
【図２】いくつかの例示的な実施形態に従って、アプリケーションをリカバリするためのリカバリ命令のセットを判定するために使用される、数個のクライアントデバイスおよびそれらの関連付けられた機能、並びに動作要求の表の図である。
【図３】いくつかの実施形態に従って、ネットワークシステムがアプリケーションをリカバリするための方法を例証するフロー図である。
【図４】いくつかの実施形態に従って、クライアントデバイスがアプリケーションをリカバリするための方法を例証するフロー図である。
【図５】いくつかの実施形態に従って、マシン可読媒体から命令を読み出し、実行するためのマシンの例証の図である。
【発明を実施するための形態】
【００１０】
図面は、例証の目的のためだけに本発明の実施形態を表す。当業者は、以下の説明から、本明細書で例証される構造および方法の代替的実施形態が、本明細書で説明される本発明の原理から逸脱せずに採用され得ることを容易に認識するであろう。
【００１１】
最新のクライアントデバイスは、ほとんどあらゆるタイプの環境において幅広い範囲の機能を成し遂げることができる。機能は、クライアントデバイス上で実行しているアプリケーションによって達成される。この説明のコンテキストにおいて、機能は、クライアントデバイス上で実行しているアプリケーションの高レベルな動作目標に相当する。いくつかの事例において、アプリケーションは、機能不良であることがあり、クライアントデバイスは、環境においてアプリケーションの機能を提供しない（または不適正に提供する）ことがある。数個のクライアントデバイス１００が同じアプリケーションを実行し、同じ機能を提供しているが、各クライアントデバイスが異なるバージョンのアプリケーションをインストールされている環境においては、個々のクライアントデバイス上で機能不良の原因を判定することが困難である。
【００１２】
図１は、いくつかの実施形態に従って、ネットワークシステム１３０を介して、クライアントデバイス１００上の機能不良のアプリケーションをリカバリするためのシステム環境の高レベルブロック図である。図１は、クライアントデバイス１００と、ユーザ１０８と、ネットワーク１２０と、ネットワークシステム１３０とを含む。システム環境の代替的実施形態は、任意の数のユーザデバイス１００、並びに多数のネットワークシステム１３０を有することができる。図１の様々なエンティティによって実施される特定の機能は、異なる実施形態において多様であってよい。例えば、システム１３０は、ユーザ間で旅行を調整するために使用されてよく、各ユーザは、それぞれのユーザデバイス１００を操作する。
【００１３】
各クライアントデバイス１００は、アプリケーション１０２を実行するために、１人または複数のユーザ１０８によって使用されるコンピューティングデバイスである。クライアントデバイス１００は、例えば、クライアントデバイス１００のユーザインターフェースを介してネットワークシステム１３０と対話するアプリケーション１０２を実行するモバイルコンピューティングシステムであってよい。他の実施形態において、クライアントデバイス１００は、任意の他のネットワーク対応デバイスである。
【００１４】
ユーザ１０８がクライアントデバイス１００を操作するとき、アプリケーション１０２は、環境において任意の数の機能を実施することができる。この説明のコンテキストにおいて、機能は、クライアントデバイス１００上で実行しているアプリケーション１０２の高レベルな動作目標に相当する。例えば、機能を実施することは、ユーザ間で旅行を調整することであってよい。追加として、各アプリケーション１０２は、任意の数の機能を含むことができ、各機能は、任意の数のサブ機能を有することができる。サブ機能は、全体として機能を形成する、機能のさらなる分割であってよい。上の例を使用すれば、ユーザ間で旅行を調整する機能は、ユーザに旅行を提供するサブ機能、およびユーザに旅行を要求するサブ機能を有することができる。
【００１５】
アプリケーションが適切に実行しているとき、アプリケーションの機能は、アプリケーションの動作目標を提供する。反対に、機能不良のアプリケーションにおいて、機能は不適正に実行しており、アプリケーションの動作目標を提供しない。この開示のコンテキストにおいて、適正に実行している機能は、通常機能と呼ばれることになり、不適正に実行している機能は、欠陥機能と呼ばれることになる。同じように、アプリケーションの動作目標を首尾よく提供するアプリケーションは、正常に動作すると説明され、アプリケーションの動作目標を提供しないアプリケーションは、異常に動作すると説明される。
【００１６】
クライアントデバイス１００は、それぞれのクライアントデバイス１００のプロセッサ上で実行しているアプリケーション１０２および二次的アプリケーション１１４などのソフトウェアアプリケーションを含む。クライアントデバイス１００上で実行しているアプリケーション１０２は、環境において機能を実施する。二次的アプリケーション１１４は、アプリケーション１０２のリカバリに関連付けられた機能を実施する（例えば、リカバリ命令のセットをロードする、またはリカバリ命令のセットを実行する）ことができる。いくつかの実施形態において、二次的アプリケーション１１４の機能性は、アプリケーション１０２に含まれる。追加として、アプリケーションとリカバリアプリケーションとは、互いに、およびネットワーク１２０を介してネットワークシステム１３０と通信することができる。アプリケーション１０２（および１１４）の例は、トランスポート調整アプリケーション、ウェブブラウザ、ソーシャルネットワーキングアプリケーション、メッセージングアプリケーション、ゲーミングアプリケーション、メディア消費アプリケーション、その他であってよい。各アプリケーション１０２は、クライアントデバイス１００、クライアントデバイスユーザ１０８、またはクライアントデバイスユーザのグループに関連付けられた、ネットワークシステム１３０上のユーザアカウントにリンクされてよい。
【００１７】
アプリケーション１０２は、アプリケーションの機能を実行するためのいくつかのソフトウェアパッケージ１０４を含む。ソフトウェアパッケージ１０４は、アプリケーション１０２の機能を可能にし、それが環境において実行しているとき、アプリケーションの様々な動作アクティビティに影響する。本明細書において言及されるとき、ソフトウェアパッケージ１０４は、クライアントデバイス１００のプロセッサ上で動作するコンピュータ命令のセットである。いくつかの実施形態において、ソフトウェアパッケージ１０４は、ハードウェア（例えば、計算論理を含むハードウェア）、ファームウェア、および／またはソフトウェアパッケージ１０４の実行を許可する任意の他のコンポーネントにおいて実装されてよい。ソフトウェアパッケージ１０４は、開示された方法の一実施形態に相当し、他の実施形態は、他のソフトウェアパッケージ１０４を含むことができる。
【００１８】
例えば、第１のクライアントデバイス１００ａ上で実行しているアプリケーション１０２の機能は、旅行を調整することである（例えば、旅行調整アプリケーション）。第１のクライアントデバイス１００ａ上で実行しているアプリケーション１０２は、旅行調整アプリケーションの機能を実行するためのソフトウェアパッケージ１０４ａおよび１０４ｂを含む。さらにコンテキストを提供すると、ソフトウェアパッケージ１０４ａは、ユーザ間で旅行を調整することに関連付けられており、一方、ソフトウェアパッケージ１０４ｂは、ネットワークとインターフェース接続することに関連付けられており、それらの両方が、アプリケーションの機能に関連付けられている。いくつかのケースにおいて、ソフトウェアパッケージは、アプリケーションの動作アクティビティに影響することなく、アプリケーションの動作についてのパラメータ（例えば、ソフトウェア設定）を指定することができる。
【００１９】
他の実施形態において、様々なクライアントデバイス１００は、同じ機能を達成するために、任意の数の同じような、または相違したソフトウェアパッケージ１０４を稼働することができる。これらの実装のいずれかにおいて、ソフトウェアパッケージ１０４は、クライアントデバイスのコンピュータ可読永続ストレージデバイス上に記憶され、メモリの中にロードされ、クライアントデバイスのコンピュータの１つまたは複数のプロセッサによって実行され得る。例えば、第２のクライアントデバイス１００ｂ上で実行しているアプリケーション１０２は、トランスポート調整アプリケーションである。第２のクライアントデバイス１００ｂ上で実行しているアプリケーション１０２は、旅行を調整することに関連付けられた同じようなソフトウェアパッケージ１０４ａを含む。しかしながら、第２のクライアントデバイス１００ｂ上で実行しているアプリケーション１０２は、ネットワークとインターフェース接続することに関連付けられた相違したソフトウェアパッケージ１０４ｃを含む。この例において、デバイス１００が異なるモデルであることから、各デバイス上でネットワークとインターフェース接続することに関連付けられたソフトウェアパッケージは、相違している。
【００２０】
代替的実施形態において、アプリケーション１０２は、本明細書で説明されるソフトウェアパッケージ１０４を欠く、および／または、ソフトウェアパッケージ１０４の中で機能性を異なるやり方で促進することがある。説明された実施形態において、ソフトウェアパッケージ１０４は、アプリケーション１０２の一部を形成するスタンドアロンソフトウェアパッケージとして実装される。しかしながら、ソフトウェアパッケージはまた、アプリケーションそれ自体の部分であることなしに、アプリケーション１０２の動作に影響することがある。例えば、アプリケーション１０２に影響するソフトウェアパッケージ１０４は、他のアプリケーションにもまた影響する、より大きくてより複雑なソフトウェアパッケージの一部であることがある。同様に、ソフトウェアパッケージ１０４は、１つまたは複数の、静的にまたは動的にリンクされたライブラリであってもよい。
【００２１】
アプリケーション１０２の動作の間、動作要求のセット（例えば、場所情報を受信する、トランスポートプロバイダを要求する、など）が通常生成され、アプリケーションの機能に関連付けられる。これらの動作要求は、特定のアプリケーションにインストールされたソフトウェアパッケージによって修正される、または影響されることがある。例によれば、ユーザは、ユーザデバイス１００のインターフェースを介して、アプリケーション１０２を操作する。ユーザデバイス１００（またはその上の対応するアプリケーション）は、ソフトウェアパッケージ１０４の実行、および生成されていることも、いないこともある動作要求を説明するデータを集める。正常な動作の間、ソフトウェアアプリケーションによって生成された動作要求の適正な実行は、環境においてアプリケーションの通常機能を全体として実施する。
【００２２】
大まかに、動作要求は、環境において機能の実行を促進する、アプリケーション１０２の任意の動作として説明されてよい。これらの要求は、通常、アプリケーションの機能、およびクライアントデバイスの他のコンポーネントへの要求またはネットワーク上の他のシステムへの要求などの、アプリケーションから他のサービスまたはデバイスへの要求を反映する。追加の例として、動作要求は、クライアントデバイスインターフェースを介してクライアントデバイスへの入力を受信すること、クライアントデバイスインターフェースを介してクライアントデバイス上で出力を生み出すこと、任意の他のクライアントデバイスインターフェース対話、サーバへの要求、サーバからの入力、他のソフトウェアパッケージへの要求、他のソフトウェアパッケージからの入力、他のアプリケーションへの要求、他のアプリケーションからの入力、データベースへの要求、データベースからの入力、クライアントデバイスのコンポーネント（例えば、アンテナ、ユーザインターフェース、スピーカ、その他）からの入力、または環境においてアプリケーションによって生成され得る任意の他の動作要求を含むことができる。
【００２３】
別の例を提供すると、第１のクライアントデバイス１００ａ上で実行しているアプリケーション１０２は、トランスポートを調整する機能を提供する。第１のクライアントデバイス１００ａ上で実行しているアプリケーション１０２は、実行されるとき、トランスポートを調整するために、ユーザ１０８がネットワークシステム１３０と対話することを共に許可する動作要求のセットを生み出すソフトウェアパッケージ１０４を含む。一例において、アプリケーション１０２は、実行されるとき、クライアントデバイスの場所を判定するための動作要求を生成するソフトウェアパッケージ１０４ａを含む。追加として、アプリケーション１０２は、実行されるとき、ネットワークシステム１３０に旅行を要求するための動作要求を生成するソフトウェアパッケージ１０４ｂを含む。
【００２４】
いくつかの実施形態において、一般には動作要求を実行することと呼ばれるが、所与の機能またはソフトウェアパッケージの動作要求は、ユーザ１０８がインターフェースと対話するときにユーザデバイス１００からの通信の連続としてネットワークシステム１３０に送られてもよい。同じように、動作要求は、デバイス内動作要求実行の間、区分的なやり方で送られてもよい。同様に、ネットワークシステム１３０は、リカバリ命令を、通信の連続としてクライアントデバイス１００に送ることができる。
【００２５】
以前に説明されたように、アプリケーション１０２のソフトウェアパッケージ１０４の実行は、環境においてアプリケーションの通常機能を全体として提供する動作要求を生成する。通常、正常な動作の間、各ソフトウェアパッケージ１０４は、実行されるとき、動作要求の固有のセットを生成する。これらの動作要求は、予期される動作要求と称される。予期される動作要求は、システム内で多様な方法を使用して判定されてよい。例えば、アプリケーション１０２のプログラマがアプリケーションまたはソフトウェアパッケージの配布に先立って予期される動作要求を判定してもよいし、予期される動作要求がソフトウェアパッケージデータストアに記憶されてよいし、クライアントデバイスのユーザがクライアントデバイスのために予期される動作要求を設定してもよいし、ネットワークシステムがソフトウェアパッケージの静的解析を実施してもよいし、ネットワークシステムが環境における別のエンティティから予期される動作要求のセットを受信してもよいし、ネットワークシステムが環境内で正常に機能するクライアントデバイスに基づいて予期される動作要求のセットを構築してもよい、などである。いくつかの実施形態において、予期される動作要求はまた、予期される動作要求がいつ生じるかを示すタイミングまたは順序構造を含んでもよい。
【００２６】
しかしながら、アプリケーションが異常に動作している場合、アプリケーションは、少なくとも１つの欠陥機能を含むことがある。いくつかのケースにおいて、欠陥機能は、機能不良であるソフトウェアパッケージによって引き起こされる。これらのソフトウェアパッケージは、異常なソフトウェアパッケージと称される。異常なソフトウェアパッケージは、予期される動作要求とは異なる動作要求を生成することがある。一例示的な実施形態において、３つのタイプの異なる動作要求、すなわち、予期される動作要求に追加して生成される追加の動作要求（例えば、余分な動作要求）、予期される動作要求の代わりに生成される動作要求（例えば、置換動作要求）、および予期される動作要求からの動作要求の欠如（例えば、足りない動作要求）があり得る。便宜上、これらの動作要求は、全体として異常な動作要求と呼ばれる。従って、アプリケーションが異常に動作しているとき、それは、アプリケーションの機能を提供することに失敗した異常な動作要求を生成することがある。一例において、異常な動作要求は、クラッシュ報告に含まれる。同じような実施形態において、ネットワークシステムは、異常な動作要求からクラッシュ報告を生成することができる。
【００２７】
いくつかの事例において、アプリケーションは、異常な動作要求をなおも生み出しながら、機能を正常に首尾よく提供することがある。すなわち、生成された異常な動作要求が、アプリケーションの動作目標を阻止しないことがある。これらのケースにおいて、異常な動作要求は、環境においてアプリケーションの機能を非効率に実行すると見られてよい。機能はなおも提供され得る（かつユーザの観点からは明らかなエラーは存在しないことがある）が、本明細書で説明されるものなどの同じような方法は、非効率なアプリケーションを識別し、訂正するために使用されてよい。
【００２８】
アプリケーションはまた、リカバリソフトウェアパッケージ１１０を含むことができる。リカバリソフトウェアパッケージ１１０は、アプリケーション１０２のためのリカバリ命令を要求し、適用する。一事例において、リカバリ命令の要求および適用は、クライアントデバイス上でアプリケーションが実行される各インスタンスで（例えば、アプリケーションローディングの間）生じる。リカバリソフトウェアパッケージ１１０はまた、アプリケーション１０２の動作要求をモニタすることができる。これらの動作要求は、リカバリ命令の要求の一部として、リカバリソフトウェアパッケージ１１０によってネットワークシステム１３０に提供されてよい。代替的実施形態において、リカバリソフトウェアパッケージは、任意の他の時間（例えば、ユーザからの入力に基づいて、ネットワークシステムから受信された通知に基づいて、時間閾値に基づいて、デバイスデータストアに記憶された情報に基づいて、など）に、リカバリ命令を要求し、適用することができる。
【００２９】
一例において、リカバリソフトウェアパッケージ１１０は、ネットワーク１２０を介して、ネットワークシステム１３０にリカバリ命令のセットを要求する。リカバリ命令のセットは、アプリケーション１０２、二次的アプリケーション１１４、またはクライアントデバイス１００によって適用されるとき、アプリケーションの機能を修正することができる。例えば、リカバリ命令は、異常な機能が正常な機能に戻るように、アプリケーション（またはクライアントデバイス）を修正する。
【００３０】
例によれば、リカバリ命令の要求は、アプリケーション１０２の異常な機能を判定するために、リカバリソフトウェアパッケージ１１０によってネットワークシステム１３０に送られる。要求は、環境においてクライアントデバイスが動作するときの任意の時点で生じ得る。一例において、要求は、アプリケーションマニフェスト、デバイスマニフェスト、およびアプリケーションを実行することに関連付けられた生成された動作要求のいずれかを含むことができる。アプリケーションマニフェストは、アプリケーションのインストールされたソフトウェアパッケージ、アプリケーションのバージョン番号、生成され得る動作要求のリスト、アプリケーション設定、その他を含むことができる。デバイスマニフェストは、インストールされたアプリケーションのリスト、表示設定、およびネットワーク設定、その他を含むことができる。さらに、要求は、デバイスデータストアに含まれた情報、クライアントデバイスの場所、またはリカバリソフトウェアパッケージによって実行された以前のリカバリ命令を含むことができる。
【００３１】
リカバリソフトウェアパッケージ１１０は、ネットワークシステム１３０からリカバリ命令のセットを受信して、アプリケーションのソフトウェアパッケージ１０４を修正することができる。リカバリ命令を実行した後で、リカバリソフトウェアパッケージ１１０は、いくつかの実施形態において、アプリケーション１０２からの動作要求が今、予期される動作要求と一致しているかどうかを判定し、判定に基づいて、ネットワークシステム１３０にリカバリ命令の新しいセットを要求することができる。これらの事例において、リカバリ命令の後続の要求は、以前に実行されたリカバリ命令に関連付けられた情報および動作要求を含むことができる。
【００３２】
リカバリ命令は、任意の数の命令を含んでおり、アプリケーション１０２をリカバリすることができる。いくつかの例示的な命令は、任意の数のソフトウェアパッケージを無効化すること、取り除くこと、若しくは追加すること、インストールされたソフトウェアパッケージを修正すること、アプリケーションによって提供された機能を無効化すること、取り除くこと、修正すること、若しくは機能に追加すること、デバイスデータストアにおける情報を取り除くこと、追加すること、若しくは修正すること（例えば、パスワード、キャッシュをクリアすること、など）、アプリケーションを回復することを支援するために二次的アプリケーションにアクセスすること（例えば、ユーザが実施するための命令を取り出すためにウェブブラウザを開くこと）、実行されるとき、ソフトウェアパッケージによって生成された動作要求を修正すること、またはアプリケーション１０２をリカバリすることができる任意の他の命令を含む。
【００３３】
リカバリソフトウェアパッケージ１１０は、アプリケーションの意図される機能を提供するアプリケーションの「メイン部分」に「伴うもの」または二次的部分として見られてよい。この例において、アプリケーションのメイン部分は、アプリケーションの１つまたは複数の機能を実行することに関連付けられたソフトウェアパッケージに関し、それらのソフトウェアパッケージを含む。すなわち、リカバリソフトウェアパッケージ１１０はアプリケーション１０２内で実行しているが、ソフトウェアパッケージ１０４によって提供される機能は、リカバリパッケージ１１０の実行に影響しない。
【００３４】
リカバリソフトウェアパッケージ１１０の機能を例証するために、異常なソフトウェアパッケージを含むアプリケーションの簡単な例を続ける。リカバリパッケージは、リカバリ命令の要求をネットワークシステム１３０に送る。リカバリパッケージは、ネットワークシステム１３０からリカバリ命令のセットを受信する。リカバリ命令は、アプリケーション１０２の異常な動作を引き起こす欠陥機能に関連付けられた異常なソフトウェアパッケージの計算論理に対する修正と、二次的アプリケーション１１４を実行するための命令とを含む。リカバリソフトウェアパッケージ１１０は、アプリケーションをリカバリするリカバリ命令を実行する。異常な機能を判定すること、および環境内でアプリケーションをリカバリすることの追加の例は、図２に関してより詳細に議論される。
【００３５】
追加として、または代替として、リカバリソフトウェアパッケージ１１０は、動作要求の一貫したモニタリングおよび解析に基づいて、アプリケーションが異常に動作していることを判定する。一例によれば、異常な動作要求の生成は、アプリケーションが異常に動作していることを示す。このケースにおいて、アプリケーションが異常に動作していることを判定することは、ネットワークシステム１３０による解析のために、生成された動作要求を、ネットワーク１２０を介してネットワークシステム１３０に送ることを含むことができる。いくつかの実施形態において、リカバリパッケージ１１０は、ネットワークシステム１３０にアクセスすることなしに、アプリケーションが異常に機能していると判定する。生成された動作要求に追加して、アプリケーション１０２は、それらの要求の実行が普通ではないときに、異常に動作するように判定されてよい。他の実施形態において、リカバリソフトウェアパッケージ１１０は、動作要求が一定の量の時間の後で実行されないとき、実行された動作要求の応答時間が異常であるとき（例えば、閾値を上回る、または下回る）、生成された動作要求が繰り返して実行されるとき（例えば、実行ループ）、生成された動作要求が実行されないとき、実行された動作要求が異常な応答をもたらすときに（例えば、デバイスのＧＰＳに照会することがデバイス時間を返す）、またはアプリケーションが異常に機能していることを示す動作要求の任意の他の解析で、アプリケーションが異常に動作していることを判定することができる。他の実施形態において、障害判定コンポーネントまたはモジュール１４２が、異常な動作の同じような判定を行うことができる。
【００３６】
図１のクライアントデバイスを続けると、デバイスデータストア１１２は、デバイスユーザ、クライアントデバイス１００、ユーザアカウント、その他に関連付けられた情報を収容する。この情報は、環境内でアプリケーションの機能を提供するとき、アプリケーション１０２によってアクセスされてよい。さらに、情報は、リカバリ命令を実行するとき、アクセスされ、修正され、または削除されてもよい。一実施形態において、情報は、ソフトウェアパッケージおよび動作要求を、固有のデバイス、ユーザアカウント、デバイスのグループ、およびユーザアカウントのグループに適応させるために（例えば、スクリーンサイズに基づいて出力を表示すること、言語設定に基づいてデータを入力すること、その他）使用されてよい。デバイスデータストアに記憶された情報は、デバイス間セキュリティメトリクス、デバイス内セキュリティメトリクス、ネットワークセキュリティメトリクス、認証プロトコル、ユーザアカウント情報および選好、クライアントデバイス情報および選好、デバイスユーザ情報および選好、選好および変更の記録、並びに場所ベースの情報、クライアントデバイス上で実行しているアプリケーション、クライアントデバイス上で実行しているソフトウェアパッケージ、ソフトウェアパッケージに関連付けられた修正、予期される動作要求および異常な動作要求、並びに環境においてアプリケーションをリカバリすることに関連付けられた任意の他の情報を含むことができる。
【００３７】
例えば、デバイスデータストア１１２は、デバイスユーザ１０８のための支払情報を記憶することができる。アプリケーション１０２の機能が、支払情報へのアクセスを求め、アプリケーションは、動作要求に応答して、デバイスデータストアにおける情報にアクセスすることができる。別の例として、デバイスデータストアは、クライアントデバイスのためのデバイス内セキュリティメトリクスを記憶することができる。アプリケーション１０２の機能が、クライアントデバイスのハードウェア構成へのアクセスを求め、アプリケーションは、記憶されたデバイス内セキュリティメトリクス（例えば、アクセスを妨げる、または許可する）に基づいた動作要求に応答して、構成にアクセスすることができる。
【００３８】
クライアントデバイス１００は、ネットワーク１２０を使用して、環境内の他のクライアントデバイスおよびネットワークシステムと通信することができる。ネットワーク１２０は、クライアントデバイス１００とネットワークシステム１３０との間の通信経路に相当する。一実施形態において、ネットワーク１２０はインターネットであるが、ＬＡＮ、ＭＡＮ、ＷＡＮ、モバイル、有線、若しくは無線ネットワーク、クラウドコンピューティングネットワーク、プライベートネットワーク、または仮想プライベートネットワーク、およびそれらの任意の組み合わせを含むが限定はされない、任意のネットワークであってもまたよい。追加として、リンクの全てまたはいくつかは、セキュアソケットレイヤ（ＳＳＬ）、セキュアＨＴＴＰ、および／または仮想プライベートネットワーク（ＶＰＮ）などの従来の暗号化技術を使用して暗号化されてもよい。別の実施形態において、エンティティは、上で説明されたものに代えて、またはそれらに追加して、カスタムのおよび／または専用のデータ通信技術を使用することができる。
【００３９】
ネットワークシステム１３０は、ネットワーク１２０を介して、クライアントデバイス１００上で実行しているアプリケーション１０２の機能を提供することを支援し、アプリケーション１０２をリカバリすることを促進する。ネットワークシステム１３０は、リカバリイベントモジュール１４０と、障害判定モジュール１４２と、リカバリ命令モジュール１４４と、クライアントデバイスデータストア１５０と、ソフトウェアパッケージデータストア１５２と、リカバリ命令データストア１５４とを含む。ネットワークシステム１３０は、クライアントデバイス上のアプリケーションから動作要求を受信することができる。応答して、ネットワークシステム１３０は、要求された動作を提供することができる。例えば、旅行調整アプリケーション１２０は、最も近い旅行プロバイダの場所の要求を含む動作要求を、ネットワークシステム１３０に送る。ネットワークシステム１３０は、最も近いプロバイダの場所を判定し、クライアントデバイス１００上の要求するアプリケーションに情報を返す。追加として、ネットワークシステム１３０は、リカバリ命令の要求を受信し、要求に基づいてリカバリ命令のセットを判定し、リカバリ命令を要求元に送ることができる。
【００４０】
ネットワークシステム１３０は、指定された機能性を提供するためのハードウェアコンポーネントおよび／または計算論理を指す、いくつかの「モジュール」を含む。すなわち、モジュールは、ハードウェア、ファームウェア、および／またはソフトウェア（例えば、計算論理を含むハードウェアサーバ）で実装されてよく、他の実施形態は、追加のモジュールを含んでもよいし、機能性をモジュール間で分散してもよいし、機能性をより多い、またはより少ないモジュールに属するとしてもよいし、スタンドアロンプログラムとして、またはプログラムのネットワークの一部として実装されてもよいし、プロセッサによって実行可能なメモリの中にロードされてもよい。
【００４１】
ネットワークシステム１３０は、リカバリイベントモジュール１４０を含むことができる。リカバリイベントモジュール１４０は、リカバリソフトウェアパッケージ１１０と対話して、アプリケーションのためのリカバリ命令を提供する。大まかに、リカバリイベントモジュール１４０は、クライアントデバイス１００からリカバリ命令の要求を受信し、要求を障害判定モジュール１４２に送り、リカバリ命令モジュール１４４からリカバリ命令のセットを受信し、リカバリ命令をクライアントデバイス１００に送る。いくつかの実施形態において、リカバリイベントモジュール１４０は、様々なネットワーク１２０経路を使用して、リカバリ命令をクライアントデバイス１００に通信するように構成される。例えば、異常に動作するアプリケーションがもはや第１の通信プロトコル（例えば、アプリケーション内通信）を介してリカバリ命令を受信することができない場合、リカバリイベントモジュール１４０は、第２の通信プロトコル（例えば、ＳＭＳメッセージ）を介してリカバリ命令をクライアントデバイス１００に提供することができる。いくつかの実施形態において、リカバリイベントモジュール１４０は、リカバリ命令を、要求するアプリケーションと同じようなアプリケーション１０２に送り、同じようなアプリケーションは、判定されたリカバリ命令に関連付けられたソフトウェアパッケージまたはクライアントデバイス情報を含む。
【００４２】
ネットワークシステム１３０は、リカバリイベントモジュール１４０からリカバリ要求を受信する障害判定モジュール１４２を含むことができる。以前に説明されたように、リカバリ要求は、アプリケーションマニフェスト、デバイスマニフェスト、動作要求、またはアプリケーションの欠陥機能を判定するのを支援することができる任意の他の情報を含むことができる。障害判定モジュールは、受信されたリカバリ要求に基づいて、要求するクライアントデバイスのための予期される動作要求のセットを判定する。障害判定モジュールは次いで、受信されたリカバリ要求、予期される動作要求のセット、および機能を提供するクライアントデバイスから受信された実際の動作要求に基づいて、欠陥機能およびその関連付けられたソフトウェアパッケージを識別する。障害判定モジュールはまた、欠陥機能を引き起こす関連付けられたソフトウェアパッケージから、異常なソフトウェアパッケージを識別する。欠陥機能および関連付けられたソフトウェアパッケージを判定するための様々な方法が、本明細書で説明される。
【００４３】
一実施形態において、障害判定モジュール１４２は、予期される動作要求と異常な動作要求との違いを解析することによって、欠陥機能および異常なソフトウェアパッケージを判定することができる。すなわち、障害判定モジュールは、アプリケーションの予期される動作要求を判定し（または予期される動作要求にアクセスし）、それをアプリケーションの受信された動作要求と比較する。予期される動作要求と受信された動作要求（すなわち、異常な動作要求）との違いに基づいて、障害判定モジュールは、アプリケーションが欠陥機能を含むことを判定する。この例において、受信された動作要求に関連付けられたソフトウェアパッケージの全てが、異常なソフトウェアパッケージであることがある。
【００４４】
別の実施形態において、障害判定モジュール１４２は、受信された動作要求を解析することによって、欠陥機能を判定することができる。このケースにおいて、障害判定モジュールは、以前の例と同じような異常な動作要求を判定する。しかしながら、この例において、障害判定モジュールは、アプリケーションマニフェストから、異常な動作要求に関連付けられたソフトウェアパッケージのリストを判定する。いくつかの例において、ソフトウェアパッケージは、ソフトウェアパッケージデータストアまたはクライアントデバイスデータストアからアクセスされてよい。障害判定モジュールは、異常な動作要求に関連付けられたソフトウェアパッケージのリストを解析し、リストにおけるどのソフトウェアパッケージが欠陥機能を引き起こしている可能性が最も高いかを判定する。異常な機能を引き起こしているソフトウェアパッケージの判定は、異常な動作要求の数、異常な動作要求の深刻度、どのくらい最近ソフトウェアパッケージがインストールされたか、その他のうちのいずれかに基づいて、各ソフトウェアパッケージをスコア付けすることを含むことができる。
【００４５】
別の実施形態において、障害判定モジュールは、受信された要求のアプリケーションマニフェストに含まれるソフトウェアパッケージの静的解析に基づいて、欠陥機能およびその関連付けられたソフトウェアパッケージを判定する。１つの変形において、ソフトウェアパッケージは、ソフトウェアパッケージデータストア１５２に記憶されている。静的解析は、ソフトウェアパッケージを解析し、アプリケーションによって実行されるときに各ソフトウェアパッケージによって生成され得る動作要求を判定する。いくつかのケースにおいて、静的解析は、ソフトウェアパッケージをさらに解析し、予期される動作要求と異常な動作要求（例えば、ユーザ入力エラー、変数の変更、予期されていないソフトウェアパッケージ対話、ソフトウェアバグ、など）との任意の組み合わせを、実行しているソフトウェアパッケージがどのように生成することができるのかを判定する。静的解析に基づいて、障害判定モジュールは、欠陥機能およびそれらの関連付けられたソフトウェアパッケージを識別することができる。
【００４６】
別の実施形態において、障害判定モジュール１４２は、クライアントデバイスデータストアにアクセスして、要求するクライアントデバイスから受信された動作要求およびソフトウェアパッケージを、環境内の代替クライアントデバイスのソフトウェアパッケージおよび予期される動作要求と比較することができる。例えば、障害判定モジュールは、代替デバイスが環境において正常に動作していることを以前に判定している。障害判定モジュールは、代替デバイスの予期される動作要求を、要求するデバイスの受信された動作要求と比較することができる。予期される動作要求／受信された動作要求間の違いの比較に基づいて、障害判定モジュールは、受信された動作要求が異常であることを判定する。さらに、代替デバイス／要求するデバイスの関連付けられたアプリケーションおよびデバイスマニフェストに基づいて、障害判定モジュールは、異常な動作要求を引き起こす欠陥機能および関連付けられたソフトウェアパッケージを判定することができる。代替クライアントデバイスが異常に動作している場合、同じような解析が行われてよく、障害判定モジュールは、異常な動作を引き起こし得るクライアントデバイス間で同じようなソフトウェアパッケージを判定することができる。
【００４７】
これらの様々な手段によって、障害判定モジュール１４２は、要求するアプリケーション上で実行しているソフトウェアパッケージ、予期される動作要求と異常な動作要求との関連付けられたセット（もしあれば）、またはリカバリ要求に関連付けられた任意の他の情報のうちのいずれかに基づいて、アプリケーションの欠陥機能を判定することができる。同じように、各ソフトウェアパッケージが欠陥機能に関連付けられるとき、障害判定モジュールは、欠陥機能を引き起こしていることがあるソフトウェアパッケージ１０４を判定することができる。これらのソフトウェアパッケージは、候補ソフトウェアパッケージのうちの１つまたは複数の動作に影響することによってアプリケーションをリカバリするための、リカバリ命令のための候補ソフトウェアパッケージとして識別される。
【００４８】
ネットワークシステムはまた、リカバリ命令モジュール１４４を含むことができる。リカバリ命令モジュール１４４は、障害判定モジュール１４２から欠陥機能を受信する。その結果、リカバリ命令モジュール１４４は、リカバリ命令のセットを要求するアプリケーション１０２の機能性をリカバリするために、判定された欠陥機能に関連付けられたリカバリ命令のセットを判定する。候補ソフトウェアパッケージのためのリカバリ命令のセットの判定は、要求するアプリケーション１０２から受信された動作要求、アプリケーションマニフェスト、デバイスマニフェスト、候補ソフトウェアパッケージ、クライアントデバイスデータストアに記憶された受信された情報、リカバリ命令データストア１５４に記憶されたリカバリ命令および情報、またはアプリケーションをリカバリすることを支援することができる、環境における任意の他の情報に基づいていてよい。
【００４９】
一般に、リカバリ命令は、アプリケーションの前の動作要求および前のリカバリ命令に基づいて、アプリケーションのために選択されてよい。アプリケーションが正常に動作するとき、リカバリ命令は、アプリケーションへの修正または変更を提供しなくてもよい。正常でない動作が存在するとき、リカバリ命令は、様々な程度に、アプリケーションの動作にインパクトを与える、またはユーザにインパクトを与える命令を選択することができる。例えば、ソフトウェアパッケージを無効化するリカバリ命令を提供することは、キャッシュされたデータを削除すること、またはユーザにログインを再登録することを求めること、または二次的アプリケーションにユーザへの命令を提供させることよりも、ユーザ体験に対して低いインパクトを作り出すことがある。それに応じて、リカバリ命令は、前のリカバリ命令に従って、リカバリ命令のインパクトのレベルを段階的に上昇させることができる。ソフトウェアパッケージによって引き起こされた問題を自動的に解決するよう試みるために、リカバリ命令モジュール１４４は、リカバリ命令によりどのソフトウェアモジュールが影響するのかを判定することができる。
【００５０】
一実施形態において、リカバリ命令モジュール１４４は、判定された候補ソフトウェアパッケージリカバリイベントモジュールにアクセスして、リカバリ命令のセットを判定することができる。このケースにおいて、リカバリ命令は、リカバリ命令データストアに記憶されたリカバリ命令のリストのうちの１つであってよい。リストにおけるリカバリ命令の各セットは、欠陥機能および候補ソフトウェアパッケージに以前に関連付けられていることがある。
【００５１】
別の実施形態において、リカバリ命令モジュールは、リカバリ命令の要求において受信された情報に基づいて、数個の候補に対する単一の候補ソフトウェアパッケージを、訂正するための異常なソフトウェアパッケージとして選択する。この実施形態において、リカバリ命令モジュールは、多数のソフトウェアパッケージを同時に訂正するのではなく、リカバリ命令のセットにつき１つの候補ソフトウェアパッケージのみを訂正するように構成されてよい。
【００５２】
別の例において、要求するアプリケーション１０２に送られたリカバリ命令のセットは、候補ソフトウェアパッケージ１０４に関連付けられた、リカバリ命令データストア１５４に記憶されたリカバリ命令のセットであってもよい。リカバリ命令モジュール１４４は、判定された欠陥機能およびリカバリ要求に基づいて、記憶されたリカバリ命令のセットを修正することができる。リカバリ命令モジュール１４４は、修正されたリカバリ命令のセットを、リカバリ命令のセットを要求するアプリケーション１０２に送ることができる。別の実施形態において、リカバリ命令のセットは、同じようなソフトウェアパッケージおよび修正を実行するアプリケーションに以前に提供され、リカバリ命令データストア１５４に記憶されたリカバリ命令のセットであってもよい。
【００５３】
別の実施形態においては、クライアントデバイス１００に提供されたリカバリ命令のセットがクライアントデバイスを維持し、クライアントデバイスは、異常に動作し続ける。クライアントデバイスは再び、リカバリ要求をネットワークシステム１３０に送る。ここで、ネットワークシステム１３０は、クライアントデバイスに提供された以前のリカバリ命令のセットと同じようなリカバリ命令のセットを判定することがある。このケースにおいて、リカバリ命令モジュール１４４は、クライアントデバイスから受信された動作要求が変化していないと判定し、アプリケーションをリカバリするための新しいリカバリ命令のセットを生成することができる。
【００５４】
ネットワークシステムは、クライアントデバイスデータストアと、ソフトウェアパッケージデータストアと、リカバリ命令データストアとを含むことができる。クライアントデバイスデータストアは、ソフトウェアパッケージを実行すること、修正を実行すること、ユーザ情報、クライアントデバイス情報などの、クライアントデバイスに関連付けられた情報、記憶された情報のいずれかに関連付けられた動作要求、および記憶された情報のいずれかに関連付けられた機能を記憶することができる。ソフトウェアパッケージデータストアは、アプリケーション１０２に関連付けられたソフトウェアパッケージ１０４の全ておよび修正１０６を含むことができる。リカバリ命令データストア１５４は、アプリケーション１０２の機能性をリカバリすることに関連付けられたリカバリ命令の全てを含むことができる。
【００５５】
アプリケーションリカバリ
図２は、ネットワークシステム１３０およびクライアントデバイスがアプリケーションをリカバリするために取ることができるプロセスの例を例証する表である。
【００５６】
はじめに、例証されるクライアントデバイス１００の全てが、アプリケーション１０２を実行している。アプリケーションは、環境において、機能２１０「Ａ」、「Ｂ」および「Ｃ」を提供することができる。第１の例として、ビンスが彼のクライアントデバイス１００ａ上でアプリケーション１０２のインターフェースを使用するとき、実行しているアプリケーションは、機能２１０「Ａ」を提供する。ビンスのクライアントデバイス１００ａは、機能「Ａ」に関連付けられたソフトウェアパッケージ２２０「１」および「２」を含む。リカバリソフトウェアパッケージ１１０は、ネットワークシステム１３０にリカバリ命令のセットを要求する（２３０）。例えば、要求は、デバイスプロファイル（すなわち、ハードウェア構成、など）と、アプリケーションプロファイル（すなわち、インストールされたソフトウェアパッケージ、など）とを含む。いくつかの実施形態において、要求は、予期される動作要求と、リカバリソフトウェアパッケージによって判定された異常な動作要求とを含むことができる。ネットワークシステムは、機能２１０「Ａ」、並びにソフトウェアパッケージ「１」および「２」に関連付けられた予期される動作要求のセット２４０「θ」を判定する。ビンスのクライアントデバイスは、ソフトウェアパッケージ「１」および「２」がアプリケーションによって実行されるとき、実際の動作要求２５０「α」を生成する。このように、ネットワークシステム１３０は、実際の動作要求「α」が異常な動作要求であることを判定する。ネットワークシステム１３０は、障害判定モジュール１４２およびリカバリ命令モジュール１４４を使用して、リカバリ要求および判定された異常な機能、並びに関連付けられたソフトウェアパッケージに基づいて、アプリケーションをリカバリするためのリカバリ命令のセット「Φ」を判定する（２６０）。
【００５７】
続けると、アリスがアプリケーションのインターフェースを使用するとき、実行しているアプリケーションは、機能２１０「Ａ」を提供する。アリスのクライアントデバイス１００ｂ上で実行しているアプリケーション１０２は、機能「Ａ」に関連付けられたソフトウェアパッケージ２２０「１」を含む。リカバリソフトウェアパッケージ１１０は、ネットワークシステム１３０にリカバリ命令のセットを要求する（２３０）。この事例において、ネットワークシステム１３０は、機能「Ａ」およびソフトウェアパッケージ「１」に関連付けられた予期される動作要求２４０は存在しないことを判定する。アリスのクライアントデバイス１００ｂは、ソフトウェアパッケージ「１」がアプリケーションによって実行されるとき、実際の動作要求２５０「γ」を生成する。このように、実際の動作要求「γ」は異常な動作要求であり、ネットワークシステム１３０は、アプリケーションの異常な機能を判定する。ネットワークシステム１３０は、障害判定モジュール１４２およびリカバリ命令モジュール１４４を使用して、受信されたリカバリ要求および判定された異常な機能、並びに関連付けられたソフトウェアパッケージに基づいて、アプリケーションをリカバリするためのリカバリ命令のセット「Δ」を判定する（２６０）。
【００５８】
別の例において、ニックが実行しているアプリケーションのインターフェースを使用するとき、実行しているアプリケーションは、機能２１０「Ａ」および「Ｂ」を提供する。ニックのクライアントデバイス１００ｃ上で実行しているアプリケーションは、機能「Ａ」および「Ｂ」に関連付けられたソフトウェアパッケージ２２０「１」および「３」を含む。リカバリソフトウェアパッケージ１１０は、ネットワークシステム１３０にリカバリ命令のセットを要求する（２３０）。ネットワークシステム１３０は、機能「Ａ」および「Ｂ」、並びにソフトウェアパッケージ「１」および「３」に関連付けられた予期される動作要求のセット２４０「θ」を判定する。ニックのクライアントデバイス１００ｃは、ソフトウェアパッケージ「１」および「３」がアプリケーションによって実行されるとき、実際の動作要求２５０を生成しない。このケースにおいて、生成される動作要求がないことは、異常な動作要求を指し示し、ネットワークシステムは、アプリケーションの異常な機能を判定する。ネットワークシステムは、障害判定モジュール１４２およびリカバリ命令モジュール１４４を使用して、受信されたリカバリ要求および判定された異常な機能、並びに関連付けられたソフトウェアパッケージに基づいて、アプリケーションをリカバリするためのリカバリ命令のセット「Φ」を判定する。
【００５９】
最後に、メアリがアプリケーションのインターフェースを使用するとき、実行しているアプリケーションは、機能２１０「Ｃ」を提供する。メアリのクライアントデバイス１００ｄは、機能「Ｃ」に関連付けられたソフトウェアパッケージ「２」を含む。リカバリソフトウェアパッケージ１１０は、ネットワークシステム１３０にリカバリ命令のセットを要求する（２３０）。ネットワークシステムは、ソフトウェアパッケージ「２」がアプリケーションによって実行されるとき、予期される動作要求のセット２４０「α」を判定する。メアリのクライアントデバイスは、ソフトウェアパッケージ「２」がアプリケーションによって実行されるとき、実際の動作要求のセット２４０「α」を生成する。この例において、異常な動作要求は存在しない。ネットワークシステム１３０は、機能「Ｃ」が正常であることを判定し、メアリのクライアントデバイスに対するリカバリ命令のセットを判定しない（２６０）。
【００６０】
図２で説明された状況は、例として提供される。任意の数のデバイス、機能、ソフトウェアパッケージ、動作要求、およびリカバリ命令が、アプリケーションをリカバリするために使用されてよいことに留意されたい。
【００６１】
図３は、いくつかの実施形態に従って、アプリケーションのリカバリを実証するデータフローを例証するデータフロー図である。図３の代替的実施形態は、より多い、より少ない、または異なるステップを含んでもよく、ステップは、図３で例証されたもの、および本明細書で説明されたものとは異なる順序で実施されてもよい。一実施形態において、図３のデータフローは、ネットワークシステム１３０上で生じ得るが、環境内の任意の要素または要素の組み合わせの上で生じてもよい。
【００６２】
はじめに、クライアントデバイスが、アプリケーションを実行しており、正常に機能している。アプリケーションが通常機能を提供しているとき、ネットワークシステムは、ネットワークを介して、クライアントデバイスから動作要求を受信する（３１０）。ネットワークシステムは、要求に基づいて、動作要求に対する応答をクライアントデバイスに提供する（３２０）。この実施形態において、ネットワークシステム１３０は、クライアントデバイスからの動作要求に応え、よって、それが受信する動作要求を解析することができる。解析のための追加の動作要求がまた、アプリケーションからの動作要求に応える他のシステムから受信されてもよく、クライアントデバイス内の動作要求は、リカバリ要求によって提供されてもよい。
【００６３】
ネットワークシステム１３０は、例えば、アプリケーションがリカバリパッケージをロードするとき、またはリカバリパッケージがアプリケーションの異常な機能を識別するとき、アプリケーションを実行するクライアントデバイス１００のリカバリパッケージから、ネットワーク１２０を介して、リカバリ要求を受信する（３３０）。要求は、動作要求を含む、アプリケーションおよびクライアントデバイスに関する情報、デバイスマニフェスト、アプリケーションマニフェスト、並びにクライアントデバイスデータストアからの情報を含むことができる。障害判定モジュールが、クライアントデバイスの予期される動作を識別する（３４０）。クライアントデバイスの予期される動作を識別すること（３４０）は、以前に説明された方法のいずれかにおける、予期される動作要求および異常な動作要求のセットを判定することを含むことができる。
【００６４】
続けると、障害判定モジュールが、予期される動作要求と異常な動作要求との識別に基づいて、欠陥機能を識別する（３５０）。障害判定モジュールは、識別された欠陥機能、受信されたリカバリ要求、異常な動作要求、および予期される動作要求に基づいて、欠陥機能に影響するインストールされたソフトウェアパッケージを識別する（３６０）。
【００６５】
リカバリ命令モジュールが、識別された欠陥機能、動作要求、および受信された要求に基づいて、リカバリ命令のセットを判定する（３７０）。終わりに、リカバリイベントモジュールが、判定されたリカバリ命令を要求するクライアントデバイスに提供する（３８０）。
【００６６】
図４は、いくつかの実施形態に従って、アプリケーションの機能性をリカバリするためのデータフローを例証するデータフロー図である。図４の代替的実施形態は、より多い、より少ない、または異なるステップを含んでもよく、ステップは、図４で例証されたもの、および本明細書で説明されたものとは異なる順序で実施されてもよい。一般に、図４のデータフローは、クライアントデバイス１００上で生じ得るが、環境内の任意の要素または要素の組み合わせの上で生じてもよい。
【００６７】
はじめに、クライアントデバイスが、アプリケーションをロードする（４１０）。アプリケーションは、リカバリソフトウェアパッケージをロードし（４２０）、アプリケーションのメイン部分をその関連付けられたソフトウェアパッケージとロードする（４１２）。アプリケーションのメイン部分および関連付けられたソフトウェアパッケージは、動作要求をサーバに提供し（４１４）、引き換えに動作を受信する（４１６）。
【００６８】
リカバリソフトウェアパッケージは、デバイスプロファイルおよびアプリケーションプロファイルを含むリカバリ要求を、ネットワークシステムに送信する（４３０）。応答して、リカバリソフトウェアパッケージは、（必要であれば）ネットワークシステムからリカバリ命令のセットを受信する（４４０）。リカバリソフトウェアパッケージは、リカバリ命令をアプリケーションに適用して（４５０）、アプリケーションの機能をリカバリする。
【００６９】
いくつかの実施形態において、リカバリソフトウェアパッケージは、アプリケーションのメイン部分の生成された動作要求を、それがそれらの機能に関連付けられた動作要求を生成するとき、モニタする（４６０）。以前に説明されたように、リカバリソフトウェアパッケージは、アプリケーションの異常な機能を識別し（４７０）、識別されたアプリケーションの異常な機能に基づいて、リカバリ要求をネットワークシステムに送信する（４８０）ことができる。
【００７０】
図５は、マシン可読媒体から命令を読み取り、実行するための例示的なマシンのコンポーネントを例証するブロック図である。とりわけ、図５は、コンピュータシステム５００の例示的な形態でのシステム１３０およびクライアントデバイス１００の図表現を示す。コンピュータシステム５００は、本明細書で説明される方法論（またはプロセス）のうちのいずれか１つまたは複数をマシンに実施させるための命令５２４（例えば、プログラムコードまたはソフトウェア）を実行するために使用されてよい。代替的実施形態において、マシンは、スタンドアロンデバイス、または他のマシンに接続する接続された（例えば、ネットワーク化された）デバイスとして動作する。ネットワーク化された展開において、マシンは、サーバ−クライアントネットワーク環境におけるサーバマシン若しくはクライアントマシンの立場において、またはピアツーピア（または分散化された）ネットワーク環境におけるピアマシンとして動作することができる。
【００７１】
マシンは、サーバコンピュータ、クライアントコンピュータ、パーソナルコンピュータ（ＰＣ）、タブレットＰＣ、セットトップボックス（ＳＴＢ）、スマートフォン、モノのインターネット（ＩｏＴ）アプライアンス、ネットワークルータ、スイッチ若しくはブリッジ、またはそのマシンによって取られることになるアクションを指定する命令５２４を（順次に、または別のやり方で）実行することが可能な任意のマシンであってよい。さらに、単一のマシンのみが例証されているが、用語「マシン」はまた、本明細書で議論された方法論のうちのいずれか１つまたは複数を実施するために、個々に、または共同で命令５２４を実行するマシンの任意の集まりを含むように解釈されるものとする。
【００７２】
例示的なコンピュータシステム５００は、１つまたは複数の処理ユニット（一般に、プロセッサ５０２）を含む。プロセッサ５０２は、例えば、中央処理ユニット（ＣＰＵ）、グラフィックス処理ユニット（ＧＰＵ）、デジタル信号プロセッサ（ＤＳＰ）、コントローラ、ステートマシン、１つ若しくは複数の特定用途向け集積回路（ＡＳＩＣ）、１つ若しくは複数の無線周波数集積回路（ＲＦＩＣ）、またはこれらの任意の組み合わせである。コンピュータシステム５００はまた、メインメモリ５０４を含む。コンピュータシステムは、ストレージユニット５１６を含んでもよい。プロセッサ５０２、メモリ５０４、およびストレージユニット５１６は、バス５０８を介して通信する。
【００７３】
追加として、コンピュータシステム５００は、静的メモリ５０６、（例えば、プラズマ表示パネル（ＰＤＰ）、液晶表示（ＬＣＤ）、またはプロジェクタを駆動するための）グラフィックス表示装置５１０を含むことができる。コンピュータシステム５００はまた、英数字入力デバイス５１２（例えば、キーボード）、カーソル制御デバイス５１４（例えば、マウス、トラックボール、ジョイスティック、動きセンサ、または他のポインティング器具）、信号生成デバイス５１８（例えば、スピーカ）、およびネットワークインターフェースデバイス５２０を含むことができ、これらもまたバス５０８を介して通信するように構成される。
【００７４】
ストレージユニット５１６は、本明細書で説明される方法論または機能のうちのいずれか１つ若しくは複数を具現化する命令５２４（例えば、ソフトウェア）がその上に記憶されるマシン可読媒体５２２を含む。例えば、命令５２４は、図１で説明されたシステム１３０のモジュールの機能性を含むことができる。命令５２４はまた、コンピュータシステム５００によるそれの実行の間、メインメモリ５０４内またはプロセッサ５０２内（例えば、プロセッサのキャッシュメモリ内）に、完全に、または少なくとも部分的に常駐することができ、メインメモリ５０４およびプロセッサ５０２はまた、マシン可読媒体を成している。命令５２４は、ネットワークインターフェースデバイス５２０を介して、ネットワーク５２６上で送信されても、または受信されてよい。
【００７５】
マシン可読媒体５２２は例示的な実施形態において単一の媒体として示されているが、用語「マシン可読媒体」は、命令５２４を記憶することができる単一の媒体または多数の媒体（例えば、集中化若しくは分散化されたデータベース、または関連付けられたキャッシュおよびサーバ）を含むように解釈されるべきである。用語「マシン可読媒体」はまた、マシンによる実行のための、かつ本明細書で開示された方法論のうちのいずれか１つまたは複数をマシンに実施させる命令５２４を記憶することが可能な任意の媒体を含むように解釈されるものとする。用語「マシン可読媒体」は、ソリッドステートメモリ、光学媒体、および磁気媒体の形態でのデータリポジトリを含むが、それに限定はされない。
【００７６】
代替的検討事項
実施形態の上述の説明は、例証の目的のために提示されており、網羅的であること、または特許権を開示された厳密な形態に限定することも意図されていない。当業者は、上の開示に照らして多くの修正および変形が可能であることを認めることができる。例えば、本開示は、潜在的な安全上の出来事におけるプロバイダの関与を予測することを議論するが、本明細書における方法およびシステムは、より一般的に、機械学習モデルを使用して潜在的な出来事における関与を予測したい任意の目的のために使用されてもよい。
【００７７】
この説明のいくつかの部分は、情報に対する動作のアルゴリズムおよび記号的表現の点から実施形態を説明している。これらのアルゴリズムの説明および表現は、データ処理技術における当業者によって、彼らの仕事の内容を他の当業者に効果的に伝えるためによく使用される。これらの動作は、機能的に、計算的に、または論理的に説明されながら、コンピュータプログラム、または同等の電気回路、マイクロコード、その他によって実装されることになると理解される。さらに、一般性を損なうことなく、動作のこれらの配列をモジュールと呼ぶことが時に好都合であることもまた分かっている。説明された動作およびそれらの関連付けられたモジュールは、ソフトウェア、ファームウェア、ハードウェア、またはそれらの任意の組み合わせで具現化されてよい。
【００７８】
本明細書で説明されるステップ、動作、またはプロセスのいずれも、１つ若しくは複数のハードウェアまたはソフトウェアモジュールを用いて、単独で、または他のデバイスとの組み合わせで実施または実装されてよい。一実施形態において、ソフトウェアモジュールは、説明されたステップ、動作、またはプロセスのいずれかまたは全てを実施するための、コンピュータプロセッサによって実行され得るコンピュータプログラムコードを収容するコンピュータ可読媒体を含むコンピュータプログラム製品で実装される。
【００７９】
実施形態はまた、本明細書における動作を実施するための装置に関することがある。この装置は、求められる目的のために特別に組み立てられてもよく、および／または、それは、コンピュータに記憶されたコンピュータプログラムによって、選択的にアクティブにされる、または再構成される汎用コンピューティングデバイスを含んでもよい。そのようなコンピュータプログラムは、コンピュータシステムバスに結合され得る、非一時的な有形のコンピュータ可読記憶媒体、または電子命令を記憶するために好適な任意のタイプの媒体に記憶されてよい。さらに、本明細書で言及されたあらゆるコンピューティングシステムは、単一のプロセッサを含んでもよいし、または増加されるコンピューティング性能のために多数のプロセッサ設計を採用するアーキテクチャであってもよい。
【００８０】
実施形態はまた、本明細書で説明されるコンピューティングプロセスによって生み出される製品に関することがある。そのような製品は、コンピューティングプロセスからの結果による情報を含むことができ、ここで情報は、非一時的な有形のコンピュータ可読記憶媒体上に記憶され、本明細書で説明されるコンピュータプログラム製品または他のデータの組み合わせの任意の実施形態を含むことができる。
【００８１】
最後に、本明細書で使用される言語は、主に読みやすさおよび教育的な目的のために選択されており、それは本発明の主題を線引きする、または制限するために選択されていないことがある。従って、特許権の範囲は、この詳細な説明によって限定されるのではなく、むしろ本明細書に基づいた出願に発生する任意の請求項によって限定されることが意図される。それに応じて、実施形態の開示は、以下の特許請求の範囲に記述される特許権の範囲の限定ではなく、例証であることが意図される。
【図１】
2020528620.tif 000003
【図２】
2020528620.tif 000004
【図３】
2020528620.tif 000005
【図４】
2020528620.tif 000006
【図５】
2020528620.tif 000007
【国際調査報告】
2020528620.tif 000008
2020528620.tif 000009
2020528620.tif 000010