(57)【要約】  オペレーティングシステムを検証するための、コンピュータ記憶媒体上にエンコードされたコンピュータプログラムを含む方法、システム、及び装置が開示される。ある態様において、方法は、オペレーティングシステムを実行するコンピューティング装置に参照システムイメージを提供する動作を備え、オペレーティングシステムは、フレームワーク層と、ハードウェア抽象化層と、ファームウェア及びドライバを含むカーネルとを備え、参照システムイメージは、フレームワーク層を置換、補完、又は変更するように構成される。当該動作は、ハードウェア抽象化層を変更せずにハードウェア抽象化層の機能をテストするために参照システムイメージと対話することによりオペレーティングシステムの機能を検証するように構成されるテストデータを、コンピューティング装置に提供することをさらに含み、フレームワーク層が参照システムイメージによって置換、補完、又は変更されたコンピューティング装置は、ルート化されていない装置である。当該動作は、コンピューティング装置のオペレーティングシステムが適切に機能しているかどうかを決定することをさらに含む。
2020522769.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータにより実装される方法であって、
オペレーティングシステムを実行するコンピューティング装置に参照システムイメージを提供することを備え、前記オペレーティングシステムは、アプリケーション層と、ネイティブライブラリを含むフレームワーク層と、ハードウェア抽象化層と、ファームウェア及びドライバを含むカーネルとを備え、前記参照システムイメージは、前記フレームワーク層を置換、補完、又は変更するように構成され、
前記方法はさらに、
前記フレームワーク層が前記参照システムイメージによって置換、補完、又は変更された前記コンピューティング装置に、前記ハードウェア抽象化層を変更することなく前記ハードウェア抽象化層の機能をテストするために前記参照システムイメージと対話することにより前記オペレーティングシステムの機能を検証するように構成されるテストデータを提供することを備え、前記フレームワーク層が前記参照システムイメージによって置換、補完、又は変更された前記コンピューティング装置は、ルート化されていない装置であり、
前記方法はさらに、
前記ハードウェア抽象化層の前記機能をテストする前記コンピューティング装置に応じて、前記フレームワーク層が前記参照システムイメージによって置換、補完、又は変更された前記コンピューティング装置から、テスト応答データを受信することと、
前記テスト応答データを、前記オペレーティングシステムを実行し適切に機能するコンピューティング装置に対応する既知のテスト応答データと比較することと、
前記比較に基づいて、前記フレームワーク層が前記参照システムイメージによって置換、補完、又は変更された前記コンピューティング装置の前記オペレーティングシステムが適切に機能しているかどうかを決定することとを備える、方法。
【請求項２】
前記オペレーティングシステムは、前記フレームワーク層と前記ハードウェア抽象化層との間の通信を容易にするように構成されるインターフェース層をさらに含む、請求項１に記載の方法。
【請求項３】
前記テストデータは、前記ハードウェア抽象化層と対話するようにさらに構成される、請求項１又は２に記載の方法。
【請求項４】
前記ハードウェア抽象化層及び前記カーネルは、前記コンピューティング装置の製造業者によって変更されたベンダー実装層を定義し、
前記テストデータは、前記ベンダー実装層を変更せずに前記ハードウェア抽象化層の機能をテストするために前記参照システムイメージと対話することにより前記オペレーティングシステムの機能を検証するように構成される、請求項１〜３のいずれか１項に記載の方法。
【請求項５】
前記オペレーティングシステムは、ＳＥＬｉｎｕｘの実装を含み、
前記方法は、前記フレームワーク層が前記参照システムイメージによって置換、補完、又は変更された前記コンピューティング装置に、ＳＥＬｉｎｕｘを許可モードにするための命令を与えることをさらに備え、
前記テストデータは、前記ＳＥＬｉｎｕｘが許可モードにある間に、前記コンピューティング装置に提供される、請求項１〜４のいずれか１項に記載の方法。
【請求項６】
前記参照システムイメージは、前記フレームワーク層と前記ハードウェア抽象化層との間に存在する依存性を除去するように構成される、請求項１〜５のいずれか１項に記載の方法。
【請求項７】
前記参照システムイメージは、ユーザーデバッグビルドであり、
前記ハードウェア抽象化層及び前記カーネルは、ユーザービルドである、請求項１〜６のいずれか１項に記載の方法。
【請求項８】
前記フレームワーク層が前記参照システムイメージによって置換、補完、又は変更された前記コンピューティング装置に、前記ハードウェア抽象化層を変更することなく前記ハードウェア抽象化層の機能をテストするために前記参照システムイメージと対話することにより前記オペレーティングシステムの機能を検証するように構成されるテストデータを提供することは、
前記コンピューティング装置上で実行され、前記テストデータを受信するデーモンの特権レベルをエスカレートするための命令を与えることを備える、請求項１〜７のいずれか１項に記載の方法。
【請求項９】
１つ以上のコンピュータと、
前記１つ以上のコンピュータにより実行されると、前記１つ以上のコンピュータに以下の動作を実行させるための実行可能な命令を記憶する１つ以上の記憶装置とを備えるシステムであって、前記動作は、
オペレーティングシステムを実行するコンピューティング装置に参照システムイメージを提供することを備え、前記オペレーティングシステムは、アプリケーション層と、ネイティブライブラリを含むフレームワーク層と、ハードウェア抽象化層と、ファームウェア及びドライバを含むカーネルとを備え、前記参照システムイメージは、前記フレームワーク層を置換、補完、又は変更するように構成され、
前記動作はさらに、
前記フレームワーク層が前記参照システムイメージによって置換、補完、又は変更された前記コンピューティング装置に、前記ハードウェア抽象化層を変更することなく前記ハードウェア抽象化層の機能をテストするために前記参照システムイメージと対話することにより前記オペレーティングシステムの機能を検証するように構成されるテストデータを提供することを備え、前記フレームワーク層が前記参照システムイメージによって置換、補完、又は変更された前記コンピューティング装置は、ルート化されていない装置であり、
前記動作はさらに、
前記ハードウェア抽象化層の前記機能をテストする前記コンピューティング装置に応じて、前記フレームワーク層が前記参照システムイメージによって置換、補完、又は変更された前記コンピューティング装置から、テスト応答データを受信することと、
前記テスト応答データを、前記オペレーティングシステムを実行し適切に機能するコンピューティング装置に対応する既知のテスト応答データと比較することと、
前記比較に基づいて、前記フレームワーク層が前記参照システムイメージによって置換、補完、又は変更された前記コンピューティング装置の前記オペレーティングシステムが適切に機能しているかどうかを決定することとを備える、システム。
【請求項１０】
前記オペレーティングシステムは、前記フレームワーク層と前記ハードウェア抽象化層との間の通信を容易にするように構成されるインターフェース層をさらに含む、請求項９に記載のシステム。
【請求項１１】
前記テストデータは、前記ハードウェア抽象化層と対話するようにさらに構成される、請求項９又は１０に記載のシステム。
【請求項１２】
前記ハードウェア抽象化層及び前記カーネルは、前記コンピューティング装置の製造業者によって変更されたベンダー実装層を定義し、
前記テストデータは、前記ベンダー実装層を変更せずに前記ハードウェア抽象化層の機能をテストするために前記参照システムイメージと対話することにより前記オペレーティングシステムの機能を検証するように構成される、請求項９〜１１のいずれか１項に記載のシステム。
【請求項１３】
前記オペレーティングシステムは、ＳＥＬｉｎｕｘの実装を含み、
前記動作は、前記フレームワーク層が前記参照システムイメージによって置換、補完、又は変更された前記コンピューティング装置に、ＳＥＬｉｎｕｘを許可モードにするための命令を与えることをさらに備え、
前記テストデータは、前記ＳＥＬｉｎｕｘが許可モードにある間、前記コンピューティング装置に提供される、請求項９〜１２のいずれか１項に記載のシステム。
【請求項１４】
前記参照システムイメージは、前記フレームワーク層と前記ハードウェア抽象化層との間に存在する依存性を除去するように構成される、請求項９〜１３のいずれか１項に記載のシステム。
【請求項１５】
前記参照システムイメージは、ユーザーデバッグビルドであり、
前記ハードウェア抽象化層及び前記カーネルは、ユーザービルドである、請求項９〜１４のいずれか１項に記載のシステム。
【請求項１６】
前記フレームワーク層が前記参照システムイメージによって置換、補完、又は変更された前記コンピューティング装置に、前記ハードウェア抽象化層を変更せずに前記ハードウェア抽象化層の機能をテストするために前記参照システムイメージと対話することにより前記オペレーティングシステムの機能を検証するように構成されるテストデータを提供することは、
前記コンピューティング装置上で実行され、前記テストデータを受信するデーモンの特権レベルをエスカレートするための命令を与えることを備える、請求項９〜１５のいずれか１項に記載のシステム。
【請求項１７】
１つ以上のコンピュータによって実行可能な命令を備えるソフトウェアを記憶する、非一時的な、コンピュータが読み取り可能な媒体であって、前記媒体は、そのような実行に際し、前記１つ以上のコンピュータに以下の動作を実行させ、前記動作は、
オペレーティングシステムを実行するコンピューティング装置に参照システムイメージを提供することを備え、前記オペレーティングシステムは、アプリケーション層と、ネイティブライブラリを含むフレームワーク層と、ハードウェア抽象化層と、ファームウェア及びドライバを含むカーネルとを備え、前記参照システムイメージは、前記フレームワーク層を置換、補完、又は変更するように構成され、
前記動作はさらに、
前記フレームワーク層が前記参照システムイメージによって置換、補完、又は変更された前記コンピューティング装置に、前記ハードウェア抽象化層を変更することなく前記ハードウェア抽象化層の機能をテストするために前記参照システムイメージと対話することにより前記オペレーティングシステムの機能を検証するように構成されるテストデータを提供することを備え、前記フレームワーク層が参照システムイメージによって置換、補完、又は変更された前記コンピューティング装置は、ルート化されていない装置であり、
前記動作はさらに、
前記ハードウェア抽象化層の前記機能をテストする前記コンピューティング装置に応じて、前記フレームワーク層が前記参照システムイメージによって置換、補完、又は変更された前記コンピューティング装置から、テスト応答データを受信することと、
前記テスト応答データを、前記オペレーティングシステムを実行し適切に機能するコンピューティング装置に対応する既知のテスト応答データと比較することと、
前記比較に基づいて、前記フレームワーク層が参照システムイメージによって置換、補完、又は変更された前記コンピューティング装置の前記オペレーティングシステムが適切に機能しているかどうかを決定することとを備える、媒体。
【請求項１８】
前記オペレーティングシステムは、前記フレームワーク層と前記ハードウェア抽象化層との間の通信を容易にするように構成されるインターフェース層をさらに含む、請求項１７に記載の媒体。
【請求項１９】
前記テストデータは、前記ハードウェア抽象化層と対話するようにさらに構成される、請求項１７又は１８に記載の媒体。
【請求項２０】
前記ハードウェア抽象化層及び前記カーネルは、前記コンピューティング装置の製造業者によって変更されたベンダー実装層を定義し、
前記テストデータは、前記ベンダー実装層を変更せずに前記ハードウェア抽象化層の機能をテストするために前記参照システムイメージと対話することにより前記オペレーティングシステムの機能を検証するように構成される、請求項１７〜１９のいずれか１項に記載の媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
分野
この明細書は、オペレーティングシステムのテストに関する。
【背景技術】
【０００２】
背景
オペレーティングシステムは、コンピュータハードウェア及びソフトウェアリソースを管理し、コンピュータプログラムのための共通のサービスを提供するシステムソフトウェアである。コンピュータプログラムは、オペレーティングシステムが機能することを要求する。
【発明の概要】
【課題を解決するための手段】
【０００３】
概要
コンピューティング装置の製造業者は、製造業者がコンピューティング装置上にインストールしているオペレーティングシステムの様々な部分を変更し得る。しかしながら、オペレーティングシステムは、オペレーティングシステムとの一定のタイプの対話を期待する幅広い種類の開発者によって開発され得る多くの異なる種類のユーザーアプリケーションと互換性を保つために、やはり特定の機能を保持していなければならない。そのため、コンピューティング装置の製造業者は、いくつかの互換性テストを実行することにより、アプリケーションプログラムインターフェイス（又は他のインターフェース）を通じて晒されるオペレーティングシステムの一部をテストし得る。それでも、これらのインターフェースは、テストすることがいくぶん簡単であり得る一方で、十分な許可がないとそれほど容易にはアクセスできないオペレーティングシステムの内部の部分をテストすることは困難であり得る。いくつかのオペレーティングシステムは、オペレーティングシステムの全ての部分がアクセス可能である、及び／又は全ての操作が実行され得るルートモードにおける装置の操作を防ぐように設計されている。そのため、製造業者（ここではベンダーとも呼ばれる）によって変更されるオペレーティングシステムの一部をテストすることは困難であるが、それは、「テスト困難部分」に該当する。さらに、ルートアクセスが可能であったとしても、装置が典型的なエンドユーザーによって使用されるであろうモードにおいて実行されているとき、オペレーティングシステムの「テスト困難部分」をテストすることには利点がある。つまり、オペレーティングシステムがエンドユーザーモードにおいて適切に機能することを保証するためには、異なる技術が必要である。
【０００４】
コンピューティング装置上のオペレーティングシステムのエンドユーザービルドをテストするために、サーバは、コンピューティング装置に読み込むイメージを提供し得る。イメージは、ハードウェアに依存しないオペレーティングシステムの１つ以上の高層部分等、オペレーティングシステムの特定の部分を置換又は補完し得る。イメージがオペレーティングシステムの一部を置換又は補完した状態において、オペレーティングシステムは起動可能のままであり、オペレーティングシステムの下位層間の依存性は除去される。コンピューティング装置は、リモート装置からテストデータを受信し、そのテストデータを、オペレーティングシステムの一部を置換又は補完したオペレーティングシステムのイメージ部分に渡すことができ得る。イメージは、受信したテストデータを使用して、製造業者によって変更されたかもしれないが、そうでなければルートアクセスなしではテスト可能でないかもしれないオペレーティングシステムの下位層の機能と対話し、それを検証し得る。このテストは、下位層の一部を変更せずに実行され得る。コンピューティング装置は、テストデータの内容に基づいて動作を実行したことに対して応答データを生成し、この応答データをリモート装置に送信し得る。リモート装置は、応答データを分析することにより、変更されたオペレーティングシステムが、晒されたインターフェースにおいて、及び晒されたインターフェースを介して直接的にテスト可能でないかもしれないその内部の部分の両方において、適切に機能しているか否かを検証し得る。
【０００５】
本願において記載される主題の革新的な態様によれば、オペレーティングシステム検証のための方法は、以下の動作を含む。以下の動作は、オペレーティングシステムを実行するコンピューティング装置に参照システムイメージを提供することであって、オペレーティングシステムは、アプリケーション層と、ネイティブライブラリを含むフレームワーク層と、ハードウェア抽象化層と、ファームウェア及びドライバを含むカーネルとを備え、参照システムイメージは、フレームワーク層を置換、補完、又は変更するように構成されること；参照システムイメージによってフレームワーク層が置換、補完、又は変更されたコンピューティング装置に、ハードウェア抽象化層を変更することなくハードウェア抽象化層の機能をテストするために参照システムイメージと対話することによりオペレーティングシステムの機能を検証するように構成されるテストデータを提供し、フレームワーク層が参照システムイメージによって置換、補完、又は変更されたコンピューティング装置は、ルート化されていない装置であること；ハードウェア抽象化層の機能をテストするコンピューティング装置に応じて、フレームワーク層が参照システムイメージによって置換、補完、又は変更されたコンピューティング装置からテスト応答データを受信すること；テスト応答データを、オペレーティングシステムを実行し適切に機能するコンピューティング装置に対応する既知のテスト応答データと比較すること；並びに、当該比較に基づいて、フレームワーク層が参照システムイメージによって置換、補完、又は変更されたコンピューティング装置のオペレーティングシステムが適切に機能しているかどうかを決定することである。
【０００６】
これら及び他の実施形態は、以下の機能の１つ以上をそれぞれ任意に含み得る。オペレーティングシステムは、フレームワーク層とハードウェア抽象化層との間の通信を容易にするように構成されるインターフェース層をさらに含む。テストデータは、ハードウェア抽象化層と対話するようにさらに構成される。ハードウェア抽象化層及びカーネルは、コンピューティング装置の製造業者によって変更されたベンダー実装層を定義する。テストデータは、ベンダー実装層を変更せずにハードウェア抽象化層の機能をテストするために参照システムイメージと対話することによりオペレーティングシステムの機能を検証するように構成される。オペレーティングシステムは、ＳＥＬｉｎｕｘの実装を含む。この動作は、フレームワーク層が参照システムイメージによって置換、補完、又は変更されたコンピューティング装置に、ＳＥＬｉｎｕｘを許可モードにするための命令を与えることをさらに含む。ＳＥＬｉｎｕｘが許可モードにある間、テストデータは、コンピューティング装置に提供される。参照システムイメージは、フレームワーク層とハードウェア抽象化層との間に存在する依存性を除去するように構成される。参照システムイメージは、ユーザーデバッグビルドである。ハードウェア抽象化層及びカーネルはユーザービルドである。ハードウェア抽象化層を変更せずにハードウェア抽象化層の機能をテストするために参照システムイメージと対話することによりオペレーティングシステムの機能を検証するように構成されるテストデータを、フレームワーク層が参照システムイメージによって置換、補完、又は変更されたコンピューティング装置に提供する動作は、コンピューティング装置上で実行され、テストデータを受信するデーモンの特権レベルをエスカレートするための命令を与えることを含む。
【０００７】
この態様の他の実施形態は、対応するシステム、機器、及びコンピュータ記憶装置上に記録されたコンピュータプログラムを含み、それぞれが当該方法の動作を実行するように構成される。
【０００８】
本願において説明される主題は、以下の利点のうちの１つ以上を有し得る。システムは、オペレーティングシステムにおいて存在するセキュリティチェックを保ちながら、オペレーティングシステムの機能を検証し得る。システムは、オペレーティングシステムの晒される部分と、インターフェースを介して以外では晒されないかもしれないオペレーティングシステムの下位層部分の機能を検証できる。
【０００９】
本明細書において説明される主題の１つ以上の実施形態の詳細は、添付の図面及び以下の説明に記載されている。本主題の他の特徴、態様、及び利点は、説明、図面、及び特許請求の範囲から明らかになるであろう。
【図面の簡単な説明】
【００１０】
【図１】オペレーティングシステムを検証するための例示的なシステムを示す図である。
【図２】オペレーティングシステムを検証するための例示的なプロセスを示す図である。
【図３】コンピューティング装置及びモバイルコンピューティング装置の例を示す図である。
【００１１】
図面において、同様の参照番号は、全体を通して対応する部分を表す。
【発明を実施するための形態】
【００１２】
詳細な説明
図１は、オペレーティングシステムを検証するための例示的なシステム１００を示す。簡潔に、及び以下において詳細に説明するように、サーバ１０２は、コンピューティング装置１０４上にて実行されているオペレーティングシステム（例えば、変更されていないオペレーティングシステム１０６ａ、及び変更されたオペレーティングシステム１０６ｂ）を検証する。サーバ１０２は、オペレーティングシステム１０６ａ及び１０６ｂを変更し、テストデータ１０８をコンピューティング装置１０４に提供する。サーバ１０２は、テスト応答データ１１０を既知のテスト応答データ１１２と比較することによりオペレーティングシステム１０６ａ及び１０６ｂの動作を検証する。
【００１３】
コンピューティング装置１０４は、オペレーティングシステムを実行することができる任意のタイプのコンピューティング装置であり得る。例えば、コンピューティング装置１０４は、携帯電話、ラップトップ、デスクトップコンピュータ、タブレット、時計、ウェアラブル装置、スマートスピーカー、スマートアプライアンス、又は任意の他の同様のタイプのコンピューティング装置であり得る。コンピューティング装置１０４は、オペレーティングシステム１０６ａ及び１０６ｂを開発しないエンティティによって製造され得る。例えば、優れた電話メーカー、タブレットメーカー、及びファンフォンメーカー（Fun Phone Maker）は、異なるバージョンのコンピューティング装置１０４をそれぞれ製造し、ソフトウェア会社は、オペレーティングシステム１０６ａ及び１０６ｂを開発し得る。
【００１４】
コンピューティング装置１０４とオペレーティングシステム１０６ａ及び１０６ｂとの間の互換性を保証するために、コンピューティング装置１０４の製造業者は、オペレーティングシステム１０４の異なる部分を変更し得る。例えば、製造業者は、コンピューティング装置１０４の特定のハードウェアと通信するオペレーションシステム１０６ａ及び１０６ｂの一部と、フロントフェイシングユーザアプリケーション（front facing user applications）であるオペレーションシステム１０６ａ及び１０６ｂの一部と、ハードウェアとユーザーアプリケーションとの間のオペレーションシステム１０６ａ及び１０６ｂの一部とを変更し得る。
【００１５】
コンピューティング装置１０４の製造業者は、オペレーティングシステム１０６ａ及び１０６ｂが、オペレーティングシステム１０６ａ及び１０６ｂの開発者によって示されるオペレーティングシステム１０６ａ及び１０６ｂの要件に従うことも保証する。例えば、オペレーティングシステム１０６ａ及び１０６ｂの開発者は、オペレーティングシステム１０６ａ及び１０６ｂが特定のメッセージングアプリケーションを実行できることを要求し得る。この特定のメッセージングアプリケーションは、製造業者によってオペレーティングシステム１０６ａ及び１０６ｂに加えられた変更とは無関係に、オペレーティングシステム１０６ａ及び１０６ｂを実行している任意のコンピューティング装置１０４上で実行されるべきである。
【００１６】
オペレーティングシステム１０６ａ及び１０６ｂの、変更された各バージョンが正しく動作していることを保証するためのテストすることは挑戦的であり得る。１つの厄介の問題は、オペレーティングシステム１０６ａ及び１０６ｂがルート化可能でないというセキュリティ要件に基づいている。言い換えると、ユーザーは、装置を起動してルートアクセスを取得できないことがあり得る（例えば、ユーザーは、重要なシステムファイルにアクセス、及び重要なシステムファイルを変更することを妨げられ得る、又は権限のないユーザーは、機密の若しくは個人的なユーザーデータにアクセスすることを妨げられ得る）。オペレーティングシステム１０６ａ及び１０６ｂは、ユーザーデータの保護及びプライバシーを保証するために、このように特異的に設計され得る。オペレーティングシステム１０６ａ及び１０６ｂがルート化されていない場合、テストスイートが、セキュリティ権限により特定されたオペレーティングシステム１０６ａ及び１０６ｂの特定の部分にアクセスできるにすぎないかもしれないため、完全なテストスイートを実行することは困難である。
【００１７】
この問題に対抗するために、テストスイートを実行するサーバ１０２は、オペレーティングシステム１０６ａ及び１０６ｂの一部を変更し得る。この変更された部分は、装置をルート化せずにはアクセスできないかもしれない、オペレーティングシステム１０６ａ及び１０６ｂのこれらの内部の部分の機能と通信し、その機能を検証するように構成され得る。変更された部分は、典型的なエンドユーザーにより使用されるであろうモードに対して起動可能であるべきである。言い換えれば、テストスイートは、アプリケーションによる使用のために晒されるＡＰＩをテストするように構成される互換性テストスイートと、ベンダーテストスイート（製造業者のテストスイート等）の両方を実行できるべきである。ベンダーテストスイートは、オペレーティングシステム１０６ａ及び１０６ｂの内部の構成要素の互換性を保証するためにオペレーティングシステム１０６ａ及び１０６ｂの内部の構成要素をテストするように構成される動作及び／又はデータのセットを含み得る。なぜなら、それらは外向きのインターフェースを介さなければテスト可能でないかもしれないからである。上述のように、オペレーティングシステム１０６ａ及び１０６ｂの内部の構成要素は、コンピューティング装置１０４の製造業者によって変更され得る。
【００１８】
図１に示すように、オペレーティングシステム１０６ａは、５つの異なる層を含む。オペレーティングシステム１０６ａは、最終的なユーザービルドを表す。言い換えれば、オペレーティングシステム１０６ａは、エンドユーザーへ提供されるように準備、及び構成されている。これは、検証されるべきオペレーティングシステムのバージョンである。
【００１９】
いくつかの実施形態において、オペレーティングシステム１０６ａは、エンドユーザーによって操作されるコンピューティング装置上の既存のオペレーティングシステムに対して最新版であり得る。この場合、オペレーティングシステム１０６ａは、エンドユーザーによって操作されるコンピューティング装置と同様のコンピューティング装置に読み込まれ得る。次に、サーバ１０２は、同様のコンピューティング装置上で実行されているオペレーティングシステム１０６ａの動作を検証し得る。次に、コンピューティング装置１０４の製造業者又はサービスプロバイダは、検証されたオペレーティングシステム１０６ａの更新されたバージョンをプッシュすることができる。
【００２０】
オペレーティングシステム１０６ａの層は、カーネル１１４ａと、ハードウェア抽象化層１１６ａと、ベンダーインターフェース１１８ａと、フレームワーク層１２０ａと、アプリケーション層１２２ａとを含む。カーネル１１４ａは、オペレーティングシステム１０６ａの核である。カーネル１１４ａは、起動プロセスがメモリに読み込む最初のプログラムであり得る。カーネル１１４ａは、残りの起動プロセスを処理してもよい。カーネル１１４ａは、ＣＰＵ、メモリ、及びコンピューティング装置１０４の他のハードウェアと対話する。カーネル１１４ａは、コンピューティング装置１０４の電池残量を管理するための電源管理機能を含む。カーネル１１４ａは、オーディオドライバー、ディスプレイドライバー、ブルートゥース（登録商標）ドライバ、ＵＳＢドライバ、カメラドライバー、ＷｉＦｉ（登録商標）ドライバ、及び他の同様のドライバ等の様々なハードウェア装置と通信するためのドライバを含む。
【００２１】
オペレーティングシステム１０６ａの別の層は、ハードウェア抽象化層１１６ａである。ハードウェア抽象化層（ＨＡＬ）１１６ａは、オペレーティングシステム１０６ａの上位層、例えばフレームワーク層１２０ａにおける１つ以上のＡＰＩに、装置のハードウェア性能を晒す標準的なインターフェースを提供する。ＨＡＬ１１６ａは、複数のライブラリモジュールから構成され、モジュールの各々は、カメラ又はブルートゥースモジュール等の特定のタイプのハードウェア構成要素のためのインターフェースを実装する。フレームワーク層１２０ａにおけるＡＰＩを介して装置のハードウェアにアクセスするための呼び出しが行われると、オペレーティングシステム１０６ａは、そのハードウェア構成要素のためのライブラリモジュールを読み込む。いくつかの実施形態において、オペレーティングシステム１０６ａの製造業者は、ＨＡＬ１１６ａがカーネル１１４ａ及びドライバとともに適切に動作することを保証するためにＨＡＬ１１６ａを変更し得る。ドライバは、異なる製造業者のコンピューティング装置１０４のバージョンごとに異なってもよく、したがって、カーネル１１４ａ及びドライバと適切に通信するためにＨＡＬ１１６ａは変更されるべきである。
【００２２】
オペレーティングシステム１０６ａの別の層は、フレームワーク層１２０ａである。フレームワーク層１２０ａは、コンピューティング装置１０４のハードウェアに依存しなくてもよい。言い換えれば、フレームワーク層１２０ａは、コンピューティング装置１０４のハードウェアとは無関係に同様に動作する。コンピューティング装置１０４の製造業者は、依然としてフレームワーク層１２０を変更し得るが、その変更は、コンピューティング装置１０４のハードウェアとの互換性を保証することに基づいていなくてもよい。フレームワーク層１２０ａは、ネイティブライブラリの機能性をアプリケーション層１２２ａに晒すためのネイティブライブラリ及びＡＰＩフレームワーク（例えば、Ｊａｖａ（登録商標）ＡＰＩフレームワーク）を含む。ＡＰＩフレームワークは、オペレーティングシステム１０４ａのためのアプリケーションを開発するために必要な基礎的成分を含む。
【００２３】
オペレーティングシステム１０６ａの別の層は、ベンダーインターフェース１１８ａである。ベンダーインターフェース１１８ａは、ハードウェアに依存しないフレームワーク層１２０ａとハードウェア固有のハードウェア抽象化層１１６ａとの間の境界である。ベンダーインターフェース１１８ａは、フレームワーク層１２０ａとハードウェア抽象化層１１６ａとの間の通信を容易にするように構成される。いくつかの実施形態において、ベンダーインターフェース１１８ａは、バージョン管理されたハードウェア抽象化層インターフェースと、ユーザー空間に晒されるカーネルインターフェースと、所有権によって分離され得る他の構成要素とを集めたものをカプセル化する。いくつかの実施形態において、ベンダーインターフェース１１８ａは、ハードウェア抽象化層１１６ａの機能性をフレームワーク層１２０ａに晒すためのＡＰＩを含む。
【００２４】
オペレーティングシステム１０６ａの別の層は、アプリケーション層１２２ａである。アプリケーション層１２２ａは、オペレーティングシステム１０６ａに含まれるユーザーアプリケーションと、コンピューティング装置１０４の製造業者によって追加されるユーザーアプリケーションとを含む。例えば、アプリケーション層１２２ａは、メッセージングアプリケーションと、電子メールアプリケーションと、カレンダーアプリケーションと、写真管理アプリケーションと、ブラウザと、他の同様のアプリケーションとを含み得る。アプリケーションは、晒されたＡＰＩを介してフレームワーク層１２０ａと通信し得る。
【００２５】
ハードウェア抽象化層１１６ａ及びカーネル１１４ａは、ベンダー実装層１１５ａを定義し得る。ベンダー実装層１１５ａは、コンピューティング装置１０４の製造業者によって変更され得る。いくつかの実施形態において、いくつかのカーネル１１４ａのＡＰＩは、フレームワーク層１２０ａに直接晒される。いくつかの実施形態において、いくつかのカーネル１１４ａのＡＰＩは、ハードウェア抽象化層１１６を介して晒される。晒されたＡＰＩは、ベンダー実装層１１５ａのＡＰＩを形成する。
【００２６】
オペレーティングシステム１０６ａの機能を保証するために、システム１００は、図１においてＡ−Ｅとマークされたステージを実行する。ステージＡにおいて、サーバ１０２は、参照システムイメージ１２４をコンピューティング装置１０４へ提供する。参照システムイメージ１２４は、フレームワーク層１２０ａを上書きする、又はフレームワーク層１２０ａを強化するための命令を含み得る。参照システムイメージ１２４は、ユーザーデバッグビルドである層である。いくつかの実施形態において、参照システムイメージ１２４は、オペレーティングシステム１０６ａ内にあり、サーバ１０２から命令を受け入れるデーモンの特権レベルをエスカレートする。いくつかの実施形態において、参照システムイメージ１２４は、オペレーティングシステム１０６ａ（例えばＳＥＬｉｎｕｘ）のセキュリティが高められた部分を許可モードにするために変更し得る。許可モードにおいて、通常は許可されないセキュリティ違反が許可され得る。いくつかの実施形態において、オペレーティングシステム１０６ａのセキュリティが高められた部分を変更する必要はないかもしれない。その理由は、テストデータ１０８は、オペレーティングシステム１０６ａのセキュリティが高められた部分のルールを維持しながら、ベンダーインターフェース層１１８ａと直接通信するための性能をテストデータに与える特権をエスカレートし得たためである。オペレーティングシステムのセキュリティが高められた部分が変更されない場合、サーバは、必要なテストをそれでも実行しながら、セキュリティチェックを維持するためにデバッグブリッジ又は代替ユーザー（例えば、ｓｕ）コマンドを使用し得る。
【００２７】
ステージＢにおいて、コンピューティング装置１０４は、参照システムイメージ１２４を読み込む。いくつかの実施形態において、コンピューティング装置１０４は、フレームワーク層１２０ａを参照システムイメージ１２４に置換する。いくつかの実施形態において、コンピューティング装置１０４は、参照システムイメージ１２４をフレームワーク層１２０ａに追加する。結果として生じるオペレーティングシステム１０６ｂは、オペレーティングシステム１０６ａに類似している。オペレーティングシステム１０６ｂは起動可能である。オペレーティングシステム１０６ａは、カーネル１１４ｂを含み、カーネル１１４ｂは、カーネル１１４ａと類似又は同じである。オペレーティングシステム１０６ａは、ベンダーインターフェース１１８ｂを含み、ベンダーインターフェース１１８ｂは、ベンダーインターフェース１１８ａと類似又は同じである。オペレーティングシステム１０６ａは、ハードウェア抽象化層１１６ｂを含み、ハードウェア抽象化層１１６ｂは、ハードウェア抽象化層１１６ａと類似又は同じである。オペレーティングシステム１０６ａは、アプリケーション層１２２ｂを含み、アプリケーション層１２２ｂは、アプリケーション層１２２ａと類似又は同じである。ベンダー実装層１１５ｂは、ハードウェア抽象化層１１６ｂ及びカーネル１１４ｂとして定義され得る。
【００２８】
いくつかの実施形態において、オペレーティングシステム１０６ｂのセキュリティが高められた部分のルールは、コンピューティング装置１０４が適切に起動しないように、参照システムイメージ１２４におけるルールと一致しないことがあり得る。この場合、起動失敗は、参照システムイメージ１２４又はベンダーインターフェース層１１８ｂにおけるいくつかの不必要な依存性に起因し得る。サーバ１０２は、エラーがある層を識別するための追加的な診断を実行し得る。いくつかの実施形態において、サーバ１０２は、コンピューティング装置１０４のシリアルログをチェックし、シリアルログを既知のエラーと比較して、問題を解決し得る。
【００２９】
いくつかの実施形態において、参照システムイメージ１２４は、ハードウェア抽象化層１１６ｂへの直接的な依存性を有しない。特に、参照システムイメージ１２４は、コンピューティング装置１０４の製造業者によって変更されたハードウェア抽象化層１１６ｂの部分への直接的な依存性を有しない。いくつかの実施形態において、参照システムイメージ１２４は、ベンダーインターフェース１１８ｂに適合している。いくつかの実施形態において、参照システムイメージ１２４はテスト用である。しかしながら、参照システムイメージ１２４は、エンドユーザーによる通常の操作において使用され得る。
【００３０】
ステージＣにおいて、サーバ１０２は、ホスト側パッケージ１２６のテストの手順を実行する。ホスト側パッケージ１２６は、テストデータ１０８をコンピューティング装置１０４に提供するための、及びコンピューティング装置から受信したテスト応答データ１１０を既知のテスト応答データ１１２と比較するための命令を含む。サーバ１０２は、テストデータ１０８をコンピューティング装置１０４に送信する。いくつかの実施形態において、テストデータ１０８は２つの部分を含み得る。テストデータの最初の部分は、オペレーティングシステム１０６ｂの晒されたＡＰＩをテストする互換性テストデータを含む。サーバ１０２は、互換性テストデータをオペレーティングシステム１０６ａ又は１０６ｂに提供して、晒されたＡＰＩが適切に機能しているかどうかを決定し得る。テストデータの２番目の部分は、ベンダーテストデータを含む。このサーバ１０２は、ベンダーインターフェース層１１８ｂ及びハードウェア抽象化層１１６ｂの機能をテストするためにベンダーテストデータを提供し得る。ベンダーテストデータは、ベンダーインターフェース層１１８ｂと通信するためのエスカレートされた特権を持ち得る。したがって、エスカレートされた特権を有するベンダーテストデータは、参照システムイメージ１２４と組み合わされると、ハードウェア抽象化層１１６ｂの機能をテストし得る。参照システムイメージがないと、ベンダーテストデータは、セキュリティ制限のためにハードウェア抽象化層１１６ｂの機能をテストできないことがあり得る。
【００３１】
オペレーティングシステム１０６ｂは、ステージＣにおいてテストデータ１０８を受信し、テストデータ１０８を実行し、その後、ステージＤにおいてテスト応答データ１１０を返す。テスト応答データ１１０は、テストデータ１０８の実行に際しオペレーティングシステム１０６ｂの層によって生成されたデータを含む。テスト応答データ１１０は、互換性テストデータ及びベンダーテストデータのためのテスト応答データを含み得る。
【００３２】
ステージＥにおいて、サーバ１０２は、受信したテスト応答データ１１０を既知のテスト応答データ１１２と比較する。既知のテスト応答データ１１２は、機能しかつ検証されたオペレーティングシステムを備えたコンピューティング装置のための応答データを含む。いくつかの実施形態において、既知のテスト応答データ１１２は、機能しかつ検証されたオペレーティングシステムを有しないコンピューティング装置のための応答データのサンプルを含み得る。ホスト側パッケージ１２６は、テスト応答データ１１０を比較するための命令を含む。当該比較に基づいて、サーバ１０２は、オペレーティングシステム１０６ｂが有効でありかつ機能するかどうかを決定する。サーバ１０２は、異なるオペレーティングシステムを実行する異なるコンピューティング装置上でプロセスを繰り返し得る。
【００３３】
図２は、オペレーティングシステムを検証するための例示的なプロセス２００を示す。一般に、プロセス２００は、オペレーティングシステムの一部を変更することにより動作を検証し、変更なしではアクセスできなかったかもしれないオペレーティングシステムの他の部分と通信する。プロセス２００は、１つ以上のコンピュータ、例えば図１において示されるようなサーバ１０２を備えるコンピュータシステムによって実行されるとして説明されるだろう。
【００３４】
システムは、オペレーティングシステムを実行するコンピューティング装置に参照システムイメージを提供する。当該オペレーティングシステムは、アプリケーション層と、ネイティブライブラリを含むフレームワーク層と、ハードウェア抽象化層と、ファームウェア及びドライバを含むカーネルとを備える。当該参照システムイメージは、フレームワーク層を置換するように構成される（２１０）。これらの層の各々は、オペレーティングシステム１０６ａの層と類似又は同一であってもよい。いくつかの実施形態において、オペレーティングシステムは、フレームワーク層とハードウェア抽象化層との間の通信を容易にするように構成されるインターフェース層を含む。いくつかの実施形態において、コンピューティング装置の製造業者、又はベンダーは、１つ以上のこれらの層を変更し得る。例えば、製造業者は、ハードウェア抽象化層がコンピューティング装置のハードウェアと互換性を持つように、ハードウェア抽象化層を変更し得る。この変更は、ハードウェア抽象化層に対して対象のベンダーの実装部分を変更又は追加することを含み得る。
【００３５】
システムは、フレームワーク層を置換した、又はフレームワーク層を補完した参照システムイメージを含むコンピューティング装置に、テストデータを提供する。そのテストデータは、ハードウェア抽象化層を変更することなくハードウェア抽象化層の機能をテストするために参照システムイメージと通信することによりオペレーティングシステムの機能を検証するように構成される（２２０）。いくつかの実施形態において、テストデータは、対象のベンダー実装（ハードウェア抽象化層の一部を含み得る）を変更することなくハードウェア抽象化層の機能をテストするために参照システムイメージと通信することによりオペレーティングシステムの機能を検証するように構成される。この場合において、対象のベンダー実装は、コンピューティング装置の製造業者によって最初に変更された可能性がある。
【００３６】
いくつかの実施形態において、オペレーティングシステムは、セキュリティが高められた部分、例えばＳＥＬｉｎｕｘを含み得る。システムは、コンピューティング装置に命令を与えて、セキュリティが高められた部分を許可モードにし得る。許可モードにおいて、オペレーティングシステムは、許可モード以外では通常は許可さないかもしれない違反を許可し得る。システムは、許可モードにおいてセキュリティが高められた部分があるにも関わらず、テストデータをコンピューティング装置に提供し得る。
【００３７】
いくつかの実施形態において、コンピューティング装置は、ルート化不可能である。言い換えれば、コンピューティング装置は、ルートレベルの許可で起動することができない。コンピューティング装置は、エンドユーザーの許可でのみ起動できることがあり得る。これは、ユーザーデータの保護及びプライバシー保全のためであり得る。さらに、オペレーティングシステムのエンドユーザービルドに関するテストが実行されることは有益であり、そのビルドは、現実世界のユーザーエクスペリエンスを再現するためにユーザーモードにおいて実行される。いくつかの実施形態において、参照システムは、ユーザーデバッグビルドである。言い換えれば、参照システムイメージにより、コンピューティング装置は、特定のパラメーターがテスターによって観察又は記録されるように、エンドユーザーモードにおいて起動中にデバッグ機能を発揮し得る。
【００３８】
いくつかの実施形態において、システムは、コンピューティング装置上で実行され、テストデータを受信するデーモンの特権レベルをエスカレートするための命令を与える。システムは、コンピューティング装置にセキュリティが高められた部分を許可モードにするための命令を与える代わりに、この命令を与え得る。いくつかの実施形態において、参照システムイメージは、特にシステムからのデバッグを許可し得る。
【００３９】
いくつかの実施形態において、テストデータは、晒されたＡＰＩをテストするための互換性テストデータを含み、ベンダーインターフェース層及びハードウェア抽象化層をテストするためのベンダーテストデータを含む。参照システムイメージがないと、システムはユーザービルドされたコンピューティング装置を用いてベンダーテストデータを使用してテストを実行するのが困難であり得る（又はテストを全く実行できないことがあり得る）。参照システムイメージは、フレームワーク層とハードウェア抽象化層との間に存在する依存性を除去するように構成されている。
【００４０】
システムは、フレームワーク層の代わりに参照システムイメージを含むコンピューティング装置から、テスト応答データを受信する（２３０）。テスト応答データは、互換性テスト及びベンダーテストのための応答データを含み得る。システムは、テスト応答データを、オペレーティングシステムを実行し適切に機能するコンピューティング装置から受信したデータに対応する既知のテスト応答データと比較する（２４０）。既知のテスト応答データは、機能しかつ検証されたオペレーティングシステムに対応する応答データ、並びに機能していない及び／又は検証されていないオペレーティングシステムに対応する応答データのサンプルを含み得る。システムは、当該比較に基づいて、フレームワーク層の代わりに参照システムイメージを含むコンピューティング装置のオペレーティングシステムが適切に機能しているかどうかを決定できる（２５０）。
【００４１】
図３は、本明細書にて説明される技術を実装するために使用できる、コンピューティング装置３００及びモバイルコンピューティング装置３５０の例を示す。コンピューティング装置３００は、ラップトップ、デスクトップ、ワークステーション、携帯情報端末、サーバ、ブレードサーバ、メインフレーム、及び他の適切なコンピュータ等、様々な形態のデジタルコンピュータを表すことを意図している。モバイルコンピューティング装置３５０は、携帯情報端末、携帯電話、スマートフォン、及び他の同様のコンピューティング装置等、様々な形態のモバイル装置を表すことを意図している。本明細書にて示される構成要素、それらの接続及び関係、並びにそれらの機能は、例に過ぎないことを意図しており、限定することを意図したものではない。
【００４２】
コンピューティング装置３００は、プロセッサ３０２と、メモリ３０４と、記憶装置３０６と、メモリ３０４及び複数の高速拡張ポート３１０に接続する高速インターフェース３０８と、低速拡張ポート３１４及び記憶装置３０６に接続する低速インターフェース３１２とを含む。プロセッサ３０２、メモリ３０４、記憶装置３０６、高速インターフェース３０８、高速拡張ポート３１０、及び低速インターフェース３１２の各々は、様々なバスを使用して相互に接続され、共通のマザーボードに、又はその他の方法において必要に応じて搭載され得る。プロセッサ３０２は、メモリ３０４又は記憶装置３０６にて記憶された命令を含む、コンピューティング装置３００内での実行のための命令を処理して、高速インターフェース３０８に結合されたディスプレイ３１６等、外部の入力／出力装置上のＧＵＩのためのグラフィカル情報をＧＵＩに表示できる。他の実施形態において、複数のプロセッサ及び／又は複数のバスは、必要に応じて、複数のメモリ及びメモリのタイプとともに使用され得る。また、複数のコンピューティング装置は接続され、各装置が必要な動作の一部を提供し得る（例えば、サーババンク、ブレードサーバのグループ、又はマルチプロセッサシステムとして）。
【００４３】
メモリ３０４は、コンピューティング装置３００内の情報を記憶する。いくつかの実施形態において、メモリ３０４は、揮発性メモリユニット（unit or units）である。いくつかの実施形態において、メモリ３０４は、不揮発性メモリユニット（unit or units）である。メモリ３０４は、磁気又は光ディスク等、別の形態の、コンピュータが読み取り可能な媒体でもあり得る。
【００４４】
記憶装置３０６は、コンピューティング装置３００のための大きな記憶容量を提供できる。いくつかの実施形態において、記憶装置３０６は、フロッピー（登録商標）ディスク装置、ハードディスク装置、光ディスク装置、若しくはテープ装置、フラッシュメモリ若しくは他の同様の固体メモリ装置、若しくは装置のアレイ等、コンピュータが読み取り可能な媒体であり得るか、又はそれを含み得る。当該媒体は、ストレージエリアネットワーク又はその他の構成における装置を含む。命令は情報担体において記憶できる。当該命令は、１つ以上の処理装置（例えば、プロセッサ３０２）によって実行されると、上記の方法等、１つ以上の方法を実行する。命令は、コンピュータ又は機械が読み取り可能な媒体（例えば、メモリ３０４、記憶装置３０６、又はプロセッサ３０２上のメモリ）等の１つ以上の記憶装置によって記憶することもできる。
【００４５】
高速インターフェース３０８は、コンピューティング装置３００のために、帯域幅を多く使う動作を管理する。一方、低速インターフェース３１２は、より低い帯域幅を多く使う動作を管理する。このような機能の割り当ては一例に過ぎない。いくつかの実施形態において、高速インターフェース３０８は、メモリ３０４、ディスプレイ３１６（例えば、グラフィックプロセッサ又はアクセラレータを介して）、及び様々な拡張カードを受け入れ得る高速拡張ポート３１０に結合される。実施形態において、低速インターフェース３１２は、記憶装置３０６及び低速拡張ポート３１４に結合される。低速拡張ポート３１４は、様々な通信ポート（例えば、ＵＳＢ、ブルートゥース（登録商標）、イーサネット（登録商標）、ワイヤレスイーサネット）を含み得るが、キーボード、ポインティング装置、スキャナー、又は例えばネットワークアダプター経由のスイッチ若しくはルーター等のネットワーク装置等、１つ以上の入力／出力装置に結合され得る。
【００４６】
コンピューティング装置３００は、図において示されるように、多くの異なる形態で実装され得る。例えばそれは、標準的なサーバ３２０として、又はそのようなサーバのグループにおいて複数回実装され得る。さらに、それは、ラップトップコンピュータ３２２等のパーソナルコンピュータにおいて実装され得る。それは、また、ラックサーバシステム３２４の一部としても実装され得る。あるいは、コンピューティング装置３００からの構成要素は、モバイルコンピューティング装置３５０等のモバイル装置における他の構成要素と組み合わせ得る。そのような装置の各々は、１つ以上のコンピューティング装置３００及びモバイルコンピューティング装置３５０を含み、システム全体は、互いに通信している複数のコンピューティング装置から成り得る。
【００４７】
モバイルコンピューティング装置３５０は、他の構成要素の中で、プロセッサ３５２と、メモリ３６４と、ディスプレイ３５４等の入力／出力装置と、通信インターフェース３６６と、トランシーバ３６８とを含む。モバイルコンピューティング装置３５０は、追加の記憶容量を提供するために、マイクロドライブ又は他の装置等の記憶装置も備え得る。プロセッサ３５２、メモリ３６４、ディスプレイ３５４、通信インターフェース３６６、及びトランシーバ３６８の各々は、様々なバスを使用して相互に接続され、構成要素のいくつかは、共通のマザーボード上に又は必要に応じて他の方法において搭載され得る。
【００４８】
プロセッサ３５２は、メモリ３６４において記憶された命令を含む、モバイルコンピューティング装置３５０内の命令を実行できる。プロセッサ３５２は、別個かつ複数のアナログ及びデジタルプロセッサを含むチップのチップセットとして実装され得る。プロセッサ３５２は、例えば、ユーザーインターフェイスの、モバイルコンピューティング装置３５０によって実行されるアプリケーションの、及びモバイルコンピューティング装置３５０による無線通信の制御等の、モバイルコンピューティング装置３５０の他の構成要素の調整を提供し得る。
【００４９】
プロセッサ３５２は、ディスプレイ３５４に結合された、制御インターフェース３５８及びディスプレイインターフェース３５６を介してユーザーと通信し得る。ディスプレイ３５４は、例えば、薄膜トランジスタ（ＴＦＴ：Thin-Film-Transistor Liquid Crystal Display）ディスプレイ、有機発光装置（ＯＬＥＤ：Organic Light Emitting Diode）ディスプレイ、又は他の適切なディスプレイ技術であり得る。ディスプレイインターフェース３５６は、ディスプレイ３５４にグラフィカルな及び他の情報をユーザーに提示させるための適切な回路を備え得る。制御インターフェース３５８は、ユーザーから命令を受け取り、プロセッサ３５２への送信のためにそれらを変換し得る。加えて、外部インターフェース３６２は、モバイルコンピューティング装置３５０の他の装置との近距離通信を可能にするために、プロセッサ３５２と通信し得る。外部インターフェース３６２は、例えば、いくつかの実施形態において有線通信、又は他の実施形態において無線通信を提供してもよく、複数のインターフェースも使用され得る。
【００５０】
メモリ３６４は、モバイルコンピューティング装置３５０内の情報を記憶する。メモリ３６４は、１つ以上のコンピュータが読み取り可能な媒体（medium or media）、揮発性メモリユニット（unit or units）、又は不揮発性メモリユニット（unit or units）として実装され得る。拡張メモリ３７４も設けられ、拡張インターフェース３７２を介してモバイルコンピューティング装置３５０に接続され得る。拡張インターフェース３７２は、例えばシングルインラインメモリモジュール（ＳＩＭＭ：Single In Line Memory Module）カードインターフェースを含み得る。拡張メモリ３７４は、モバイルコンピューティング装置３５０のための追加的な記憶領域を提供し得る、又はモバイルコンピューティング装置３５０のためのアプリケーション若しくは他の情報を記憶し得る。特に、拡張メモリ３７４は、上述のプロセスを実行又は補完するための命令を含んでもよく、安全な情報も含み得る。したがって、例えば、拡張メモリ３７４は、モバイルコンピューティング装置３５０のためのセキュリティモジュールとして提供されてもよく、モバイルコンピューティング装置３５０の安全な使用を許可する命令とともにプログラムされてもよい。さらに、ハッキング不可能な方法において付すＳＩＭＭカード上の識別情報等の追加の情報とともに、ＳＩＭＭカードを介して、安全なアプリケーションが提供され得る。
【００５１】
メモリは、後述するように、例えば、フラッシュメモリ及び／又は不揮発性ランダムアクセスメモリ（ＮＶＲＡＭ：non-volatile random access memory）を含み得る。いくつかの実施形態において、命令は情報担体において記憶され、当該命令は、１つ以上の処理装置（例えば、プロセッサ３５２）によって実行されると、例えば上記方法のような１つ以上の方法を実行する。当該命令は、１つ以上のコンピュータ又は機械が読み取り可能な媒体（例えば、メモリ３６４、拡張メモリ３７４、又はプロセッサ３５２上のメモリ）等の１つ以上の記憶装置によっても記憶できる。いくつかの実施形態において、当該命令は、例えばトランシーバ３６８又は外部インターフェース３６２を超えて伝播される信号において受信できる。
【００５２】
モバイルコンピューティング装置３５０は、必要に応じてデジタル信号処理回路を含み得る通信インターフェース３６６を介して無線で通信し得る。通信インターフェース３６６は、様々なモード又はプロトトコルの下での通信のために、中でも、ＧＳＭ（登録商標）音声通話（ＧＳＭ：Global System for Mobile communications）、ショートメッセージサービス（ＳＭＳ：Short Message Service）、エンハンストメッセージングサービス（ＥＭＳ：Enhanced Messaging Service）、又はマルチメディアメッセージングサービス（ＭＭＳ：Multimedia Messaging Service）、符号分割多元接続（ＣＤＭＡ：code division multiple access）、時分割多元接続（ＴＤＭＡ：time division multiple access）、パーソナルデジタルセルラ（ＰＤＣ：Personal Digital Cellular）、広帯域符号分割多元接続（ＷＣＤＭＡ（登録商標）：Wideband Code Division Multiple Access）、ＣＤＭＡ２０００、又は汎用パケット無線サービス（ＧＰＲＳ：General Packet Radio Service）を提供し得る。そのような通信は、例えば、無線周波数を使用するトランシーバ３６８を介して行われ得る。さらに、ブルートゥース（登録商標）、ＷｉＦｉ（登録商標）、又はそのようなその他のトランシーバを使用すること等の短距離通信が行われ得る。加えて、全地球測位システム（ＧＰＳ：Global Positioning System）受信機モジュール３７０は、追加のナビゲーション及び位置に関連する無線データをモバイルコンピューティング装置３５０に提供してもよく、そのデータは、モバイルコンピューティング装置３５０上で実行されるアプリケーションにより必要に応じて使用され得る。
【００５３】
モバイルコンピューティング装置３５０は、オーディオコーデック３６０を使用して聞こえるように通信することもでき、モバイルコンピューティング装置３５０は、ユーザーから話された情報を受信し、それを使用可能なデジタル情報に変換し得る。オーディオコーデック３６０は、同様に、例えばモバイルコンピューティング装置３５０のハンドセットにおけるスピーカーを介して等により、ユーザーに対して聞き取れる音を生成し得る。そのような音は、音声通話からの音を含んでもよく、録音された音（例えば、音声メッセージ、音楽ファイル等）を含んでいてもよく、モバイルコンピューティング装置３５０上で動作するアプリケーションによって生成される音も含み得る。
【００５４】
モバイルコンピューティング装置３５０は、図に示されるように、多くの異なる形態で実装され得る。例えば、それは、携帯電話３８０として実装され得る。それは、また、スマートフォン３８２、携帯情報端末、又は他の同様のモバイル装置の一部としても実装され得る。
【００５５】
本明細書にて説明するシステム及び技術の様々な実施形態は、デジタル電子回路、集積回路、特定用途向け集積回路（ＡＳＩＣｓ：application specific integrated circuits）、コンピュータハードウェア、ファームウェア、ソフトウェア、及び／又はそれらの組み合わせにおいて実現できる。これらの様々な実装は、少なくとも１つのプログラマブルプロセッサを含むプログラマブルシステム上で実行可能及び／又は解釈可能な１つ以上のコンピュータプログラムにおける実装を含み得る。そのシステムは、記憶システム、少なくとも１つの入力装置、及び少なくとも１つの出力装置からデータ並びに命令を受信し、それらにデータ並びに命令を送信するように結合された、専用又は汎用のものであり得る。
【００５６】
これらのコンピュータプログラム（プログラム、ソフトウェア、ソフトウェアアプリケーション、又はコードとしても知られる）は、プログラマブルプロセッサのための機械命令を含み、高水準手続き型及び／若しくはオブジェクト指向プログラミング言語、並びに／又はアセンブリ／機械言語において実装できる。本明細書にて使用するとき、機械が読み取り可能な媒体、及びコンピュータが読み取り可能な媒体という用語は、機械命令及び／若しくはデータをプログラマブルプロセッサに提供するために使用される、任意のコンピュータプログラム製品、機器並びに／又は装置（例えば、磁気ディスク、光ディスク、メモリ、プログラマブルロジックデバイス（ＰＬＤｓ））を指す。当該媒体は、機械命令を機械が読み取り可能な信号として受信する、機械が読み取り可能な媒体を含む。機械が読み取り可能な信号という用語は、機械命令及び／又はデータをプログラマブルプロセッサに提供するために使用される任意の信号を指す。
【００５７】
ユーザーとの対話を提供するために、本明細書にて説明するシステム及び技術は、ユーザーに情報を表示するためのディスプレイ装置（例えば、陰極線管（ＣＲＴ：cathode ray tube）又は液晶ディスプレイ（ＬＣＤ：liquid crystal display)モニター等）と、キーボード及びポインティング装置（例えば、マウス又はトラックボール等）とを有するコンピュータ上で実装され得る。ユーザーは、キーボード及びポインティング装置により、コンピュータに入力できる。同様に、他の種類の装置は、ユーザーとの対話を提供するために使用できる；例えば、ユーザーに提供されるフィードバックは、任意の形態の感覚のフィードバック（例えば、視覚のフィードバック、聴覚のフィードバック、又は触覚のフィードバック）であり得る；そして、ユーザーからの入力は、音響、音声、又は触覚の入力を含む、任意の形態において受信され得る。
【００５８】
本明細書にて説明するシステム及び技術は、バックエンド構成要素（例えば、データサーバ等）を含む、又はミドルウェア構成要素（例えば、アプリケーションサーバ等）を含む、又はフロントエンド構成要素（例えば、グラフィカルユーザーインターフェイスを有するクライアントコンピュータ、又はユーザーがウェブブラウザを通じて本明細書にて説明するシステム及び技術の実施形態と対話できる当該ウェブブラウザ）を含む、又はそのようなバックエンド、ミドルウェア、若しくはフロントエンド構成要素の任意の組み合わせを含むコンピューティングシステムにおいて実装できる。システムの構成要素は、デジタルデータ通信の任意の形態又は媒体（例えば、通信ネットワーク）により相互接続できる。通信ネットワークの例は、ローカルエリアネットワーク（ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）、及びインターネットを含む。
【００５９】
コンピューティングシステムは、クライアント及びサーバを含み得る。一般的に、クライアントとサーバは、互いにリモートであり、通常、通信ネットワークを介して対話する。クライアントとサーバの関係は、それぞれのコンピュータ上で実行され、互いにクライアントとサーバの関係を持つコンピュータプログラムによって発生する。
【００６０】
いくつかの実施形態が上記にて詳細に説明されたが、他の変形例も可能である。例えば、クライアントアプリケーションは、デリゲート（複数可）にアクセスするとして説明されているが、他の実施形態において、１つ以上のサーバ上で実行されるアプリケーション等、１つ以上のプロセッサによって実装される他のアプリケーションによりデリゲート（複数可）が使用され得る。さらに、図において示されている論理フローは、望ましい結果を得るために、特定の示された順序又は順番を必要としない。さらに、説明したフローから、他の動作が提供されても、又は動作が除去されてもよく、他の構成要素が、説明したシステムに追加、又は説明したシステムから除去されてもよい。したがって、他の実施形態は、以下の特許請求の範囲内である。
【図１】
2020522769.tif 000003
【図２】
2020522769.tif 000004
【図３】
2020522769.tif 000005
【国際調査報告】
2020522769.tif 000006
2020522769.tif 000007