(57)【特許請求の範囲】
【請求項１】
モニタモジュールを含む未信頼アプリケーションがオープンプラットフォーム車載インフォテインメントシステム上で動作する車両システムであって、
所定のＡＰＩ仕様を分析することで、前記未信頼アプリケーションが前記ＡＰＩ仕様に準拠した望ましい挙動をしているか否かを判定する手段と、
車両の位置情報を取得する手段と、
前記位置情報に対応する一つ以上の安全ガイドラインを取得する手段と、
前記ＡＰＩ仕様および前記一つ以上の安全ガイドラインとの適合を判定するための一つ以上のランタイムルールを生成する手段と、
を含むアプリケーション保証システムを含み、
前記未信頼アプリケーションに含まれるモニタモジュールは、前記一つ以上のランタイムルールに基づいて生成され、
前記モニタモジュールは、前記未信頼アプリケーションの挙動を観察し、前記観察した挙動が望ましい挙動と一致するか否かを判定することで、前記観察した挙動が前記一つ以上のランタイムルールに準拠しているか否かを判定する、
車両システム。
【請求項２】
前記アプリケーション保証システムは、前記モニタモジュールを前記未信頼アプリケーションに組み込む、
請求項１に記載の車両システム。
【請求項３】
前記アプリケーション保証システムは、前記モニタモジュールを前記未信頼アプリケーションに組み込むためのＪａｖａＭＯＰアプリケーションをさらに有する、
請求項１に記載の車両システム。
【請求項４】
前記アプリケーション保証システムは、アスペクト指向プログラミングを介して前記モニタモジュールを前記未信頼アプリケーションに組み込む、
請求項１に記載の車両システム。
【請求項５】
前記モニタモジュールは、前記未信頼アプリケーションの観察された挙動が望ましい挙動と一致しているかを表すフィードバックデータを収集する、
請求項１から４のいずれかに記載の車両システム。
【請求項６】
前記フィードバックデータは、前記未信頼アプリケーションの実行時パラメータを表すトレースログを含む、
請求項５に記載の車両システム。
【請求項７】
前記モニタモジュールは、前記フィードバックデータを前記アプリケーション保証システムに送信し、
前記アプリケーション保証システムは、前記観察された挙動が望ましい挙動ではない場合に修復手順を実行する、
請求項５または６に記載の車両システム。
【請求項８】
前記修復手順は、車両の運転者に警告メッセージを提示する処理を含む、
請求項７に記載の車両システム。
【請求項９】
前記修復手順は、前記未信頼アプリケーションの動作を停止させる処理を含む、
請求項７に記載の車両システム。
【請求項１０】
前記修復手順は、問題に対する解決策を取得し、前記オープンプラットフォーム車載インフォテインメントシステムに前記解決策を実行させる処理を含む、
請求項７に記載の車両システム。
【請求項１１】
前記アプリケーション保証システムは、一つ以上のランタイムルールに基づいて、前記モニタモジュールのコードおよびルーチンを生成し、
前記コードおよびルーチンは、前記未信頼アプリケーションのソースコードまたはオブジェクトコードから独立している、
請求項１から１０のいずれかに記載の車両システム。
【請求項１２】
前記修復手順は、前記観察された挙動ごとに定義された、望ましくない挙動に対処する手順である、
請求項７に記載の車両システム。
【請求項１３】
前記未信頼アプリケーションが実行された場合に、前記アプリケーション保証システムは、
前記一つ以上のランタイムルールに基づいて前記モニタモジュールを生成し、
前記未信頼アプリケーションに前記モニタモジュールを組み込む、
請求項１に記載の車両システム。
【請求項１４】
前記位置情報は、前記未信頼アプリケーションの実行時における車両のリアルタイムの地理的位置を表す情報であり、
前記一つ以上の安全ガイドラインは、前記車両の地理的位置に基づくものである、
請求項１３に記載の車両システム。
【請求項１５】
前記アプリケーション保証システムは、前記未信頼アプリケーションのソースコードから独立した、前記モニタモジュールを生成する
請求項１に記載の車両システム。
【請求項１６】
前記アプリケーション保証システムは、前記未信頼アプリケーションのオブジェクトコードから独立した、前記モニタモジュールを生成する
請求項１に記載の車両システム。
【請求項１７】
車両に搭載されたオープンプラットフォーム車載インフォテインメントシステムにおいてアプリケーションを保証する方法であって、
前記オープンプラットフォーム車載インフォテインメントシステムにて未信頼アプリケーションを実行するステップと、
所定のＡＰＩ仕様を分析することで、前記未信頼アプリケーションが前記ＡＰＩ仕様に準拠した望ましい挙動をしているか否かを判定するステップと、
前記車両の位置情報を取得するステップと、
前記位置情報に対応する一つ以上の安全ガイドラインを取得するステップと、
前記ＡＰＩ仕様および前記一つ以上の安全ガイドラインとの適合を判定するための一つ以上のランタイムルールを生成するステップと、
前記一つ以上のランタイムルールに基づいてモニタモジュールを生成するステップと、
前記未信頼アプリケーションに前記モニタモジュールを組み込むステップと、
を含み、
前記モニタモジュールは、前記未信頼アプリケーションの挙動を観察し、前記観察した挙動が望ましい挙動と一致するか否かを判定することで、前記観察した挙動が前記一つ以上のランタイムルールに準拠しているか否かを判定する、
方法。
【請求項１８】
請求項１７に記載の方法をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、オープンプラットフォーム車載インフォテインメントシステムのためのアプリケーション保証に関する。
【背景技術】
【０００２】
（関連出願への相互参照）
本出願は、"APPLICATION ASSURANCE FOR OPEN PLATFORM IN-VEHICLE INFOTAINMENT SYSTEM」と題し、２０１５年１１月１２日に出願された米国特許出願１４／９３９，６２５
号の優先権を主張する。当該出願は、その全体が本明細書中に参照として組み込まれる。
【０００３】
新しい車両の購入者は、自分の車両が車載インフォテインメントシステムを装備していることを期待している。結果として、車載インフォテインメントシステムは人気が高まっている。多くの人気がある車載インフォテインメントシステムは、Ａｎｄｒｏｉｄ（登録商標）オペレーティングシステムに依存している。Ａｎｄｒｏｉｄは、オープンソースオペレーティングシステムである。オープンソースオペレーティングシステムを含むインフォテインメントシステムは、「オープンプラットフォーム車載インフォテインメントシステム」とも呼ばれる。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本明細書に記載される発明は、モニタモジュールおよびアプリケーション保証システムを含む。モニタモジュールおよびアプリケーション保証システムは、車両に搭載されているオープンプラットフォーム車載インフォテインメントシステムにアプリケーション保証を与えるためのものである。
【課題を解決するための手段】
【０００５】
本明細書には、未信頼アプリケーションが記載されている。未信頼アプリケーションとは、車両の製造業者またはインフォテインメントシステムの製造業者とは関係がないサードパーティまたはベンダによって提供される任意のアプリケーションである。サードパーティとは、例えば、車両の製造業者またはインフォテインメントシステムの製造業者によって支配されていない任意の事業者である。
【０００６】
本明細書では、Ａｎｄｒｏｉｄなど（Ａｎｄｒｏｉｄの分岐または派生物を含む）のオープンプラットフォームに関してモニタモジュールおよびアプリケーション保証システムの機能を説明するが、アプリケーション保証システムは、ＱＮＸ、ＣａｒＰｌａｙ、およびこれらのプラットフォームの他の分岐または派生物などのクローズドプラットフォームを含む他のプラットフォームに同様の機能を提供することができる。Ａｎｄｒｏｉｄを参照する下記に提供されるすべての説明は、別段に明記されていない限り、Ａｎｄｒｏｉｄおよびその任意の分岐または派生物を含む。いくつかの実施形態では、オープンプラットフォームは、１つまたは複数のアプリケーションをネイティブコードとして実行するように構成された、１つまたは複数のＡｎｄｒｏｉｄネイティブ開発キットを含んでいてもよい。
【０００７】
オープンプラットフォーム車載インフォテインメントシステムは、ＡｎｄｒｏｉｄなどのオープンソースＯＳを含んでいる。Ａｎｄｒｏｉｄは、車両またはインフォテインメントシステムの製造業者とは関係がないサードパーティまたはベンダ（１つまたは複数の「
未知のベンダ」）によって提供されるアプリケーションへのアクセスを提供する。しかしながら、Ａｎｄｒｏｉｄは、サードパーティアプリケーションに対して十分な品質または安全の保証を与えていない。本発明に係るアプリケーション保証システムは、オープンプラットフォーム車載インフォテインメントシステムに、（１）アプリケーション品質保証、および（２）アプリケーション安全保証を与えることによって、この問題を解決する。
【０００８】
サードパーティまたは未知のベンダによって与えられるアプリケーションの品質保証および安全保証は、車両の製造業者にとって重要である。たとえば、車両の製造業者は、サードパーティまたは未知のベンダが、オープンプラットフォーム車載インフォテインメントシステム用のプラットフォームのアプリケーションプログラミングインターフェース（以下、ＡＰＩ）によって定義された既定のルールに従うように、自社のアプリケーションを設計および構築することを要求する。
【０００９】
インフォテインメントシステム上で現在動作しているアプリケーションのパフォーマンスを解析し、アプリケーションがこれらのルールに従っているかどうかを判定することを、本明細書では「アプリケーション品質保証」と称する。Ａｎｄｒｏｉｄおよびインフォテインメントシステム用の他のオープンプラットフォームは、アプリケーション品質保証を与えておらず、そのため、車両の製造業者は、自社のインフォテインメントシステムにこれらのプラットフォームを使用することを推奨していない。
【００１０】
ところで、様々な管轄区域が、インフォテインメントシステムおよびこれらのインフォテインメントシステムによって実行可能なアプリケーションについて、それら自体の安全ガイドラインを提供している。たとえば、アメリカ合衆国、欧州連合、および日本が、各々それら自体の安全ガイドラインを提供している。これらのガイドラインの順守は必須であり、順守しなければ罰金または法的責任が生じる場合がある。
インフォテインメントシステム上で現在動作しているアプリケーションのパフォーマンスを解析し、アプリケーションがこれらのガイドラインに従っているかどうかを判定することを、本明細書では「アプリケーション安全保証」と称する。Ａｎｄｒｏｉｄおよびインフォテインメントシステム用の他のオープンプラットフォームは、アプリケーション安全保証を与えておらず、そのため、これは、車両の製造業者が自社のインフォテインメントシステムにこれらのプラットフォームを使用することを推奨しないさらなる理由である。
【００１１】
オープンプラットフォーム車載インフォテインメントシステムに、アプリケーション品質保証およびアプリケーション安全保証を与えるという問題に対する現在の解決策は、車両の製造業者によって不十分である。現在、最も一般的な手法は静的解析である。静的解析は、アプリケーションを実際に実行することなく実施される。静的解析は、一般に、解析されるアプリケーションのソースコードまたはオブジェクトコードへのアクセスを必要とする。調査によれば、静的解析は、アプリケーション内に存在する可能性があるよく知られたバグの存在を識別することにおいて、有効性が限られている場合がある。たとえば、静的解析は、バッファオーバーフローイベント、ゼロ除算などを検出することができる。
【００１２】
しかしながら、静的解析は、しばしば、（アプリケーションからインフォテインメントシステムＡＰＩへの不正なアクセスなどの）よく知られていないバグを識別することができない。さらに、調査によれば、アプリケーションはより複雑になり、インターネット依存になっている。アプリケーションは、動的にロードされるコードおよび外部プログラムに基づく命令のような特徴を含む場合がある。動的にロードされるコードおよび外部プログラムに基づく命令を含むアプリケーションに静的解析を介して品質保証を与えることは、不可能または非現実的である。静的解析に伴う前述の欠陥が克服される可能性があると
仮定しても、静的解析はアプリケーションのソースコードまたはオブジェクトコードへのアクセスを必要とし、車両の製造業者はこのコードに頻繁にアクセスしないので、静的解析は、解決策としてはまだ車両の製造業者によって拒絶されるはずである。結果として、サードパーティまたは未知のパーティによって提供されるアプリケーションの静的解析は不可能である場合が多い。また、安全ガイドラインは地域ごとに変わるので、静的解析を介してアプリケーション安全保証を与えることは、品質保証を与えることよりもなお一層困難である。
【００１３】
上述された理由により、車両の製造業者は、静的解析が、オープンプラットフォーム車載インフォテインメントシステムに、（１）アプリケーション品質保証、および（２）アプリケーション安全保証を与えるための受入れ可能な解決策ではないと判断している。同様の理由で、たとえば、車両の製造業者はこのコードに頻繁にアクセスしないので、車両の製造業者は、ソースコードまたはオブジェクトコードへのアクセスに依存する、いかなる提案された解決策も拒絶している。
【００１４】
車両の製造業者によって拒絶されている別の手法に、「所望のプラットフォームの中に直接保護を行うコードを埋め込み、それにより、内部の品質保証および安全保証を含むカスタマイズされた分岐を作成する」ことが含まれる。しかしながら、調査によれば、この手法は、検査されているものがまさに所望のアプリケーションプロパティであるという重要な保証を与えない。結果として、この手法は、十分なアプリケーション品質保証またはアプリケーション安全保証を与えないものとして、車両の製造業者によって拒絶されている。たとえば、調査によれば、内部の品質保証および安全保証を含むようにカスタムコーディングされた分岐プラットフォームは、正式に解析されたシステムと同じ品質保証および安全保証を依然与えないはずなので、そのような分岐プラットフォームを使用すると、車両の乗客を不要なリスクにさらす可能性がある。この手法は、インフォテインメントシステムまたはインフォテインメントシステムのアプリケーションの使用に関係する車両事故の場合、車両の製造業者を法的責任にさらす可能性もある。
【００１５】
本開示に記載される主題の１つの発明的態様によれば、オープンプラットフォーム車載インフォテインメントシステムにアプリケーション保証を与えるためのシステム、方法、および有形メモリが記載される。
【００１６】
本発明に係るシステムは、
モニタモジュールを含む未信頼アプリケーションがオープンプラットフォーム車載インフォテインメントシステム上で動作する車両システムであって、前記未信頼アプリケーションに含まれるモニタモジュールは、所定のＡＰＩ仕様に準拠した望ましい挙動を表す一つ以上のランタイムルールに基づいて生成され、前記モニタモジュールは、前記未信頼アプリケーションが実行された場合において、前記一つ以上のランタイムルールに基づいて、前記未信頼アプリケーションの挙動を観察し、前記観察した挙動が望ましい挙動と一致しているか否かを判定することで、前記観察した挙動が前記ＡＰＩ仕様に準拠しているか否かを判定することを特徴とする。
【００１７】
また、本発明に係る方法は、
車両に搭載されたオープンプラットフォーム車載インフォテインメントシステムにおいてアプリケーションを保証する方法であって、前記オープンプラットフォーム車載インフォテインメントシステムにて未信頼アプリケーションを実行するステップと、前記所定のＡＰＩ仕様を分析することで、前記未信頼アプリケーションが前記ＡＰＩ仕様に準拠した望ましい挙動をしているか否かを判定するステップと、前記車両の位置情報を取得するステップと、前記位置情報に対応する一つ以上の安全ガイドラインを取得するステップと、前記ＡＰＩ仕様および前記一つ以上の安全ガイドラインとの適合を判定するための一つ以
上のランタイムルールを生成するステップと、前記一つ以上のランタイムルールに基づいてモニタモジュールを生成するステップと、前記未信頼アプリケーションに前記モニタモジュールを組み込むステップと、を含み、前記モニタモジュールは、前記未信頼アプリケーションの挙動を観察し、前記観察した挙動が望ましい挙動と一致するか否かを判定することで、前記観察した挙動が前記一つ以上のランタイムルールに準拠しているか否かを判定することを特徴とする。
【００１８】
他の態様として、対応する方法、装置、およびコンピュータプログラム製品を含む場合がある。
【００１９】
本開示は、添付図面の図において限定ではなく例として示され、添付図面では、同様の構成要素を参照するために同様の参照番号が使用される。
【発明の効果】
【００２０】
本発明によれば、車両に搭載されているオープンプラットフォーム車載インフォテインメントシステムにアプリケーション保証を与えることができる。
【図面の簡単な説明】
【００２１】
【図１】オープンプラットフォーム車載インフォテインメントシステムにアプリケーション保証を与えるための例示的な動作環境を示すブロック図である。
【図２】オープンプラットフォーム車載インフォテインメントシステムにアプリケーション保証を与えるための例示的なシステムを示すブロック図である。
【図３】未信頼アプリケーションに含まれるモニタモジュールを生成するための例示的な方法のフローチャートである。
【図４】オープンプラットフォーム車載インフォテインメントシステムにアプリケーション保証を与えるための例示的な方法を示すフローチャートである。
【図５】アプリケーション保証システムおよびモニタモジュールを含む例示的なオープンプラットフォーム車載インフォテインメントシステムを示すブロック図である。
【発明を実施するための形態】
【００２２】
本発明に係るアプリケーション保証システムおよびモニタモジュールのうちの１つまたは複数は、車両に含まれるオープンプラットフォーム車載インフォテインメントシステム（以下、単に「インフォテインメントシステム」と称する）にアプリケーション保証を与える。モニタモジュールは、未信頼アプリケーションの構成要素である。未信頼アプリケーションは、車両の製造業者またはインフォテインメントシステムの製造業者とは関係がないサードパーティまたはベンダによって提供される任意のアプリケーションである。サードパーティとは、車両の製造業者またはインフォテインメントシステムの製造業者によって支配されていない任意のエンティティである。
【００２３】
本発明に係るアプリケーション保証システムは、（１）インフォテインメントシステム用のＡＰＩ仕様、および（２）車両の地理的位置に対応する１つまたは複数の安全ガイドライン、のうちの１つまたは複数に基づいて、未信頼アプリケーションを検証するための１つまたは複数のランタイムルールを決定する。１つまたは複数のランタイムルールは、インフォテインメントシステム上で動作する未信頼アプリケーションの望ましい挙動を記述したデータである。１つまたは複数のランタイムルールは、１つまたは複数のランタイムルールを順守することが、（１）仕様、および（２）１つまたは複数の安全ガイドラインのうちの１つまたは複数に準拠することに対応するように、構成される。
【００２４】
本発明に係るアプリケーション保証システムは、１つまたは複数のランタイムルールに基づいて、モニタモジュールを生成する。アプリケーション保証システムは、未信頼アプ
リケーションがモニタモジュールを含むように、未信頼アプリケーションへの組み込みを行う。また、モニタモジュールは、未信頼アプリケーションの挙動を観察して、未信頼アプリケーションの観察された挙動が、未信頼アプリケーションの望ましい挙動と一致し、その結果、観察された挙動が１つまたは複数のランタイムルールを順守していることを判定することができる。
いくつかの実施形態では、アプリケーション保証システムは、１つまたは複数のモニタモジュールを含む。たとえば、アプリケーション保証システムは、ランタイムルールの複数のグループ（グループは様々な監視された属性に基づく場合がある）と、ランタイムルールのグループごとの１つまたは複数のモニタモジュールとを含む場合がある。
また、いくつかの実施形態では、１つのモニタモジュールは別のモニタモジュールを監視することができる。いくつかの実施形態では、１つのモニタモジュールは他のモニタモジュールと通信することができる。
【００２５】
アプリケーション保証システム、未信頼アプリケーション、およびモニタモジュールは、インフォテインメントシステムの構成要素である。アプリケーション保証システム、未信頼アプリケーション、およびモニタモジュールのうちの１つまたは複数の構成要素は、車両に搭載された有形メモリに記憶されていてもよい。また、プロセッサが、有形メモリに通信可能に結合され、保証システム、未信頼アプリケーション、およびモニタモジュールのうちの１つまたは複数を実行するように構成されてもよい。また、プロセッサは、インフォテインメントシステム、または、車両に搭載されたコンピュータの構成要素であってもよい。
【００２６】
（システム概要）
図１は、車両１２３に含まれるインフォテインメントシステム１８４にアプリケーション保証を与えるための環境１００の一実施形態を表すブロック図である。環境１００は、車両１２３と、ランタイム検証サーバ１５５と、アプリケーションプロバイダ１６０を含んでいる。図示された実施形態では、環境１００のこれらのエンティティは、ネットワーク１０５を介して通信可能に結合している。
【００２７】
車両１２３を例に説明する。なお、図１は１つの車両１２３を示すが、本発明は１つまたは複数の車両１２３を有するシステムアーキテクチャに適用することもできる。さらに、図１は、車両１２３、ランタイム検証サーバ１５５、およびアプリケーションプロバイダ１６０に結合された１つのネットワーク１０５を示しているが、実際には、１つまたは複数のネットワーク１０５がこれらのエンティティに結合することができる。また、図１は、１つのランタイム検証サーバ１５５および１つのアプリケーションプロバイダ１６０を含むが、環境１００は、１つまたは複数のランタイム検証サーバ１５５および１つまたは複数のアプリケーションプロバイダ１６０を含んでいてもよい。いくつかの実施形態では、図１は、１つまたは複数のモニタモジュール１３４を含んでいてもよい。
【００２８】
ネットワーク１０５は、有線ネットワークであっても無線ネットワークであってもよく、また、スター型、トークンリング型や当業者に知られているその他の構成を取ることができる。さらに、ネットワーク１０５は、ローカルエリアネットワーク（ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）（例えばインターネット）、または、複数の装置が通信に用いる相互接続されたその他の任意のデータパスであってもよい。さらに別の形態では、ネットワーク１０５はピアツーピアネットワークであってもよい。ネットワーク１０５は、複数の異なる通信プロトコルでデータ送信するための通信ネットワークと接続されたり、このような通信ネットワークを含んだりしてもよい。
ある実施形態では、ネットワーク１０５は、Ｂｌｕｅｔｏｏｔｈ（登録商標）通信ネットワークや、携帯電話通信ネットワークを含み、ＳＭＳ（ショートメッセージサービス）、ＭＭＳ（マルチメディアメッセージサービス）、ＨＴＴＰ（ハイパーテキスト転送プロ
トコル）、直接データ接続、ＷＡＰ、電子メールなどのデータを送受信する。
ある実施形態では、ネットワーク１０５は、車両１２３に対してＧＰＳナビゲーションを提供するためのＧＰＳ衛星を含んでいてもよい。
また、ネットワーク１０５は、例えば、３Ｇ、４Ｇ、ＬＴＥ、ボイスオーバーＬＴＥ（ＶｏＬＴＥ）といったモバイルデータネットワーク、他のモバイルデータネットワーク、または、モバイルデータネットワークの組合せであってもよい。
【００２９】
アプリケーションプロバイダ１６０は、プロセッサ、メモリ、およびネットワーク通信機能を含むハードウェアサーバである。アプリケーションプロバイダ１６０は、環境１００のエンティティのうちの１つまたは複数にアプリケーションを提供するためのソフトウェアおよびハードウェアを含んでいてもよい。たとえば、アプリケーションプロバイダ１６０は、アプリケーション開発業者であってもよい。また、アプリケーションプロバイダ１６０は、未信頼アプリケーション１９１の開発業者またはベンダであってもよい。未信頼アプリケーション１９１は、車両１２３の製造業者またはインフォテインメントシステム１８４の製造業者と関係がないか、または彼らによって支配されていないサードパーティまたはベンダによって提供される任意のアプリケーションを含んでいてもよい。
【００３０】
いくつかの実施形態では、アプリケーションプロバイダ１６０は、インフォテインメントシステム１８４によってアクセス可能なアプリケーションストアサービスを提供するためのソフトウェアおよびハードウェアを含む場合がある。たとえば、アプリケーションプロバイダ１６０は、Ｇｏｏｇｌｅ  Ｐｌａｙ（登録商標）、Ａｍａｚｏｎ  Ａｐｐｓｔｏｒｅ（登録商標）、ＧｅｔＪａｒ、Ｓｌｉｄｅ  ＭＥ、Ｆ−Ｄｒｏｉｄ、Ｓａｍｓｕｎｇ
Ｇａｌａｘｙ  Ａｐｐｓ（登録商標）、ＡｐｐｓＬｉｂ、Ｍｏｂｏｇｅｎｉｅ、Ａｐｐｌｅ  Ａｐｐ  Ｓｔｏｒｅ（登録商標）などのアプリケーションストアサービスを提供することができる。未信頼アプリケーション１９１は、アプリケーションプロバイダ１６０によって提供されるアプリケーションストアサービスからダウンロードすることができる。たとえば、インフォテインメントシステム１８４は、ネットワーク１０５を介してアプリケーションプロバイダ１６０から未信頼アプリケーション１９１をダウンロードすることができる。
【００３１】
図示された実施形態では、アプリケーションプロバイダ１６０は、信号線１６４を介してネットワーク１０５に結合される。アプリケーションプロバイダ１６０は、ネットワーク１０５を介して環境１００の他のエンティティとの間でデータを送受信する。たとえば、アプリケーションプロバイダ１６０は、車両１２３から未信頼アプリケーション１９１をダウンロードする要求を受信する。また、アプリケーションプロバイダ１６０は、未信頼アプリケーション１９１用のコードおよびルーチンを記述するデータを、ネットワーク１０５を介して車両１２３に送信する。いくつかの実施形態では、アプリケーション保証システム１９９はランタイム検証サーバ１５５の構成要素であり、アプリケーションプロバイダ１６０は、ランタイム検証サーバ１５５に未信頼アプリケーション１９１を提供することができる。ランタイム検証サーバ１５５は、下記に記載されるように、モニタモジュール１３４を含むように未信頼アプリケーション１９１を修正した後、車両１２３に未信頼アプリケーション１９１を提供することができる。
【００３２】
ランタイム検証サーバ１５５は、プロセッサ、メモリ、およびネットワーク通信機能を含むハードウェアサーバである。図示された例では、ランタイム検証サーバ１５５は、信号線１５４を介してネットワーク１０５に結合される。
【００３３】
ランタイム検証サーバ１５５は、アプリケーション保証システム１９９を含んでいてもよい。なお、アプリケーション保証システム１９９は、車両１２３に含まれていてもよいため、図１では破線によって描写されている。いくつかの実施形態では、アプリケーショ
ン保証システム１９９のいくつかの構成要素は、ランタイム検証サーバ１５５上に存在し、アプリケーション保証システム１９９のいくつかの構成要素は、車両１２３上に存在する。いくつかの実施形態では、第１のアプリケーション保証システム１９９が、ランタイム検証サーバ１５５上に存在し、第２のアプリケーション保証システム１９９が、車両１２３上に存在する。いくつかの実施形態では、ランタイム検証サーバ１５５が第１のアプリケーション保証システム１９９を含み、車両１２３が第２のアプリケーション保証システム１９９を含み、アプリケーション保証システム１９９の機能のうちのいくつかは、ランタイム検証サーバ１５５によって提供され、アプリケーション保証システム１９９の機能のうちのいくつかは、車両１２３によって提供される。
【００３４】
いくつかの実施形態では、ランタイム検証サーバ１５５は、以下の構成要素、すなわち、仕様データ１３０、ランタイムルールデータ１３２、モニタモジュール１３４、修復手順データ１３６、安全ルールデータ１３８、およびモニタライブラリ１４０のうちの１つまたは複数を含む。また、各構成要素は、ランタイム検証サーバ１５５の有形メモリに記憶されてもよい。また、有形メモリは、ランタイム検証サーバ１５５のプロセッサによってアクセス可能であるように構成されてもよい。
【００３５】
ランタイム検証サーバ１５５は、ネットワーク１０５を介して環境１００の他のエンティティとの間でデータを送受信することができる。たとえば、ランタイム検証サーバ１５５は、以下の構成要素、すなわち、アプリケーション保証システム１９９、仕様データ１３０、ランタイムルールデータ１３２、モニタモジュール１３４、修復手順データ１３６、安全ルールデータ１３８、およびモニタライブラリ１４０のうちの１つまたは複数を、ネットワーク１０５を介して車両１２３に送信することができる。また、ランタイム検証サーバ１５５は、ネットワーク１０５を介して車両１２３に構成要素を送信することができる。
【００３６】
いくつかの実施形態では、以下の構成要素、すなわち、アプリケーション保証システム１９９、仕様データ１３０、ランタイムルールデータ１３２、モニタモジュール１３４、修復手順データ１３６、安全ルールデータ１３８、およびモニタライブラリ１４０のうちの１つまたは複数が、車両１２３に含まれ、ランタイム検証サーバ１５５には含まれない。これらの構成要素については、車両１２３を参照して後ほど説明する。
【００３７】
車両１２３には、自動車、バス、飛行機、ボート、または他の輸送機関が含まれ得る。車両１２３は、電気車両、ハイブリッド車両であるか、またはエンジン内燃機関を含んでいてもよい。いくつかの実施形態では、車両１２３は、自律的な車両または半自律的な車両１２３を含んでいてもよい。いくつかの実施形態では、車両１２３は、その中で車両１２３が車両１２３の操縦機能のうちの少なくとも一部を制御する半自律的な車両１２３を含んでいてもよい。図示された例では、車両１２３は、信号線１１８を介してネットワーク１０５に通信可能に結合される。
【００３８】
車両１２３は、以下の構成要素、すなわち、車載型コンピュータ１８２、インフォテインメントシステム１８４、アプリケーション保証システム１９９、仕様データ１３０、ランタイムルールデータ１３２、モニタモジュール１３４、修復手順データ１３６、安全ルールデータ１３８、およびモニタライブラリ１４０のうちの１つまたは複数を含む。
【００３９】
車載型コンピュータ１８２は、メモリおよびプロセッサを含む。車載型コンピュータ１８２は、専用コンピューティングデバイスであってもよい。車載型コンピュータ１８２は、インフォテインメントシステム１８４に通信可能に結合する。車載型コンピュータ１８２は、図３および図４を参照して下記で説明する方法３００および４００の１つまたは複数のステップを実行する。車載型コンピュータ１８２は、以下の構成要素、すなわち、ア
プリケーション保証システム１９９、未信頼アプリケーション１９１、およびモニタモジュール１３４のうちの１つまたは複数のパフォーマンスを制御することができる。
【００４０】
インフォテインメントシステム１８４は、Ａｎｄｒｏｉｄ（登録商標）（またはＡｎｄｒｏｉｄの任意の分岐ＯＳもしくは派生ＯＳ、または１つもしくは複数のアプリケーションを実装もしくは実行するように構成された１つもしくは複数のＡｎｄｒｏｉｄネイティブ開発キット）などの、オープンソースＯＳを含んでいる。インフォテインメントシステム１８４は、メモリおよびプロセッサを含んでいてもよい。インフォテインメントシステム１８４は、ネットワーク１０５と通信し、車両１２３にインフォテインメントコンテンツを提供することができる。車両１２３のユーザは、インフォテインメントコンテンツを使い尽くすことができる。インフォテインメントシステム１８４の一例については、図５を参照して後ほど説明する。
【００４１】
インフォテインメントシステム１８４は、アプリケーション保証システム１９９および未信頼アプリケーション１９１を含む場合がある。未信頼アプリケーション１９１は、モニタモジュール１３４を含む。モニタモジュール１３４は、アプリケーション保証システム１９９によって生成される。モニタモジュール１３４は、アプリケーション保証システム１９９によって未信頼アプリケーション１９１内に組み込まれる。モニタモジュール１３４については、後ほど詳細に説明する。
【００４２】
いくつかの実施形態では、車載型コンピュータ１８２またはインフォテインメントシステム１８４のうちの１つまたは複数は、以下の構成要素、すなわち、仕様データ１３０、ランタイムルールデータ１３２、修復手順データ１３６、安全ルールデータ１３８、およびモニタライブラリ１４０のうちの１つまたは複数を含む。
【００４３】
アプリケーション保証システム１９９は、図３および図４を参照して下記で説明する方法３００および４００のステップのうちの１つまたは複数を実行するように構成された、コードおよびルーチンを含む。いくつかの実施形態では、アプリケーション保証システム１９９は、イリノイ州アーバナのＲｕｎｔｉｍｅ  Ｖｅｒｉｆｉｃａｔｉｏｎ  Ｉｎｃ．によって製造および配布されたＲＶモニタアプリケーション（またはそこから導出された任意のランタイム検証および監視アプリケーション）を含む。ＲＶモニタアプリケーションの一例は、図５（構成要素５０５）を参照して後ほど説明する。ＲＶモニタアプリケーションについての実施形態は、「Ｐａｒａｍｅｔｒｉｃ  Ｔｒａｃｅ  Ｓｌｉｃｉｎｇ」と題し、２０１４年５月６日に公開された米国特許第８，７１９，７９６号に記載されており、その全体が参照により本明細書に組み込まれる。
【００４４】
アプリケーション保証システム１９９がＲＶモニタアプリケーションを含む実施形態では、ＲＶモニタアプリケーションは、インフォテインメントシステム１８４用のＡＰＩ仕様を解析して、１つまたは複数のランタイムルールを決定するように構成された、コードおよびルーチンを含む。ＡＰＩ仕様は、仕様データ１３０によって記述することができる。
【００４５】
未信頼アプリケーション１９１は、インフォテインメントシステム１８４（または車載型コンピュータ１８２）のプロセッサによって実行される。未信頼アプリケーション１９１を実行すると、未信頼アプリケーション１９１の観察可能な挙動に対応する１つまたは複数の測定可能パラメータが発生する場合がある。
測定可能パラメータとは、未信頼アプリケーションの実行にともなって観測することができるデータである。
測定可能パラメータとして、たとえば、呼び出されているプロセス、アクセスされているＡＰＩ、インフォテインメントシステム１８４のメモリに書き込まれているデータ、お
よびバッファオーバーフローイベント、コンパイラエラーなどのランタイムエラーといったものがある。
【００４６】
ＲＶモニタアプリケーションは、モニタモジュール１３４が未信頼アプリケーション１９１の実行によって発生した測定可能パラメータを測定するように、モニタモジュール１３４を生成および構成するように構成された、コードおよびルーチンを含む。このようにして、モニタモジュール１３４は、未信頼アプリケーション１９１の挙動を観察することができる。
【００４７】
１つまたは複数のランタイムルールは、車両１２３のプロセッサによって実行された未信頼アプリケーション１９１の望ましい挙動を記述するデータである。たとえば、１つまたは複数のランタイムルールは、未信頼アプリケーション１９１用の１つまたは複数の望ましいパラメータを記述することができる。ＲＶモニタアプリケーションは、１つまたは複数のランタイムルールを順守することがインフォテインメントシステム１８４用のＡＰＩの仕様に準拠することに対応するように、１つまたは複数のランタイムルールを決定および構成するコードおよびルーチンを含む。１つまたは複数のランタイムルールは、ランタイムルールデータ１３２によって記述される。
【００４８】
いくつかの実施形態では、アプリケーション保証システム１９９は、１つまたは複数のランタイムルールからモニタモジュール１３４を記述するコードおよびルーチンを生成する。モニタモジュール１３４を記述するコードおよびルーチンは、未信頼アプリケーション１９１用のソースコード、および未信頼アプリケーション１９１用のオブジェクトコードのうちの１つまたは複数から独立していてもよい。アプリケーション保証システム１９９は、プロセッサ２２５が未信頼アプリケーション１９１を実行した場合に、モニタモジュール１３４を記述するコードおよびルーチンを生成する。
【００４９】
ところで、様々な管轄区域が、インフォテインメントシステムおよびこれらのインフォテインメントシステムによって実行可能なアプリケーションについて、それら自体の安全ガイドラインを提供している。これらの安全ガイドラインは、安全ルールデータ１３８に記述されている。いくつかの実施形態では、ＲＶモニタアプリケーションは、１つまたは複数のランタイムルールを順守することが、（１）インフォテインメントシステム１８４用のＡＰＩ仕様に準拠すること、および（２）安全ルールデータ１３８によって記述される１つまたは複数の安全ガイドラインに準拠することに対応するように、１つまたは複数のランタイムルールを決定および構成するコードおよびルーチンを含む。ＲＶモニタアプリケーションによって決定される１つまたは複数のランタイムルールは、１つまたは複数のランタイムルールを順守することが、車両１２３が現在位置する地理的位置についての１つまたは複数の安全ガイドラインに準拠することに対応するように構成される場合がある。たとえば、車両１２３は、車両１２３の地理的位置を特定するＧＰＳシステムを含み、アプリケーション保証システム１９９は、車両１２３が現在位置する地理的位置に適用される１つまたは複数の安全ガイドラインを決定するように構成された、コードおよびルーチンを含む。ＲＶモニタアプリケーションは、車両１２３の地理的位置に基づいて選択された１つまたは複数の安全ガイドラインに基づいて、１つまたは複数のランタイムルールを決定する。
【００５０】
ＲＶモニタアプリケーションは、ランタイムルールデータ１３２に基づいて、１つまたは複数のモニタモジュール１３４を生成する。モニタモジュール１３４は、図３および図４を参照して下記で説明する方法３００および４００のステップのうちの１つまたは複数を実行するように構成された、コードおよびルーチンを含む。モニタライブラリ１４０は、１つまたは複数の様々な未信頼アプリケーション１９１に関連付けられた１つまたは複数のモニタモジュール１３４を含む。
【００５１】
ＲＶモニタアプリケーションは、未信頼アプリケーション１９１にモニタモジュール１３４を組み込むように構成された、コードおよびルーチンを含む。場合によっては、アプリケーション保証システム１９９は、プロセッサによって実行された場合に、未信頼アプリケーション１９１がモニタモジュール１３４を組み込むように、未信頼アプリケーション１９１を更新するＪａｖａ（登録商標）ＭＯＰアプリケーションを含む。ＪａｖａＭＯＰアプリケーションの一例については、図５（構成要素５８５）を参照して後ほど詳細に説明する。
【００５２】
未信頼アプリケーション１９１の実行時、モニタモジュール１３４は、未信頼アプリケーションの挙動を観察し、観察された挙動を、ランタイムルールデータ１３２によって記述された望ましい挙動と比較する。たとえば、モニタモジュール１３４は、未信頼アプリケーション１９１の実行時に観察されたパラメータをトレースする。モニタモジュール１３４は、未信頼アプリケーションの観察された挙動が、未信頼アプリケーションの望ましい挙動と一致するかどうかを記述するフィードバックデータを収集する。また、モニタモジュール１３４は、トレースログを構築する。たとえば、フィードバックデータは、未信頼アプリケーション１９１の実行時にモニタモジュール１３４によって測定された、未信頼アプリケーション１９１の１つまたは複数のパラメータを記述するトレースログを含む。また、モニタモジュール１３４は、未信頼アプリケーション１９１の観察された挙動が、未信頼アプリケーション１９１の望ましい挙動と一致しないインスタンスを識別する。
【００５３】
いくつかの実施形態では、インフォテインメントシステム１８４は、未信頼アプリケーション１９１の実行およびその望ましくない挙動を記述するデータを、ランタイム検証サーバ１５５に送信する。ランタイム検証サーバ１５５は、未信頼アプリケーション１９１の挙動を解析し、実行時の未信頼アプリケーション１９１の挙動が望ましくなるように、未信頼アプリケーション１９１のコードを修正する方法を決定する。ランタイム検証サーバ１５５は、望ましくない挙動をもたらすことなく実行され得るように未信頼アプリケーション１９１のコードを修正する方法を記述する修復手順データ１３６を、アプリケーション保証システム１９９に送信する。いくつかの実施形態では、ランタイム検証サーバ１５５は、望ましくない挙動をもたらす未信頼アプリケーション１９１、当該未信頼アプリケーション１９１を識別する方法、および（場合によっては）望ましくない挙動をもたらすことなく実行され得るようにこの未信頼アプリケーション１９１のコードを修正する方法を記述する修復手順データ１３６を記述するデータを、車両１２３とグループをなす他の車両１２３に送信することができる。このようにして、ランタイム検証サーバ１５５は、単一の車両１２３または２台以上の車両１２３を含むグループに含まれる未信頼アプリケーション１９１の挙動を修正することを支援することができる。
【００５４】
モニタモジュール１３４またはアプリケーション保証システム１９９は、未信頼アプリケーション１９１の観察された挙動が、未信頼アプリケーション１９１の望ましい挙動と一致しないインスタンスを識別した場合に、１つまたは複数の修復手順を実施する。たとえば、モニタモジュール１３４またはアプリケーション保証システム１９９は、これ以上動作すること（または実行されること）がないように、インフォテインメントシステム１８４上における未信頼アプリケーション１９１の実行を停止させてもよい。修復手順はまた、インフォテインメントシステム１８４のディスプレイ上に、望ましくない挙動が発生した旨を警告するメッセージを表示させてもよい。修復手順はまた、問題に対する解決策を求めてネットワーク１０５を検索すること（または、車両１２３のローカルメモリから望ましくない挙動に対する解決策を取り出すこと）と、問題に対する解決策を実施するステップをインフォテインメントシステムに実行させることと、を含んでもよい。たとえば、望ましくない挙動に対する解決策のライブラリまたはデータベースなどのリソースに対し、検索語として望ましくない挙動の記述を使用して、検索または照会を行うようにして
もよい。ライブラリまたは検索可能データベースは、車両１２３にローカルに記憶されてもよいし、またはネットワーク１０５を介してアクセス可能であってもよい。１つまたは複数の修復手順は、修復手順データ１３６によって記述される。
【００５５】
モニタモジュール１３４またはアプリケーション保証システム１９９は、修復手順データ１３６によって記述される様々な修復手順を実施するように構成された、コードおよびルーチンを含む。いくつかの実施形態では、モニタモジュール１３４またはアプリケーション保証システム１９９は、修復手順データ１３６によって記述される以下の修復手順、すなわち、（１）インフォテインメントシステム１８４の仮想マシン内の１つまたは複数のランタイムフックを使用して、未信頼アプリケーション１９１に含まれる悪意のあるコードが実行されないように防止すること、（２）インフォテインメントシステム１８４の仮想マシン内の１つまたは複数のランタイムフックを使用して、未信頼アプリケーション１９１に含まれる悪意のあるコードを、アプリケーション保証システム１９９によって安全であると判断されたコードに修正すること、（３）望ましくないと判断された未信頼アプリケーション１９１の悪意のあるコードに含まれる１つまたは複数の特定のソフトウェア構成部品の実行または許可を識別して無効にすること、（４）データアクセスに関係するセキュリティ問題の存在を特定し、セキュリティ問題が低減、最小化、または軽減されるように未信頼アプリケーション１９１にランダムな虚偽データを提供すること、（５）未信頼アプリケーション１９１の実行を停止し、車両１２３のユーザに詳細を表示し、未信頼アプリケーションの実行を継続したいか、中断したいかをユーザに尋ねることをインフォテインメントシステム１８４に行わせること、（６）インフォテインメントシステム１８４（またはそのシステム１８４の通信機能）を無効にすること、（７）インフォテインメントシステム１８４のセキュリティポリシー（たとえば、ＳＥＬｉｎｕｘポリシー、ファイアウォールポリシー、ＩＤＳ／ＩＰＳポリシーなど）を修正して、ある特定のアクションを実行しないように未信頼アプリケーション１９１を制限し、かつ／または望ましくない挙動のさらなる同様の試みを検出すること、ならびに、（８）車両１２３の購入後に行われるインフォテインメントシステム１８４の最初の起動時に、車両１２３のユーザが前述の修復手順および他のポリシーのうちの１つまたは複数から選択することを可能にすることのうちの１つまたは複数を実施するように構成された、コードおよびルーチンを含む。
【００５６】
上述されたように、いくつかの実施形態では、修復手順は、インフォテインメントシステム１８４の仮想マシン内の１つまたは複数のランタイムフックを使用して、未信頼アプリケーション１９１に含まれる悪意のあるコードが実行されないように防止する処理を含む。１つまたは複数のランタイムフックは、システムレベル（たとえば、インフォテインメントシステム１８４がＡｎｄｒｏｉｄを実行している場合、インフォテインメントシステム１８４のＬｉｎｕｘ(登録商標）カーネル内）、ならびに未信頼アプリケーション１
９１を実行している仮想マシンに存在する場合がある。たとえば、ファイルのオープンを行う動作は、仮想マシンによりＡＰＩレベルで、またはカーネルにより下位のシステムコールレベルで（仮想マシン自体は、システムコールを活用してその動作を完了することができる）ブロックすることができる。
【００５７】
上述されたように、いくつかの実施形態では、修復手順は、インフォテインメントシステム１８４（またはそのシステム１８４の通信機能）を無効にすることを含んでいてもよい。たとえば、悪意のあるバスアクセスを検出することができる。修復手順は、インフォテインメントシステム１８４からバス／通信チャネルを完全に切断し、それにより、バスに依存する何らかの機能を失うことを含む場合がある。
別の例では、ネットワークベースのプライバシー侵害を引き起こす、または、既知の悪意のあるソフトウェアがダウンロードされた場合、アプリケーション保証システム１９９は、インフォテインメントシステム１８４のネットワーキング機能を無効にする修復手順
を実施してもよい。また別の例では、悪意のあるシステムコールが行われた場合、アプリケーション保証システム１９９が、車両１２３用の非コアアプリケーションシステム全体について、識別された悪意のあるシステムコールを無効または不認可にする修復手順を実施してもよい。
【００５８】
いくつかの実施形態では、未信頼アプリケーション１９１の挙動が、望ましい挙動と一致しない原因となった、未信頼アプリケーション１９１のコードの一部に起因して問題が発生しうる。その問題に対する解決策は、パッチまたはその問題に対する他の何らかの解決策を含む場合がある。
【００５９】
いくつかの実施形態では、アプリケーション保証システム１９９は、図３および図４を参照して下記で説明する方法３００および４００の１つまたは複数のステップを実行するように構成された、電子デバイスを含む。
【００６０】
いくつかの実施形態では、アプリケーション保証システム１９９は、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）または特定用途向け集積回路（ＡＳＩＣ）を含むハードウェアを使用して実装することができる。いくつかの他の実施形態では、アプリケーション保証システム１９９は、ハードウェアとソフトウェアの組合せを使用して実装することができる。アプリケーション保証システム１９９は、デバイスとサーバの組合せ、またはデバイスもしくはサーバのうちの１つに記憶される場合がある。アプリケーション保証システム１９９は、図２を参照して下記で説明するプロセッサ２２５などのプロセッサによって実行されると、図３および図４を参照して下記で説明する方法３００および４００の１つまたは複数のステップを実行するように構成された、コードおよびルーチンを含む。
【００６１】
アプリケーション保証システム１９９およびモニタモジュール１３４については、図２を参照して後ほど詳細に説明する。
【００６２】
（電子デバイスの例）
図２は、インフォテインメントシステム１８４にアプリケーション保証を与えるための例示的なシステム２００を示すブロック図である。いくつかの実施形態では、システム２００は、図３および図４を参照して下記で説明する方法３００および４００の１つまたは複数のステップを実施するようにプログラムまたは構成された、電子デバイスを含む。システム２００は、車両１２３またはランタイム検証サーバ１５５のうちの１つまたは複数であってもよい。いくつかの実施形態では、システム２００は、アプリケーション保証システム１９９を参照して前述された、または図３および図４を参照して下記で説明する方法３００および４００を参照して下記で説明する機能のうちのいくつかまたはすべてを提供するように構成された、専用コンピューティングデバイスであってもよい。また、システム２００は、インフォテインメントシステム１８４を含んでいてもよい。
【００６３】
システム２００は、アプリケーション保証システム１９９と、未信頼アプリケーション１９１と、プロセッサ２２５と、メモリ２２７と、通信ユニット２４５と、ＧＰＳシステム２５０とを含む。システム２００の構成部品は、バス２２０によって通信可能に結合される。いくつかの実施形態では、システム２００の構成部品間の通信にバス２２０が必要でないように、システム２００の構成部品は同じハードウェアに限られる。いくつかの実施形態では、バス２２０以外の通信構造または通信方法が実装されてもよい。未信頼アプリケーション１９１は、モニタモジュール１３４を含む。メモリ２２７は、以下の構成要素、すなわち、仕様データ１３０、ランタイムルールデータ１３２、修復手順データ１３６、安全ルールデータ１３８、およびモニタライブラリ１４０のうちの１つまたは複数を含む。
【００６４】
アプリケーション保証システム１９９、未信頼アプリケーション１９１、モニタモジュール１３４、仕様データ１３０、ランタイムルールデータ１３２、修復手順データ１３６、安全ルールデータ１３８、およびモニタライブラリ１４０については、図１を参照して前述したため、これらの説明はここでは繰り返さない。
【００６５】
未信頼アプリケーション１９１は、信号線２３２を介してバス２２０に通信可能に結合される。プロセッサ２２５は、信号線２３４を介してバス２２０に通信可能に結合される。メモリ２２７は、信号線２３６を介してバス２２０に通信可能に結合される。通信ユニット２４５は、信号線２３８を介してバス２２０に通信可能に結合される。ＧＰＳシステム２５０は、信号線２４０を介してバス２２０に通信可能に結合される。いくつかの実施形態では、システム２００の構成要素のうちの１つまたは複数は、バス２２０との通信用の信号線を共有してもよい。
【００６６】
プロセッサ２２５は、算術論理ユニット、マイクロプロセッサ、汎用コントローラ、または、計算を実行して表示装置に表示信号を提供する他のプロセッサアレイ等を含む。
プロセッサ２２５は、データ信号を処理し、ＣＩＳＣ（Complex Instruction Set Computer）、ＲＩＳＣ（Reduced Instruction Set Computer）、命令セットの組合せとして実装されたアーキテクチャなど様々なアーキテクチャを含みうる。なお、図２には一つのプロセッサ２２５だけが示されているが、複数のプロセッサ２２５が含まれていてもよい。上記以外のプロセッサ、オペレーティングシステム、センサ、表示装置、あるいは物理的構成も採用可能である。また、プロセッサ２２５は、グラフィカル処理ユニットを含んでいてもよい。他のプロセッサ、オペレーティングシステム、センサ、ディスプレイ、および物理構成も考えられ得る。
【００６７】
メモリ２２７は、プロセッサ２２５が実行可能な命令やデータを格納する有形記憶媒体である。格納される命令やデータは、本明細書に示す技術を実行するためのコードを含んでいてもよい。
メモリ２２７は、ＤＲＡＭ、ＳＲＡＭ、フラッシュメモリやその他の既存のメモリ装置であってもよい。一実施形態において、メモリ２２７は、ハードディスクドライブ、フロッピー（登録商標）ディスクドライブ、ＣＤ−ＲＯＭ装置、ＤＶＤ−ＲＯＭ装置、ＤＶＤ−ＲＡＭ装置、ＤＶＤ−ＲＷ装置、フラッシュメモリ装置や情報記憶の分野において既知のその他の大容量記憶装置などの、非一時的（non-volatile）メモリや永久記憶装置を含んでいてもよい。
【００６８】
通信ユニット２４５は、ネットワーク１０５にデータを送信し、ネットワーク１０５からデータを受信するハードウェアを含んでいてもよい。いくつかの実施形態では、通信ユニット２４５は、ネットワーク１０５または別の通信チャネルへの直接的な物理接続用のポートを含む。たとえば、通信ユニット２４５は、ネットワーク１０５と有線通信を行うためのＵＳＢ、ＳＤ、ＣＡＴ−５、または同様のポートを含む。
いくつかの実施形態では、通信ユニット２４５は、ネットワーク１０５とデータを交換するためのワイヤレストランシーバ、または、ＩＥＥＥ８０２．１１、ＩＥＥＥ８０２．１６、Ｂｌｕｅｔｏｏｔｈ（登録商標）、もしくは別の適切なワイヤレス通信方法を含む１つもしくは複数のワイヤレス通信方法を使用する他の通信チャネルを含む。
【００６９】
いくつかの実施形態では、通信ユニット２４５は、ショートメッセージングサービス（ＳＭＳ）、マルチメディアメッセージングサービス（ＭＭＳ）、ハイパーテキスト転送プロトコル（ＨＴＴＰ）、直接データ接続、ＷＡＰ、電子メール、または別の適切なタイプの電子通信を介して、セルラー通信ネットワーク上でデータを送受信するためのセルラー通信トランシーバを含む。いくつかの実施形態では、通信ユニット２４５は、有線ポート
およびワイヤレストランシーバを含む。通信ユニット２４５はまた、ＴＣＰ／ＩＰ、ＨＴＴＰ、ＨＴＴＰＳ、およびＳＭＴＰなどを含む標準ネットワークプロトコルを使用して、ファイルまたはメディアオブジェクトを配信するための、ネットワーク１０５への他の従来の接続を提供する。
【００７０】
ＧＰＳシステム２５０は、車両１２３の地理的位置を表す位置データをシステム２００に供給するためのハードウェアおよびソフトウェアを含む。位置データは、ネットワーク１０５を介して取得されてもよい。また、位置データは、メモリ２２７に記憶されるか、または位置特定モジュール２０４に供給されてもよい。また、ＧＰＳシステム２５０は、衛星ナビゲーションを提供するように構成されたハードウェアを含んでもよい。また、ＧＰＳシステム２５０は、通信ユニット２４５の構成要素であってもよい。また、ＧＰＳシステム２５０は、インフォテインメントシステム１８４の構成要素であってもよい。
【００７１】
位置データは、以下の、車両１２３の地理的位置、地理的位置の特定に関連付けられた時刻、および現在時刻において地理的位置に存在する気象状況を記述する気象データ、のうちの１つまたは複数を記述することができる。地理的位置は、地球の中心に存在する原点に基づくデカルト座標によって記述されてもよい。また、地理的位置は、１つまたは複数の全地球航法衛星システム（ＧＮＳＳ）測位計算の出力であってもよい。
【００７２】
いくつかの実施形態では、アプリケーション保証システム１９９は、以下の、通信モジュール２０２、位置特定モジュール２０４、ルール決定モジュール２０６、解析モジュール２０８、および修復モジュール２１０のうちの１つまたは複数を含む。
【００７３】
通信モジュール２０２は、信号線２２２を介してバス２２０に通信可能に結合される。位置特定モジュール２０４は、信号線２２４を介してバス２２０に通信可能に結合される。ルール決定モジュール２０６は、信号線２２６を介してバス２２０に通信可能に結合される。解析モジュール２０８は、信号線２２８を介してバス２２０に通信可能に結合される。修復モジュール２１０は、信号線２３０を介してバス２２０に通信可能に結合される。
【００７４】
通信モジュール２０２は、アプリケーション保証システム１９９とシステム２００の他の構成部品との間の通信を処理するように構成された、コードおよびルーチンを含む。いくつかの実施形態では、通信モジュール２０２は、アプリケーション保証システム１９９とシステム２００の他の構成部品との間の通信を処理するための、下記で説明する機能を提供するために、プロセッサ２２５によって実行可能な１組の命令を含む。いくつかの実施形態では、通信モジュール２０２は、システム２００のメモリ２２７に記憶することができ、プロセッサ２２５によってアクセス可能かつ実行可能であってもよい。
【００７５】
通信モジュール２０２は、通信ユニット２４５を介してネットワーク１０５との間でデータを送受信する。たとえば、通信モジュール２０２は、通信ユニット２４５を介してネットワーク１０５から位置特定データを受信する。
【００７６】
いくつかの実施形態では、通信モジュール２０２は、システム２００の構成部品からデータを受信し、メモリ２２７にデータを記憶する。
【００７７】
位置特定モジュール２０４は、車両１２３の地理的位置を特定するように構成された、コードおよびルーチンを含む。位置特定モジュール２０４は、ＧＰＳシステム２５０によって供給される位置特定データに基づいて、車両１２３の地理的位置を特定することができる。いくつかの実施形態では、位置特定モジュール２０４は、システム２００のメモリ２２７に記憶することができ、プロセッサ２２５によってアクセス可能かつ実行可能であ
ってもよい。
【００７８】
ルール決定モジュール２０６は、未信頼アプリケーション１９１の動作を監視するための１つまたは複数のランタイムルールを決定するように構成された、コードおよびルーチンを含む。ルール決定モジュール２０６は、位置特定モジュール２０４によって特定された地理的位置に基づいて、１つまたは複数の安全ガイドラインを表す安全ルールデータ１３８を選択する。ルール決定モジュール２０６は、仕様データ１３０および選択された安全ルールデータ１３８のうちの１つまたは複数に基づいて、未信頼アプリケーション１９１の望ましい挙動を決定する。このようにして、ルール決定モジュール２０６は、インフォテインメントシステム１８４用のＡＰＩの仕様、および車両１２３の現在の地理的位置についての安全ガイドラインのうちの１つまたは複数に基づいて、望ましい挙動を決定することができる。１つまたは複数のランタイムルールは、ランタイムルールデータ１３２によって記述される。
【００７９】
ルール決定モジュール２０６は、１つまたは複数のランタイムルールに基づいて、１つまたは複数のモニタモジュール１３４を生成するように構成された、コードおよびルーチンを含む。ルール決定モジュール２０６は、１つまたは複数のランタイムルールに基づいて、モニタライブラリ１４０を構築するように構成された、コードおよびルーチンを含む。
【００８０】
モニタライブラリ１４０は、様々な未信頼アプリケーション１９１用の様々なモニタモジュール１３４を含む。たとえば、システム２００は、２つ以上の様々な未信頼アプリケーション１９１を含む場合があり、様々な未信頼アプリケーション１９１の各々は、様々なモニタモジュール１３４を含む場合がある。また、モニタライブラリ１４０は、様々なモニタモジュール１３４を含んでいてもよい。モニタライブラリ１４０は、様々なモニタモジュール１３４および様々な未信頼アプリケーション１９１を記述する識別データを含んでいてもよく、それらは監視または観察するように構成される。このようにして、様々なモニタモジュール１３４は、対応する未信頼アプリケーション１９１内で識別および組み込みされる場合がある。
【００８１】
いくつかの実施形態では、モニタライブラリ１４０またはランタイムルールデータ１３２は、他の車両の製造業者または他のインフォテインメントシステムの製造業者に販売される商品であってもよい。たとえば、ランタイム検証サーバ１５５は、補償と引き換えに、他の車両の製造業者または他のインフォテインメントシステムの製造業者に、モニタライブラリ１４０またはランタイムルールデータ１３２を提供するように構成された、コードおよびルーチンを含む。
【００８２】
ルール決定モジュール２０６は、１つまたは複数のモニタモジュール１３４を組み込むように未信頼アプリケーション１９１を更新するように構成された、コードおよびルーチンを含む。このようにして、モニタモジュール１３４は、インフォテインメントシステム１８４上で実行される際に、未信頼アプリケーション１９１のパフォーマンスまたは動作を監視できるように、未信頼アプリケーション１９１用のコードおよびルーチンに含まれる場合がある。
【００８３】
未信頼アプリケーション１９１は、プロセッサ２２５によって実行される。たとえば、未信頼アプリケーション１９１は、インフォテインメントシステム１８４上で実行される。未信頼アプリケーション１９１を実行すると、未信頼アプリケーション１９１の観察可能な挙動に対応する１つまたは複数の測定可能パラメータが発生する場合がある。測定可能パラメータとして、たとえば、呼び出されているプロセス、アクセスされているインフォテインメントシステム１８４のＡＰＩ、インフォテインメントシステム１８４のメモリ
に書き込まれているデータ、およびバッファオーバーフローイベント、コンパイラエラーなどのランタイムエラーなどがある。
【００８４】
モニタモジュール１３４は、測定可能パラメータを観察および記録するように構成された、コードおよびルーチンを含む。場合によっては、モニタモジュール１３４は、１つまたは複数のランタイムルールの１つまたは複数の侵害を識別するように構成された、コードおよびルーチンを含む。ランタイムルールの侵害とは、例えば、ランタイムエラー、または、呼び出されている不正プロセスもしくはインフォテインメントシステム１８４のＡＰＩに対する不正アクセスなどの、未信頼アプリケーションについての他の何らかの望ましくない挙動に対応するものである。
【００８５】
モニタモジュール１３４は、未信頼アプリケーション１９１の１つまたは複数のパラメータを記述するフィードバックデータまたはトレースログを生成するように構成された、コードおよびルーチンを含む。たとえば、トレースログは、未信頼アプリケーション１９１の挙動を記述するデータである。未信頼アプリケーション１９１の観察された挙動は、モニタモジュール１３４によって観察および記録された測定可能パラメータを記述するフィードバックデータによって示される場合がある。フィードバックデータまたはトレースログは、１つまたは複数のランタイムルールの侵害の記述を含みうる。
【００８６】
モニタモジュール１３４は、アプリケーション保証システム１９９にトレースログを送信するように構成された、コードおよびルーチンを含む。モニタモジュール１３４は、アプリケーション保証システム１９９にトレースログについての更新情報を定期的に送信してもよい。
【００８７】
解析モジュール２０８は、未信頼アプリケーション１９１の観察された挙動が未信頼アプリケーション１９１の望ましい挙動と一致するか否かを判定するように構成された、コードおよびルーチンを含む。このようにして、解析モジュール２０８は、未信頼アプリケーション１９１の１つまたは複数の測定可能パラメータを監視することができる。解析モジュール２０８はまた、１つまたは複数のランタイムルールの１つまたは複数の侵害を識別するように構成された、コードおよびルーチンを含む。たとえば、解析モジュール２０８は、未信頼アプリケーション１９１のフィードバックデータ（またはトレースログ）および１つまたは複数の測定可能パラメータに基づいて、未信頼アプリケーション１９１の観察された挙動が、未信頼アプリケーション１９１の望ましい挙動と一致していないことを検出する。
【００８８】
一実施形態において、１つまたは複数のランタイムルールの侵害が検出された場合に、解析モジュール２０８は、修復モジュール２１０が侵害の悪影響を訂正または低減するように構成された修復手順を決定および実施することができるように、侵害を記述するデータを修復モジュール２１０に供給してもよい。
【００８９】
いくつかの実施形態では、解析モジュール２０８は、モニタモジュール１３４の構成要素であり、その結果、モニタモジュール１３４は解析モジュール２０８について上述された機能を提供する。
【００９０】
修復モジュール２１０は、解析モジュール２０８によって識別されたルール侵害に関連する１つまたは複数の修復手順を決定するように構成された、コードおよびルーチンを含む。修復モジュール２１０はまた、決定された修復手順を実施するように構成された、コードおよびルーチンを含む。たとえば、修復手順は、インフォテインメントシステム１８４の表示装置を介して、車両１２３のドライバに警告メッセージを提供する処理を含んでいてもよい。警告メッセージには、ルール侵害、またはルール侵害に応答してドライバが
取るべき推奨アクションを含ませてもよい。一実施形態において、修復手順は、未信頼アプリケーション１９１の実行をプロセッサ２２５に停止させる処理を含んでいてもよく、修復モジュール２１０は、プロセッサ２２５を制御し、未信頼アプリケーション１９１の実行をプロセッサ２２５に終了させるように構成された、コードおよびルーチンを含んでいてもよい。
【００９１】
（方法例）
図３は、未信頼アプリケーション１９１に含まれるモニタモジュール１３４を生成するための例示的な方法３００のフローチャートである。未信頼アプリケーション１９１は、インフォテインメントシステム１８４の構成要素である。いくつかの実施形態では、方法３００の１つまたは複数のステップは、図２を参照して上述されたシステム２００によって実行することができる。
【００９２】
ステップ３０２において、車両１２３の地理的位置が特定される。
【００９３】
ステップ３０４において、安全ルールデータ１３８が選択される。安全ルールデータ１３８は、車両１２３の地理的位置に基づいて選択される。選択された安全ルールデータ１３８には、その地理的位置についての１つまたは複数の安全ガイドラインが記述されている。たとえば、安全ルールデータ１３８は、様々な地理的位置に基づいてインデックス付けすることができる。安全ルールデータ１３８は、様々な地理的位置についての様々な安全ガイドラインを含む場合がある。ステップ３０４では、安全ルールデータ１３８の一部分を選択して、車両１２３の地理的位置に対応する１つまたは複数の安全ガイドラインを識別してもよい。
【００９４】
ステップ３０６において、未信頼アプリケーション１９１についての望ましい挙動が決定される。望ましい挙動は、以下の、インフォテインメントシステム１８４用のＡＰＩ仕様を記述する仕様データ１３０、および車両１２３の地理的位置に対応する１つまたは複数の安全ガイドラインを記述する選択された安全ルールデータ１３８、のうちの１つまたは複数に基づいて、決定することができる。
【００９５】
ステップ３０８において、１つまたは複数のランタイムルールを決定する。１つまたは複数のランタイムルールは、ランタイムルールデータ１３２によって記述される。１つまたは複数のランタイムルールは、実行時に未信頼アプリケーション１９１の挙動を監視するように構成される。また、１つまたは複数のランタイムルールは、１つまたは複数のランタイムルールを順守することが、以下の、インフォテインメントシステム１８４用のＡＰＩ仕様、および車両１２３の地理的位置に対応する１つまたは複数の安全ガイドラインのうちの１つまたは複数に準拠することに対応するように、構成されてもよい。
【００９６】
ステップ３１０において、１つまたは複数のモニタモジュール１３４を生成する。１つまたは複数のモニタモジュール１３４は、１つまたは複数のランタイムルールに基づいて生成される。
【００９７】
ステップ３１２において、未信頼アプリケーション１９１を更新し、未信頼アプリケーション１９１に１つまたは複数のモニタモジュール１３４を組み込む。たとえば、未信頼アプリケーション１９１のコードおよびルーチンは、１つまたは複数のモニタモジュール１３４のコードおよびルーチンを組み込む。組み込み処理は、１つまたは複数のモニタモジュール１３４が未信頼アプリケーション１９１の実行によって発生する測定可能パラメータを観察および記録できるように、構成されてもよい。
【００９８】
いくつかの実施形態では、モニタモジュール１３４のコードおよびルーチンは、１つま
たは複数のモニタモジュール１３４を組み込むように未信頼アプリケーション１９１を更新した場合に、実行時に未信頼アプリケーション１９１のパフォーマンスを損なわないように構成される。たとえば、未信頼アプリケーション１９１の実行によって発生する測定可能パラメータは、未信頼アプリケーション１９１が１つまたは複数のモニタモジュール１３４を含むか否かにかかわらず、変わらない。このようにして、未信頼アプリケーション１９１の実行を観察するモニタモジュール１３４によって収集されたフィードバックデータは、未信頼アプリケーション１９１の挙動のみを反映し、モニタモジュール１３４自体の挙動を反映しない。
【００９９】
ステップ３１４において、インフォテインメントシステム１８４上で未信頼アプリケーション１９１が実行される。たとえば、プロセッサ２２５は、インフォテインメントシステム１８４上で未信頼アプリケーション１９１を実行する。未信頼アプリケーション１９１に含まれる１つまたは複数のモニタモジュール１３４は、未信頼アプリケーション１９１の実行によって発生する測定可能パラメータを観察および記録することができる。１つまたは複数のモニタモジュール１３４は、インフォテインメントシステム１８４上での未信頼アプリケーション１９１の実行後に観察された測定可能パラメータを記述するトレースログを作成する。トレースログは、未信頼アプリケーション１９１の実行によってもたらされる測定可能パラメータを記述するフィードバックデータを含む。
【０１００】
ステップ３１６において、未信頼アプリケーション１９１、製造業者、またはソフトウェアシステムについて、ステップ３０８において決定された１つまたは複数のランタイムルールを再利用してもよい。たとえば、１つまたは複数のランタイムルールを記述するランタイムルールデータ１３２を、他の車両の製造業者または他のインフォテインメントシステムの製造業者に販売またはライセンス供与され得る商品としてもよい。
【０１０１】
次に図４を参照する。図４は、インフォテインメントシステム１８４にアプリケーション保証を与えるための例示的な方法４００を示すフローチャートである。いくつかの実施形態では、方法４００の１つまたは複数のステップは、図２を参照して上述されたシステム２００によって実行することができる。
【０１０２】
ステップ４０１において、１つまたは複数のモニタモジュール１３４を組み込むように、未信頼アプリケーション１９１を更新する。未信頼アプリケーション１９１は、インフォテインメントシステム１８４の構成要素である。
【０１０３】
ステップ４０２において、インフォテインメントシステム１８４上で未信頼アプリケーション１９１を実行する。たとえば、インフォテインメントシステム１８４のプロセッサが、１つまたは複数のモニタモジュール１３４が組み込まれた未信頼アプリケーション１９１を実行する。
【０１０４】
ステップ４０４において、未信頼アプリケーション１９１の実行によって発生した測定可能パラメータを監視する。
【０１０５】
ステップ４０６において、未信頼アプリケーション１９１についての１つまたは複数のランタイムルールの侵害の存在に関して、判定を行う。
【０１０６】
ステップ４０６においてルール侵害が存在すると判定されなかった場合、方法４００はステップ４０７に進む。また、ステップ４０７において、未信頼アプリケーション１９１がまだ動作しているかどうかに関して、判定を行う。ステップ４０７において未信頼アプリケーション１９１がすでに動作していない場合、方法４００は終了する。ステップ４０７において未信頼アプリケーション１９１がまだ動作している場合、方法４００は上述さ
れたステップ４０４に進む。
【０１０７】
ステップ４０６においてルール侵害が存在すると判定された場合、方法４００はステップ４０８に進む。ステップ４０８において、ルール侵害を報告する。たとえば、モニタモジュール１３４は、ルール侵害についてのデータをアプリケーション保証システム１９９に供給する。当該データは、フィードバックデータまたはトレースログを含んでいてもよい。場合によっては、モニタモジュール１３４は、アプリケーション保証システム１９９の解析モジュール２０８にフィードバックデータまたはトレースログを供給してもよい。これにより、アプリケーション保証システム１９９は、ルール侵害が存在するかどうかを判定することができる。
【０１０８】
ステップ４１０において、ルール侵害に対して修復手順が適用可能か否かの判定を行う。たとえば、修復手順データ１３６は、修復手順データ１３６が識別されたルール侵害に関連する修復手順の記述を含むかどうかを判定するために解析されてもよい。ステップ４１０において修復手順が利用可能であると判定されなかった場合、方法４００はステップ４０７に進む。ステップ４１０において修復手順が利用可能であると判定された場合、方法４００はステップ４１２に進む。
【０１０９】
ステップ４１２において、ルール侵害に関連する修復手順が決定される。たとえば、未信頼アプリケーション１９１の実行が望ましくない挙動をもたらす場合、未信頼アプリケーション１９１の実行を終了させると、望ましくない挙動の発生が止められるので、修復手順は、未信頼アプリケーション１９１の実行を終了させる。また、他の修復手順も考えられる。たとえば、修復手順として、インフォテインメントシステム１８４のディスプレイを介して、ドライバに警告メッセージを提供してもよい。
ステップ４１４において、修復手順を実施する。たとえば、プロセッサ２２５は、未信頼アプリケーション１９１の実行を終了させることができる。
【０１１０】
（インフォテインメントシステムの例）
図５は、アプリケーション保証システム１９９およびモニタモジュール１３４を含む例示的なインフォテインメントシステム１８４を示すブロック図である。インフォテインメントシステム１８４は、以下の構成要素、すなわち、ＲＶモニタアプリケーション５０５（場合によってはＪａｖａＭＯＰアプリケーション５８５）を含むアプリケーション保証システム１９９、１つまたは複数のモニタモジュール１３４を含む未信頼アプリケーション１９１、プロセッサ２２５、インフォテインメントシステム１８４用のＡＰＩを記述するＡＰＩデータ５７５、通信ユニット２４５、ディスプレイ５８０、ならびにメモリ２２７のうちの１つまたは複数を含む。
【０１１１】
インフォテインメントシステム１８４のこれらの構成要素は、バス５４５を介して互いに通信可能に結合する。アプリケーション保証システム１９９は、信号線５１０を介してバス５４５に通信可能に結合する。未信頼アプリケーション１９１は、信号線５１５を介してバス５４５に通信可能に結合する。プロセッサ２２５は、信号線５２０を介してバス５４５に通信可能に結合する。メモリ２２７は、信号線５２５を介してバス５４５に通信可能に結合する。ＡＰＩデータ５７５は、信号線５３０を介してバス５４５に通信可能に結合する。通信ユニット２４５は、信号線５３５を介してバス５４５に通信可能に結合する。いくつかの実施形態では、インフォテインメントシステム１８４の構成要素のうちの１つまたは複数は、バス５４５との通信用の信号線を共有してもよい。
【０１１２】
アプリケーション保証システム１９９、未信頼アプリケーション１９１、１つまたは複数のモニタモジュール１３４、プロセッサ２２５、通信ユニット２４５、およびメモリ２２７については、図１〜図４を参照して前述されたので、これらの説明はここでは繰り返
さない。
【０１１３】
メモリ２２７は、以下の構成要素、すなわち、仕様データ１３０、ランタイムルールデータ１３２、修復手順データ１３６、安全ルールデータ１３８、およびモニタライブラリ１４０のうちの１つまたは複数を含む。これらの構成要素は図１〜図４を参照して前述されたので、これらの説明はここでは繰り返さない。
【０１１４】
アプリケーション保証システム１９９は、ＲＶモニタアプリケーション５０５を含む。ＲＶモニタアプリケーション５０５は図１を参照して前述されたので、この説明はここでは繰り返さない。ＲＶモニタアプリケーション５０５の実施形態は、「Ｐａｒａｍｅｔｒｉｃ  Ｔｒａｃｅ  Ｓｌｉｃｉｎｇ」と題し、２０１４年５月６日に公開された米国特許第８，７１９，７９６号に記載されており、その全体が参照により本明細書に組み込まれる。
【０１１５】
アプリケーション保証システム１９９は、ＪａｖａＭＯＰアプリケーション５８５を含む場合がある。ＪａｖａＭＯＰアプリケーション５８５は、アプリケーション保証システム１９９のオプションであるため、図５では破線によって描写されている。ＪａｖａＭＯＰアプリケーション５８５は、未信頼アプリケーション１９１がモニタモジュール１３４を組み込むように、未信頼アプリケーション１９１を更新するように構成された、コードおよびルーチンを含む。ＪａｖａＭＯＰアプリケーション５８５は、Ｊａｖａ用ＭＯＰのインスタンスを含んでいてもよい。ＪａｖａＭＯＰアプリケーション５８５は、イリノイ大学によって公開されたＪａｖａＭＯＰソフトウェアを含んでいてもよい。ＪａｖａＭＯＰアプリケーション５８５は、イリノイ大学によって開発されたＪａｖａＭＯＰ４ソフトウェアを含んでいてもよい。ＪａｖａＭＯＰソフトウェアの例には、ＪａｖａＭＯＰ４．０およびその任意の派生物または分岐が含まれる。いくつかの実施形態では、アプリケーション保証システム１９９は、実行時に未信頼アプリケーション１９１からトレースデータを収集するように構成された、任意の他のソフトウェア品質ツールまたはソフトウェア解析ツールを含む。
【０１１６】
いくつかの実施形態では、ＲＶモニタアプリケーション５０５およびＪａｖａＭＯＰアプリケーション５８５のうちの１つまたは複数は、メモリ２２７などの有形メモリに記憶される。
【０１１７】
ＡＰＩデータ５７５は、インフォテインメントシステム１８４用のＡＰＩを記述するデータを含む。ＡＰＩデータ５７５は、場合によっては、メモリ２２７、またはプロセッサ２２５によってアクセス可能な他の何らかの有形メモリに記憶される。
【０１１８】
ディスプレイ５８０は、インフォテインメントシステム１８４の表示装置を含む。ディスプレイ５８０は、信号線５４０を介してバス５４５に通信可能に結合する。
【０１１９】
本発明は、本明細書で説明される動作を実行する装置にも関する。この装置は要求される目的のために特別に製造されるものであっても良いし、汎用コンピュータを用いて構成しコンピュータ内に格納されるプログラムによって選択的に実行されたり再構成されたりするものであっても良い。このようなコンピュータプログラムは、コンピュータのシステムバスに接続可能な、例えばフロッピー（登録商標）ディスク・光ディスク・ＣＤ−ＲＯＭ・ＭＯディスク・磁気ディスクなど任意のタイプのディスク、読み込み専用メモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、ＥＰＲＯＭ、ＥＥＰＲＯＭ、磁気カード、フラッシュメモリ、光学式カード、電子的命令を格納するために適した任意のタイプの媒体などの、非一時的なコンピュータ可読記憶媒体に記憶される。
【０１２０】
発明の具体的な実施形態は、完全にハードウェアによって実現されるものでも良いし、完全にソフトウェアによって実現されるものでも良いし、ハードウェアとソフトウェアの両方によって実現されるものでも良い。好ましい実施形態は、ソフトウェアによって実現される。ここでソフトウェアとは、ファームウェア、常駐ソフトウェア、マイクロコードやその他のソフトウェアを含むものである。
【０１２１】
さらに、ある実施形態は、コンピュータが利用あるいは読み込み可能な記憶媒体からアクセス可能なコンピュータプログラムプロダクトの形態を取る。この記憶媒体は、コンピュータや任意の命令実行システムによってあるいはそれらと共に利用されるプログラムコードを提供する。コンピュータが利用あるいは読み込み可能な記憶媒体とは、命令実行システムや装置によってあるいはそれらと共に利用されるプログラムを、保持、格納、通信、伝搬および転送可能な任意の装置を指す。
【０１２２】
プログラムコードを格納・実行するために適したデータ処理システムは、システムバスを介して記憶素子に直接または間接的に接続された少なくとも１つのプロセッサを有する。記憶素子は、プログラムコードの実際の実行に際して使われるローカルメモリや、大容量記憶装置や、実行中に大容量記憶装置からデータを取得する回数を減らすためにいくつかのプログラムコードを一時的に記憶するキャッシュメモリなどを含む。
【０１２３】
入力／出力（Ｉ／Ｏ）装置は、例えばキーボード、ディスプレイ、ポインティング装置などであるが、これらはＩ／Ｏコントローラを介して直接あるいは間接的にシステムに接続される。
【０１２４】
システムにはネットワークアダプタも接続されており、これにより、私的ネットワークや公共ネットワークを介して他のデータ処理システムやリモートにあるプリンタや記憶装置に接続される。モデム、ケーブルモデム、イーサネット（登録商標）は、現在利用可能なネットワークアダプタのほんの一例である。
【０１２５】
最後に、本明細書において提示されるアルゴリズムおよび表示は特定のコンピュータや他の装置と本来的に関連するものではない。本明細書における説明にしたがったプログラムを有する種々の汎用システムを用いることができるし、また要求された処理ステップを実行するための特定用途の装置を製作することが適した場合もある。これら種々のシステムに要求される構成は、以下の説明において明らかにされる。さらに、本発明は、特定のプログラミング言語と関連づけられるものではない。本明細書で説明される本発明の内容を実装するために種々のプログラミング言語を利用できることは明らかであろう。
【０１２６】
実施形態の前述の説明は、例示と説明を目的として行われたものである。したがって、開示された実施形態が本発明の全てではないし、本発明を上記の実施形態に限定するものでもない。本発明は、上記の開示にしたがって、種々の変形が可能である。本発明の範囲は上述の実施形態に限定解釈されるべきではなく、特許請求の範囲にしたがって解釈されるべきである。本発明の技術に詳しい者であれば、本発明はその思想や本質的特徴から離れることなくその他の種々の形態で実現できることを理解できるであろう。同様に、モジュール・処理・特徴・属性・方法およびその他の本発明の態様に関する名前付けや分割方法は必須なものでものないし重要でもない。また、本発明やその特徴を実装する機構は異なる名前や分割方法や構成を備えていても構わない。さらに、当業者であれば、モジュール・処理・特徴・属性・方法およびその他の本発明の態様は、ソフトウェア、ハードウェア、ファームウェアもしくはこれらの組合せとして実装できることを理解できるであろう。また、本発明をソフトウェアとして実装する場合には、モジュールなどの各要素は、どのような様式で実装されても良い。例えば、スタンドアローンのプログラム、大きなプログラムの一部、異なる複数のプログラム、静的あるいは動的なリンクライブラリー、カー
ネルローダブルモジュール、デバイスドライバー、その他コンピュータプログラミングの当業者にとって既知な方式として実装することができる。さらに、本発明の実装は特定のプログラミング言語に限定されるものではないし、特定のオペレーティングシステムや環境に限定されるものでもない。以上のように、上記の本発明の説明は限定的なものではなく例示的なものであり、本発明の範囲は添付の特許請求の範囲にしたがって定められる。
【符号の説明】
【０１２７】
１００  環境
１０５  ネットワーク
１１８  信号線
１２３  車両
１３０  仕様データ
１３２  ランタイムルールデータ
１３４  モニタモジュール
１３６  修復手順データ
１３８  安全ルールデータ
１４０  モニタライブラリ
１５４  信号線
１５５  ランタイム検証サーバ
１６０  アプリケーションプロバイダ
１６４  信号線
１８２  車載型コンピュータ
１８４  インフォテインメントシステム
１９１  未信頼アプリケーション
１９９  アプリケーション保証システム
２００  システム
２０２  通信モジュール
２０４  位置特定モジュール
２０６  ルール決定モジュール
２０８  解析モジュール
２１０  修復モジュール
２２０  バス
２２２  信号線
２２４  信号線
２２５  プロセッサ
２２６  信号線
２２７  メモリ
２２８  信号線
２３０  信号線
２３２  信号線
２３４  信号線
２３６  信号線
２３８  信号線
２４０  信号線
２４５  通信ユニット
２５０  ＧＰＳシステム
３００  方法
４００  方法
５０５  ＲＶモニタアプリケーション
５１０  信号線
５１５  信号線
５２０  信号線
５２５  信号線
５３０  信号線
５３５  信号線
５４０  信号線
５４５  バス
５７５  ＡＰＩデータ
５８０  ディスプレイ
５８５  ＪａｖａＭＯＰアプリケーション
【図１】
0006349372.tif 000002
【図２】
0006349372.tif 000003
【図３】
0006349372.tif 000004
【図４】
0006349372.tif 000005
【図５】
0006349372.tif 000006