(57)【特許請求の範囲】
【請求項１】
１つまたは複数のソフトウェア構成部品、１つまたは複数のハードウェア構成部品、およびミドルウェア構成部品を含み、前記ソフトウェア構成部品が前記ハードウェア構成部品によって実行される、自動車システムであって、
前記ソフトウェア構成部品は、前記ソフトウェア構成部品の動作の特性を表す特性プロパティと、前記ソフトウェア構成部品がどのように動作するかを設定するための書き換え可能な可変パラメータを含み、
前記ハードウェア構成部品は、前記ソフトウェア構成部品の動作の特性を表す特性プロパティを含み、
前記ミドルウェア構成部品は、
前記ソフトウェア構成部品に対する要件を表す要件データを取得し、
前記要件データに表される要件に従って動作させたときに、前記ソフトウェア構成部品による処理がスケジューリング可能であるか否かを、前記ソフトウェア構成部品および前記ハードウェア構成部品の前記特性プロパティを用いて判定し、
スケジューリングが可能であると判定された場合に、前記ソフトウェア構成部品の可変パラメータを前記要件データによって表される値に更新するかまたは当該値に更新可能とし、
スケジューリング不可能であると判定された場合は、自動車を起動不可能とする、
ことを特徴とする自動車システム。
【請求項２】
前記要件データは、複数の設定レベルのそれぞれについて前記ソフトウェア構成部品の機能に関する要件を含み、
前記ミドルウェア構成部品は、全ての設定レベルについて前記ソフトウェア構成部品による処理がスケジューリング可能であると判定された場合に、前記要件データによって示される各設定レベルごとの前記ソフトウェア構成部品の可変パラメータの値をルックアップテーブルとして記憶し、
前記ミドルウェア構成部品は、周辺の環境を表す環境データに基づいて設定レベルを決定し、決定された設定レベルに応じた前記ソフトウェア構成部品の可変パラメータの値を前記ルックアップテーブルから取得して、前記ソフトウェア構成部品の可変パラメータを当該値に更新する、
請求項１に記載の自動車システム。
【請求項３】
前記ミドルウェア構成部品は、新しいソフトウェア構成部品の追加が検知されたときに、
前記新しいソフトウェア構成部品に関する要件を含む新しい要件データを取得し、
前記新しい要件データに表される要件に従って動作させたときに、前記新しいソフトウェア構成部品を含むソフトウェア構成部品による処理がスケジューリング可能であるか否かを、前記新しいソフトウェア構成部品を含むソフトウェア構成部品および前記ハードウェア構成部品の前記特性プロパティを用いて判定し、
スケジューリングが可能であると判定された場合に、前記ソフトウェア構成部品の可変パラメータを前記要件データによって表される値に更新するか、または当該値に更新可能にする、
請求項１または２に記載の自動車システム。
【請求項４】
前記ソフトウェア構成部品の特性プロパティは、周期的処理の実行周期、および、所定の演算性能のハードウェア部品を用いて実行したときの１周期あたりの実行時間を含み、
前記ハードウェア構成部品の特性プロパティは、演算性能を含む、
請求項１から３のいずれか１項に記載の自動車システム。
【請求項５】
前記ソフトウェア構成部品の可変パラメータは、セキュリティまたは耐障害性を担保するための機能の有効無効または冗長度を設定するものである、
請求項１から４のいずれか１項に記載の自動車システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書は、セキュリティサポートおよび耐障害(fault tolerance)サポートを提供す
る自動車修正システム(automobile modification system)に関する。たとえば、本明細書は、自動車にセキュリティサポートおよび耐障害サポートを提供するように、１つまたは複数の自動車構成部品を修正する自動車修正システムに関する。
【背景技術】
【０００２】
自動車に対する安全性、セキュリティ、および性能の要件は、時間とともに変化する。たとえば、安全基準(safety standard)は時間とともに変化する場合があり、セキュリテ
ィ基準(security standard)は時間とともに変化する場合があり、性能基準(performance standard)は時間とともに変化する場合があり、または自動車システム用の設計仕様は時
間とともに変化する場合がある。結果として、今日自動車に取り付けられる自動車部品は、後になって自動車に対する安全性、セキュリティ、および性能の要件を満たさず、したがって、それらの要件に準拠していないと考えられる可能性がある。
【発明の概要】
【０００３】
自動車システムは、基準(standard)または仕様(specification)における変更に適用で
きるように、自動車修正システムによって修正することができる。たとえば、自動車修正システムは、基準（たとえば、自動車システムに関係する自動車の安全基準、セキュリティ基準、もしくは性能基準）における変更、または仕様（たとえば、ソフトウェアに関連する自動車システム用の設計仕様、性能仕様、もしくは要件仕様）における変更に適合するように、自動車システムを修正することができる。自動車修正システムは、他の理由で自動車システムを変更することができる。
【０００４】
いくつかの実装形態では、自動車修正システムは、自動車システムに対する耐障害性(fault tolerance)が変更されるように、自動車システムを修正する。たとえば、自動車シ
ステムに対する耐障害性は、増大する場合もあり、減少する場合もある。別の例では、自動車修正システムは、自動車システムの耐障害性に関係するコンピュータコードを、このコンピュータコードが変更されるように修正する。自動車システムの耐障害性に関係するコンピュータコードの変更は、自動車システムの耐障害性に影響を及ぼす可能性がある。たとえば、自動車システムの耐障害性が増したり、減ったりする可能性がある。
【０００５】
自動車システムの例には、車、トラック、スポーツユーティリティビークル(SUV)など
の自動車が含まれる。自動車システムは、自動車の車載型コンピュータ、または自動車の任意の他の電子構成部品を含む場合もある。自動車システムは、自律走行車、または車両間通信を備えている自動車を含む場合がある。
【０００６】
次に、いくつかの実施形態により、自動車修正システムの例が記載される。
【０００７】
１つまたは複数のプロセッサのシステムはシステムにインストールされたソフトウェア、ファームウェア、ハードウェア、またはそれらの組合せを有し、これらが動作中にシステムにアクションを実行させるおかけで、特定の動作(operation)またはアクション(action)を実行するように構成される場合がある。
【０００８】
１つまたは複数のコンピュータプログラムは、プロセッサによって実行されるとシステムにアクションを実行させる命令を含むおかけで、特定の動作またはアクションを実行す
るように構成することができる。プロセッサは、自動車の搭載コンピュータの構成要素、または自動車の他の何らかのプロセッサベースの構成要素であり得る。
【０００９】
１つの一般態様は、自動車のプロセッサおよび自動車のミドルウェア構成部品に通信可能に結合された自動車構成部品を含むシステムを含む。自動車構成部品は、新しいセキュリティ要件および新しい耐障害性要件のうちの１つまたは複数に準拠して自動車を動作させるように、自動車のミドルウェア構成部品により実行時間中に修正可能な修正可能データを記憶する非一時的メモリを含む。修正可能データは、新しいセキュリティ要件および新しい耐障害性要件のうちの１つまたは複数に関連して、自動車構成部品の性能に修正可能データの修正が影響を及ぼすように構成される。修正可能データは、設計時に決定された修正可能データ用の１組のあらかじめ決定された構成に基づいて、実行時にミドルウェア構成部品によって修正される。
【００１０】
実装形態は、以下の特徴のうちの１つまたは複数を含む場合がある。
【００１１】
プラグイン構成部品、センサ、エンジン制御ユニット、車両間通信デバイス、専用短距離通信デバイス、非一時的メモリに記憶されたソフトウェア構成要素、およびプロセッサベースのコンピューティングデバイスを含むセットから、自動車構成部品が選択され得る、システム。
【００１２】
ミドルウェア構成部品が、耐障害サポートおよびセキュリティサポートを自動車に提供するように構成された、１つまたは複数のソフトウェア構成部品および１つまたは複数のハードウェア構成部品のインスタンス化された組合せを含む、システム。
【００１３】
１つまたは複数のソフトウェア構成部品および１つまたは複数のハードウェア構成部品が、設計時に静的に構成および実装される、システム。
【００１４】
ミドルウェア構成部品が、自動車構成部品および自動車のうちの１つまたは複数の環境を記述するセンサデータを受信し、ミドルウェア構成部品が、（１）センサデータ、および（２）新しいセキュリティ要件および新しい耐障害性要件のうちの１つまたは複数を記述する要件データに基づいて、１組のあらかじめ決定された構成から構成を適応的に選択する、システム。
【００１５】
１つの一般態様は、自動車の複数の構成要素から１組の修正可能データを読み取ることであって、複数の構成要素の各々が、１組の非一時的記憶媒体に含まれるそれ自体の非一時的記憶媒体に記憶されたそれ自体の修正可能データを含み、１組の修正可能データが、セキュリティ要件および耐障害性要件のうちの１つまたは複数に準拠して自動車を動作させるように、実行時間中に修正可能である、読み取ることと、１組の修正可能データ内に存在する新しい修正可能データの存在に基づいて、複数の構成要素がプラグイン構成部品を含むと判断することと、プラグイン構成部品を分析して、プラグイン構成部品の動作がタイミング制約またはリソース制約を破るかどうかを判定することと、自動車の複数の構成要素に含まれる構成要素ごとに、１組の修正可能データに対する更新を決定することであって、更新が、タイミング制約もしくはリソース制約を破らずに、または自動車の複数の構成要素のいずれにもタイミング制約もしくはリソース制約を破らせずに、プラグイン構成部品を自動車のプロセッサに通信可能に結合されながら動作させるように構成される、決定することと、１組の非一時的記憶媒体に含まれる非一時的記憶媒体の各々を、それらが更新を記憶するように実行時に修正することと、プラグイン構成部品が自動車のプロセッサに通信可能に結合されている間、プラグイン構成部品を動作させることとを含む方法を含む。
【００１６】
１つの一般態様は、プロセッサを含む自動車と、適応自動車ハードウェア構成部品(adaptive automobile hardware component)と、プロセッサおよび適応自動車ハードウェア構成部品に通信可能に結合された適応自動車ミドルウェア構成部品(adaptive automobile middleware component)とを含むシステムを含む。プロセッサおよび適応自動車ミドルウェア構成部品に通信可能に結合された適応自動車ハードウェア構成部品は、第１のセキュリティアドオン、第１の耐障害性アドオン、ならびに、第１の特性プロパティおよび第１の可変パラメータを記憶する第１のデータ構造を含む、自動車のプロセッサベースのデバイスである。
【００１７】
第１の特性プロパティ(characteristic property)は、適応自動車ハードウェア構成部
品の動作に応答して提供される機能に関連付けられた第１のプロセスの第１のタイミングに影響を及ぼす第１のタイミング設定を含む。
【００１８】
第１の可変パラメータ(configurable parameter)は、以下の、適応自動車ハードウェア構成部品の動作に応答して第１のセキュリティアドオンによって提供される機能に影響を及ぼす第１のセキュリティ設定、および適応自動車ハードウェア構成部品の動作に応答して第１の耐障害性アドオンによって提供される機能に影響を及ぼす第１の耐障害性設定のうちの１つまたは複数を含む。
【００１９】
第１のデータ構造は、プロセッサによる適応自動車ミドルウェア構成部品の実行が、以下の、第１のプロセスの第１のタイミングを実行時間中に修正する第１の特性プロパティ、ならびに、第１のセキュリティ設定および第１の耐障害性設定のうちの１つまたは複数を実行時間中に修正する第１の可変パラメータのうちの１つまたは複数に、プロセッサがアクセスし、それらを修正することを可能にするように構成される。本態様の他の実施形態は、対応するコンピュータシステム、および、１つまたは複数のコンピュータストレージデバイスに記録され、各々が方法のアクションを実行するように構成されたコンピュータプログラムを含む。
【００２０】
実装形態は、以下の特徴のうちの１つまたは複数を含む場合がある。
【００２１】
適応自動車ミドルウェア構成部品が、プロセッサによって実行されることに応答して、自動車に対する新しい要件を記述する自動車要件データに基づいて、自動車に対する新しい要件の存在を実行時に識別することと、適応自動車ハードウェア構成部品の動作を記述する第１のセンサデータに基づいて、適応自動車ハードウェア構成部品の動作が新しい要件に準拠する第１のセンサデータを発生させるかどうかを判定することと、設計時に決定された第１の特性プロパティおよび第１の可変パラメータについてのあらかじめ決定された構成の第１のセットを記述する第１の修正データから、新しい要件に準拠する新しいセンサデータを発生させることによって示されたように、適応自動車ハードウェア構成部品を実行時間中に新しい要件に準拠して動作させるように構成された第１の選択された構成を選択することと、第１の選択された構成と一致する第１の特性プロパティおよび第１の可変パラメータについてのデータを記憶し、第１の特性プロパティおよび第１の可変パラメータのうちの少なくとも１つを修正するように第１のデータ構造を修正することとをプロセッサに行わせる命令を含む、システム。
【００２２】
適応自動車ソフトウェア構成部品が、プロセッサおよび適応自動車ミドルウェア構成部品に通信可能に結合される、システム。適応自動車ソフトウェア構成部品は、第２のセキュリティアドオン、第２の耐障害性アドオン、ならびに、第２の特性プロパティおよび第２の可変パラメータを記憶する第２のデータ構造を含む場合がある。第２の特性プロパティも、適応自動車ソフトウェア構成部品の動作に応答して提供される機能に関連付けられた第２のプロセスの第２のタイミングに影響を及ぼす第２のタイミング設定を含む場合が
ある。第２の可変パラメータも、以下の、適応自動車ソフトウェア構成部品の実行に応答して第２のセキュリティアドオンによって提供される機能に影響を及ぼす第２のセキュリティ設定、および適応自動車ソフトウェア構成部品の実行に応答して第２の耐障害性アドオンによって提供される機能に影響を及ぼす第２の耐障害性設定のうちの１つまたは複数を含む場合がある。第２のデータ構造は、プロセッサによる適応自動車ミドルウェア構成部品の実行が、以下の、第２のプロセスの第２のタイミングを実行時間中に修正する第２の特性プロパティ、ならびに、第２のセキュリティ設定および第２の耐障害性設定のうちの１つまたは複数を実行時間中に修正する第２の可変パラメータのうちの１つまたは複数に、プロセッサがアクセスし、それらを修正することを可能にするように構成される。
【００２３】
適応自動車ミドルウェア構成部品が、プロセッサによって実行されることに応答して、適応自動車ソフトウェア構成部品の実行を記述する第２のセンサデータに基づいて、適応自動車ソフトウェア構成部品の実行が新しい要件に準拠する第２のセンサデータを発生させるかどうかを判定することと、設計時に決定された第２の特性プロパティおよび第２の可変パラメータについてのあらかじめ決定された構成の第２のセットを記述する第２の修正データから、適応自動車ソフトウェア構成部品に対する新しい要件に準拠するさらなるセンサデータを発生させることによって示されたように、適応自動車ソフトウェア構成部品を実行時間中に新しい要件に準拠して実行させるように構成された第２の選択された構成を選択することと、第２の選択された構成と一致する第２の特性プロパティおよび第２の可変パラメータについてのデータを記憶し、特性プロパティおよび可変パラメータのうちの少なくとも１つを修正するように第２のデータ構造を修正することとをプロセッサに行わせるさらなる命令を含む、システム。記載される技法の実装形態は、ハードウェア、方法もしくはプロセス、またはコンピュータアクセス可能媒体上のコンピュータソフトウェアを含む場合がある。
【００２４】
１つの一般態様は、自動車のプロセッサによって実行される適応自動車ミドルウェア構成部品により、プロセッサに通信可能に結合された新しいプラグイン構成部品の存在を特定することであって、新しいプラグイン構成部品が、第１のセキュリティアドオン、第１の耐障害性アドオン、および第１のデータ構造を含む、特定することと、自動車の構成要素に対する安全性要件および耐障害性要件を記述する自動車要件データに基づいて、新しいプラグイン構成部品の動作に応答して提供される機能に関連付けられた第１のプロセスの第１のタイミングに影響を及ぼす第１のタイミング設定を含む第１の特性プロパティを決定することと、自動車要件データに基づいて、以下の、新しいプラグイン構成部品の動作に応答して第１のセキュリティアドオンによって提供される機能に影響を及ぼす第１のセキュリティ設定、および新しいプラグイン構成部品の動作に応答して第１の耐障害性アドオンによって提供される機能に影響を及ぼす第１の耐障害性設定のうちの１つまたは複数を含む第１の可変パラメータを決定することとを含む方法を含む。方法はまた、新しいプラグイン構成部品が第１の特性プロパティおよび第１の可変パラメータに基づいて動作するように、新しいプラグイン構成部品に含まれる第１のデータ構造を修正することを含む。方法はまた、自動車要件データ、ならびに、自動車の構成要素に対する安全性要件および耐障害性要件に関連して、第１の特性プロパティおよび第１の可変パラメータが自動車の動作にどのように影響を及ぼすかの推定に基づいて、（１）新しいプラグイン構成部品を含まない自動車の１つまたは複数の他の構成要素のための動作のタイミングに影響を及ぼす１組の第２の特性プロパティ、ならびに、（２）自動車用の他のパラメータについての１つまたは複数の第２のセキュリティ設定および１つまたは複数の第２の耐障害性設定に影響を及ぼす１組の第２の可変パラメータに対する修正を決定することであって、修正が安全性要件および耐障害性要件に準拠して他の構成要素を動作させるように構成され、プラグイン構成部品が自動車の構成要素である、決定することを含む。方法はまた、１組の第２の特性プロパティおよび１組の第２の可変パラメータに対する修正と一致するデータを記憶するように、自動車の他の構成要素に関連付けられた１組の第２のデータ構造
を更新することを含む。方法はまた、新しいプラグイン構成部品を動作させることを含む。本態様の他の実施形態は、対応するコンピュータシステム、および、１つまたは複数のコンピュータストレージデバイスに記録され、各々が方法のアクションを実行するように構成されたコンピュータプログラムを含む。
【００２５】
１つの一般態様は、自動車のプロセッサに通信可能に結合された自動車構成部品を含み、自動車構成部品は、新しいセキュリティ要件および新しい耐障害性要件のうちの１つまたは複数に準拠して自動車を動作させるように、自動車のミドルウェア構成部品により実行時間中に修正可能なデータを記憶する非一時的メモリを含み、データは、新しいセキュリティ要件および新しい耐障害性要件のうちの１つまたは複数に関連して、データの修正が自動車構成部品の性能に影響を及ぼすように構成され、データは、設計時に決定されたデータについての１組のあらかじめ決定された構成に基づいて、実行時にミドルウェア構成部品によって修正される。
【００２６】
本態様の他の実施形態は、対応するコンピュータシステム、および、１つまたは複数のコンピュータストレージデバイスに記録され、各々が方法のアクションを実行するように構成されたコンピュータプログラムを含む。
【００２７】
本開示は、添付図面の図において限定ではなく例として示され、添付図面では、同様の構成要素を参照するために同様の参照番号が使用される。
【図面の簡単な説明】
【００２８】
【図１】自動車修正システムを実装するための動作環境を示すブロック図である。
【００２９】
【図２Ａ】自動車修正システムを実装するための例示的なシステムを示すブロック図である。
【００３０】
【図２Ｂ】適応自動車ハードウェア構成部品、適応自動車ミドルウェア構成部品、および適応自動車ソフトウェア構成部品についての例示的な実施形態を示すブロック図である。
【００３１】
【図３】適応自動車ミドルウェア構成部品の例示的な実施形態を示すブロック図である。
【００３２】
【図４Ａ】入力を受信し、入力に応答して出力を決定する自動車修正システムの例示的な実施形態を示すブロック図である。
【００３３】
【図４Ｂ】入力を受信し、入力に応答して出力を決定する適応自動車ソフトウェア構成部品の例示的な実施形態を示すブロック図である。
【００３４】
【図４Ｃ】適応自動車ハードウェア構成部品の例示的な実施形態を示すブロック図である。
【００３５】
【図４Ｄ】適応自動車ミドルウェア構成部品の例示的な実施形態を示すブロック図である。
【００３６】
【図５Ａ】自動車修正システムによって実施され得る方法についての例示的なフローチャートを示すブロック図である。
【図５Ｂ】自動車修正システムによって実施され得る方法についての例示的なフローチャートを示すブロック図である。
【図５Ｃ】自動車修正システムによって実施され得る方法についての例示的なフローチャートを示すブロック図である。
【００３７】
【図６】適応自動車ミドルウェア構成部品の例示的な実施形態を示すブロック図である。
【図７】一実施形態におけるソフトウェア部品、ハードウェア部品、およびこれらの特性プロパティの例を示す図である。
【図８】一実施形態におけるマッピング処理およびスケジューリング判定の結果を示すルックアップテーブル（参照テーブル）の例であり、この例では全ての設定レベルにおけるスケジューリングが可能な場合のルックアップテーブルを示している。
【図９】一実施形態におけるルックアップテーブル（参照テーブル）の生成処理のフローチャートである。
【図１０】一実施形態におけるシステム稼働時に可変パラメータを動的に決定する処理のフローチャートである。
【図１１】一実施形態における、ソフトウェア部品の追加と、その際の処理の流れを示すフローチャートである。
【図１２】一実施形態におけるマッピング処理およびスケジューリング判定の結果を示すルックアップテーブル（参照テーブル）の例であり、この例ではレベルＮにおけるスケジューリングが不可能な場合のルックアップテーブルを示している。
【発明を実施するための形態】
【００３８】
＜１．システム概要＞
［動作環境の説明］
図１は、自動車修正システム１９９を実装するための例示的な動作環境１００を示すブロック図である。動作環境１００は、自動車１２３、クライアント１７０、プラグイン構成部品１６０、およびサービスサーバ１５３のうちの１つまたは複数を含む。動作環境１００は、たとえば、交通データを提供するための交通サーバ、気象データを提供するための気象サーバ、地図データを提供するための地図サーバ、およびソーシャルネットワークサービスを提供するためのソーシャルネットワークサーバなどを含む、図１に示されていない他のサーバまたはデバイスを含んでもよい。
【００３９】
いくつかの実装形態では、動作環境１００のこれらのエンティティは、ネットワーク１０５を介して通信可能に結合することができる。クライアント１７０は、信号線１４６を介してネットワーク１０５に通信可能に結合することができる。プラグイン構成部品１６０は、信号線１４２を介してネットワーク１０５に通信可能に結合することができる。自動車１２３は、信号線１４５を介してネットワーク１０５に通信可能に結合することができる。サービスサーバ１５３は、信号線１４４を介してネットワーク１０５に通信可能に結合することができる。加えて、クライアント１７０は、信号線１４１を介して自動車１２３に通信可能に結合することができ、プラグイン構成部品１６０は、信号線１４３を介して自動車１２３に通信可能に結合することができる。信号線１４１、１４２、１４３、１４４、１４５、１４６の各々は、デバイスとネットワークとの間、またはデバイスと他のデバイスとの間の有線接続またはワイヤレス接続（たとえば、ミリメートル波通信、専用短距離通信（ＤＳＲＣ）、ワイヤレスフィデリティ（Ｗｉ−Ｆｉ）、セルラー（たとえば、３Ｇ、４Ｇ、ＬＴＥなど）、Ｂｌｕｅｔｏｏｔｈ（登録商標）など）を表す場合がある。
【００４０】
ネットワーク１０５は、従来のタイプの有線またはワイヤレスであり得るし、星形構成、トークンリング構成、または他の構成を含む、多数の様々な構成を有する場合がある。さらに、ネットワーク１０５は、ローカルエリアネットワーク（ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）（たとえば、インターネット）、または、複数のデバイスがそれ
を介して通信することができる他の相互接続データパスを含む場合がある。いくつかの実装形態では、ネットワーク１０５はピアツーピアネットワークであり得る。ネットワーク１０５はまた、様々な異なる通信プロトコルでデータを送るための電気通信ネットワークの部分に結合される場合があるか、またはそれらを含む場合がある。いくつかの実装形態では、ネットワーク１０５は、ショートメッセージングサービス（ＳＭＳ）、マルチメディアメッセージングサービス（ＭＭＳ）、ハイパーテキスト転送プロトコル（ＨＴＴＰ）、直接データ接続、ＷＡＰ、電子メールなどを介して、データを送受信するためのＢｌｕｅｔｏｏｔｈ（登録商標）通信ネットワークまたはセルラー通信ネットワークを含む。ネットワーク１０５は、動作環境１００のエンティティ間のセルラー通信をサポートする機能またはハードウェアを含む場合もある。
【００４１】
クライアント１７０は、メモリおよびプロセッサを含むコンピューティングデバイス、たとえば、サーバ、ラップトップコンピュータ、デスクトップコンピュータ、タブレットコンピュータ、モバイル電話、携帯情報端末（「ＰＤＡ」）、モバイル電子メールデバイス、携帯型ゲームプレーヤ、携帯型音楽プレーヤ、路側ユニット（「ＲＳＵ」）、搭載ユニット（「ＯＢＵ」）、１つもしくは複数のプロセッサがその中に組み込まれるか、もしくはそれに結合されるテレビジョン、またはネットワーク１０５にアクセスすることが可能な他の電子デバイスであり得る。ユーザは、クライアント１７０と対話することができる。たとえば、人間のユーザは、周辺装置（たとえば、マウス、キーボード、タッチセンサ式入力デバイス、マイクロフォン、カメラなど）を介してクライアント１７０に入力を与えるか、または周辺装置（たとえば、モニタ、ディスプレイ、スピーカなど）を介してクライアント１７０からデータもしくは情報を受信することができる。
【００４２】
クライアント１７０は、構成管理モジュール１９８を含む場合がある。いくつかの実施形態では、構成管理モジュール１９８は、自動車修正システム１９９が自動車１２３の１つまたは複数の構成部品を修正できるように構成された、コードおよびルーチンを含む場合がある。たとえば、構成管理モジュール１９８は、メモリに記憶され、プロセッサによって実行される場合がある。プロセッサによって実行されることに応答して、構成管理モジュール１９８は、たとえば、自動車１２３の１つまたは複数の構成部品の現在の構成を特定することと、自動車１２３の１つまたは複数の構成部品の現在の構成が変更されようとしているかどうかを判定することと、自動車１２３の構成部品のうちの１つまたは複数を再構成するために対策を講じることとを含むステップをプロセッサに実行させることができる。
【００４３】
いくつかの実施形態では、構成管理モジュール１９８は、自動車１２３、自動車１２３に含まれる処理デバイス１８２、自動車に含まれる自動車修正システム１９９、またはサービスサーバ１５３の構成要素であり得る。いくつかの実施形態では、クライアント１７０、自動車１２３、自動車修正システム１９９、およびサービスサーバ１５３のうちの１つまたは複数は、（１）構成管理モジュール１９８に含まれるコードおよびルーチンのいくつかまたはすべてを記憶および実行するメモリ、ならびに（２）メモリに記憶されたコードおよびルーチンを実行するためのプロセッサを含む場合がある。
【００４４】
構成管理モジュール１９８は、図２Ａ、図２Ｂ、図３、図４Ａ、図４Ｂ、図４Ｃ、図４Ｄ、図５Ａ、図５Ｂ、および図５Ｃのうちの１つまたは複数を参照して、下記でより詳細に記載される。
【００４５】
サービスサーバ１５３は、メモリおよびプロセッサを含むコンピューティングデバイス、たとえば、サーバ、ラップトップコンピュータ、デスクトップコンピュータ、タブレットコンピュータ、モバイル電話、ＰＤＡ、モバイル電子メールデバイス、携帯型ゲームプレーヤ、携帯型音楽プレーヤ、１つもしくは複数のプロセッサがその中に組み込まれるか
、もしくはそれに結合されるテレビジョン、またはネットワーク１０５にアクセスすることが可能な他の電子デバイスを含む場合がある。
【００４６】
サービスサーバ１５３は、ハードウェアサーバを含む場合がある。サービスサーバ１５３は、サーバソフトウェアを記憶するメモリ、およびサーバソフトウェアを実行するためのプロセッサを含む場合がある。
【００４７】
サービスサーバ１５３は、サービスモジュール１９６を含む場合がある。サービスモジュール１９６は、自動車１２３またはクライアント１７０にサービスを提供するためのコードおよびルーチンを含む場合がある。サービスは、クライアント１７０、または自動車１２３のインフォテインメントシステムもしくはナビゲーションシステムによってアクセス可能な任意のオンラインサービスを含む場合がある。サービスは、ソーシャルネットワークサービス、電子カレンダサービス、電子地図またはナビゲーションサービス、地元企業要覧サービス、コンテンツストリーミングサービスなどを含む場合がある。
【００４８】
自動車１２３は、任意の道路車両を含む場合がある。たとえば、自動車は、内燃機関、電気モータ、および水素燃料モータのうちの１つまたは複数によって駆動される、車、トラック、ＳＵＶ、バス、セミトレーラトラック、または任意の車道運搬車を含む場合がある。
【００４９】
自動車は、以下の、処理デバイス１８２、自動車修正システム１９９、およびセンサセット１９０のうちの１つまたは複数を含む場合がある。処理デバイス１８２、自動車修正システム１９９、およびセンサセット１９０は、バス１２０を介して互いに通信可能に結合することができる。
【００５０】
いくつかの実施形態では、処理デバイス１８２は、自動車１２３に機能を提供するように特別に構成された任意のプロセッサベースのコンピューティングデバイスを含む場合がある。たとえば、処理デバイス１８２は、車載型コンピュータ、エンジン制御ユニット、車両インフォテインメントシステム、または車両ナビゲーションシステムなどの、専用コンピューティングデバイスを含む場合がある。いくつかの実施形態では、処理デバイス１８２は汎用コンピュータではない。
【００５１】
自動車修正システム１９９は、自動車１２３の１つまたは複数のハードウェア構成部品またはソフトウェア構成部品を再構成するためのハードウェアおよびソフトウェアを含む場合がある。自動車修正システム１９９は、図２Ａ、図２Ｂ、図３、図４Ａ、図４Ｂ、図４Ｃ、図４Ｄ、図５Ａ、図５Ｂ、および図５Ｃのうちの１つまたは複数を参照して、下記でより詳細に記載される。たとえば、自動車修正システム１９９および構成管理モジュール１９８のうちの１つまたは複数は、図５Ａ、図５Ｂ、および図５Ｃを参照して下記に記載される方法５００のステップのうちの１つまたは複数を実行するように構成される場合がある。
【００５２】
センサセット１９０は、１つまたは複数の自動車センサを含む場合がある。たとえば、センサセット１９０は、以下の、カメラ、ＬＩＤＡＲセンサ、レーザー高度計、ナビゲーションセンサ（たとえば、全地球測位システム（ＧＰＳ）センサ）、赤外線検出器、動き検出器、サーモスタット、音声検出器、一酸化炭素センサ、二酸化炭素センサ、酸素センサ、空気流量センサ、エンジン冷却剤温度センサ、スロットル位置センサ、クランクシャフト位置センサ、自動車エンジンセンサ、バルブタイマ、空燃比メータ、死角メータ、カーブ感触器、欠陥検出器、ホール効果センサ、多岐管絶対圧力センサ、駐車センサ、レーダーガン、速度計、速度センサ、タイヤ圧監視センサ、トルクセンサ、トランスミッション液温度センサ、タービン速度センサ（ＴＳＳ）、可変磁気抵抗センサ、車両速度センサ
（ＶＳＳ）、水分センサ、ホイール速度センサ、および任意の他のタイプの自動車センサのうちの１つまたは複数を含む場合がある。
【００５３】
いくつかの実装形態では、構成管理モジュール１９８または自動車修正システム１９９のうちの１つまたは複数は、フィールドプログラマブルゲートアレイ（「ＦＰＧＡ」）または特定用途向け集積回路（「ＡＳＩＣ」）を含むハードウェアを使用して実装される場合がある。いくつかの他の実装形態では、構成管理モジュール１９８および自動車修正システム１９９のうちの１つまたは複数は、ハードウェアとソフトウェアの組合せを使用して実装される場合がある。構成管理モジュール１９８および自動車修正システム１９９のうちの１つまたは複数は、デバイス（たとえば、サーバもしくは他のデバイス）の組合せ、またはデバイスのうちの１つに記憶される場合がある。
【００５４】
プラグイン構成部品(plug-in component)１６０は、プラグインハードウェア構成部品
、プラグインソフトウェア構成部品、またはハードウェアとソフトウェアの組合せである構成部品を含む場合がある。たとえば、プラグイン構成部品１６０は、処理デバイス１８２（たとえば、車載型コンピュータ）などの自動車１２３の構成要素に通信可能に結合されたハードウェアドングル(dongle)を含む場合がある。自動車１２３は、プラグイン構成部品１６０を実装するために必要なドライバまたは他の構成部品を含んでも、含まなくてもよい。
【００５５】
いくつかの実施形態では、プラグイン構成部品１６０は、図２Ａを参照して下記に記載される、適応自動車ハードウェア構成部品１３０および適応自動車ソフトウェア構成部品１３４のうちの１つまたは複数を含む場合がある。
【００５６】
＜２．自動車修正システムの実装例＞
次に図２Ａを参照すると、自動車修正システム１９９を実装するための例示的なシステム２００が示される。システム２００は、自動車１２３、プラグイン構成部品１６０、およびクライアント１７０のうちの１つまたは複数を含む。プラグイン構成部品１６０およびクライアント１７０は図１を参照して上述されたので、これらの説明はここでは繰り返さない。
【００５７】
自動車１２３は、センサセット１９０、処理デバイス(processing device)１８２、お
よび自動車修正システム１９９を含む。処理デバイス１８２および自動車修正システムは、バス１２０を介して互いに通信可能に結合することができる。
【００５８】
処理デバイス１８２は、プロセッサ２２５、メモリ２２７Ａ、通信ユニット２４５を含み、さらに構成管理モジュール１９８および自動車要件データ(automobile requirement data)２０５を含む場合がある。
【００５９】
プロセッサ２２５は、算術論理ユニット、マイクロプロセッサ、汎用コントローラ、または、計算を実行する他の何らかのプロセッサアレイを含む。いくつかの実装形態では、プロセッサ２２５は、ディスプレイデバイスに電子表示信号を供給することができる。プロセッサ２２５は、データ信号を処理し、複合命令セットコンピュータ（ＣＩＳＣ）アーキテクチャ、縮小命令セットコンピュータ（ＲＩＳＣ）アーキテクチャ、または命令セットの組合せを実装するアーキテクチャを含む、様々なコンピューティングアーキテクチャを含む場合がある。プロセッサ２２５は、グラフィカル処理ユニットを含む場合がある。図２Ａは単一のプロセッサ２２５を含むが、複数のプロセッサ２２５が含まれる場合がある。他のプロセッサ、オペレーティングシステム、センサ、ディスプレイ、および物理構成が考えられ得る。
【００６０】
メモリ２２７Ａは、非一時的コンピュータ可読記憶媒体であり得る。メモリ２２７Ａは、プロセッサ２２５によって実行され得る命令またはデータを記憶する。命令またはデータは、本明細書に記載される技法を実行するためのコードを含む場合がある。メモリ２２７Ａは、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）デバイス、スタティックランダムアクセスメモリ（ＳＲＡＭ）デバイス、フラッシュメモリ、または他の何らかのメモリデバイスであり得る。いくつかの実装形態では、メモリ２２７Ａはまた、不揮発性メモリまたは同様の永続的なストレージデバイス、および、ハードディスクドライブ、フロッピーディスクドライブ、ＣＤ−ＲＯＭデバイス、ＤＶＤ−ＲＯＭデバイス、ＤＶＤ−ＲＡＭデバイス、ＤＶＤ−ＲＷデバイス、フラッシュメモリデバイス、またはより永続的に情報を記憶するための他の何らかのマスストレージデバイスを含む媒体を含む。メモリ２２７Ａは、構成管理モジュール１９８または自動車修正システム１９９により、それらの機能を実行するために必要とされるデータのいくつかまたはすべてを記憶することができる。
【００６１】
通信ユニット２４５は、図１を参照して上述された動作環境１００の構成要素にデータを送信し、それらからデータを受信する。通信ユニット２４５はバス１２０に結合される。いくつかの実装形態では、通信ユニット２４５は、ネットワーク１０５または別の通信チャネルへの直接物理接続用のポートを含む。たとえば、通信ユニット２４５は、ネットワーク１０５との有線通信用のＵＳＢ、ＳＤ、ＣＡＴ−５、または同様のポートを含む。いくつかの実装形態では、通信ユニット２４５は、ＩＥＥＥ８０２．１１、ＩＥＥＥ８０２．１１ｐ、ＩＥＥＥ８０２．１６、ＩＥＥＥ１６０９．１、ＩＥＥＥ１６０９．２、ＩＥＥＥ１６０９．３、ＩＥＥＥ１６０９．４、Ｂｌｕｅｔｏｏｔｈ（登録商標）、または任意の他の適切なワイヤレス通信方法を含む１つまたは複数のワイヤレス通信方法を使用して、動作環境１００の１つまたは複数の構成要素とデータを交換するためのワイヤレストランシーバを含む。
【００６２】
いくつかの実装形態では、通信ユニット２４５は、ショートメッセージングサービス（ＳＭＳ）、マルチメディアメッセージングサービス（ＭＭＳ）、ハイパーテキスト転送プロトコル（ＨＴＴＰ）、直接データ接続、ＷＡＰ、電子メール、または別の適切なタイプの電子通信を介して、セルラー通信ネットワーク上でデータを送受信するためのセルラー通信トランシーバを含む。いくつかの実装形態では、通信ユニット２４５は、有線ポートおよびワイヤレストランシーバを含む。通信ユニット２４５はまた、ＴＣＰ／ＩＰ、ＨＴＴＰ、ＨＴＴＰＳ、およびＳＭＴＰなどを含む標準ネットワークプロトコルを使用して、ファイルまたはメディアオブジェクトを配信するための、ネットワーク１０５への他の従来の接続を提供することができる。
【００６３】
構成管理モジュール１９８は、自動車１２３の１つまたは複数の構成部品の１つまたは複数のパラメータまたはプロパティを修正するように構成された、コードおよびルーチンを含む。たとえば、自動車１２３に対する安全性要件、自動車１２３に対するセキュリティ要件、または自動車１２３に対する性能要件の更新に伴い、構成部品はこれらの要件にもはや準拠しない場合がある。
【００６４】
通信ユニット２４５は、自動車要件データ２０５を受信することができる。自動車要件データ２０５は、自動車１２３または自動車１２３の１つもしくは複数の構成部品に対する１つまたは複数の要件を記述することができる。たとえば、自動車要件データ２０５は、１つもしくは複数の安全性仕様(safety specification)、１つもしくは複数のセキュリティ仕様(security specification)、または１つもしくは複数の設計仕様(design specification)を記述することができる。安全性仕様、セキュリティ仕様、または設計仕様は、それぞれ、自動車１２３の構成部品に対する１つもしくは複数の安全性要件、１つもしくは複数のセキュリティ要件、または１つもしくは複数の性能要件を記述することができる
。
【００６５】
自動車１２３の構成部品は、自動車１２３に含まれる任意のハードウェアおよびソフトウェアであって、以下のデータを含むハードウェアおよびソフトウェアを含む場合がある：
（１）１つもしくは複数の特性プロパティ、または
（２）１つもしくは複数の可変パラメータ。
特性プロパティおよび可変パラメータは、たとえば、図２Ｂ、図４Ａ、図４Ｂ、図４Ｃ、および図４Ｄのうちの１つまたは複数を参照して下記に記載される。
【００６６】
通信ユニット２４５は、処理デバイス１８２のメモリ２２７Ａ、または自動車修正システム１９９のメモリ２２７Ｂに自動車要件データ２０５を記憶することができる。
【００６７】
構成管理モジュール１９８は、自動車要件データ２０５を分析し、以下のうちの１つまたは複数を判断することができる。
（１）自動車要件データ２０５によって記述される１つまたは複数の要件により自動車１２３のどの構成部品が影響を受けるか
（２）影響を受ける構成部品の可変パラメータまたは特性プロパティを修正するべきかどうか
（３）影響を受ける構成部品の可変パラメータまたは特性プロパティをどのように修正するか
構成管理モジュール１９８は、影響を受ける構成部品が自動車要件データ２０５によって記述される要件のいくつかまたはすべてに準拠するように、影響を受ける構成部品の可変パラメータまたは特性プロパティを修正するために対策を講じることができる。
【００６８】
下記でさらに詳細に記載されるように、構成管理モジュール１９８は、影響を受ける構成部品が自動車要件データ２０５に準拠するように、影響を受ける構成部品の可変パラメータまたは特性プロパティをどのように修正するかについての１つまたは複数の候補を記述する修正データ１４０に基づいて、影響を受ける構成部品の可変パラメータまたは特性プロパティを修正することができる。たとえば、構成管理モジュール１９８は、修正データ１４０を分析し、影響を受ける構成部品が自動車要件データ２０５によって記述される１つまたは複数の要件に準拠するように、影響を受ける構成部品の可変パラメータまたは特性プロパティをどのように修正するかを決定することができる。
【００６９】
いくつかの実施形態では、通信ユニット２４５は、センサセット１９０に含まれるセンサのうちの１つまたは複数によって検出または特定される１つまたは複数の測定値を記述するセンサデータ（たとえば、図２Ｂの構成要素２９９を参照）を受信することができる。１つまたは複数の測定値は、以下の、自動車１２３、適応自動車ハードウェア構成部品１３０、および適応自動車ソフトウェア構成部品１３４のうちの１つまたは複数の現在の状態または環境を記述することができる。
【００７０】
いくつかの実施形態では、構成管理モジュール１９８は、自動車要件データ２０５およびセンサデータを分析し、以下のうちの１つまたは複数を判断することができる。
（１）自動車要件データ２０５によって記述される１つまたは複数の要件により自動車１２３のどの構成部品が影響を受けるか
（２）影響を受ける構成部品の可変パラメータまたは特性プロパティを修正するべきかどうか
（３）影響を受ける構成部品の可変パラメータまたは特性プロパティをどのように修正するか
構成管理モジュール１９８は、影響を受ける構成部品が自動車要件データ２０５によっ
て記述される要件のいくつかまたはすべてに準拠するように、影響を受ける構成部品の可変パラメータまたは特性プロパティを修正するために対策を講じることができる。
【００７１】
自動車修正システム１９９は、１つまたは複数の適応自動車ハードウェア構成部品１３０、１つまたは複数の適応自動車ミドルウェア構成部品１３２、１つまたは複数の適応自動車ソフトウェア構成部品１３４、修正データ１４０のうちの１つまたは複数を含む場合がある。自動車修正システム１９９は、自動車要件データ２０５を含む場合がある。
【００７２】
適応自動車ミドルウェア構成部品１３２、適応自動車ソフトウェア構成部品１３４、および自動車要件データ２０５は、メモリ２２７Ｂに記憶することができる。メモリ２２７Ｂは、非一時的コンピュータ可読記憶媒体であり得る。メモリ２２７Ｂは、処理デバイス１８２のプロセッサ２２５または自動車修正システム１９９のプロセッサによって実行され得る命令またはデータを記憶し、これは図示されていない自動車修正システム１９９のオプションの特徴である。命令またはデータは、本明細書に記載される技法を実行するためのコードを含む場合がある。メモリ２２７Ｂは、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）デバイス、スタティックランダムアクセスメモリ（ＳＲＡＭ）デバイス、フラッシュメモリ、または他の何らかのメモリデバイスであり得る。いくつかの実装形態では、メモリ２２７Ｂはまた、不揮発性メモリまたは同様の永続的なストレージデバイス、および、ハードディスクドライブ、フロッピーディスクドライブ、ＣＤ−ＲＯＭデバイス、ＤＶＤ−ＲＯＭデバイス、ＤＶＤ−ＲＡＭデバイス、ＤＶＤ−ＲＷデバイス、フラッシュメモリデバイス、またはより永続的に情報を記憶するための他の何らかのマスストレージデバイスを含む媒体を含む。メモリ２２７Ｂは、構成管理モジュール１９８または自動車修正システム１９９により、それらの機能を実行するために必要とされるデータのいくつかまたはすべてを記憶することができる。
【００７３】
適応自動車ハードウェア構成部品１３０は、１つもしくは複数の特性プロパティまたは１つもしくは複数の可変パラメータを含む、自動車１２３の任意のハードウェア構成部品を含む場合がある。適応自動車ハードウェア構成部品１３０の一例は、図２Ｂおよび図４Ｃにおいて描写される。
【００７４】
いくつかの実施形態では、適応自動車ハードウェア構成部品１３０は、従来の自動車ハードウェア構成部品ではない。たとえば、センサは自動車ハードウェア構成部品であり得るが、適応自動車ミドルウェア構成部品１３２によって参照可能および／または修正可能な１つもしくは複数の特性プロパティおよび／または１つもしくは複数の可変パラメータを含まない限り、適応自動車ハードウェア構成部品１３０ではない。
【００７５】
いくつかの実施形態では、適応自動車ハードウェア構成部品１３０は、構成管理モジュール１９８、適応自動車ミドルウェア構成部品１３２、および適応自動車ソフトウェア構成部品１３４のうちの１つまたは複数とともに動作するように特別に設計および製造された自動車ハードウェア構成部品である。たとえば、適応自動車ハードウェア構成部品１３０は、自動車センサ、搭載コンピュータ、エンジン制御ユニット（「ＥＣＵ」）、車両間通信デバイス（「Ｖ２Ｖ通信デバイス」）、専用短距離通信デバイス（「ＤＳＲＣ通信デバイス」）、または、適応自動車ミドルウェア構成部品１３２によって参照可能および／または修正可能な1つまたは複数の特性プロパティおよび／または１つもしくは複数の可
変パラメータを含むように特に設計された、他の何らかの自動車ハードウェア構成要素を含む場合がある。自動車１２３は、複数の適応自動車ハードウェア構成部品１３０を含む場合がある。
【００７６】
適応自動車ソフトウェア構成部品１３４は、１つもしくは複数の特性プロパティ、１つもしくは複数の可変パラメータ、１つもしくは複数の耐障害性アドオン、または１つもし
くは複数のセキュリティアドオンを含む、自動車１２３の任意のソフトウェア構成部品を含む場合がある。適応自動車ソフトウェア構成部品１３４の一例は、図２Ｂおよび図４Ａにおいて描写される。特性プロパティまたは可変パラメータは、図２Ａを参照して下記に記載される。耐障害性アドオンまたはセキュリティアドオンは、図４Ｂを参照して下記に記載される。
【００７７】
いくつかの実施形態では、適応自動車ソフトウェア構成部品１３４は、従来の自動車ソフトウェア構成部品ではない。たとえば、センサ用のソフトウェアは自動車ソフトウェア構成部品であり得るが、適応自動車ミドルウェア構成部品１３２によって修正可能である１つもしくは複数の特性プロパティまたは１つもしくは複数の可変パラメータを含まない限り、適応自動車ソフトウェア構成部品１３４ではない。ソフトウェアが適応自動車ソフトウェア構成部品１３４であるためには、耐障害性アドオンまたはセキュリティアドオンを含むことが必要とされる場合もある。
【００７８】
下記でより詳細に説明されるように、いくつかの実施形態では、適応自動車ソフトウェア構成部品１３４は、構成管理モジュール１９８、適応自動車ミドルウェア構成部品１３２、および適応自動車ハードウェア構成部品１３０のうちの１つまたは複数とともに動作するように、特別に設計および製造された自動車ソフトウェア構成部品である。たとえば、適応自動車ソフトウェア構成部品１３４は、自動車センサ、搭載コンピュータ、エンジン制御ユニット、または、適応自動車ミドルウェア構成部品１３２によって参照可能な1
つまたは複数の特性プロパティおよび修正可能な１つもしくは複数の特性プロパティもしくは可変パラメータを含むように特に設計された、他の何らかの自動車ソフトウェア構成要素に含まれる、ソフトウェアまたはファームウェアを含む場合がある。適応自動車ソフトウェア構成部品１３４は、１つもしくは複数の耐障害性アドオンまたは１つもしくは複数のセキュリティアドオンを含むように、特に設計される場合もある。自動車１２３は、複数の適応自動車ソフトウェア構成部品１３４を含む場合がある。
【００７９】
適応自動車ハードウェア構成部品１３０または適応自動車ソフトウェア構成部品１３４に対する新しい要件を示す自動車要件データ２０５に基づいて、可変パラメータおよび特性プロパティが適応自動車ミドルウェア構成部品１３２によって修正可能なので、適応自動車ハードウェア構成部品１３０および適応自動車ソフトウェア構成部品１３４により、自動車１２３の設計が自動車１２３のための耐久性のあるセキュリティサポートおよび耐障害サポートを含むことが可能になる。
【００８０】
適応自動車ミドルウェア構成部品１３２は、以下のうちの１つまたは複数を実現するように構成された、コードおよびルーチンを含む。
（１）適応自動車ハードウェア構成部品１３０が自動車要件データ２０５によって記述される１つまたは複数の要件に準拠するように、適応自動車ハードウェア構成部品１３０または適応自動車ソフトウェア構成部品１３４の１つまたは複数の可変パラメータを修正または再構成すること
（２）適応自動車ソフトウェア構成部品１３４が自動車要件データ２０５によって記述される１つまたは複数の要件に準拠するように、適応自動車ハードウェア構成部品１３０または適応自動車ソフトウェア構成部品１３４の１つまたは複数の特性プロパティおよび／または可変パラメータを修正または再構成すること、ならびに、
（３）１つまたは複数のプラグイン構成部品１６０が処理デバイス１８２、適応自動車ハードウェア構成部品１３０、および適応自動車ソフトウェア構成部品１３４のうちの１つまたは複数と動作可能であるように、１つまたは複数のプラグイン構成部品１６０にサポートを提供すること
【００８１】
修正データ１４０は、自動車要件データ２０５によって記述される１つまたは複数の要
件に準拠しない１つまたは複数の構成部品１３０、１３４の１つもしくは複数の特性プロパティまたは１つもしくは複数の可変パラメータについての、１つまたは複数のあらかじめ決定された構成を記述することができる。たとえば、構成管理モジュール１９８は、１つまたは複数の構成部品１３０、１３４の現在の状態に基づいて（たとえば、センサセット１９０から受信されたセンサデータの分析に基づいて）、自動車要件データ２０５を決定することができる。センサデータは、自動車１２３または自動車１２３の構成要素のうちの１つもしくは複数についての現在の環境を記述することができる。
【００８２】
いくつかの実施形態では、修正データ１４０は、構成部品１３０、１３４のうちの１つまたは複数のための様々なレベルの耐障害性および様々なレベルのセキュリティについての１つまたは複数の構成を記述する、１つまたは複数の参照テーブルを含む場合がある。
【００８３】
いくつかの実施形態では、適応自動車ミドルウェア構成部品１３２は、（たとえば、センサデータによって記述される）現在の環境、および（たとえば、自動車要件データ２０５によって記述される）必要なレベルのセキュリティまたは耐障害性のうちの１つまたは複数に基づいて、修正データ１４０から構成を適応的に選択することができる。適応自動車ミドルウェア構成部品１３２は、常に最高レベルのセキュリティまたは耐障害性を提供する構成を選択するわけではなく、状況に応じたセキュリティレベルまたは耐障害性レベルを選択することで、自動車１２３についてのコンピュータのオーバーヘッドが低減され、自動車１２３についての性能を高めることができる。たとえば、構成の選択は、プロセッサ２２５についてのコンピュータのオーバーヘッドが低減され、プロセッサ２２５についての性能レベルが高まるか維持されるように、最高レベルのセキュリティまたは最高レベルの耐障害性を提供するとは限らないように構成される場合がある。
【００８４】
いくつかの実施形態では、適応自動車ミドルウェア構成部品１３２は、以下のステップのうちの１つまたは複数を実行すること、または実行されるようにすることによって、プラグイン構成部品１６０にサポートを提供することができる。
（１）プラグイン構成部品１６０が処理デバイス１８２、適応自動車ハードウェア構成部品１３０、適応自動車ソフトウェア構成部品（または自動車１２３の他の何らかのハードウェアもしくはソフトウェア）をどのように変更するかを検出すること
（２）自動車１２３が構成管理モジュール１９８を含むクライアント１７０または他の何らかのプロセッサベースのコンピューティングデバイスに接続されるまで、自動車１２３を使用不可にすること
【００８５】
構成管理モジュール１９８（または図４Ｄを参照して下記に記載されるプラグイン構成部品サポートモジュール４６１）は、リアルタイムスケジューリング分析システムを含む場合がある。構成管理モジュール１９８は、以下のステップのうちの１つまたは複数を実行することによって、プラグイン構成部品１６０のセットアップを完了することができる。
（１）プラグイン構成部品１６０にサポートを提供するスケジュール可能性を判断すること
（２）プラグイン構成部品１６０にサポートを提供するための１つまたは複数のスケジューリングパラメータを割り当てること
（３）プラグイン構成部品１６０のための様々な耐障害性およびセキュリティのレベルについての１つまたは複数の構成を含んでいる修正データ１４０に含まれる参照テーブルを再構築すること
自動車１２３へのプラグイン構成部品１６０の追加のスケジューが不可になった場合、構成管理モジュール１９８は、自動車１２３のユーザに警告を与えることができ、または自動車１２３は、スケジューリング問題が解決されるまで使用不可のままであり得る。
【００８６】
いくつかの実施形態では、構成管理モジュール１９８は、以下のステップのうちの１つまたは複数を実行することができる。
（１）自動車修正システム１９９から１つまたは複数の特性プロパティ２９１、２９５または可変パラメータ２９３、２９７を読み取ること
（２）１つまたは複数の特性プロパティ２９１、２９５または可変パラメータ２９３、２９７に基づいて、（新しいプラグイン構成部品であり得る）プラグイン構成部品１６０がバス１２０に通信可能に結合されているかどうかを判定すること
（３）新しいプラグイン構成部品１６０の存在を識別することに応答して、スケジュール可能性分析アルゴリズムを呼び出すこと
（４）スケジュール可能性分析アルゴリズムを実行して新しいプラグイン構成部品のスケジュール可能性を分析し、それにより新しいプラグイン構成部品１６０が、（たとえば、自動車要件データ２０５、または、いくつかの実施形態では、特性プロパティもしくは可変パラメータなどのタイミング制約もしくはリソース制約を記述する、自動車１２３もしくはクライアント１７０によって記憶される他の何らかのデータによって記述される）タイミング制約またはリソース制約に違反するどうかを判定すること
（５）タイミング制約またはリソース制約に違反しない場合、自動車修正システム１９９への新しいプラグイン構成部品の追加のスケジュールが可能であると判断し、新しいプラグイン構成部品１６０が自動車修正システム１９９に実装されることに成功するように、新しいプラグイン構成部品１６０に１つまたは複数のスケジューリングパラメータを割り当てること
（６）タイミング制約またはリソース制約に違反する場合、自動車修正システム１９９への新しいプラグイン構成部品１６０の追加のスケジュールが可能ではないと判断し、次いで、
（ａ）新しいプラグイン構成部品１６０を含む自動車修正システム１９９の構成要素のための様々な耐障害性およびセキュリティのレベルについての１つまたは複数の構成を含んでいる修正データ１４０に含まれる参照テーブルに対する１つまたは複数の更新を決定することであって、新しいプラグイン構成部品がタイミング制約またはリソース制約に違反せずに自動車修正システム１９９内で動作することを可能にするように更新が構成される、決定すること、
（ｂ）更新に基づいて修正データ１４０に含まれる参照テーブルを再構築すること、
（ｃ）参照テーブルによって記述される新しい構成を自動車修正システム１９９の各構成部品に割り当てること、ならびに、
（ｄ）自動車修正システム１９９への新しいプラグイン構成部品１６０および再構築された参照テーブルの追加のスケジュールが可能であると判断し、新しいプラグイン構成部品１６０が自動車修正システム１９９に実装されることに成功するように、新しいプラグイン構成部品１６０に１つまたは複数のスケジューリングパラメータを割り当てること
たとえば、図６を参照。
【００８７】
いくつかの実施形態では、クライアント１７０は、適応自動車ミドルウェア構成部品１３２に含まれるポート１８４を介して、自動車修正システム１９９に通信可能に結合することができる。
【００８８】
いくつかの実施形態では、自動車１２３は、自律自動車または半自律自動車であり得る。
【００８９】
次に図２Ｂを参照すると、適応自動車ハードウェア構成部品１３０、適応自動車ミドルウェア構成部品１３２、および適応自動車ソフトウェア構成部品１３４についての例示的な実施形態を示すブロック図が描写される。
【００９０】
図２Ｂに描写されたように、自動車１２３は、適応自動車ハードウェア構成部品１３０
、適応自動車ミドルウェア構成部品１３２、および適応自動車ソフトウェア構成部品１３４のうちの１つまたは複数を含む。適応自動車ミドルウェア構成部品１３２は、クライアント１７０に通信可能に結合することができる。
【００９１】
［適応自動車ハードウェア構成部品］
適応自動車ハードウェア構成部品１３０は、以下のうちの１つまたは複数を含む場合がある。
（１）適応自動車ハードウェア構成部品１３０に関連付けられた特性プロパティ２９１
（２）適応自動車ハードウェア構成部品１３０に関連付けられた可変パラメータ２９３
【００９２】
適応自動車ハードウェア構成部品１３０の例には、１つもしくは複数の特性プロパティ２９１または１つもしくは複数の可変パラメータ２９３を含む、プロセッサベースのコンピューティングデバイス、バス、およびセンサが含まれ得る。
【００９３】
いくつかの実施形態では、特性プロパティ２９１は、適応自動車ハードウェア構成部品１３０に関連付けられた動作のタイミングについてのオプションまたは設定に関係する場合がある。たとえば、適応自動車ハードウェア構成部品１３０に関連付けられた特性プロパティ２９１は、以下の例のうちの１つまたは複数を含む場合がある。
（１）自動車１２３に含まれるプロセッサベースのコンピューティングデバイスまたはバスについて使用され、適応自動車ミドルウェア構成部品１３２によって修正可能である周波数設定(frequency setting)
（２）自動車１２３に含まれるプロセッサベースのコンピューティングデバイスまたはバスについて使用され、適応自動車ミドルウェア構成部品１３２によって修正可能である帯域幅設定(bandwidth setting)
（３）自動車１２３に含まれるセンサについて使用され、適応自動車ミドルウェア構成部品１３２によって修正可能である検知レート設定(sensing rate setting)
【００９４】
適応自動車ハードウェア構成部品１３０は、適応自動車ハードウェア構成部品１３０に関連付けられた１つまたは複数の特性プロパティ２９１を含む場合がある。
【００９５】
適応自動車ミドルウェア構成部品１３２は、適応自動車ハードウェア構成部品１３０に関連付けられた１つまたは複数の特性プロパティ２９１を修正し、それによって、適応自動車ハードウェア構成部品１３０の動作を、自動車要件データ２０５によって記述される要件に従うようにするように構成された、コードおよびルーチンを含む場合がある。たとえば、適応自動車ハードウェア構成部品１３０は、適応自動車ハードウェア構成部品１３０に関連付けられた１つまたは複数の特性プロパティ２９１についての設定を含むテーブル（または他の何らかのデータ構造）を含む場合がある。適応自動車ミドルウェア構成部品１３２は、適応自動車ハードウェア構成部品１３０に関連付けられた１つまたは複数の特性プロパティ２９１の修正をもたらすために、これらの設定にアクセスし、それらを修正することができる。
【００９６】
いくつかの実施形態では、適応自動車ハードウェア構成部品１３０に関連付けられた１つまたは複数の特性プロパティ２９１の修正を可能にするテーブルまたはデータ構造へのアクセスは、何らかの暗号化方法を使用して制限される場合がある。適応自動車ミドルウェア構成部品１３２は、テーブルまたはデータ構造に記憶されたデータまたは設定へのアクセスおよび修正のために必要なデータまたは情報を含む場合がある。いくつかの実施形態では、適応自動車ミドルウェア構成部品１３２は、上記テーブルに対するアクセスおよび変更、すなわち、適応自動車ハードウェア構成部品１３０に関連付けられた１つまたは複数の特性プロパティ２９１の修正が可能に構成された唯一のエンティティであり得る。
【００９７】
いくつかの実施形態では、可変パラメータ２９３は、適応自動車ハードウェア構成部品１３０のための耐障害性またはセキュリティの設定を構成するためのオプションまたは設定に関係する場合がある。たとえば、適応自動車ハードウェア構成部品１３０に関連付けられた可変パラメータ２９３は、以下の例のうちの１つまたは複数を含む場合がある。
（１）自動車１２３に含まれるプロセッサベースのコンピューティングデバイスまたはバスについて使用され、適応自動車ミドルウェア構成部品１３２によって修正可能である周期設定(period setting)
（２）自動車１２３に含まれるプロセッサベースのコンピューティングデバイスまたはバスについて使用され、適応自動車ミドルウェア構成部品１３２によって修正可能である送信レート設定(transmission rate setting)、
（３）自動車１２３に含まれるセンサについて使用され、適応自動車ミドルウェア構成部品１３２によって修正可能であるサンプリングレート設定(sampling rate setting)。
【００９８】
適応自動車ハードウェア構成部品１３０は、適応自動車ハードウェア構成部品１３０に関連付けられた１つまたは複数の可変パラメータ２９３を含む場合がある。
【００９９】
適応自動車ミドルウェア構成部品１３２は、適応自動車ハードウェア構成部品１３０に関連付けられた１つまたは複数の可変パラメータ２９３を修正し、それによって、適応自動車ハードウェア構成部品１３０の動作を、自動車要件データ２０５によって記述される要件に従うようにするように構成された、コードおよびルーチンを含む場合がある。たとえば、適応自動車ハードウェア構成部品１３０は、適応自動車ハードウェア構成部品１３０に関連付けられた１つまたは複数の可変パラメータ２９３についての設定を含むテーブル（または他の何らかのデータ構造）を含む場合がある。適応自動車ミドルウェア構成部品１３２は、これらの設定にアクセスおよび修正して、適応自動車ハードウェア構成部品１３０に関連付けられた１つまたは複数の可変パラメータ２９３を修正することができる。
【０１００】
いくつかの実施形態では、適応自動車ハードウェア構成部品１３０に関連付けられた１つまたは複数の可変パラメータ２９３の修正を可能にするテーブルまたはデータ構造へのアクセスは、何らかの暗号化方法を使用して制限される場合がある。適応自動車ミドルウェア構成部品１３２は、テーブルまたはデータ構造に記憶されたデータまたは設定へのアクセスおよび修正のために必要なデータまたは情報を含む場合がある。いくつかの実施形態では、適応自動車ミドルウェア構成部品１３２は、上記テーブルに対するアクセスおよび変更、すなわち、適応自動車ハードウェア構成部品１３０に関連付けられた１つまたは複数の可変パラメータ２９３の修正が可能に構成された唯一のエンティティであり得る。
【０１０１】
［適応自動車ソフトウェア構成部品］
適応自動車ソフトウェア構成部品１３４は、以下のうちの１つまたは複数を含む場合がある。
（１）適応自動車ソフトウェア構成部品１３４に関連付けられた特性プロパティ２９５
（２）適応自動車ソフトウェア構成部品１３４に関連付けられた可変パラメータ２９７
【０１０２】
いくつかの実施形態では、特性プロパティ２９５は、適応自動車ソフトウェア構成部品１３４に関連付けられた動作のタイミングについてのオプションまたは設定に関係する場合がある。たとえば、適応自動車ソフトウェア構成部品１３４に関連付けられた特性プロパティ２９５は、以下のうちの１つまたは複数を含む場合がある。
（１）自動車１２３に含まれ、適応自動車ミドルウェア構成部品１３２によって修正可能であるように構成された、適応自動車ソフトウェア構成部品１３４についてのアクティブ化周期設定(activation period setting)
（２）自動車１２３に含まれ、適応自動車ミドルウェア構成部品１３２によって可能に
され、修正可能であるように構成された、適応自動車ソフトウェア構成部品１３４に関連付けられた耐障害性アドオン（たとえば、図４Ｂの構成要素４９７参照）についての推定実行時間設定(estimated execution time setting)、
（３）自動車１２３に含まれ、適応自動車ミドルウェア構成部品１３２によって可能にされ、修正可能であるように構成された、適応自動車ソフトウェア構成部品１３４に関連付けられたセキュリティアドオン（たとえば、図４Ｂの構成要素４９９参照）についての推定実行時間設定
（４）自動車要件データ２０５によって定義される自動車１２３の安全性要件、セキュリティ要件、または設計要件に準拠する方式で、自動車１２３の動作に対する適応自動車ソフトウェア構成部品１３４の重要度を記述する重要度データであって、適応自動車ミドルウェア構成部品１３２によって修正可能であるように構成された、重要度データ
なお、適応自動車ソフトウェア構成部品１３４の特性プロパティの上記の例示において、「設定」という用語を用いているが、これらの値を変更可能とは限らない。例えば上記の例における「推定実行時間設定」は、変更不可能な値である（ただし、推定実行時間は、ある基準の実行速度を有するプロセッサによって実行された場合の実行時間の推定値を表す）。
【０１０３】
適応自動車ソフトウェア構成部品１３４は、適応自動車ソフトウェア構成部品１３４に関連付けられた複数の特性プロパティ２９５を含む場合がある。
【０１０４】
適応自動車ミドルウェア構成部品１３２は、適応自動車ソフトウェア構成部品１３４に関連付けられた１つまたは複数の特性プロパティ２９５を修正し、それによって、適応自動車ソフトウェア構成部品１３４の動作を、自動車要件データ２０５によって記述される要件に従うようにするように構成された、コードおよびルーチンを含む場合がある。たとえば、適応自動車ソフトウェア構成部品１３４は、適応自動車ソフトウェア構成部品１３４に関連付けられた１つまたは複数の特性プロパティ２９５についての設定を含むテーブル（または他の何らかのデータ構造）を含む場合がある。適応自動車ミドルウェア構成部品１３２は、適応自動車ソフトウェア構成部品１３４に関連付けられた１つまたは複数の特性プロパティ２９５の修正をもたらすために、これらの設定にアクセスし、それらを修正することができる。
【０１０５】
いくつかの実施形態では、適応自動車ソフトウェア構成部品１３４に関連付けられた１つまたは複数の特性プロパティ２９５の修正を可能にするテーブルまたはデータ構造へのアクセスは、何らかの暗号化方法を使用して制限される場合がある。適応自動車ミドルウェア構成部品１３２は、テーブルまたはデータ構造に記憶されたデータまたは設定へのアクセスおよび修正のために必要なデータまたは情報を含む場合がある。いくつかの実施形態では、適応自動車ミドルウェア構成部品１３２は、上記テーブルに対するアクセスおよび変更、すなわち、適応自動車ソフトウェア構成部品１３４に関連付けられた１つまたは複数の特性プロパティ２９５の修正が可能に構成された唯一のエンティティであり得る。
【０１０６】
適応自動車ソフトウェア構成部品１３４に関連付けられた特性プロパティ２９５は、適応自動車ハードウェア構成部品１３０または適応自動車ソフトウェア構成部品１３４についてのマッピング分析またはタイミング分析のために設計時間中に使用される適応自動車ソフトウェア構成部品１３４の任意のプロパティを含む場合がある。いくつかの実施形態では、適応自動車ミドルウェア構成部品１３２は、適応自動車ハードウェア構成部品１３０または適応自動車ソフトウェア構成部品１３４に関連付けられた特性プロパティ２９５のうちの１つまたは複数を使用して、プラグイン構成部品１６０の実現可能性を判断することができる。
マッピング分析は、例えば、ソフトウェア構成部品１３４をどのハードウェア構成部品１３０を用いて実行するかを分析することを含む。タイミング分析は、１つまたは複数の
ソフトウェア構成部品１３４が、実行タイミングに関する要求を満たすか否か（例えば、各ソフトウェア構成部品の実行が、実行周期以下の時間で完了するか否か）を分析することを含む。マッピング分析やタイミング分析に使用されるプロパティの例は、ソフトウェア構成部品１３４のアクティブ化周期および（プロセッサの実行速度に応じた）実行時間であるが、その他のプロパティも利用可能である。
【０１０７】
いくつかの実施形態では、可変パラメータ２９７は、適応自動車ソフトウェア構成部品１３４のための耐障害性またはセキュリティの設定を構成するためのオプションまたは設定に関係する場合がある。例えば、適応自動車ソフトウェア構成部品１３４に関連付けられた可変パラメータ２９７は、以下のうちの１つまたは複数を含む場合がある。
・冗長構成部品(redundant component)（たとえば、図４Ｂの構成要素４８９または４
８４参照）が実行されるかどうかを示す実行設定であって、適応自動車ミドルウェア構成部品１３２によって修正可能に構成された、実行設定
・適応自動車ソフトウェア構成部品１３４に含まれ、適応自動車ミドルウェア構成部品１３２によって有効化および修正が可能に構成された、セキュリティコントローラ（たとえば、図４Ｂの構成要素４０３およびそれについての説明を参照）用のパラメータ（たとえば、暗号化用のキーの長さ、暗号化が可能であるかどうか、どのタイプまたはレベルの暗号化が使用されるか、など）
・適応自動車ソフトウェア構成部品１３４に含まれ、適応自動車ミドルウェア構成部品１３２によって有効化および修正が可能に構成された、耐障害性コントローラ(fault tolerance controller)（たとえば、図４Ｂの構成要素４０１およびそれについての説明を参照）用のパラメータ（たとえば、メッセージがユーザもしくは障害構成部品に提供されるか、または自動車１２３が使用不可にされる前に許される障害の数）
・自動車１２３の動作に対する適応自動車ソフトウェア構成部品１３４の重要度を、自動車要件データ２０５によって定義される自動車１２３の安全性要件、セキュリティ要件、または設計要件に準拠する方式で記述する重要度データ(criticality data)であって、適応自動車ミドルウェア構成部品１３２によって修正可能に構成された、重要度データ
【０１０８】
適応自動車ソフトウェア構成部品１３４は、適応自動車ソフトウェア構成部品１３４に関連付けられた複数の可変パラメータ２９７を含む場合がある。
【０１０９】
適応自動車ミドルウェア構成部品１３２は、適応自動車ソフトウェア構成部品１３４に関連付けられた１つまたは複数の可変パラメータ２９７を修正し、それによって、適応自動車ソフトウェア構成部品１３４の動作を、自動車要件データ２０５によって記述される要件に従うようにするように構成された、コードおよびルーチンを含む場合がある。たとえば、適応自動車ソフトウェア構成部品１３４は、適応自動車ソフトウェア構成部品１３４に関連付けられた１つまたは複数の可変パラメータ２９７についての設定を含むテーブル（または他の何らかのデータ構造）を含む場合がある。適応自動車ミドルウェア構成部品１３２は、適応自動車ソフトウェア構成部品１３４に関連付けられた１つまたは複数の可変パラメータ２９７の修正をもたらすために、これらの設定にアクセスし、それらを修正することができる。
【０１１０】
いくつかの実施形態では、適応自動車ソフトウェア構成部品１３４に関連付けられた１つまたは複数の可変パラメータ２９７の修正を可能にするテーブルまたはデータ構造へのアクセスは、何らかの暗号化方法を使用して制限される場合がある。適応自動車ミドルウェア構成部品１３２は、テーブルまたはデータ構造に記憶されたデータまたは設定へのアクセスおよび修正のために必要なデータまたは情報を含む場合がある。いくつかの実施形態では、適応自動車ミドルウェア構成部品１３２は、上記テーブルに対するアクセスおよび変更、すなわち、適応自動車ソフトウェア構成部品１３４に関連付けられた１つまたは複数の可変パラメータ２９７の修正が可能に構成された唯一のエンティティであり得る。
【０１１１】
適応自動車ソフトウェア構成部品１３４に関連付けられた可変パラメータ２９７は、適応自動車ハードウェア構成部品１３０または適応自動車ソフトウェア構成部品１３４についてのマッピング分析またはタイミング分析のために設計時間中に使用される適応自動車ソフトウェア構成部品１３４の任意のパラメータを含む場合がある。いくつかの実施形態では、適応自動車ミドルウェア構成部品１３２は、適応自動車ハードウェア構成部品１３０または適応自動車ソフトウェア構成部品１３４に関連付けられた可変パラメータ２９７のうちの１つまたは複数を使用して、プラグイン構成部品１６０の実現可能性を判断することができる。
【０１１２】
適応自動車ミドルウェア構成部品１３２は、適応自動車ソフトウェア構成部品１３４に関連付けられた１つまたは複数の特性プロパティ２９５を修正し、それによって、適応自動車ソフトウェア構成部品１３４の動作を、自動車要件データ２０５によって記述される要件に従うようにするように構成された、コードおよびルーチンを含む場合がある。
【０１１３】
［適応自動車ミドルウェア構成部品］
適応自動車ミドルウェア構成部品１３２は、修正データ１４０、構成管理モジュール１９８、自動車要件データ２０５、およびセンサデータ２９９のうちの１つまたは複数を含む場合がある。修正データ１４０、構成管理モジュール１９８、および自動車要件データ２０５は図１または図２Ａを参照して上述されたので、これらの説明はここでは繰り返さない。
センサデータ２９９は、自動車１２３の現在の環境(current environment)、または自
動車１２３の構成要素のうちの１つもしくは複数（たとえば、構成要素１３０、２９１、２９３、１３４、２９５、２９７、１８２、１２０、もしくは１９０）の現在の環境を記述することができる。センサデータ２９９は、センサセット１９０（たとえば、図１の構成要素１９０参照）に含まれるセンサのうちの１つまたは複数によって検出または特定された１つまたは複数の測定値を記述することができる。センサデータ２９９は、自動車１２３の１つまたは複数の構成要素の性能を記述することができる。
【０１１４】
いくつかの実施形態では、適応自動車ミドルウェア構成部品１３２は、図５Ａ、図５Ｂ、および図５Ｃを参照して下記に記載される方法５００の１つまたは複数のステップを実行するように構成される場合がある。
【０１１５】
いくつかの実施形態では、適応自動車ミドルウェア構成部品１３２は、自動車要件データ２０５を受信することができる。適応自動車ミドルウェア構成部品１３２は、特性プロパティ２９１、２９５のうちの１つまたは複数を記述するデータを受信することができる。適応自動車ミドルウェア構成部品１３２は、可変パラメータ２９３、２９７のうちの１つまたは複数を記述するデータを受信することができる。適応自動車ミドルウェア構成部品１３２は、センサデータ２９９を受信することができる。適応自動車ミドルウェア構成部品１３２は、自動車要件データ２０５を分析して、自動車１２３の構成部品１３０、１３４が満たされなければならない新しい要件を有するかどうかを判定することができる。
【０１１６】
いくつかの実施形態では、適応自動車ミドルウェア構成部品１３２は、自動車１２３のどの構成部品１３０、１３４が新しい要件によって影響を受けるかを判断することができる。適応自動車ミドルウェア構成部品１３２は、センサデータ２９９を分析して、新しい要件によって影響を受ける自動車１２３の構成部品１３０、１３４の性能または環境を判断することができる。適応自動車ミドルウェア構成部品１３２は、センサデータ２９９および自動車要件データ２０５のうちの１つまたは複数に基づいて、影響を受ける構成部品１３０、１３４の現在の性能または環境によって新しい要件が満たされないと判断する場合がある。適応自動車ミドルウェア構成部品１３２は、修正データ１４０を分析して、実
装された場合、影響を受ける構成部品１３０、１３４が新しい要件に準拠して動作することを可能にするはずの、特性プロパティ２９１、２９５のうちの１つもしくは複数または可変パラメータ２９３、２９７のうちの１つもしくは複数についての新しい構成または修正を識別することができる。適応自動車ミドルウェア構成部品１３２は、影響を受ける構成部品１３０、１３４の１つまたは複数のテーブルまたはデータ構造にアクセスすることができる。
【０１１７】
いくつかの実施形態では、適応自動車ミドルウェア構成部品１３２は、影響を受ける構成部品１３０、１３４についての識別された新しい構成または修正が実装されるように、影響を受ける構成部品１３０、１３４の１つまたは複数のテーブルまたはデータ構造に記憶されたデータまたは設定を修正することができる。
【０１１８】
いくつかの実施形態では、適応自動車ミドルウェア構成部品１３２は、ある時間のあいだ待機した後に、センサデータ２９９を再検査して、実装された修正または新しい構成により、影響を受ける構成部品１３０、１３４が新しい要件に準拠して動作したことを保証することができる。
【０１１９】
［クライアント］
クライアント１７０は、修正データ１４０および構成管理モジュール１９８を含む場合がある。
【０１２０】
いくつかの実施形態では、構成管理モジュール１９８は、図５Ａ、図５Ｂ、および図５Ｃを参照して下記に記載される方法５００の１つまたは複数のステップを実行するように構成される場合がある。
【０１２１】
いくつかの実施形態では、構成管理モジュール１９８は、自動車要件データ２０５を受信することができる。構成管理モジュール１９８は、特性プロパティ２９１、２９５のうちの１つまたは複数を記述するデータを受信することができる。構成管理モジュール１９８は、可変パラメータ２９３、２９７のうちの１つまたは複数を記述するデータを受信することができる。構成管理モジュール１９８は、センサデータ２９９を受信することができる。構成管理モジュール１９８は、自動車要件データ２０５を分析して、自動車１２３の構成部品１３０、１３４が満たされなければならない新しい要件を有するかどうかを判定することができる。
【０１２２】
いくつかの実施形態では、構成管理モジュール１９８は、自動車１２３のどの構成部品１３０、１３４が新しい要件によって影響を受けるかを判断することができる。構成管理モジュール１９８は、センサデータ２９９を分析して、新しい要件によって影響を受ける自動車１２３の構成部品１３０、１３４の性能または環境を判断することができる。構成管理モジュール１９８は、センサデータ２９９および自動車要件データ２０５のうちの１つまたは複数に基づいて、影響を受ける構成部品１３０、１３４の現在の性能または環境によって新しい要件が満たされないと判断する場合がある。構成管理モジュール１９８は、修正データ１４０を分析して、実装された場合、影響を受ける構成部品１３０、１３４が新しい要件に準拠して動作することを可能にするはずの、特性プロパティ２９１、２９５のうちの１つもしくは複数または可変パラメータ２９３、２９７のうちの１つもしくは複数についての新しい構成または修正を識別することができる。構成管理モジュール１９８は、影響を受ける構成部品１３０、１３４の１つまたは複数のテーブルまたはデータ構造にアクセスすることができる。
【０１２３】
いくつかの実施形態では、構成管理モジュール１９８は、影響を受ける構成部品１３０、１３４についての識別された新しい構成または修正が実装されるように、影響を受ける
構成部品１３０、１３４の１つまたは複数のテーブルまたはデータ構造に記憶されたデータまたは設定を修正することができる。
【０１２４】
いくつかの実施形態では、構成管理モジュール１９８は、ある時間のあいだ待機した後に、センサデータ２９９を再検査して、実装された修正または新しい構成により、影響を受ける構成部品１３０、１３４が新しい要件に準拠して動作したことを保証することができる。
【０１２５】
［構成管理モジュール］
次に図３を参照すると、構成管理モジュール１９８の例示的な実施形態３００を示すブロック図が描写される。
【０１２６】
自動車修正システム１９９は、複数の適応自動車ソフトウェア構成部品１３４Ａ、１３４Ｂ．．．１３４Ｎ（本明細書では「適応自動車ソフトウェア構成部品１３４」）を含む。適応自動車ソフトウェア構成部品１３４は、関連する複数の特性プロパティ２９５Ａ、２９５Ｂ．．．２９５Ｎ（本明細書では「特性プロパティ２９５」）を含む。適応自動車ミドルウェア構成部品１３２は、適応自動車ソフトウェア構成部品１３４に関連付けられた特性プロパティ２９５を読み込むことができる。適応自動車ソフトウェア構成部品１３４は、関連する複数の可変パラメータ２９７Ａ、２９７Ｂ．．．２９７Ｎ（本明細書では「可変パラメータ２９７」）を含む。適応自動車ミドルウェア構成部品１３２は、適応自動車ソフトウェア構成部品１３４に関連付けられた可変パラメータ２９７を読み込むことができる。適応自動車ミドルウェア構成部品１３２は、修正データ１４０およびセンサデータ２９９のうちの１つまたは複数に基づいて、特性プロパティ２９５または可変パラメータ２９７のうちの１つまたは複数に対する変更を適応的に特定することができる。
【０１２７】
自動車修正システム１９９は、複数の適応自動車ハードウェア構成部品１３０Ａ、１３０Ｂ．．．１３０Ｎ（本明細書では「適応自動車ハードウェア構成部品１３０」）を含む。適応自動車ハードウェア構成部品１３０は、関連する複数の特性プロパティ２９１Ａ、２９１Ｂ．．．２９１Ｎ（本明細書では「特性プロパティ２９１」）を含む。適応自動車ミドルウェア構成部品１３２は、適応自動車ハードウェア構成部品１３０に関連付けられた特性プロパティ２９１を読み込むことができる。適応自動車ハードウェア構成部品１３０は、関連する複数の可変パラメータ２９３Ａ、２９３Ｂ．．．２９３Ｎ（本明細書では「可変パラメータ２９３」）を含む。適応自動車ミドルウェア構成部品１３２は、適応自動車ハードウェア構成部品１３０に関連付けられた可変パラメータ２９３を読み込むことができる。適応自動車ミドルウェア構成部品１３２は、修正データ１４０およびセンサデータ２９９のうちの１つまたは複数に基づいて、特性プロパティ２９１または可変パラメータ２９３のうちの１つまたは複数に対する変更を適応的に特定することができる。
【０１２８】
＜３．自動車修正システムの別の例＞
次に図４Ａを参照すると、入力４３１を受信し、入力４３１に応答して出力４３３を決定する自動車修正システム１９９の例示的な実施形態を示すブロック図が描写される。いくつかの実施形態により、図４Ａにおいて、適応自動車ソフトウェア構成部品１３４がより詳細に示される。
【０１２９】
入力４３１は、以下の、修正データ１４０、自動車要件データ２０５、センサデータ２９９、構成管理モジュール１９８から受信されたデータ、１つまたは複数の適応自動車ハードウェア構成部品１３０に関連付けられた１つまたは複数の特性プロパティ２９１を記述するデータ、１つまたは複数の適応自動車ハードウェア構成部品１３０に関連付けられた１つまたは複数の可変パラメータ２９３を記述するデータ、１つまたは複数の適応自動車ソフトウェア構成部品１３４に関連付けられた１つまたは複数の特性プロパティ２９５
を記述するデータ、１つまたは複数の適応自動車ソフトウェア構成部品１３４に関連付けられた１つまたは複数の可変パラメータ２９７を記述するデータ、自動車１２３の構成要素に通信可能に結合されたプラグイン構成部品１６０を記述するデータ、自動車１２３の構成要素に通信可能に結合されたプラグイン構成部品１６０が、自動車１２３の構成要素の性能または環境にどのように影響を及ぼすかを記述するデータのうちの１つまたは複数を含む場合がある。
【０１３０】
出力４３３は、入力４３１に部分的に基づいて、特性プロパティ２９１、２９５または可変パラメータ２９３、２９７のうちの１つまたは複数に対する修正または構成を記述する。
【０１３１】
いくつかの実施形態では、自動車修正システム１９９は、適応自動車ハードウェア構成部品１３０、適応自動車ミドルウェア構成部品１３２、適応自動車ソフトウェア構成部品１３４、例示的なアプリケーション非依存サービス(application independent service)
４４１、アプリケーション依存サービス(application dependent service)４４３、およ
びプロセッサ４６６のうちの１つまたは複数を含む場合がある。自動車修正システム１９９のこれらの構成要素は、バス４２０を介して互いに通信可能に結合することができる。
【０１３２】
自動車修正システム１９９の適応自動車ハードウェア構成部品１３０、適応自動車ミドルウェア構成部品１３２、および適応自動車ソフトウェア構成部品１３４は、図１、図２Ａ、図２Ｂ、または図３を参照して上述されたので、それらの説明はここでは繰り返さない。
【０１３３】
プロセッサ４６６は、算術論理ユニット、マイクロプロセッサ、汎用コントローラ、または、計算を実行する他の何らかのプロセッサアレイを含む。いくつかの実装形態では、プロセッサ４６６は、ディスプレイデバイスに電子表示信号を供給することができる。プロセッサ４６６は、自動車修正システム１９９の他の構成要素と通信するためのバス４２０に結合される。プロセッサ４６６は、データ信号を処理し、複合命令セットコンピュータ（ＣＩＳＣ）アーキテクチャ、縮小命令セットコンピュータ（ＲＩＳＣ）アーキテクチャ、または命令セットの組合せを実装するアーキテクチャを含む、様々なコンピューティングアーキテクチャを含む場合がある。プロセッサ４６６は、グラフィカル処理ユニットを含む場合がある。図４Ａは単一のプロセッサ４６６を含むが、複数のプロセッサ４６６が含まれる場合がある。他のプロセッサ、オペレーティングシステム、センサ、ディスプレイ、および物理構成が考えられ得る。
【０１３４】
いくつかの実施形態では、適応自動車ソフトウェア構成部品１３４は、適応自動車ソフトウェア構成部品１３４に関連付けられた耐障害性アドオン４９７、適応自動車ソフトウェア構成部品１３４に関連付けられたセキュリティアドオン４９９、特性プロパティ２９１、可変パラメータ２９３、特性プロパティ２９５、および可変パラメータ２９７のうちの１つまたは複数を含む。
【０１３５】
適応自動車ソフトウェア構成部品１３４の特性プロパティ２９１、可変パラメータ２９３、特性プロパティ２９５、および可変パラメータ２９７は、図１、図２Ａ、図２Ｂ、または図３を参照して上述されたので、それらの説明はここでは繰り返さない。
【０１３６】
いくつかの実施形態では、適応自動車ソフトウェア構成部品１３４に関連付けられた耐障害性アドオン４９７は、フロー検査(flow checking)モジュール４０７、署名検査(signature checking)モジュール４０９、および他の耐障害性モジュール(other fault tolerance module)４１１のうちの１つまたは複数を含む場合がある。
【０１３７】
フロー検査モジュール４０７は、適応自動車ソフトウェア構成部品１３４のための制御フロー検査を実現するように構成された、コードおよびルーチンを含む。フロー検査モジュール４０７は、適応自動車ソフトウェア構成部品１３４に関連付けられた制御フローを記述する制御フローデータを生成することができる。適応自動車ミドルウェア構成部品１３２および構成管理モジュール１９８のうちの１つまたは複数は、制御フローデータを使用してそれらの機能を実現することができる。たとえば、制御フローデータは１種のセンサデータ２９９と捉えることができる。
【０１３８】
アプリケーション依存サービスを実行する適応自動車ソフトウェア構成部品１３４の場合、制御フローデータは制御フロー違反（制御フローが期待されるようにあるいは要件で定義されるように挙動しないこと）を記述することができる。次いで、耐障害性アドオン４９７は、適応自動車ミドルウェア構成部品１３２または構成管理モジュール１９８のうちの１つまたは複数に制御フローデータを供給することができる。次いで、適応自動車ミドルウェア構成部品１３２または構成管理モジュール１９８は、制御フローデータに部分的に基づいて、出力４３３を決定することができる。
【０１３９】
署名検査モジュール４０９は、適応自動車ソフトウェア構成部品１３４によって実行される命令用の署名を検査するように構成されたコードを含む。自動車修正システム１９９は、１つまたは複数の有効な署名を記憶するメモリを含む。署名検査モジュール４０９が無効な署名を識別した場合、署名検査モジュール４０９は、「署名エラーデータ(signature error data)」と呼ばれる１種のセンサデータ２９９を生成することができる。署名エラーデータは、無効な署名のインスタンスを記述することができる。署名検査モジュール４０９は、適応自動車ミドルウェア構成部品１３２または構成管理モジュール１９８のうちの１つまたは複数に署名エラーデータを送信することができる。
【０１４０】
他の耐障害性モジュール４１１は、適応自動車ソフトウェア構成部品１３４のための他の耐障害性サービスを提供するように構成された、コードおよびルーチンを含む。たとえば、他の耐障害性モジュール４１１は、自動車修正システム１９９または自動車１２３の１つもしくは複数の他の構成要素に応答を停止させる可能性がある、適応自動車ソフトウェア構成部品１３４または適応自動車ハードウェア構成部品１３０に関連付けられた固有の障害を監視するウォッチドッグサービス(watch dog service)を含む場合がある。ウォ
ッチドッグサービスは、「ウォッチドッグデータ」と呼ばれる１種のセンサデータ２９９を生成することができる。ウォッチドッグデータは、適応自動車ミドルウェア構成部品１３２または構成管理モジュール１９８によって定義される、ウォッチドッグサービスによって監視されている固有の障害のインスタンスを記述することができる。ウォッチドッグサービスは、適応自動車ミドルウェア構成部品１３２または構成管理モジュール１９８のうちの１つまたは複数にウォッチドッグデータを送信することができる。
【０１４１】
その動作がアプリケーション非依存サービスを含む適応自動車ソフトウェア構成部品１３４の場合、ウォッチドッグデータは、ウォッチドッグサービスによって監視されている固有の障害のインスタンスを記述することができる。ウォッチドッグデータは、適応自動車ミドルウェア構成部品１３２または構成管理モジュール１９８のうちの１つまたは複数に送信することができる。次いで、適応自動車ミドルウェア構成部品１３２または構成管理モジュール１９８は、ウォッチドッグデータに部分的に基づいて、出力４３３を決定することができる。
【０１４２】
いくつかの実施形態では、適応自動車ソフトウェア構成部品１３４に関連付けられたセキュリティアドオン４９９は、暗号化モジュール４１３、認証モジュール４１５、および他のセキュリティモジュール４１７のうちの１つまたは複数を含む。
【０１４３】
暗号化モジュール４１３は、適応自動車ソフトウェア構成部品１３４の動作または適応自動車ソフトウェア構成部品１３４へのアクセスを暗号化するように構成されたコードおよびルーチンを含む。暗号化モジュール４１３は、自動車１２３の他の構成要素に暗号化サービスを提供することができる。
【０１４４】
暗号化モジュール４１３は、暗号化を解読またはバイパスしようと試みるエンティティのインスタンスを検出することができる。これらのインスタンスは、「暗号化データ(encryption data)」と呼ばれる１種のセンサデータ２９９によって記録することができる。
暗号化データは、エンティティが暗号化を解読またはバイパスしようと試みたインスタンスを記述することができる。暗号化モジュール４１３は、適応自動車ミドルウェア構成部品１３２または構成管理モジュール１９８のうちの１つまたは複数に暗号化データを送信することができる。
【０１４５】
いくつかの実施形態では、暗号化モジュール４１３は、セキュリティサービス４３９によって提供される標準暗号化アルゴリズムを実行することによって、暗号化を実現することができる。しかしながら、セキュリティイベントの検出は、内蔵のコードおよび前のコードを同時に必要とする場合があり、それは、標準暗号化アルゴリズムを使用するようにセキュリティサービス４３９を呼び出すことによって完了されない場合がある。したがって、いくつかの実施形態では、暗号化モジュール４１３は、その動作が１つまたは複数のアプリケーション非依存サービスを含む適応自動車ソフトウェア構成部品１３４用のセキュリティサービス４３９を呼び出すことができるが、内蔵の暗号化拡張機能は、その動作が１つまたは複数のアプリケーション依存サービスを含む適応自動車ソフトウェア構成部品１３４用のセキュリティサービス４３９によって利用することができる。
【０１４６】
認証モジュール４１５は、適応自動車ソフトウェア構成部品１３４または自動車１２３の他の構成要素のための認証サービスを提供するように構成された、コードおよびルーチンを含む場合がある。
【０１４７】
認証モジュール４１５は、認証を突破またはバイパスしようと試みるエンティティのインスタンスを検出することができる。これらのインスタンスは、「認証エラーデータ（authentication error data）」と呼ばれる１種のセンサデータ２９９によって記録するこ
とができる。これらのインスタンスは、ブルートフォースでパスワードを推測する試みを含む場合がある。認証エラーデータは、エンティティが認証を突破またはバイパスしようと試みたインスタンスを記述することができる。認証モジュール４１５は、適応自動車ミドルウェア構成部品１３２または構成管理モジュール１９８のうちの１つまたは複数に認証エラーデータを送信することができる。
【０１４８】
他のセキュリティモジュール４１７は、適応自動車ソフトウェア構成部品１３４または自動車１２３の他の構成要素のための他のセキュリティサービスを提供するように構成された、コードおよびルーチンを含む場合がある。たとえば、他のセキュリティモジュール４１７は、センサデータ２９９を検査して、測定値が自然の規則に従っているかどうかを判定することができる。センサデータ２９９に含まれる測定値が自然の規則に従っていないインスタンスは、「センサエラーデータ(sensor error data)」と呼ばれる１種のセン
サデータ２９９によって記録することができる。センサエラーデータは、センサデータ２９９に含まれる測定値が自然の規則に従っているように見えないインスタンスを記述することができる。他のセキュリティモジュール４１７は、適応自動車ミドルウェア構成部品１３２または構成管理モジュール１９８のうちの１つまたは複数にセンサエラーデータを送信することができる。
【０１４９】
例示的なアプリケーション非依存サービス４４１は、耐障害性サービス４３７およびセ
キュリティサービス４３９のうちの１つまたは複数を含む。
【０１５０】
耐障害性サービス４３７は、自動車１２３に含まれるソフトウェアの実行またはハードウェアの動作に関連する障害またはエラー（すなわち、「障害イベント」）を識別し、適応自動車ミドルウェア構成部品１３２または構成管理モジュール１９８のうちの１つまたは複数に、障害イベント（および障害イベントを矯正するように構成されたオプションの推奨出力４３３）を記述するセンサデータ２９９を供給する際に、適応自動車ソフトウェア構成部品１３４に関連付けられた耐障害性アドオン４９７を支援するように構成された、コードおよびルーチンを含む場合がある。
【０１５１】
いくつかの実施形態では、構成管理モジュール１９８は、実行時にその機能を実現することができ、修正データ１４０自体は、（たとえば、工場において、またはネットワーク１０５を介する自動車１２３への夜間ワイヤレス更新を介して）設計時に決定されている。
【０１５２】
セキュリティサービス４３９は、セキュリティイベントを識別し、適応自動車ミドルウェア構成部品１３２または構成管理モジュール１９８のうちの１つまたは複数に、セキュリティイベント（およびセキュリティイベントを矯正するように構成されたオプションの推奨出力４３３）を記述するセンサデータ２９９を供給する際に、適応自動車ソフトウェア構成部品１３４に関連付けられたセキュリティアドオン４９９を支援するように構成された、コードおよびルーチンを含む場合がある。
【０１５３】
いくつかの実施形態では、セキュリティイベントは、自動車修正システム１９９のセキュリティルールに違反する任意のイベントを含む場合がある。セキュリティルールは、少なくとも部分的に、可変パラメータ２９３、２９７によって記述される場合がある。セキュリティルールは、セキュリティサービス４３９によってアクセス可能なメモリに含まれるセキュリティデータとして記憶される場合がある。
【０１５４】
いくつかの実施形態では、セキュリティイベントは、自動車１２３に含まれるハードウェアの動作もしくはソフトウェアの実行がセキュリティルールの違反をもたらす任意のイベント、またはセキュリティサービス４３９によりセキュリティイベントであると決定され得る動作もしくは挙動のパターンを含む場合がある。
【０１５５】
いくつかの実施形態では、セキュリティイベントを検出すると、自動車修正システム１９９は、脅威および推奨動作（たとえば、自動車１２３の運転を停止する）を記述する、自動車１２３のユーザへの警告を含む出力４３３を供給することができる。場合によっては、出力４３３は、自動車修正システム１９９が自動車１２３を安全な場所まで自動的に運転し、セキュリティイベントが矯正されるまでさらなる動作をしないように自動車１２３を停止することを含む場合がある。自動車修正システム１９９は、グラフィカルユーザインターフェース、オーディオ、または他の何らかのフィードバックをユーザに提供して、セキュリティイベントおよび出力４３３をユーザに知らせることができる。
【０１５６】
アプリケーション依存サービス４４３は、特定の適応自動車ハードウェア構成部品１３０または適応自動車ソフトウェア構成部品１３４に固有の１つまたは複数のサービスを、自動車修正システム１９９に提供するように構成された、コードおよびルーチンを含む場合がある。
【０１５７】
次に図４Ｂを参照すると、入力４３１を受信し、入力４３１に応答して出力４３３を決定する適応自動車ソフトウェア構成部品１３４の例示的な実施形態を示すブロック図が描写される。これらの構成要素は、バス４２０を介して互いに通信可能に結合することがで
きる。いくつかの実施形態により、図４Ｂにおいて、適応自動車ソフトウェア構成部品１３４がより詳細に示される。
【０１５８】
描写された実施形態は、適応自動車ミドルウェア構成部品１３２、構成管理モジュール１９８、入力４３１、出力４３３、冗長出力４３５、メモリ４２９、修正データ１４０、および冗長適応自動車ソフトウェア構成部品４８４のうちの１つまたは複数を含む場合がある。
【０１５９】
図４Ｂにおいて描写された実施形態の構成要素のうち構成管理モジュール１９８、入力４３１、出力４３３、および修正データ１４０は、図１、図２Ａ、図２Ｂ、図３、または図４Ａを参照して上述されたので、それらの説明はここでは繰り返さない。
【０１６０】
メモリ４２９は、非一時的コンピュータ可読記憶媒体であり得る。メモリ４２９は、プロセッサ（たとえば、構成要素２２５または４６６）によって実行され得る命令またはデータを記憶する。命令またはデータは、本明細書に記載される技法を実行するためのコードを含む場合がある。メモリ４２９は、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）デバイス、スタティックランダムアクセスメモリ（ＳＲＡＭ）デバイス、フラッシュメモリ、または他の何らかのメモリデバイスであり得る。いくつかの実装形態では、メモリ４２９はまた、不揮発性メモリまたは同様の永続的なストレージデバイス、および、ハードディスクドライブ、フロッピーディスクドライブ、ＣＤ−ＲＯＭデバイス、ＤＶＤ−ＲＯＭデバイス、ＤＶＤ−ＲＡＭデバイス、ＤＶＤ−ＲＷデバイス、フラッシュメモリデバイス、またはより永続的に情報を記憶するための他の何らかのマスストレージデバイスを含む媒体を含む。メモリ４２９は、適応自動車ソフトウェア構成部品１３４によりその機能を実現するために必要とされるデータのいくつかまたはすべてを記憶することができる。
【０１６１】
いくつかの実施形態では、耐障害性メモリ４２７Ａ、セキュリティメモリ４２７Ｂ、チェックポイント４２１、および例示的なメモリ部分４３６のうちの１つまたは複数は、メモリ４２９の副構成部品であり得る。
【０１６２】
いくつかの実施形態では、適応自動車ソフトウェア構成部品１３４は、制御ユニット４９８、冗長制御ユニット４８９、チェックポイントモジュール４２１、および１つまたは複数のメモリ部分４３６のうちの１つまたは複数を含む場合がある。
【０１６３】
いくつかの実施形態では、各適応自動車ソフトウェア構成部品１３４は、チェックポイント４２１を含む場合がある。チェックポイント４２１は、「状態データ(state data)」と呼ばれる１種のセンサデータ２９９を記憶するメモリ４２９の一部分を含む場合がある。状態データは、適応自動車ソフトウェア構成部品１３４の実行より前の、自動車１２３の１つまたは複数の構成要素の状態を記述することができる。たとえば、状態データは、適応自動車ソフトウェア構成部品１３４の実行より前の、プロセッサベースのデバイスまたはセンサの状態を記述する。チェックポイント４２１はまた、制御ユニット４９８、冗長制御ユニット４８９、または冗長適応自動車ソフトウェア構成部品４８４による処理より前に、入力４３１を記憶することができる。
【０１６４】
チェックポイントモジュール４２１は、適応自動車ミドルウェア構成部品１３２、構成管理モジュール１９８、制御ユニット４９８、冗長制御ユニット４８９、または冗長適応自動車ソフトウェア構成部品４８４のうちの１つまたは複数に、状態データを送信することができる。これらの構成要素のうちの１つまたは複数は、エラー（たとえば、障害イベントまたはセキュリティイベント）を検出し、状態データによって記述される前の状態に適応自動車ソフトウェア構成部品１３４をロールバックさせることができる。次いで、図
４Ａを参照して上述されたプロセッサ４６６は、適応自動車ソフトウェア構成部品１３４を再実行して、エラーが再発するかどうかを検査し見ることができる。
【０１６５】
いくつかの実施形態では、例示的なメモリ部分４３６は、適応自動車ソフトウェア構成部品１３４に関連付けられた耐障害性アドオン４９７、適応自動車ソフトウェア構成部品１３４に関連付けられたセキュリティアドオン４９９、タイミングモニタ４０４、適応自動車ハードウェア構成部品１３０に関連付けられた１つまたは複数の特性プロパティ２９１、適応自動車ソフトウェア構成部品１３４に関連付けられた１つまたは複数の特性プロパティ２９５、適応自動車ハードウェア構成部品１３０に関連付けられた１つまたは複数の可変パラメータ２９３、および適応自動車ソフトウェア構成部品１３４に関連付けられた１つまたは複数の可変パラメータ２９７のうちの１つまたは複数を記憶する、メモリ４２９の一部分を含む場合がある。
【０１６６】
明確にするために、適応自動車ソフトウェア構成部品は、両方とも適応自動車ソフトウェア構成部品１３４に関連付けられた耐障害性アドオン４９７およびセキュリティアドオン４９９を含む場合があるが、適応自動車ハードウェア構成部品１３０は、両方とも適応自動車ハードウェア構成部品１３０に関連付けられた異なるセキュリティアドオン４７７および耐障害性アドオン４７８を含む場合があることに留意されたい。適応自動車ハードウェア構成部品１３０に関連付けられたセキュリティアドオン４７７および適応自動車ハードウェア構成部品１３０に関連付けられた耐障害性アドオン４７８は、図４Ｃを参照して下記でより詳細に記載される。
【０１６７】
例示的なメモリ部分４３６は、適応自動車ソフトウェア構成部品１３４に関連付けられた耐障害性アドオン４９７、適応自動車ソフトウェア構成部品１３４に関連付けられたセキュリティアドオン４９９、適応自動車ハードウェア構成部品１３０に関連付けられた１つまたは複数の特性プロパティ２９１、適応自動車ソフトウェア構成部品１３４に関連付けられた１つまたは複数の特性プロパティ２９５、適応自動車ハードウェア構成部品１３０に関連付けられた１つまたは複数の可変パラメータ２９３、および適応自動車ソフトウェア構成部品１３４に関連付けられた１つまたは複数の可変パラメータ２９７を含む。これらについては、図１、図２Ａ、図２Ｂ、図３、または図４Ａを参照して上述されたので、それらの説明はここでは繰り返さない。
【０１６８】
タイミングモニタ４０４は、プロセッサによって実行されることに応答して、以下のステップのうちの１つまたは複数をプロセッサ（たとえば、構成要素２２５および４６６）に実行させる、コードおよびルーチンを含む。
・チェックポイント４２１に記憶された状態データにアクセスすること
・エラーを監視すること
・エラーが識別された場合、状態データの直近のバージョンによって記述される前の状態に適応自動車ソフトウェア構成部品１３４をロールバックさせること
・適応自動車ソフトウェア構成部品１３４を再実行して、エラーが再発するかどうかを判定すること
【０１６９】
いくつかの実施形態では、制御ユニット４９８は、耐障害性メモリ４２７Ａ、セキュリティメモリ４２７Ｂ、耐障害性コントローラ４０１、セキュリティコントローラ４０３、および通信モジュール４０５のうちの１つまたは複数を含む。
【０１７０】
通信モジュール４０５は、制御ユニット４９８と自動車修正システム１９９の他の構成部品との間の通信を処理するためのルーチンを含むソフトウェアであり得る。いくつかの実施形態では、通信モジュール４０５は、自動車修正システム１９９と図１を参照して上述された動作環境１００の他の構成要素との間の通信を処理することができる。
【０１７１】
いくつかの実施形態では、通信モジュール４０５は、図１を参照して上述された動作環境１００の他の構成要素間の通信を処理するための下記に記載される機能を提供するために、プロセッサ（たとえば、プロセッサ２２５または４６６）によって実行可能な１組の命令であり得る。いくつかの実装形態では、通信モジュール４０５は、メモリ（たとえば、図２Ａを参照して上述されたメモリ２２７Ｂ）に記憶することができ、プロセッサによってアクセス可能かつ実行可能であり得る。通信モジュール４０５は、バス４２０への通信結合を介して、プロセッサおよび他の構成部品との協働および通信に適合することができる。
【０１７２】
通信モジュール４０５は、動作環境１００の１つまたは複数の構成要素との間で、通信ユニット（たとえば、図２Ａを参照して上述された構成要素２４５）を介して、データを送受信する。
【０１７３】
いくつかの実施形態では、通信モジュール４０５は、動作環境１００の１つまたは複数の構成部品からデータ（たとえば、入力４３１）を受信し、メモリ２２７Ａ、２２７Ｂ、４２７Ａ、４２７Ｂのうちの１つまたは複数にデータを記憶する。通信モジュール４０５はまた、動作環境１００の１つまたは複数の構成部品からデータを取り出すことができる。
【０１７４】
耐障害性コントローラ４０１は、耐障害性メモリ４２７Ａのモジュールの動作を管理するように構成された、コードおよびルーチンを含む場合がある。耐障害性コントローラ４０１自体は、耐障害性アドオン４９７または耐障害性アドオン４９７の構成要素によって管理することができる。
【０１７５】
いくつかの実施形態では、耐障害性コントローラ４０１は、バス４２０に通信可能に結合されたプロセッサベースのコンピューティングデバイスであり得る。これらの実施形態では、耐障害性コントローラ４０１は、耐障害性アドオン４９７を記憶するメモリを含む場合があり、その関連するプロセッサによる耐障害性アドオン４９７の実行から受信される命令に基づいて動作する。
【０１７６】
耐障害性コントローラ４０１は、制御フロー検査、命令署名検査、およびウォッチドッグサービスを含む、１つまたは複数の耐障害性サービスの動作を制御することができる。
【０１７７】
セキュリティコントローラ４０３は、セキュリティメモリ４２７Ｂのモジュールの動作を管理するように構成された、コードおよびルーチンを含む場合がある。セキュリティコントローラ４０３自体は、セキュリティアドオン４９９またはセキュリティアドオン４９９の構成要素によって管理することができる。
【０１７８】
いくつかの実施形態では、セキュリティコントローラ４０３は、バス４２０に通信可能に結合されたプロセッサベースのコンピューティングデバイスであり得る。これらの実施形態では、セキュリティコントローラ４０３は、セキュリティアドオン４９９を記憶するメモリを含む場合があり、その関連するプロセッサによるセキュリティアドオン４９９の実行から受信される命令に基づいて動作する。
【０１７９】
セキュリティコントローラ４０３は、暗号化サービスおよび認証サービスを含む、１つまたは複数のセキュリティサービスの動作を制御することができる。
【０１８０】
メモリ４２７Ａ、４２７Ｂは、本明細書では、個別にあるいは総称してメモリ４２７と呼ばれる場合がある。
【０１８１】
耐障害性メモリ４２７Ａ（たとえば、メモリ４２７またはメモリ４２７Ａ）は、非一時的コンピュータ可読記憶媒体であり得る。メモリ４２７Ａは、プロセッサ（たとえば、構成要素２２５または４６６）によって実行され得る命令またはデータを記憶する。命令またはデータは、本明細書に記載される技法を実行するためのコードを含む場合がある。メモリ４２７Ａは、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）デバイス、スタティックランダムアクセスメモリ（ＳＲＡＭ）デバイス、フラッシュメモリ、または他の何らかのメモリデバイスであり得る。いくつかの実装形態では、メモリ４２７Ａはまた、不揮発性メモリまたは同様の永続的なストレージデバイス、および、ハードディスクドライブ、フロッピーディスクドライブ、ＣＤ−ＲＯＭデバイス、ＤＶＤ−ＲＯＭデバイス、ＤＶＤ−ＲＡＭデバイス、ＤＶＤ−ＲＷデバイス、フラッシュメモリデバイス、またはより永続的に情報を記憶するための他の何らかのマスストレージデバイスを含む媒体を含む。メモリ４２７Ａは、耐障害性コントローラ４０１、適応自動車ソフトウェア構成部品１３４に関連付けられた耐障害性アドオン４９７、構成管理モジュール１９８、および自動車修正システム１９９のうちの１つまたは複数によって必要とされるデータのいくつかまたはすべてを記憶することができる。
【０１８２】
いくつかの実施形態では、メモリ４２７Ａは、以下の構成要素：フロー検査モジュール４０７、署名検査モジュール４０９、および他の耐障害性モジュール４１１のうちの１つまたは複数を含む場合がある。メモリ４２７Ａのこれらの構成要素は図４Ａを参照して上述されたので、これらの説明はここでは繰り返さない。
【０１８３】
セキュリティメモリ４２７Ｂは、非一時的コンピュータ可読記憶媒体であり得る。メモリ４２７Ｂは、プロセッサ（たとえば、構成要素２２５または４６６）によって実行され得る命令またはデータを記憶する。命令またはデータは、本明細書に記載される技法を実行するためのコードを含む場合がある。メモリ４２７Ｂは、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）デバイス、スタティックランダムアクセスメモリ（ＳＲＡＭ）デバイス、フラッシュメモリ、または他の何らかのメモリデバイスであり得る。いくつかの実装形態では、メモリ４２７Ｂはまた、不揮発性メモリまたは同様の永続的なストレージデバイス、および、ハードディスクドライブ、フロッピーディスクドライブ、ＣＤ−ＲＯＭデバイス、ＤＶＤ−ＲＯＭデバイス、ＤＶＤ−ＲＡＭデバイス、ＤＶＤ−ＲＷデバイス、フラッシュメモリデバイス、またはより永続的に情報を記憶するための他の何らかのマスストレージデバイスを含む媒体を含む。メモリ４２７Ｂは、セキュリティコントローラ４０３、セキュリティアドオン４９９、構成管理モジュール１９８、および自動車修正システム１９９のうちの１つまたは複数によって必要とされるデータのいくつかまたはすべてを記憶することができる。
【０１８４】
いくつかの実施形態では、メモリ４２７Ｂは、以下の構成要素：暗号化モジュール４１３、認証モジュール４１５、および他のセキュリティモジュール４１７のうちの１つまたは複数を含む場合がある。メモリ４２７Ｂのこれらの構成要素は図４Ａを参照して上述されたので、これらの説明はここでは繰り返さない。
【０１８５】
冗長制御ユニット４８９は、制御ユニット４９８と同じまたは同様の構成要素を含む場合がある。これらの構成要素は、制御ユニット４９８と同じまたは同様の方式で動作することができる。冗長制御ユニット４８９は、有利なことに、適応自動車ソフトウェア構成部品１３４のためのエラー検出を提供することができる。たとえば、制御ユニット４９８は、入力４３１に少なくとも部分的に基づいて、出力４３３を供給することができる。冗長制御ユニット４８９は、入力４３１を処理し、入力４３１に少なくとも部分的に基づいて、冗長出力４３５を供給することができる。制御ユニット４９８は、制御ユニット４９８によって供給された出力４３３を分析し、それを冗長制御ユニット４８９によって供給
された冗長出力４３５と比較することができる。出力４３３が冗長出力４３５と一致しない場合、制御ユニット４９８は、ソフトエラーの存在を特定し、次いで修復プロセスを開始するように構成された、コードおよびルーチンを含む場合がある。
【０１８６】
いくつかの実施形態では、修復プロセスは、ソフトエラーに関連するか、もしくは関連する可能性がある自動車１２３の１つまたは複数の構成要素を再起動すること、ソフトエラーの存在についての警告を自動車１２３のユーザに与えること、ソフトエラーを訂正するために推薦処置を自動車１２３のユーザに提供すること、または、自動車１２３の現在の状況を想定して自動車１２３のユーザにとって安全である方式で自動車１２３に動作を停止させることを含む場合がある。修復プロセスは、自動車１２３が制御ユニット４９８によって検出された障害イベントまたはセキュリティイベントを訂正することをサービスされ得るように、自動車１２３をクライアント１７０に接続することをさらに含む場合がある。
【０１８７】
いくつかの実施形態では、修復プロセスは、障害イベントもしくはセキュリティイベントを解決し、または場合によっては、自動車１２３のユーザの安全を保証するように構成された、任意のステップまたはステップの組合せを含む場合がある。
【０１８８】
冗長適応自動車ソフトウェア構成部品４８４は、適応自動車ソフトウェア構成部品１３４と同じまたは同様の構成要素を含む場合がある。これらの構成要素は、適応自動車ソフトウェア構成部品１３４と同じまたは同様の方式で動作することができる。冗長適応自動車ソフトウェア構成部品４８４は、有利なことに、適応自動車ソフトウェア構成部品１３４のためのエラー検出を提供することができる。たとえば、適応自動車ソフトウェア構成部品１３４は、入力４３１に少なくとも部分的に基づいて、出力４３３を供給することができる。冗長適応自動車ソフトウェア構成部品４８４は、入力４３１を処理し、入力４３１に少なくとも部分的に基づいて、冗長出力４３５を供給することができる。制御ユニット４９８は、適応自動車ソフトウェア構成部品１３４によって供給された出力４３３を分析し、それを冗長適応自動車ソフトウェア構成部品４８４によって供給された冗長出力４３５と比較することができる。出力４３３が冗長出力４３５と一致しない場合、制御ユニット４９８は、修復プロセスを開始するように構成された、コードおよびルーチンを含む場合がある。
【０１８９】
適応自動車ミドルウェア構成部品１３２または構成管理モジュール１９８のうちの１つまたは複数は、適応自動車ソフトウェア構成部品１３４に入力４３１を供給することができる。適応自動車ソフトウェア構成部品１３４は、入力４３１に部分的に基づいて、出力４３３を決定することができる。入力４３１は、適応自動車ミドルウェア構成部品１３２または構成管理モジュール１９８のうちの１つまたは複数からの命令、コマンド、呼出し、または他のデータを含む場合がある。入力４３１は、出力４３３を決定するために、本明細書において記載されたように適応自動車ソフトウェア構成部品１３４によって処理することができる。
【０１９０】
次に図４Ｃを参照すると、適応自動車ハードウェア構成部品１３０の例示的な実施形態を示すブロック図が描写される。
【０１９１】
いくつかの実施形態では、適応自動車ハードウェア構成部品１３０はプロセッサ４９６、適応自動車ハードウェア構成部品１３０に関連付けられたセキュリティアドオン４７７、適応自動車ハードウェア構成部品１３０に関連付けられた耐障害性アドオン４７８、メモリ４７１、ＦＰＧＡ４７３、通信モジュール４４５、適応自動車ハードウェア構成部品１３０に関連付けられた１つまたは複数の特性プロパティ２９１、および適応自動車ハードウェア構成部品１３０に関連付けられた１つまたは複数の可変パラメータ２９３のうち
の１つまたは複数を含む場合がある。
【０１９２】
適応自動車ハードウェア構成部品１３０に関連付けられた１つまたは複数の特性プロパティ２９１、および適応自動車ハードウェア構成部品１３０に関連付けられた１つまたは複数の可変パラメータ２９３は、図２Ａ、図２Ｂ、図３、図４Ａ、または図４Ｂを参照して上述されたので、これらの説明はここでは繰り返さない。
【０１９３】
適応自動車ハードウェア構成部品１３０に関連付けられた１つまたは複数の特性プロパティ２９１、および適応自動車ハードウェア構成部品１３０に関連付けられた１つまたは複数の可変パラメータ２９３は、適応自動車ハードウェア構成部品１３０が、自動車要件データ２０５によって記述される自動車１２３に対する１つまたは複数の要件に準拠して動作するように、適応自動車ミドルウェア構成部品１３２または構成管理モジュール１９８のうちの１つまたは複数によって読み取られ、再構成される場合がある。
【０１９４】
プロセッサ４９６は、適応自動車ソフトウェア構成部品１３４のうちの１つまたは複数を実行することができる。プロセッサ４９６は、算術論理ユニット、マイクロプロセッサ、汎用コントローラ、または、計算を実行する他の何らかのプロセッサアレイを含む。いくつかの実装形態では、プロセッサ４９６は、ディスプレイデバイスに電子表示信号を供給することができる。プロセッサ４９６は、自動車修正システム１９９の他の構成要素と通信するためのバス４２０に結合される。プロセッサ４９６は、データ信号を処理し、複合命令セットコンピュータ（ＣＩＳＣ）アーキテクチャ、縮小命令セットコンピュータ（ＲＩＳＣ）アーキテクチャ、または命令セットの組合せを実装するアーキテクチャを含む、様々なコンピューティングアーキテクチャを含む場合がある。プロセッサ４９６は、グラフィカル処理ユニットを含む場合がある。図４Ｃは単一のプロセッサ４９６を含むが、複数のプロセッサ４９６が含まれる場合がある。他のプロセッサ、オペレーティングシステム、センサ、ディスプレイ、および物理構成が考えられ得る。
【０１９５】
メモリ４７１は、非一時的コンピュータ可読記憶媒体であり得る。メモリ４７１は、プロセッサ４９６によって実行され得る命令またはデータを記憶する。命令またはデータは、本明細書に記載される技法を実行するためのコードを含む場合がある。メモリ４７１は、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）デバイス、スタティックランダムアクセスメモリ（ＳＲＡＭ）デバイス、フラッシュメモリ、または他の何らかのメモリデバイスであり得る。いくつかの実装形態では、メモリ４７１はまた、不揮発性メモリまたは同様の永続的なストレージデバイス、および、ハードディスクドライブ、フロッピーディスクドライブ、ＣＤ−ＲＯＭデバイス、ＤＶＤ−ＲＯＭデバイス、ＤＶＤ−ＲＡＭデバイス、ＤＶＤ−ＲＷデバイス、フラッシュメモリデバイス、またはより永続的に情報を記憶するための他の何らかのマスストレージデバイスを含む媒体を含む。メモリ４７１は、適応自動車ハードウェア構成部品１３０、構成管理モジュール１９８、または自動車修正システム１９９により、それらの機能を実行するために必要とされるデータのいくつかまたはすべてを記憶することができる。
【０１９６】
いくつかの実施形態では、適応自動車ハードウェア構成部品１３０に関連付けられた１つまたは複数の特性プロパティ２９１、適応自動車ハードウェア構成部品１３０に関連付けられた１つまたは複数の可変パラメータ２９３、セキュリティアドオン４７７の任意のソフトウェア態様、耐障害性アドオン４７８の任意のソフトウェア態様、および通信モジュール４４５のうちの１つまたは複数は、メモリ４７１に記憶することができる。
【０１９７】
通信モジュール４４５は、適応自動車ハードウェア構成部品１３０と自動車修正システム１９９の他の構成部品との間の通信を処理するためのルーチンを含むソフトウェアであり得る。いくつかの実施形態では、通信モジュール４４５は、適応自動車ハードウェア構
成部品１３０と図１を参照して上述された動作環境１００の他の構成要素との間の通信を処理することができる。
【０１９８】
いくつかの実施形態では、通信モジュール４４５は、図１を参照して上述された動作環境１００の他の構成要素間の通信を処理するための下記に記載される機能を提供するために、プロセッサ４９６によって実行可能な１組の命令であり得る。いくつかの実装形態では、通信モジュール４４５は、メモリ４７１に記憶することができ、プロセッサ４９６によってアクセス可能かつ実行可能であり得る。通信モジュール４４５は、バス４２０への通信結合を介して、プロセッサ４９６および他の構成部品との協働および通信に適合することができる。
【０１９９】
通信モジュール４４５は、動作環境１００の１つまたは複数の構成要素との間で、通信ユニット（たとえば、図２Ａを参照して上述された構成要素２４５）を介して、データを送受信する。
【０２００】
いくつかの実施形態では、通信モジュール４４５は、適応自動車ハードウェア構成部品１３０に関連付けられた１つまたは複数の特性プロパティ２９１、および適応自動車ハードウェア構成部品１３０に関連付けられた１つまたは複数の可変パラメータ２９３を、自動車修正システム１９９の他の構成要素に送信する。通信モジュール４４５はまた、動作環境１００の１つまたは複数の構成部品からデータを取り出すことができる。
【０２０１】
セキュリティアドオン４７７は、ハードウェア、ソフトウェア、またはハードウェアとソフトウェアの組合せを含む場合がある。セキュリティアドオン４７７は、適応自動車ミドルウェア構成部品１３２または構成管理モジュール１９８のうちの１つまたは複数と通信するように構成される場合がある。セキュリティアドオン４７７は、適応自動車ミドルウェア構成部品１３２または構成管理モジュール１９８のうちの１つまたは複数から命令を受信するように構成される場合がある。セキュリティアドオン４７７は、適応自動車ミドルウェア構成部品１３２または構成管理モジュール１９８のうちの１つまたは複数から受信された命令を実行するように構成される場合がある。命令は、セキュリティイベントの識別または任意のエラーに対する修復プロセスに関係する場合がある。
【０２０２】
セキュリティアドオン４７７は、固有のセキュリティリスクに対して適応自動車ハードウェア構成部品１３０のセキュリティを高めるように構成された、専用のプロセッサベースのハードウェア構成部品であり得る。セキュリティアドオン４７７は、セキュリティイベントを識別し、セキュリティイベントに応答することができる。たとえば、セキュリティアドオン４７７は、適応自動車ハードウェア構成部品１３０を含む、自動車修正システム１９９の任意の構成要素に対するサイドチャネル攻撃を識別し、妨害するように構成された、プロセッサベースのハードウェアを含む場合がある。
【０２０３】
耐障害性アドオン４７８は、ハードウェア、ソフトウェア、またはハードウェアとソフトウェアの組合せを含む場合がある。耐障害性アドオン４７８は、耐障害性イベントを識別し、耐障害性イベントに応答することができる。耐障害性アドオン４７８は、適応自動車ミドルウェア構成部品１３２または構成管理モジュール１９８のうちの１つまたは複数と通信するように構成される場合がある。耐障害性アドオン４７８は、適応自動車ミドルウェア構成部品１３２または構成管理モジュール１９８のうちの１つまたは複数から命令を受信するように構成される場合がある。耐障害性アドオン４７８は、適応自動車ミドルウェア構成部品１３２または構成管理モジュール１９８のうちの１つまたは複数から受信された命令を実行するように構成される場合がある。命令は、障害イベントの識別または任意のエラーに対する修復プロセスに関係する場合がある。
【０２０４】
耐障害性アドオン４７８は、固有の障害リスクに対して適応自動車ハードウェア構成部品１３０の耐障害性を高めるように構成された、専用のプロセッサベースのハードウェア構成部品であり得る。たとえば、耐障害性アドオン４７８は、ウォッチドッグタイマサービスを提供するように構成された、プロセッサベースのハードウェアを含む場合がある。
【０２０５】
いくつかの実施形態では、ウォッチドッグタイマサービスは、アプリケーション依存サービスまたはアプリケーション非依存サービスを含む動作の実行に対する耐障害性を高めることを含む場合がある。
【０２０６】
ＦＰＧＡ４７３は、適応自動車ハードウェア構成部品１３０の構成部品のうちの１つまたは複数の加速された性能を実現するように構成された、ハードウェアを含む場合がある。たとえば、適応自動車ハードウェア構成部品１３０の１つまたは複数の構成要素は、ＦＰＧＡ４７３として構成され、ハードウェアとして実装される場合がある。
【０２０７】
図４Ｄを参照すると、適応自動車ミドルウェア構成部品１３２の例示的な実施形態を示すブロック図が描写される。
【０２０８】
いくつかの実施形態では、適応自動車ミドルウェア構成部品１３２は、以下の構成要素：プラグイン構成部品サポートモジュール４６１、構成管理モジュール１９８、修正データ１４０、ポート１８４、および通信モジュール４６９のうちの１つまたは複数を含む場合がある。ポート１８４は、クライアント１７０に通信可能に結合することができる。適応自動車ミドルウェア構成部品１３２は、通信モジュール４６９に通信可能に結合されたバス４２０を介して、自動車修正システム１９９の他の構成部品に通信可能に結合することができる。
【０２０９】
適応自動車ミドルウェア構成部品１３２は、自動車修正システム１９９に耐障害サポートおよびセキュリティサポートを提供するソフトウェア構成部品とハードウェア構成部品のインスタンス化された組合せを含む場合がある。適応自動車ミドルウェア構成部品１３２の構成要素は、設計時に静的に構成および実装される場合があるが、自動車修正システム１９９の他の構成要素（たとえば、適応自動車ハードウェア構成部品１３０および適応自動車ソフトウェア構成部品１３４）は、自動車要件データ２０５またはセンサデータ２９９のうちの１つまたは複数などの入力に基づいて、実行時に適応自動車ミドルウェア構成部品１３２の構成管理モジュール１９８により、動的かつ適応的に構成される場合がある。
【０２１０】
適応自動車ミドルウェア構成部品１３２の構成要素のうち、構成管理モジュール１９８、修正データ１４０、およびポート１８４は、図１、図２Ａ、図２Ｂ、図３、図４Ａ、図４Ｂ、または図４Ｃを参照して上述されたので、それらの説明はここでは繰り返さない。
【０２１１】
プラグイン構成部品サポートモジュール４６１は、以下のステップのうちの１つまたは複数を、自動車１２３またはクライアント１７０のうちの１つまたは複数のプロセッサによって実行すること、または実行されるようにすることにより、プラグイン構成部品１６０のためのサポートを提供するように構成された、コードおよびルーチンを含む。
（１）プラグイン構成部品１６０が処理デバイス１８２、適応自動車ハードウェア構成部品１３０、適応自動車ソフトウェア構成部品（または自動車１２３の他の何らかのハードウェアもしくはソフトウェア）の動作または性能をどのように変更するかを判断すること
（２）自動車１２３がクライアント１７０または構成管理モジュール１９８を含む他の何らかのプロセッサベースのコンピューティングデバイスに結合されるまで、自動車１２３を使用不可にすること
【０２１２】
図６は、いくつかの実施形態により、適応自動車ミドルウェア構成部品の一例を描写するブロック図を含む。図６は、いくつかの実施形態により、プラグイン構成部品サポートモジュール４６１と構成管理モジュール１９８との間の関係を理解することに関して参照される場合がある。
【０２１３】
再び図４Ｄを参照すると、いくつかの実施形態では、プラグイン構成部品サポートモジュール４６１は、リアルタイムスケジューリング分析システムを含むか、またはクライアント１７０を介してそのようなシステムにアクセスする場合がある。リアルタイムスケジューリング分析システムは、スケジューリング分析アルゴリズムを含む場合がある。スケジューリング分析アルゴリズムは、適応自動車ミドルウェア構成部品１３２または構成管理モジュール１９８のうちの１つまたは複数と動作するように、特別に構成される場合がある。
【０２１４】
いくつかの実施形態では、プラグイン構成部品サポートモジュール４６１は、以下のステップのうちの１つまたは複数を実行することにより、プラグイン構成部品１６０のセットアップを完了することができる。
（１）プラグイン構成部品１６０のためのサポートを提供するスケジュール可能性を判断すること
（２）プラグイン構成部品１６０のためのサポートを提供するための１つまたは複数のスケジューリングパラメータを割り当てること
（３）プラグイン構成部品１６０がスケジュール可能かつ自動車修正システム１９９と動作可能であり得るように、自動車修正システム１９９の様々な構成要素のための様々な耐障害性およびセキュリティのレベルについての１つまたは複数の構成を含んでいる修正データ１４０に含まれるデータ構造（たとえば、参照テーブル）を再構築すること
（４）自動車修正システム１９９の様々な構成要素にそれらの構成を適用すること
（５）プラグイン構成部品１６０にスケジューリングパラメータを適用すること
（６）プラグイン構成部品１６０を実行して、障害イベントまたはセキュリティイベントを発生させずに動作可能であることを確認すること
たとえば、図６を参照。
【０２１５】
再び図４Ｄを参照すると、いくつかの実施形態では、プラグイン構成部品サポートモジュール４６１は、以下のステップのうちの１つまたは複数を実行することができる。
（１）自動車修正システム１９９から１つまたは複数の特性プロパティ２９１、２９５または可変パラメータ２９３、２９７を読み取ること
（２）１つまたは複数の特性プロパティ２９１、２９５または可変パラメータ２９３、２９７に基づいて、新しいプラグイン構成部品１６０がバス４２０に通信可能に結合されているかどうかを判定すること
（３）新しいプラグイン構成部品の存在を識別することに応答して、スケジュール可能性分析アルゴリズムを呼び出すこと
（４）スケジュール可能性分析アルゴリズムを実行して新しいプラグイン構成部品のスケジュール可能性を分析し、それにより新しいプラグイン構成部品１６０が、（たとえば、自動車要件データ２０５、または、タイミング制約もしくはリソース制約を記述する、自動車１２３もしくはクライアント１７０によって記憶される他の何らかのデータによって記述される）タイミング制約またはリソース制約に違反するかどうかを判定すること
（５）タイミング制約またはリソース制約に違反しない場合、自動車修正システム１９９への新しいプラグイン構成部品の追加のスケジュールが可能であると判断し、新しいプラグイン構成部品１６０が自動車修正システム１９９に実装されることに成功するように、新しいプラグイン構成部品１６０に１つまたは複数のスケジューリングパラメータを割り当てること
（６）タイミング制約またはリソース制約に違反する場合、自動車修正システム１９９への新しいプラグイン構成部品１６０の追加のスケジュールが可能ではないと判断し、次いで、
（ａ）プラグイン構成部品１６０を含む自動車修正システム１９９の構成要素のための様々な耐障害性およびセキュリティのレベルについての１つまたは複数の構成を含んでいる修正データ１４０に含まれる参照テーブルに対する１つまたは複数の更新を決定することであって、新しいプラグイン構成部品がタイミング制約またはリソース制約を破らずに自動車修正システム１９９内で操作することを可能にするように更新が構成される、決定すること、
（ｂ）更新に基づいて修正データ１４０に含まれる参照テーブルを再構築すること、
（ｃ）参照テーブルによって記述される新しい構成を自動車修正システム１９９の各構成部品に割り当てること、ならびに、
（ｄ）自動車修正システム１９９への新しいプラグイン構成部品１６０および再構築された参照テーブルの追加のスケジュールが可能であると判断し、新しいプラグイン構成部品１６０が自動車修正システム１９９に実装されることに成功するように、新しいプラグイン構成部品１６０に１つまたは複数のスケジューリングパラメータを割り当てること
【０２１６】
リソース制約は、セキュリティ要件および耐障害性要件のうちの１つまたは複数を含む場合がある。リソース制約は、自動車１２３のプロセッサ（たとえば、プロセッサ２２５）の能力(capabilities)を含む場合がある。たとえば、リソース制約は、プロセッサ２２５についてのコンピュータの最大オーバーヘッド(maximum overhead)、プロセッサ２２５についての最大性能レベル(maximum performance level)、または、バス、センサ、もし
くはタイミング制約を含む自動車１２３の任意の他の構成要素についてのタイミングを含む場合がある。
【０２１７】
いくつかの実施形態では、構成管理モジュール１９８は、プラグイン構成部品サポートモジュール４６１の機能のいくつかまたはすべてを実現することができる。いくつかの実施形態では、構成管理モジュール１９８用のコードのいくつかまたはすべては、クライアント１７０の構成要素であり得るし、クライアント１７０は、構成管理モジュール１９８を実行して、プラグイン構成部品１６０のためのサポートを可能にするためのその機能を実現することができる。
【０２１８】
通信モジュール４６９は、図４Ｃを参照して上述された通信モジュール４４５と同様の機能を実現するので、その説明はここでは繰り返さない。
【０２１９】
＜４．処理＞
図５Ａ〜図５Ｃは、自動車修正システム１９９によって実施され得る方法５００についての例示的なフローチャートを示すブロック図である。
【０２２０】
方法５００のステップのうちの１つまたは複数は、適応自動車ミドルウェア構成部品１３２または構成管理モジュール１９８のうちの１つまたは複数によって実施される場合がある。いくつかの実施形態では、方法５００のステップのいくつかは、適応自動車ミドルウェア構成部品１３２によって実施される場合があり、方法５００の他のステップは、構成管理モジュール１９８によって実施される場合がある。
【０２２１】
いくつかの実施形態では、クライアント１７０は、方法５００のステップのいくつかを実行する第１の構成管理モジュールを含み、適応自動車ミドルウェア構成部品１３２は、方法５００の他のステップを実行する第２の構成管理モジュールを含む。
【０２２２】
いくつかの実施形態では、クライアント１７０は、自動車修正システム１９９のバスに
通信可能に結合されることにより、自動車修正システム１９９の構成要素であり得る。
【０２２３】
いくつかの実施形態では、方法５００の１つまたは複数のステップは、省略される場合がある。いくつかの実施形態では、方法５００のステップは、図５Ａ、図５Ｂ、および図５Ｃにおいて描写された順序とは異なる順序で実行される場合がある。
【０２２４】
方法５００は、図１、図２Ａ、図２Ｂ、図３、図４Ａ、図４Ｂ、図４Ｃ、または図４Ｄを参照して上述された構成要素のうちの１つまたは複数を参照することによって記載される場合がある。
【０２２５】
図５Ａを参照すると、方法５００は、耐障害性コントローラおよびセキュリティコントローラを構成すること５０２を含む場合がある。
【０２２６】
方法５００は、入力および１つまたは複数のシステム状態変数を記憶すること５０４を含む場合がある。システム状態変数は状態データによって記述される場合がある。
【０２２７】
方法５００は、適応自動車ソフトウェア構成部品を実行すること５０６を含む場合がある。
【０２２８】
方法５００は、アプリケーション非依存サービスを呼び出すこと５０８を含む場合がある。アプリケーション非依存サービスは、耐障害性サービスまたはセキュリティサービスのうちの１つまたは複数を含む場合がある。
【０２２９】
図５Ｂを参照すると、方法５００は、セキュリティアドオンがセキュリティイベントを監視すること５１０を含む場合がある。ステップ５１２において、セキュリティアドオンは、セキュリティイベントが検出されたかどうかを判定することができる。たとえば、セキュリティアドオンは、攻撃が発生したかどうかを判定することができる。攻撃は、たとえば、自動車修正システムの任意の構成要素に対するサイドチャネル攻撃を含む場合がある。
【０２３０】
ステップ５１２においてセキュリティイベントが検出された場合、方法５００はステップ５１４に進むことができる。ステップ５１４において、方法５００は、セキュリティアドオンが自動車のドライバに警告を与えることを含む場合がある。警告は、ＧＵＩなどの視覚メッセージ、ステレオを介して再生される警告などの音声メッセージ、または視覚メッセージと音声メッセージの組合せを含む場合がある。方法５００は、救助(rescue)手順を開始すること５１６を含む場合がある。たとえば、自動車は、安全に停止し、自動車を使用不可にする対策を講じる自律走行車両であり得る。
また、方法５００は、セキュリティイベントが検出された場合（ステップ５１０または５１２でＹＥＳ）に、回復(recovery)手順を開始してもよい。回復試行回数が所定の上限値内である場合には、チェックポイントまでロールバックして上記の処理を再度実行する（チェックポイントをどの時点で記録するかにもよるが、例えばステップ５０６からの処理が再実行される）。このような回復処理を上限値の回数行っても処理が成功しない場合に、ステップ５１４以下の処理を実行してもよい。
【０２３１】
ステップ５１２においてセキュリティイベントが検出されなかった場合、方法５００はステップ５１８に進むことができる。
【０２３２】
ステップ５１８において、方法５００は、冗長性が有効であるかどうかを判定することを含む場合がある。たとえば、方法５００は、冗長制御ユニットまたは冗長適応自動車ソフトウェア構成部品のうちの１つまたは複数が有効であるかどうかを判定することを含む
場合がある。
【０２３３】
冗長性が有効でない場合、方法５００はステップ５２４に進むことができる。
【０２３４】
冗長性が有効である場合、方法５００はステップ５２０に進むことができる。ステップ５２０において、冗長構成部品のうちの１つまたは複数を実行することができる。
【０２３５】
ステップ５２２において、方法５００は、セキュリティイベントが検出されたかどうかを判定することを含む場合がある。
【０２３６】
ステップ５２２においてセキュリティイベントが検出されなかった場合、方法５００はステップ５２４に進むことができる。ステップ５２４において、方法５００は、他の構成部品にデータを出力することを含む場合がある。出力はセンサデータまたは出力を含む場合がある。
【０２３７】
ステップ５２２においてセキュリティイベントが検出された場合、方法５００はステップ５１４に進むことができる。
【０２３８】
次に図５Ｃを参照すると、ステップ５２６において、方法は、耐障害性アドオンがエラーを監視することを含む場合がある。ステップ５２８において、耐障害性イベントが検出されたかどうかに関して判定が行われる。
【０２３９】
ステップ５２８において耐障害性イベントが検出された場合、方法５００はステップ５３０に進む。ステップ５３０において、タイミング違反が発生したかどうかに関して判定が行われる。
【０２４０】
ステップ５３０においてタイミング違反が検出された場合、方法５００は、図５Ｂを参照して上述されたステップ５１４に進むことができる。
【０２４１】
ステップ５３０においてタイミング違反が検出されなかった場合、方法５００はステップ５３２に進む。ステップ５３２において、適応自動車ソフトウェア構成部品を再実行することができる。
【０２４２】
ステップ５３４において、適応自動車ソフトウェア構成部品の再実行に関連するタイミングデータまたは状態データをチェックポイントに記憶することができる。方法５００は、図５Ａを参照して上述されたステップ５０６に進むことができる。
【０２４３】
ステップ５２８においてエラーが検出されなかった場合、方法５００はステップ５３６に進むことができる。
【０２４４】
ステップ５３６において、方法５００は、冗長性が有効であるかどうかを判定することを含む場合がある。たとえば、方法５００は、冗長制御ユニットまたは冗長適応自動車ソフトウェア構成部品のうちの１つまたは複数が有効であるかどうかを判定することを含む場合がある。
【０２４５】
ステップ５３６において冗長性が有効でないという判定が行われた場合、方法５００は、図５Ｂを参照して上述されたステップ５２４に進むことができる。
【０２４６】
ステップ５３６において冗長性が有効であるという判定が行われた場合、方法５００はステップ５３８に進むことができる。
【０２４７】
ステップ５３８において、方法５００は、冗長構成部品を実行することを含む場合がある。
【０２４８】
ステップ５４０において、方法５００は、セキュリティイベント（たとえば、セキュリティイベント）が検出されたかどうかを判定することを含む場合がある。
【０２４９】
ステップ５４０においてセキュリティイベントが検出されなかった場合、方法５００は、図５Ｂを参照して上述されたステップ５２４に進むことができる。
【０２５０】
ステップ５４０においてセキュリティイベントが検出された場合、方法５００は、図５Ｂを参照して上述されたステップ５１４に進むことができる。
【０２５１】
ステップ５３８の実行に続いて、方法５００がステップ５４０に進むのと同時にステップ５２８に進む、並列プロセスが実行される場合がある。ステップ５４０は、セキュリティアドオンの動作に関連するセキュリティサブルーチンを開始することができるが、ステップ５２８は、耐障害性アドオンに関連する耐障害性サブルーチンを開始することができる。
【０２５２】
＜５．実装例１＞
次に図６を参照すると、適応自動車ミドルウェア構成部品１３２の例示的な実施形態を示すブロック図が描写される。下記の説明において、適応自動車ハードウェア構成部品１３０、適応自動車ソフトウェア構成部品１３４、およびプラグイン構成部品１６０は、総称して「構成部品１３０、１３４、１６０」と呼ばれる場合がある。同様に、適応自動車ハードウェア構成部品１３０に関連付けられた特性プロパティ２９１、適応自動車ハードウェア構成部品１３０に関連付けられた可変パラメータ２９３、適応自動車ソフトウェア構成部品１３４に関連付けられた特性プロパティ２９５、および適応自動車ソフトウェア構成部品１３４に関連付けられた可変パラメータ２９７は、総称して「構成要素２９１、２９３、２９５、２９７」と呼ばれる場合がある。
【０２５３】
適応自動車ミドルウェア構成部品１３２は、構成部品１３０、１３４、１６０から構成要素２９１、２９３、２９５、２９７を読み取ることができる。
【０２５４】
適応自動車ミドルウェア構成部品１３２は、自動車１２３または構成部品１３０、１３４、１６０などの自動車１２３の構成要素の環境を記述するセンサデータまたは状態データに基づいて、必要な保護レベルを推定することができる。
【０２５５】
推定された必要な保護レベルに基づいて、適応自動車ミドルウェア構成部品１３２は、（たとえば、修正データ１４０に含まれる）参照テーブルを分析して、必要な保護レベルを達成する構成部品１３０、１３４、１６０についての構成を選択することができる。このプロセスは、構成が構成部品１３０、１３４、１６０の各々について選択され得るように、構成部品１３０、１３４、１６０の各々について繰り返すことができる。
【０２５６】
適応自動車ミドルウェア構成部品１３２は、構成部品１３０、１３４、１６０が選択された構成に準拠して動作するように、構成部品１３０、１３４、１６０を更新することができる。
【０２５７】
参照テーブルは、設計時に作成され、自動車（または適応自動車ミドルウェア構成部品１３２）のメモリに記憶される場合がある。参照テーブルは、自動車１２３の構成要素に関連するタイミング制約およびリソース制約の設計者の知識に基づいて構成される場合が
ある。参照テーブルは更新される場合がある。たとえば、夜間更新がネットワーク１０５を介して参照テーブルにワイヤレスにプッシュされる場合がある。
【０２５８】
適応自動車ミドルウェア構成部品１３２は、新しくインストールされるか、または自動車１２３のプロセッサに通信可能に結合されたプラグイン構成部品１６０を検査することができる。たとえば、適応自動車ミドルウェア構成部品１３２は、構成部品１３０、１３４、１６０から構成要素２９１、２９３、２９５、２９７を読み取り、プラグイン構成部品１６０に関連付けられた新しい構成要素２９１、２９３、２９５、２９７を識別することができる。構成要素２９１、２９３、２９５、２９７は、構成部品１３０、１３４、１６０のメモリに記憶され、セキュリティ要件、耐障害性要件、タイミング制約、またはリソース制約のうちの１つまたは複数に準拠して自動車１２３を動作させるように、実行時間中に修正可能な修正可能データを含む場合がある。たとえば、構成要素２９１、２９３、２９５、２９７は、構成部品１３０、１３４、１６０のメモリに記憶され、セキュリティ要件、耐障害性要件、タイミング制約、またはリソース制約のうちの１つまたは複数に準拠して自動車１２３を動作させるように、実行時に修正可能な修正可能データであり得る。
【０２５９】
適応自動車ミドルウェア構成部品１３２は、ポート１８４を介してクライアント１７０からスケジュール可能性分析を呼び出すことができる。スケジュール可能性分析は、自動車１２３のプロセッサに通信可能に結合されながら動作しているプラグイン構成部品１６０が、タイミング制約またはリソース制約を違反するかどうかを示すことができる。
【０２６０】
タイミング制約またはリソース制約の侵害が検出されなかった場合、自動車１２３のプロセッサに通信可能に結合されながら動作しているプラグイン構成部品１６０を含むシステムは、スケジュール可能である。適応自動車ミドルウェア構成部品１３２は、次に１つまたは複数のスケジュール可能性パラメータをプラグイン構成部品１６０に割り当てることができる。
【０２６１】
自動車のプロセッサに通信可能に結合されながらプラグイン構成部品１６０を動作させると、車載型コンピュータ、ＥＣＵ、１つまたは複数のセンサ、バスなどの自動車の他の構成部品１３０、１３４、１６０の構成に影響を及ぼす場合がある。したがって、適応自動車ミドルウェア構成部品１３２は、これらの構成部品１３０、１３４、１６０についての新しい構成を選択し、それに応じて、セキュリティ要件、耐障害性要件、タイミング制約、またはリソース制約のうちの１つまたは複数を破らないように、それらを更新することができる。
【０２６２】
＜６．実装例２＞
自動車修正システムを、自動運転車両に適用した例を図７〜図１２を参照して説明する。なお、以下では説明の簡単化のために、耐障害性（フォールトトレランス）に関する処理のみ実行するものとして説明するが、セキュリティに関する処理を行う場合についても同様であることは容易に理解できるであろう。
【０２６３】
図７（Ａ）は、本実装例において実行する３つの適応自動車ソフトウェア構成部品（以下、ソフトウェア部品とも称する）ＳＷＣ１〜ＳＷＣ３を示す。ＳＷＣ１は、センサ７０１からセンサデータを取得して、車両の姿勢を推定する。ＳＷＣ２は、路上の物体（典型的には他車両や歩行者等）の物体追跡を行う。ＳＷＣ３は、車両の位置特定を行う。
【０２６４】
また、各ソフトウェア部品は、制御フロー検査、冗長コピー、リトライの各処理の有無あるいは回数を可変パラメータ（構成パラメータ）によって設定可能である。制御フロー検査は、上述したように、制御の流れが要件で定義されたとおりのものであるか否かを検
査する処理である。冗長コピーは、冗長構成によって同じ処理を複数行って、結果が一致しない場合にエラーが発生したと判断する処理である。リトライは、エラーが検知されたときにチェックポイントまでロールバックして、同じ処理を繰り返し実行する処理である。
【０２６５】
図７（Ｂ）は、本実施例において利用する２つの適応自動車ハードウェア構成部品（以下、ハードウェア部品とも称する）ＨＷＣ１，ＨＷＣ２を示す。これらのハードウェア部品によって、ＳＷＣ１〜ＳＷＣ３の処理が実行される。ＨＷＣ１およびＨＷＣ２はバス７０２を介して互いに通信可能であると共に、メモリやセンサなどとも通信可能である。
【０２６６】
ここでは図示はしていないが、自動車修正システムは、適応自動車ミドルウェア構成部品（以下、ミドルウェアとも称する）１３２も含む。ミドルウェアの機能は、図２Ｂ、図４Ｄ、図６等を用いて説明したので、繰り返しの説明は省略する。
【０２６７】
図７（Ｃ）は、各ソフトウェア部品の特性プロパティを示す図である。ここでは、特性プロパティとして、各ソフトウェア部品で実行する処理の実行時間と実行周期が例示される。実行時間は、所定（標準）の演算速度を有するプロセッサ（ハードウェア部品）を用いて処理を実行したときに要する時間を表す。実行周期は、定期的に処理を実行する時間間隔を表す。
【０２６８】
図７（Ｄ）は、各ハードウェア部品の特性プロパティを示す図である。ここでは、特性プロパティとして、各ハードウェア部品の実行速度が、所定性能（演算速度）のプロセッサを基準として示される。この例では、ＨＷＣ１は、所定性能のプロセッサと同等の演算速度を有し、ＨＷＣ２は所定性能のプロセッサの１．２倍の演算速度を有する。したがって、ＨＷＣ１が１０ｍｓで実行する処理を、ＨＷＣ２は８．３３ｍｓで実行可能である。
【０２６９】
図８は、設定レベルごとの制御フロー検査・冗長コピー・最大リトライ回数などの設定を表すルックアップテーブル（別の箇所で説明した「修正データに含まれる参照テーブル」に相当）を示す。複数の設定レベルが用意されるのは、必ずしも常に最高レベルの耐障害性やセキュリティを保護する必要がないためである。例えば、宇宙線強度が弱い地域や、セキュリティに対する攻撃が少ない地域では、システムの保護レベルを下げて、システムに対する負荷を抑制してもかまわない。
【０２７０】
ルックアップテーブルにおける「マッピング」は、ソフトウェア部品がどのハードウェア部品によって実行されるかを表す。これは、外部から指定されるものであってもよいし、ミドルウェアがマッピング分析によって決定するものであってもよい。特性プロパティは、それぞれのソフトウェア部品に特有な値である。ここで、特性プロパティのうち実行時間の値（実際の値）はソフトウェア部品を実行するハードウェア部品の性能に応じて変化するものであり、図８のルックアップテーブルではハードウェア部品の性能を考慮した実行時間が記載されている点に留意されたい。
【０２７１】
また、実行時間は、制御フローや冗長コピーの有無などによっても影響を受ける。ここでは、検査フロー検査をオンにすると３０％のオーバーヘッドがかかるものとし、冗長コピーをオンにすると１００％のオーバーヘッドがかかるものとしている。
【０２７２】
ルックアップテーブルにおける「利用率」は、ハードウェア部品の利用率を表す。なお、利用率が１００％を超える場合には、ソフトウェア部品による処理のスケジューリングができない。また、ハードウェア部品の利用率が１００％以下であっても、実行周期を満たすようにスケジューリングできない場合もある。図８の例は、全てのレベルにおける全ての処理がスケジューリング可能な例を示している。
【０２７３】
図９は、ミドルウェアによるルックアップテーブル生成処理の流れを示すフローチャートである。ここでは、ステップ９０１において、ミドルウェアは、設定レベルごとの可変パラメータを取得する。典型的には、ミドルウェアは、自動車要件データとして設定レベルごとの可変パラメータを取得する。自動車出荷時であれば自動車要件データは新規のデータである。出荷後であれば安全性やセキュリティに関する要件の変更に伴う可変パラメータの変更の場合もある。
【０２７４】
ステップ９０２において、ミドルウェアは、各ソフトウェア部品およびハードウェア部品の特性プロパティを読み込む。ステップ９０３において、各ソフトウェア部品をどのハードウェア部品で実行するかを決定するマッピング処理、およびソフトウェア部品の実行周期を満たせるか否かを判定するスケジューリング判定を行う。具体的な処理には、既存のスケジューリング理論に基づく判定が利用可能である。
【０２７５】
全ての設定レベルについて全てのソフトウェア部品による処理がスケジューリング可能であれば（ステップ９０４−ＹＥＳ）、ステップ９０５において、ルックアップテーブルを更新して有効化する。これ以降は、このルックアップテーブルを用いた処理が行われる。一方、いずれかの設定レベルにおいていずれかのソフトウェア部品の処理がスケジューリングできない場合（ステップ９０４−ＮＯ）には、ステップ９０６において、その旨の警告表示を行い、ルックアップテーブルの更新を行わない。この警告表示を受けたシステム設計者はあらためて設定レベルごとの可変パラメータを調整して、上記の処理を繰り返すことができる。あるいは、スケジューリング可能にするために、ハードウェア部品の交換あるいは追加を検討することもできる。また、スケジュールイングが不可能な場合に、自動車を起動できないようにしてもよい。
【０２７６】
図１０は、システム稼働時の処理を示すフローチャートである。ミドルウェアは、ステップ１００１においてセンサから環境データを取得し、ステップ１００２において環境データに応じた設定レベルを決定する。例えば、環境データは位置情報であり、ミドルウェアは位置ごとにあらかじめ設定レベルが定められたテーブルを記憶しており、このテーブルを参照して現在位置における設定レベルを決める。例えば、宇宙線強度が弱い地域ではソフトエラーが発生する確率が低いので耐障害性のレベルが低くし、宇宙線強度が強い地域では耐障害性のレベルを高くすることが考えられる。
【０２７７】
ステップＳ１００３において、ミドルウェアは、決定された設定レベルに応じたソフトウェア部品およびハードウェア部品の可変パラメータを読み込み、ステップ１００４において、ソフトウェア部品及びハードウェア部品の可変パラメータをルックアップテーブルから得られた値に変更（更新）する。これにより、環境に応じた適切なレベルでのシステムの保護が可能となる。
【０２７８】
例えば、図８におけるレベルＮで動作すべきとステップＳ１００２で決定された場合には、ＳＷＣ１およびＳＷＣ３の制御フロー検査はオンにされ、冗長コピー機能はオフにされる。ＳＷＣ２は、制御フロー検査がオフにされ、冗長コピー機能がオンにされる。また、全てのＳＷＣ１〜３について、最大リトライ回数は１に設定される。
【０２７９】
次に、システム稼働後に新たなソフトウェア部品やアドオンが追加された際の処理について説明する。ここでは、図１１Ａに示すように、図９Ａ，９Ｂに示す構成において、新たなソフトウェア部品ＳＷＣ４が追加された場合を例に説明を行う。ＳＷＣ４は、例えば、センサ７０４から得られるセンサデータに前処理を施して、物体追跡を行うＳＷＣ２に前処理後のデータを供給するものである。ＳＷＣ４の特性プロパティは、（標準的なプロセッサによる）実行時間が１０ｍｓであり、実行周期が１００ｍｓであるものとする。
【０２８０】
図１１Ｂは、追加のソフトウェア部品が検出された際の処理を表すフローチャートである。ステップ１１０１からステップ１１０４の処理は、図９におけるステップ９０１から９０４の処理と基本的に同様である。相違点としては、ステップ１１０１において新たなソフトウェア部品であるＳＷＣ４についての可変パラメータも入力される点、およびステップ１１０２および１１０４においてＳＷＣ４もスケジューリング判定の対象となる点が挙げられる。
【０２８１】
全ての設定レベルについて全てのソフトウェア部品による処理がスケジューリング可能であれば（ステップ１１０４−ＹＥＳ）、ステップ１１０５において、ルックアップテーブルを更新して有効化する。これ以降は、このルックアップテーブルを用いた処理が行われる。一方、いずれかの設定レベルにおいていずれかのソフトウェア部品の処理がスケジューリングできない場合（ステップ１１０４−ＮＯ）には、ステップ１１０６において、その旨の警告表示を行い、ルックアップテーブルの更新を行わない。この場合、自動車を起動できないようにしてもよい。
【０２８２】
図１２は、マッピング処理およびスケジュール判定の例を説明するためのルックアップテーブルである。ここでは、レベル１およびレベル２についてはスケジューリングが可能であるが、レベルＮについてスケジューリングが不可能である場合が示されている。レベルＮにおいては、リトライ処理を行うべきであるが、リトライを実施した場合ＨＷＣ２での処理（ＳＷＣ１，ＳＷＣ２，ＳＷＣ４）の実行周期が満たせなくなると判定されている。したがって、この場合、ミドルウェアは警告を出力し、ＳＷＣ４を有効にしない。あるいは自動車そのものが起動しないようにする。
【０２８３】
このように構成によれば、複数の設定レベルでの全ての処理のスケジューリング可能性を担保できる。また、新たなソフトウェア部品が追加された場合や、自動車に課せられる安全性やセキュリティの要件（すなわち、レベルごとの可変パラメータの設定）が変更した場合にも、スケジュール可能性を担保できる。さらに、環境に応じて設定レベルを動的に変更して、環境に応じた設定レベルで自動車システムを動作させることができる。
【０２８４】
この例では、耐障害性（フォールトトレランス）の機能に絞って説明をしたが、セキュリティなどその他の処理についても同様に扱えることは明らかであろう。また、可変パラメータはソフトウェア部品についてのみ考慮したが、ハードウェア部品の可変パラメータが調整できる場合も同様の処理が行える。ここで説明した、ソフトウェア部品やハードウェア部品の具体的な数や処理内容は、あくまでも例示に過ぎず本発明を限定する趣旨のものではない。
また、この例では新しいソフトウェア部品が追加されたときの例を用いて説明したが、既存のソフトウェア部品が変更された場合も同様に処理を行える。例えば、暗号処理を行うソフトウェア部品において、利用する暗号アルゴリズムや鍵長が変更された場合には、それに応じて実行速度（特性プロパティ）が変化する。したがって、ミドルウェアによるスケジューリング可能性を再度判定することが望まれる。ソフトウェア部品の変更には、ソフトウェア部品に対するアドオンの追加・変更が含まれる。
また、新しいハードウェア部品が追加あるいは変更された場合には、スケジューリング可能性に影響を与えることがあり、そのような場合にも上記と同様の処理を行うことが望ましい。
【０２８５】
以上の説明では、説明の目的で、本明細書を完全に理解するために、多数の具体的な詳細が明記されている。しかしながら、本開示はこれらの具体的な詳細なしに実践され得ることは、当業者には明らかである。場合によっては、説明を不明瞭にすることを回避するために、構造およびデバイスがブロック図の形で示される。たとえば、本実装形態は、主
にユーザインターフェースおよび特定のハードウェアを参照して、上記で記載することができる。しかしながら、本実装形態は、データおよびコマンドを受信することができる任意のタイプのコンピューティングデバイス、ならびにサービスを提供する任意の周辺デバイスに適用することができる。
【０２８６】
本明細書における「いくつかの実装形態」または「いくつかの事例」に対する参照は、その実装形態または事例とともに記載される特定の特徴、構造、または特性が説明の少なくとも１つの実装形態に含まれ得ることを意味する。本明細書における様々な場所での「いくつかの実装形態では」というフレーズの出現は、必ずしもすべてが同じ実装形態を参照しているとは限らない。
【０２８７】
以下に続く詳細説明のいくつかの部分は、コンピュータメモリ内のデータビット上の演算のアルゴリズムおよびシンボル表現の観点から提示される。これらのアルゴリズム的な記述および表現は、データ処理技術分野の当業者により、他の当業者に自分の仕事の本質を最も効果的に伝達するために使用される手段である。本明細書において、かつ一般的に、アルゴリズムは、望ましい結果に導く自己矛盾のない一連のステップであると考えられる。ステップは、物理量の物理的操作を必要とするステップである。必ずしもそうであるとは限らないが、通常、これらの量は、記憶、転送、合成、比較、および他の方法で操作することが可能な電気信号または磁気信号の形態をとる。主に共通使用の理由で、これらの信号をビット、値、素子、シンボル、文字、用語、番号などとして参照することは、時には好都合であると証明されている。
【０２８８】
しかしながら、これらおよび同様の用語のすべてが、適切な物理量に関連付けられ、これらの量に適用される便利なラベルにすぎないことは留意されるべきである。以下の説明から明白であると別段に明記されていない限り、説明全体にわたって、「処理」または「計算」または「算出」または「決定」または「表示」などを含む用語を利用する説明は、コンピュータシステムのレジスタおよびメモリ内の物理（電子）量として表されるデータを操作し、コンピュータシステムのメモリもしくはレジスタ、または他のそのような情報を記憶、送信、もしくは表示するデバイス内の物理量と同様に表される他のデータに変換する、コンピュータシステムまたは同様の電子コンピューティングデバイスのアクションおよびプロセスを参照する。
【０２８９】
本明細書の本実装形態はまた、本明細書において動作を実行するための装置に関係することもできる。この装置は、必要な目的のために特別に構築される場合があるか、またはコンピュータに記憶されたコンピュータプログラムによって、選択的にアクティブ化もしくは再構成される汎用コンピュータを含む場合がある。そのようなコンピュータプログラムは、限定はしないが、各々がコンピュータシステムバスに結合される、フロッピーディスク、光ディスク、ＣＤ−ＲＯＭ、および磁気ディスクを含む任意のタイプのディスク、読取り専用メモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、ＥＰＲＯＭ、ＥＥＰＲＯＭ、磁気カードもしくは光カード、不揮発性メモリを有するＵＳＢキーを含むフラッシュメモリ、または電子命令を記憶するのに適した任意のタイプの媒体を含む、コンピュータ可読記憶媒体に記憶される場合がある。
【０２９０】
本明細書は、いくつかの全体的にハードウェアの実装形態、いくつかの全体的にソフトウェアの実装形態、またはハードウェアとソフトウェアの両方の構成要素を含んでいるいくつかの実装形態の形態をとることができる。いくつかの好ましい実装形態では、本明細書は、限定はしないが、ファームウェア、常駐ソフトウェア、マイクロコードなどを含む、ソフトウェアに実装される。
【０２９１】
さらに、説明は、コンピュータまたは任意の命令実行システムが使用するか、またはそ
れとともに使用されるプログラムコードを提供する、コンピュータ使用可能媒体またはコンピュータ可読媒体からアクセス可能なコンピュータプログラム製品の形態をとることができる。この説明の目的で、コンピュータ使用可能媒体またはコンピュータ可読媒体は、命令実行システム、命令実行装置、または命令実行デバイスが使用するか、またはそれとともに使用されるプログラムを、内蔵、記憶、通信、伝播、または転送することができる任意の装置であり得る。
【０２９２】
プログラムコードを記憶または実行するのに適したデータ処理システムは、システムバスを介してメモリ素子に直接的または間接的に結合された少なくとも１つのプロセッサを含む。メモリ素子は、プログラムコードの実際の実行中に利用されるローカルメモリ、バルクストレージ、および、実行中にバルクストレージからコードが取り出されねばならない回数を低減するために、少なくともいくつかのプログラムコードの一時的ストレージを提供するキャッシュメモリを含むことができる。
【０２９３】
（限定はしないが、キーボード、ディスプレイ、ポインティングデバイスなどを含む）入力／出力デバイスまたはＩ／Ｏデバイスは、直接または介在するＩ／Ｏコントローラを介して、システムに結合することができる。
【０２９４】
ネットワークアダプタは、データ処理システムが、介在する専用ネットワークまたは公共ネットワークを介して、他のデータ処理システムまたはリモートプリンタまたはストレージデバイスに結合されるようになることを可能にするために、システムに結合される場合もある。モデム、ケーブルモデム、およびイーサネット（登録商標）カードは、現在利用可能なタイプのネットワークアダプタのうちのほんの一部である。
【０２９５】
最後に、本明細書に提示されたアルゴリズムおよびディスプレイは、任意の特定のコンピュータまたは他の装置に本質的に関係しない。様々な汎用システムは、本明細書における教示によるプログラムとともに使用される場合があるか、または必要な方法ステップを実施するためにより特化した装置を構築することが好都合であると証明する場合がある。様々なこれらのシステムに必要な構造は、下記の説明から明らかになる。加えて、本明細書は、いかなる特定のプログラミング言語も参照して記載されていない。本明細書に記載された明細書の教示を実装するために、様々なプログラミング言語を使用できることが諒解されよう。
【０２９６】
本明細書の実装形態の上記の説明は、例示および説明の目的で提示されている。本明細書を開示されたそのままの形態に徹底または限定するものではない。上記の教示に照らして、多くの修正形態または変形形態が可能である。本開示の範囲は、この詳細説明によって限定されず、むしろ本出願の特許請求の範囲によって限定されるものである。当業者によって理解されるように、本明細書は、その趣旨または本質的な特性から逸脱することなく、他の固有の形態で具現化される場合がある。同様に、モジュール、ルーチン、特徴、属性、方法、および他の態様の特定の命名および分割は、必須または重要ではなく、本明細書またはその特徴を実装するメカニズムは、様々な名称、分割、またはフォーマットを有する場合がある。さらに、当業者には明らかなように、本開示のモジュール、ルーチン、特徴、属性、方法、および他の態様は、ソフトウェア、ハードウェア、ファームウェア、またはその３つの任意の組合せとして実装することができる。また、その例がモジュールである本明細書の構成部品がソフトウェアとして実装される場合はいつでも、構成部品は、スタンドアロンプログラムとして、より大きいプログラムの一部として、複数の別々のプログラムとして、静的もしくは動的にリンクされたライブラリとして、カーネルのロード可能なモジュールとして、デバイスドライバとして、または、コンピュータプログラミングの当業者に現在知られているか、もしくは将来知られるすべておよび任意の他の方法で、実装することができる。加えて、本開示は、任意の固有のプログラミング言語にお
ける、または任意の固有のオペレーティングシステムもしくは動作環境のための実装に少しも限定されない。したがって、本開示は、以下の特許請求の範囲で明記される本明細書の範囲を限定するものではなく、例示するものである。
【符号の説明】
【０２９７】
１００  動作環境
１０５  ネットワーク
１２０  バス
１２３  自動車
１３０  適応自動車ハードウェア構成部品
１３０Ａ  適応自動車ハードウェア構成部品
１３０Ｂ  適応自動車ハードウェア構成部品
１３０Ｎ  適応自動車ハードウェア構成部品
１３２  適応自動車ミドルウェア構成部品
１３４  適応自動車ソフトウェア構成部品
１３４Ａ  適応自動車ソフトウェア構成部品
１３４Ｂ  適応自動車ソフトウェア構成部品
１３４Ｎ  適応自動車ソフトウェア構成部品
１４０  修正データ
１５３  サービスサーバ
１６０  プラグイン構成部品
１７０  クライアント
１８２  処理デバイス
１８４  ポート
１９０  センサセット
１９６  サービスモジュール
１９８  構成管理モジュール
１９９  自動車修正システム
２００  システム
２０５  自動車要件データ
２２５  プロセッサ
２２７Ａ  メモリ
２２７Ｂ  メモリ
２４５  通信ユニット
２９１  特性プロパティ
２９３  可変パラメータ
２９５  特性プロパティ
２９７  可変パラメータ
２９９  センサデータ
３００  構成管理モジュール１９８の例示的な実施形態
４０１  耐障害性コントローラ
４０３  セキュリティコントローラ
４０４  タイミングモニタ
４０５  通信モジュール
４０７  フロー検査モジュール
４０９  署名検査モジュール
４１１  他の耐障害性モジュール
４１３  暗号化モジュール
４１５  認証モジュール
４１７  他のセキュリティモジュール
４２０  バス
４２１  チェックポイント
４２７Ａ  耐障害性メモリ
４２７Ｂ  セキュリティメモリ
４２９  メモリ
４３１  入力
４３３  出力
４３５  冗長出力
４３６  例示的なメモリ部分
４３７  耐障害性サービス
４３９  セキュリティサービス
４４１  アプリケーション非依存サービス
４４３  アプリケーション依存サービス
４４５  通信モジュール
４６１  プラグイン構成部品サポートモジュール
４６６  プロセッサ
４６９  通信モジュール
４７１  メモリ
４７３  ＦＰＧＡ
４７７  セキュリティアドオン
４７８  耐障害性アドオン
４８４  冗長適応自動車ソフトウェア構成部品
４８９  冗長制御ユニット
４９６  プロセッサ
４９７  耐障害性アドオン
４９８  制御ユニット
４９９  セキュリティアドオン
５００  方法
【図１】
0006432611.tif 000002
【図２Ａ】
0006432611.tif 000003
【図２Ｂ】
0006432611.tif 000004
【図３】
0006432611.tif 000005
【図４Ａ】
0006432611.tif 000006
【図４Ｂ】
0006432611.tif 000007
【図４Ｃ】
0006432611.tif 000008
【図４Ｄ】
0006432611.tif 000009
【図５Ａ】
0006432611.tif 000010
【図５Ｂ】
0006432611.tif 000011
【図５Ｃ】
0006432611.tif 000012
【図６】
0006432611.tif 000013
【図７】
0006432611.tif 000014
【図８】
0006432611.tif 000015
【図９】
0006432611.tif 000016
【図１０】
0006432611.tif 000017
【図１１】
0006432611.tif 000018
【図１２】
0006432611.tif 000019