(57)【要約】【課題】制御部品間でのアクセスが適切であるか否かを、制御部品の作成者が容易に確認可能な技術を提供することを目的とする。【解決手段】複数の制御部品の組合せによって車両制御システムを構築するに際し、制御部品の一つとしてシステムに組み込まれる制御プログラムを、コンパイル時に次のように検査する。予め、パラメータ毎に、このパラメータの重要度を定義しておく。そして、制御プログラムのコンパイル時には、制御プログラムのソースコードを参照し、パラメータへの参照動作が実行されるプログラムコード及びパラメータへの書込動作が実行されるプログラムコードの夫々を検出する。そして、該当するプログラムコードによって書き込まれる又は参照されるパラメータの重要度に基づき、その書込又は参照が不正なものでないかどうかを判断する（Ｓ５３０，Ｓ５５０）。そして、不正なものである場合には、その情報を出力する（Ｓ５４０，Ｓ５６０）。【選択図】図５
2013037398.tif 000002
【特許請求の範囲】
【請求項１】
複数の制御部品の組合せによって車両制御を実現するシステムにおいて、前記制御部品の一つとして用いられる制御プログラムを検査する検査装置であって、
検査対象の前記制御プログラムにおいて、前記システムを構成する他の制御部品が所有するパラメータである外部パラメータへのアクセスを伴うプログラムコードを検出する検出手段と、
前記検出手段により検出されたプログラムコード毎に、このプログラムコードによりアクセスされる前記外部パラメータの保護レベルであって、外部からのアクセスに対する保護レベルを、前記他の制御部品で所有される各パラメータと前記保護レベルとの対応関係を記憶する記憶装置を参照することにより特定し、特定した前記保護レベルに基づき、前記プログラムコードによる前記外部パラメータに対するアクセスが不正なアクセスであるか否かを判断する判断手段と、
前記判断手段により不正なアクセスであると判断された前記外部パラメータへのアクセスを伴うプログラムコードに関する情報を出力する出力手段と、
を備えることを特徴とする検査装置。
【請求項２】
請求項１記載の検査装置であって、
前記検出手段は、前記制御プログラムのソースコードを参照して、前記外部パラメータへのアクセスを伴うプログラムコードを検出すること
を特徴とする検査装置。
【請求項３】
請求項２記載の検査装置であって、
前記制御プログラムのソースコードをオブジェクトコードに変換するコンパイル手段
を備え、
前記検出手段、前記判断手段、及び、前記出力手段は、前記コンパイル手段に対する動作指示が入力された際に、前記コンパイル手段と共に動作すること
を特徴とする検査装置。
【請求項４】
請求項１〜請求項３のいずれか一項記載の検査装置であって、
前記保護レベルの一群には、この保護レベルが設定されたパラメータに対するアクセスであって、当該パラメータを所有する制御部品以外の制御部品である外部制御部品からのアクセスを不正なアクセスと判断するように定められた保護レベルが含まれること
を特徴とする検査装置。
【請求項５】
請求項１〜請求項４のいずれか一項記載の検査装置であって、
前記検出手段は、前記外部パラメータへのアクセスを伴うプログラムコードとして、前記外部パラメータに対する書込が行われるプログラムコード、及び、前記外部パラメータに対する参照が行われるプログラムコードを検出するものであり、
前記保護レベルの一群には、この保護レベルが設定されたパラメータに対するアクセスであって、当該パラメータを所有する制御部品以外の制御部品である外部制御部品からの書込動作を伴うアクセスを不正なアクセスと判断する一方、前記外部制御部品からの前記パラメータへの参照動作を伴うアクセスを不正なアクセスではない正当なアクセスと判断するように定められた保護レベルが含まれること
を特徴とする検査装置。
【請求項６】
請求項４又は請求項５記載の検査装置であって、
前記保護レベルの一群には、この保護レベルが設定されたパラメータに対するアクセスであって、前記パラメータを所有する制御部品、及び、前記外部制御部品を含む全ての前記制御部品からのアクセスを不正なアクセスではない正当なアクセスと判断するように定められた保護レベルが含まれること
を特徴とする検査装置。
【請求項７】
複数の制御部品の組合せによって車両制御を実現するシステムにおいて、前記制御部品の一つとして用いられる制御プログラムを検査するための検査プログラムであって、
コンピュータに、
検査対象の前記制御プログラムにおいて、前記システムを構成する他の制御部品が所有するパラメータである外部パラメータへのアクセスを伴うプログラムコードを検出する検出手順と、
前記検出手順により検出されたプログラムコード毎に、このプログラムコードによりアクセスされる前記外部パラメータの保護レベルであって、外部からのアクセスに対する保護レベルを、前記他の制御部品で所有される各パラメータと保護レベルとの対応関係を記憶する記憶装置を参照することにより特定し、特定した前記保護レベルに基づき、前記プログラムコードによる前記外部パラメータに対するアクセスが不正なアクセスであるか否かを判断する判断手順と、
前記判断手順により不正なアクセスであると判断された前記外部パラメータへのアクセスを伴うプログラムコードに関する情報を出力する出力手順と、
を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラムを検査する検査装置及び検査プログラムに関する。
【背景技術】
【０００２】
従来から知られるように、コンパイラ装置では、プログラムのソースコードをオブジェクトコードに変換するコンパイル動作の実行時に、文法エラーが検出される。検出された文法エラーの内容は、画面表示されたり、ファイル出力されたりして、ユーザに報知される。この他、コンパイラ装置としては、文法エラーを修正しつつ、プログラムのソースコードをオブジェクトコードに変換するものが知られている（特許文献１参照）。
【０００３】
一方、車両制御の分野では、制御機能毎に、ソフトウェア部品やハードウェア部品で構成される制御部品を設計し、これら複数の制御部品の組合せにより、総合的な車両制御を実現する技術が知られている。例えば、オブジェクト指向型のプログラム言語を用いて、車両制御を実現するための複数のソフトウェア部品を設計し、これらソフトウェア部品に対応するオブジェクトの協働により、総合的な車両制御を実現する。
【０００４】
近年では、構成の異なる複数種類の車両開発を効率的に行うために、車両制御に必要なソフトウェアを細分化して部品化することが広く行われている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１０−１７６４３９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ところで、このような車両制御システムでは、複数の制御部品の協働による車両制御のために、制御部品間で他の制御部品が所有するパラメータへのアクセスが生じる。ここで言うアクセスとしては、パラメータに対する書込動作又は参照動作を伴うアクセスが挙げられる。
【０００７】
一方で、車両制御システムでは、制御部品の誤った設計により、制御部品間でパラメータに対する不適切なアクセスがあると、そのアクセス（特に書込動作を伴うアクセス）が原因で、車両の安全性が損なわれる可能性がある。そして、近年の車両制御システムでは、システムの高機能化によって、部品点数が増加する傾向にあり、特に制御部品をソフトウェアにより作成する場合には、制御部品間でのアクセスが適切であるか否かを、作成者が容易に確認することが難しくなってきている。
【０００８】
本発明は、こうした問題に鑑みなされたものであり、制御部品間でのアクセスが適切であるか否かを、制御部品の作成者が容易に確認可能な技術を提供することを目的とする。
【課題を解決するための手段】
【０００９】
かかる目的を達成するためになされた本発明は、複数の制御部品の組合せによって車両制御を実現するシステムにおいて、制御部品の一つとして用いられる制御プログラムを検査する検査装置であって、検出手段と、判断手段と、出力手段と、を備えるものである。
【００１０】
検出手段は、検査対象の制御プログラムにおいて、上記システムを構成する他の制御部品が所有するパラメータである外部パラメータへのアクセスを伴うプログラムコードを検出する。
【００１１】
判断手段は、この検出手段により検出されたプログラムコード毎に、このプログラムコードによりアクセスされる外部パラメータの保護レベルであって、外部からのアクセスに対する保護レベルを、上記他の制御部品で所有される各パラメータと保護レベルとの対応関係を記憶する記憶装置を参照することにより特定する。そして、特定した保護レベルに基づき、このプログラムコードによる上記外部パラメータに対するアクセスが不正なアクセスであるか否かを判断する。
【００１２】
そして、出力手段は、上記判断手段により不正なアクセスであると判断された外部パラメータへのアクセスを伴うプログラムコードに関する情報を出力する。尚、出力形態としては、例えば、ディスプレイ等を通じた画像出力や、スピーカ等を通じた音声出力や、ハードディスク装置等の記録媒体に対するファイル出力の形態を挙げることができる。また、出力情報としては、判断手段により不正なアクセスであると判断された外部パラメータへのアクセスを伴うプログラムコードを特定可能な情報を挙げることができる。
【００１３】
この検査装置によれば、検査対象の制御プログラム内において外部パラメータに対して不正なアクセスが生じるプログラムコードを検出し、そのプログラムコードに関する情報を出力することができる。従って、ユーザは、出力手段により出力された情報を確認することで、制御プログラムによる外部パラメータへのアクセスが適切であるか否かを容易に判断することができ、この制御プログラムを適切に修正して、適切な制御プログラムをシステムに組み込むことができる。
【００１４】
従来では、本発明のような技術が知られていないため、制御プログラムが不適切な外部パラメータへのアクセスを行うものであることを発見できずに、システムの開発者が、制御プログラムをシステムに組み込んでしまう可能性があり、このことが原因で車両制御にエラーが生じる可能性があったが、本発明の検査装置を用いれば、このようなエラーが生じる可能性を抑えることができる。
【００１５】
ところで、上述の検出手段は、検査対象の制御プログラムのソースコードを参照して、外部パラメータへのアクセスを伴うプログラムコードを検出する構成にすることができる。この構成によれば、外部パラメータへのアクセスを伴うプログラムコードを容易に検出することができる（請求項２）。また、検査装置は、制御プログラムのソースコードをオブジェクトコードに変換するコンパイル手段を備え、コンパイル手段に対する動作指示が入力された際に、検出手段、判断手段、及び、出力手段が、コンパイル手段と共に動作する構成にすることができる（請求項３）。このようにしてコンパイラ装置に、本発明の検査装置としての機能を組み込めば、利便性の高いコンパイラ装置を提供することができる。
【００１６】
また、保護レベルの一つには、この保護レベルが設定されたパラメータに対するアクセスであって、当該パラメータを所有する制御部品以外の制御部品である外部制御部品からのアクセスを不正なアクセスと判断する保護レベル（以下、「第一の保護レベル」とも表現する。）を設けることができる（請求項４）。判断手段は、検出手段により検出されたプログラムコードによってアクセスされる外部パラメータの保護レベルが「第一の保護レベル」である場合には、このプログラムコードによる外部パラメータに対するアクセスを不正なアクセスであると判断する構成にすることができる。
【００１７】
このような保護レベルを設けて、制御プログラムを検査し、検査装置による検査結果に従って制御プログラムを修正して、修正後の制御プログラムを上記システムに組み込めば、各制御部品が有するパラメータを適切に保護することができ、良好な車両制御システムを容易に構築することができる。
【００１８】
例えば、外部制御部品からの不適切なアクセスが生じると車両の安全性の観点から無視できないエラーが生じやすいパラメータに対し、このような保護レベルを付与すれば、パラメータを保護して、車両の安全性を向上させることができる。
【００１９】
この他、検出手段は、外部パラメータへのアクセスを伴うプログラムコードとして、外部パラメータに対する書込が行われるプログラムコード、及び、外部パラメータに対する参照が行われるプログラムコードを検出する構成にすることができる。そして、このような構成の検出手段を用いる場合には、保護レベルの一つとして、この保護レベルが設定されたパラメータに対するアクセスであって、当該パラメータを所有する制御部品以外の制御部品である外部制御部品からの書込動作を伴うアクセスを不正なアクセスと判断する一方、外部制御部品からのパラメータへの参照動作を伴うアクセスを不正なアクセスではない正当なアクセスと判断する保護レベル（以下、「第二の保護レベル」とも表現する。）を設けることができる（請求項５）。
【００２０】
即ち、判断手段は、検出手段により検出されたプログラムコードが「第二の保護レベル」に設定された外部パラメータに対する書込が行われるプログラムコードである場合には、外部パラメータに対するアクセスが不正なアクセスであると判断し、当該プログラムコードが上記外部パラメータに対する参照が行われるプログラムコードである場合には、外部パラメータに対するアクセスが不正なアクセスではないと判断する構成にすることができる。
【００２１】
このような保護レベルを設定すれば、ユーザは、このような検出結果が反映された出力手段による出力情報に基づき、必要に応じて制御プログラムを修正して、この制御プログラムをシステムに組み込むことにより、制御部品間でのパラメータの参照を許容しながらも、車両の安全を適切に確保可能な車両制御システムを構築することができる。
【００２２】
この他、上記種類の保護レベルに加えては、次の種類の保護レベルを設けることができる。即ち、上記保護レベルの一つとしては、この保護レベルが設定されたパラメータに対するアクセスであって、このパラメータを所有する制御部品、及び、外部制御部品を含む全ての制御部品からのアクセスを不正なアクセスではない正当なアクセスと判断する保護レベル（以下、「第三の保護レベル」とも表現する。）を設けることができる（請求項６）。
【００２３】
換言すると、判断手段は、検出手段により検出されたプログラムコードによってアクセスされる外部パラメータの保護レベルが「第三の保護レベル」である場合には、このプログラムコードによる外部パラメータに対するアクセスを不正なアクセスではないと判断する構成にすることができる。「第三の保護レベル」によれば、検出手段が外部パラメータへのアクセスを伴うプログラムコードとして、外部パラメータに対する書込が行われるプログラムコード、及び、外部パラメータに対する参照が行われるプログラムコードを検出する場合、判断手段によっては、書込及び参照動作の両者に関して、外部制御部品からのアクセスが不正なアクセスではない正当なアクセスであると判断される。
【００２４】
このように外部からのアクセスを許容する第三の保護レベルを設ければ、第一の保護レベル及び第二の保護レベルの少なくとも一方と組み合わせて用いることで、制御部品間でのパラメータに対するアクセスを許容しつつ、書込や参照等を伴うアクセスから保護すべきパラメータを適切に保護することでき、良好な車両制御システムを構築することができる。
【００２５】
また、検査装置は、検査対象の制御プログラムの外部パラメータに対するアクセス権限レベルの情報を取得する取得手段を備える構成にされてもよい。そして、判断手段は、検出手段により検出されたプログラムコード毎に、このプログラムコードによりアクセスされる外部パラメータの保護レベルと、取得手段の取得情報が示す前記検査対象の制御プログラムのアクセス権限レベルと、に基づき、プログラムコードによる外部パラメータに対するアクセスが不正なアクセスであるか否かを判断する構成にされてもよい。
【００２６】
制御部品間での書込や参照を詳細に制限する場合には、制御プログラムが適切であるのかを、ユーザがソースコードを順に目で追って確認するのが難しくなるが、本発明の検査装置を用いれば、このような検査を容易に行うことができる。
【００２７】
また、上述した検査装置が備える各手段としての機能は、プログラムによりコンピュータに実現させることができる（請求項７）。また、検査装置が備える各手段としての機能を、コンピュータに実現させるためのプログラムは、ハードディスクやＤＶＤ、ＣＤ−ＲＯＭ、半導体製メモリ等の種々の記録媒体に記録して、ユーザに提供することができる。
【図面の簡単な説明】
【００２８】
【図１】情報処理装置１の構成を表すブロック図である。
【図２】定義リスト２３の構成を表す図である。
【図３】エンジンＥＣＵ１００の構成を表す機能ブロック図である。
【図４】コンパイル動作の実行指示の入力時にＣＰＵ１１が実行する処理を表すフローチャートである。
【図５】ＣＰＵ１１が実行する正当性チェック処理を表すフローチャートである。
【発明を実施するための形態】
【００２９】
以下に、本発明の実施例について図面と共に説明する。
図１に示す本実施例の情報処理装置１は、演算装置１０と、ハードディスク装置２０と、入力装置３０と、表示装置４０と、ドライブ装置５０と、を備える。
【００３０】
演算装置１０は、ＣＰＵ１１と、ＣＰＵ１１によるプログラム実行時に作業領域として使用されるＲＡＭ１３と、を備え、ハードディスク装置２０は、ＣＰＵ１１により実行される各種プログラムや、プログラム実行時に使用されるデータ等を記憶する。
【００３１】
入力装置３０は、ユーザからの入力操作を受け付けて、その操作信号をＣＰＵ１１に入力するユーザインタフェースであり、キーボードやポインティングデバイス等から構成される。また、表示装置４０は、ＣＰＵ１１からの制御信号に従って各種情報を画面に出力するものであり、例えば、液晶ディスプレイにより構成される。
【００３２】
この他、ドライブ装置５０は、ＣＰＵ１１に制御されて、光ディスク及び磁気ディスク等の記録媒体（メディア９０）に記録されたデータを読み取り、更には、この記録媒体にデータを書き込む装置である。
【００３３】
このように構成される情報処理装置１は、ハードディスク装置２０に、プログラムのソースコードをオブジェクトコードに変換するためのプログラムであるコンパイラ２１を備える。コンパイラ２１は、車両制御システムに組み込む制御プログラムのソースコードをコンパイルすることを主な用途として情報処理装置１にインストールされるものである。車両制御の分野では、制御機能毎に、ソフトウェア部品やハードウェア部品で構成される制御部品を設計し、これら複数の制御部品の組合せにより、車両制御システムを構築する。本実施例の情報処理装置１が備えるコンパイラ２１は、この車両制御システムおいて制御部品の一つとして用いられる制御プログラムをコンパイルするのに用いられる。尚、ここでは「制御部品」との用語を、「車両制御システムを構成する部品」という意味で広義に用いる。
【００３４】
この用途に対応して、本実施例のコンパイラ２１は、ソースコードの文法をチェックする機能である文法チェック機能の他、ハードディスク装置２０に格納された定義リスト２３に基づき、コンパイル対象の制御プログラムに、外部パラメータへの不正なアクセスがないかどうかをチェックする不正アクセスチェック機能を備える。尚、本明細書では、簡潔な表現のために、コンパイラ２１等の「プログラム」が「機能」を備えると表現することがあるが、ここで言う「プログラム」が「機能」を備えるとは、その「プログラム」をコンピュータ（ＣＰＵ１１）が実行することにより、その「機能」がコンピュータ（ＣＰＵ１１）上で実現されることを意味する。
【００３５】
具体的に、上記不正アクセスチェック機能は、コンパイル対象の制御プログラムによる、車両制御システムを構成する他の制御部品が所有するパラメータである外部パラメータへのアクセスが適切であるか否かを、定義リスト２３に定義された各パラメータの重要度に応じてチェックする機能である。尚、制御部品がソフトウェア部品である場合の「制御部品が所有するパラメータ」とは、そのソフトウェア部品で定義されたパラメータのことを言う。
【００３６】
定義リスト２３は、図２に示すように、車両制御システムを構成する各制御部品が所有するパラメータ毎に、パラメータ名と、制御部品名と、重要度と、コメント情報と、が記述されてなる重要度定義データを有する。パラメータ名は、この重要度定義データによって重要度が定義されるパラメータの名称のことであり、制御部品名は、このパラメータを所有する制御部品の名称のことであり、コメント情報は、ユーザによって自由に記述される情報である。尚、コメント情報は、ユーザ向けの情報であり、コンパイラ２１によっては参照されない。
【００３７】
この重要度定義データによってパラメータに定義される重要度は、値１から値３までの３段階の値を採る。但し、本実施例では、値が小さい程、重要度が高く、外部からのアクセスに対して保護すべき度合いが高いことを意味する。以下では、値１の重要度を、重要度「１」とも表現し、値２及び値３の重要度についても同様の表現を採用する。
【００３８】
重要度「１」は、この重要度「１」が定義されたパラメータに対するアクセスであって、このパラメータを所有する制御部品以外の制御部品である外部制御部品からのアクセスを、不正なアクセスと定義付けるものである。尚、本実施例で言うパラメータに対するアクセスとは、パラメータへの書込動作を伴うアクセス及びパラメータへの参照動作を伴うアクセスのことである。
【００３９】
また、重要度「２」は、この重要度「２」が定義されたパラメータに対するアクセスであって、当該パラメータを所有する制御部品以外の制御部品である外部制御部品からの書込動作を伴うアクセスを不正なアクセスと定義付ける一方、外部制御部品からのパラメータへの参照動作を伴うアクセスを不正なアクセスではない正当なアクセスと定義付けるものである。
【００４０】
また、重要度「３」は、この重要度「３」が定義されたパラメータに対するアクセスであって、当該パラメータを所有する制御部品、及び、外部制御部品を含む全ての制御部品からのアクセスを不正なアクセスではない正当なアクセスと定義付けるものである。
【００４１】
車両制御システムを構成する各制御部品が所有するパラメータに対する重要度の定義付けは、車両制御システムの設計者によって、パラメータの不適切なアクセスが車両の安全性に与える影響や、外部制御部品からの参照や書込が必要であるか否か等を考慮して定められる。
【００４２】
例えば、重要度「１」については、外部制御部品からの参照や書込が必要なく、車両の安全性に大きな影響を与えるパラメータに付与される。また、重要度「２」については、外部制御部品からの参照については必要であるが書込については必要なく、意図しない書込によって車両の安全性に大きな影響を与えるパラメータに付与される。
【００４３】
また、重要度「３」については、外部制御部品からの意図しない書込があっても、車両の安全性に大きな影響を与えないパラメータに付与される。外部制御部品からの参照及び書込の両者が必要なパラメータに対しては、重要度「３」を付す必要があるのは言うまでもないが、その他には、車種等に応じた複数種類の車両制御システムの構築に際して共通した定義リスト２３を用いる場合であって、構築対象の車両制御システムによっては、外部制御部品からの参照及び書込の両者を許容する必要があるパラメータに対して、重要度「３」を付すことができる。
【００４４】
即ち、制御部品を、例えば車種やグレード等に応じた複数種類の車両制御システムで共通化する場合には、制御部品にアクセスする相手側の制御部品が、構築対象の車両制御システムによって変わる可能性がある。このような構成の違いに柔軟に対応するために、車両の安全性に大きな影響を与えないパラメータに対しては、重要度「３」を付すことができる。
【００４５】
以下には、車両に搭載された内燃機関（エンジン）を制御する電子制御装置であるエンジンＥＣＵ１００を例に挙げて、好ましい重要度の定義付け方法を説明する。構築対象の車両制御システムがエンジンＥＣＵ１００である場合、エンジンＥＣＵ１００に対しては、制御部品として、例えば、ウォッチドッグユニット１１０、電子スロットル制御ユニット１２０、水温算出ユニット１３０、燃料噴射制御ユニット１４０及び点火制御ユニット１５０等が組み込まれる。
【００４６】
ここで言うウォッチドッグユニット１１０は、エンジンＥＣＵ１００が備えるマイクロコンピュータのフリーズの発生を検知し、フリーズが生じた場合には、マイクロコンピュータをリセットする制御部品である。
【００４７】
一方、電子スロットル制御ユニット１２０は、エンジン水温やアクセル開度等の情報に基づき、電子スロットル開度を算出し、アクチュエータを通じて電子スロットル開度を制御する制御部品である。この電子スロットル制御ユニット１２０は、例えばプログラムとして上記マイクロコンピュータに組み込まれる。この場合には、マイクロコンピュータによる当該プログラムの実行により、電子スロットル制御ユニット１２０としての機能が、マイクロコンピュータ上で実現される。
【００４８】
また、水温算出ユニット１３０は、水温センサから得られたセンサ値に基づき、エンジン水温を算出する制御部品である。この水温算出ユニット１３０は、例えばプログラムとして上記電子スロットル制御ユニット１２０と同じマイクロコンピュータに組み込まれる。この場合には、マイクロコンピュータによる当該プログラムの実行により、水温算出ユニット１３０としての機能が、マイクロコンピュータ上で実現される。
【００４９】
この他、燃料噴射制御ユニット１４０は、電子スロットル開度やクランク角等の情報に基づき、最適な燃料噴射量を算出して、燃料噴射量を制御する制御部品であり、点火制御ユニット１５０は、電子スロットル開度や燃料噴射量やクランク角等の情報に基づき、点火時期を制御する制御部品である。この燃料噴射制御ユニット１４０や点火制御ユニット１５０についても、例えばプログラムとして上記マイクロコンピュータに組み込まれる。
【００５０】
このようなエンジンＥＣＵ１００において、ウォッチドッグユニット１１０は、他の制御部品に係る機能がプログラムにより実現される上記マイクロコンピュータの動作を監視するものであり、電子スロットル制御ユニット１２０等の他の制御部品からのアクセスが必要なパラメータを有さない制御部品である。また、ウォッチドッグユニット１１０は、マイクロコンピュータのフリーズを解消するためのものであり、フリーズが解消されない場合には、車両の安全性に大きな影響を与える可能性がある。そこで、ウォッチドッグユニット１１０が有するパラメータ（図２に示すパラメータ「ａ」）に対しては、重要度「１」を定義するのが好ましい。
【００５１】
また、電子スロットル制御ユニット１２０は、電子スロットル開度をパラメータに有するが、この電子スロットル開度のパラメータ値が、他の制御部品からのアクセスにより意図せず変更されると、車両の安全性に大きな影響を与える可能性がある。一方、この電子スロットル開度のパラメータ値については、燃料噴射制御や点火制御に際して参照されることを許容されるべきである。
【００５２】
そこで、電子スロットル制御ユニット１２０が有する電子スロットル開度のパラメータ（図２に示すパラメータ「ｂ」）に対しては、重要度「２」を定義するのが好ましい。尚、電子スロットル制御ユニット１２０により実現される機能が車両の安全性に与える影響が大きいことを考慮すれば、電子スロットル制御ユニット１２０が有する電子スロットル開度のパラメータを重要度「２」と定義するだけでなく、電子スロットル制御ユニット１２０が有する全てのパラメータを重要度「２」と定義することも考えられる。
【００５３】
この他、水温算出ユニット１３０は、エンジン水温をパラメータに有するが、このエンジン水温のパラメータ値が、他の制御部品からのアクセスにより意図せず変更されても、そのことがすぐさま車両の安全性に大きな影響を与えるとは考えにくい。また、エンジン水温のパラメータ値については、電子スロットル制御ユニット１２０等から参照されることを許容されるべきである。
【００５４】
そこで、水温算出ユニット１３０が有するエンジン水温のパラメータ（図２に示すパラメータ「ｃ」）に対しては、重要度「３」を定義するのが好ましい。尚、水温算出ユニット１３０により実現される機能が車両の安全性に与える影響が小さいことを考慮すれば、エンジン水温のパラメータを重要度「３」と定義するだけでなく、水温算出ユニット１３０が有する全てのパラメータを重要度「３」と定義することも考えられる。
【００５５】
続いて、コンパイル動作の実行指示が入力装置３０を通じてユーザから入力された際に、ＣＰＵ１１が実行するコンパイラ２１によって実現される処理の内容について、図４及び図５を用いて説明する。
【００５６】
ＣＰＵ１１は、コンパイル動作の実行指示が入力されると、ハードディスク装置２０にインストールされた上記コンパイラ２１に基づき、図４に示す処理を開始する。この処理を開始すると、ＣＰＵ１１は、入力装置３０を通じて、コンパイル対象の制御プログラムに対して付与された制御部品名の情報を取得する（Ｓ１００）。例えば、コンパイル対象の制御プログラムが電子スロットル制御ユニット１２０のプログラムである場合には、図２に例示するような制御部品名「ｔｈｒｏｔｔｌｅ」を取得する。
【００５７】
その後、ＣＰＵ１１は、コンパイル動作の実行指示と共に入力されたパス情報に基づき、コンパイル対象の制御プログラムのソースコードが格納されたファイルを、ハードディスク装置２０等から読み出し（Ｓ２００）、このファイルに格納された上記コンパイル対象の制御プログラムのソースコードを先頭から順に解析する（Ｓ３００）。
【００５８】
この解析処理では、パラメータの参照が行われるプログラムコード（命令文）、及び、パラメータへの書込が行われるプログラムコード（命令文）を検出する。そして、パラメータの参照が行われるプログラムコード、及び、パラメータへの書込が行われるプログラムコードのいずれか一方が検出されるまでは、Ｓ４００で否定判断してＳ６００に移行し、解析済のソースコード部分をオブジェクトコードに変換する。
【００５９】
但し、オブジェクトコードへの変換時には、変換対象のソースコード部分の文法チェックについても行い、文法エラーがある場合には、そのエラー情報を、表示装置４０を通じて画面表示すると共に、ログファイルに登録する。このログファイルは、図４に示す処理の実行結果を格納するためのものであり、コンパイル動作の実行指示が入力されて、図４に示す処理が実行される度、その実行開始時にハードディスク装置２０上に作成される。
【００６０】
Ｓ６００の処理を終了すると、ＣＰＵ１１は、現時点で図４に示す処理の終了条件が満足されているか否かを判断し（Ｓ７００）、終了条件が満足されていない場合には、Ｓ３００に戻って、ソースコードの解析を継続する。一方、文法エラーによりコンパイル動作を継続できない場合や、コンパイル対象のソースコードの全てをオブジェクトコードに変換した場合には、上記終了条件が満足されたと判断して（Ｓ７００でＹｅｓ）、図４に示す処理を終了する。尚、コンパイル後の制御プログラム（オブジェクトコード）は、ハードディスク装置２０等の指定された場所に格納される。
【００６１】
また、Ｓ３００におけるソースコード解析によって、パラメータの参照が行われるプログラムコード、及び、パラメータへの書込が行われるプログラムコードのいずれか一方が検出されると、ＣＰＵ１１は、Ｓ４００で肯定判断して、Ｓ５００に移行し、該当プログラムコードに含まれる参照対象又は書込対象のパラメータ毎に、このパラメータを検査対象パラメータとして図５に示す正当性チェック処理を実行する。
【００６２】
ここで言う参照対象のパラメータとは、値が参照されるパラメータのことであり、書込対象のパラメータとは、書込が行われる（換言すれば値が更新される）パラメータのことである。そして、パラメータ毎の正当性チェック処理が完了すると、Ｓ６００に移行して、このソースコード部分をオブジェクトコードに変換し、後続の処理を実行する。
【００６３】
正当性チェック処理では、検査対象パラメータと同一のパラメータ名を示す重要度定義データを定義リスト２３から読み出し、この重要度定義データが示す検査対象パラメータの所有元の制御部品名と、Ｓ１００で取得したコンパイル対象の制御プログラムの制御部品名とが一致するか否かを判断することによって、検査対象パラメータが、コンパイル対象の制御プログラムにて定義されたパラメータであるか否かを判断する（Ｓ５１０）。
【００６４】
尚、制御部品名の一致判断に代えて、コンパイル対象の制御プログラム（ソースコード）に、検査対象パラメータの定義文があるか否かによって、検査対象パラメータが、コンパイル対象の制御プログラムにて定義されたパラメータであるか否かを判断してもよい。
【００６５】
そして、検査対象パラメータが、コンパイル対象の制御プログラムにて定義されたパラメータであると判断すると（Ｓ５１０でＹｅｓ）、検査対象パラメータに対するアクセス（参照及び書込）が正当なものであると取り扱って、後続の処理（Ｓ５２０〜Ｓ５６０）を実行せずに、正当性チェック処理を終了する。
【００６６】
一方、検査対象パラメータが、コンパイル対象の制御プログラムにて定義されたパラメータではないと判断すると（Ｓ５１０でＮｏ）、検査対象パラメータが書込対象のパラメータであるか否かを判断する（Ｓ５２０）。
【００６７】
例えば、Ｃ言語の代入演算子「＝」は、左辺に記載されたパラメータに、右辺に記載された値を代入する命令である。例えば、「ａ＝２」は、パラメータａに値２を書き込むことを意味する命令である。従って、検査対象パラメータが、コンパイル対象の制御プログラムにおいて代入演算子「＝」の左辺に記載されたパラメータである場合には、書込対象のパラメータ（即ち、書込の行われるパラメータ）であると判断する。
【００６８】
そして、検査対象パラメータが書込対象のパラメータであると判断すると（Ｓ５２０でＹｅｓ）、検査対象パラメータの重要度定義データに基づき、検査対象パラメータの重要度が値１又は２に定義されているか否かを判断する（Ｓ５３０）ことによって、検査対象パラメータに対するアクセスが不正なものであるか否かを判断する。
【００６９】
そして、検査対象パラメータの重要度が値３に定義されており、検査対象パラメータに対するアクセスが不正なものではないと判断すると（Ｓ５３０でＮｏ）、Ｓ５４０の処理を実行せずに、正当性チェック処理を終了し、検査対象パラメータの重要度が値１又は２に定義されており、検査対象パラメータに対するアクセスが不正なものであると判断すると（Ｓ５３０でＹｅｓ）、Ｓ５４０の処理を実行した後に、正当性チェック処理を終了する。
【００７０】
具体的に、Ｓ５４０では、検査対象パラメータに対する不正アクセス情報を、表示装置４０を通じて画面表示すると共に、上記ログファイルに登録する。例えば、不正アクセス情報は、上記制御プログラム（ソースコード）における検査対象パラメータの記述された位置の情報（プログラム行数等の情報）と、不正アクセスの発生しているパラメータ名（即ち、検査対象パラメータの名称）の情報と、この検査対象パラメータを所有する制御部品名の情報とを含む情報とすることができる。この制御部品名については、検査対象パラメータの重要度定義データから特定することができる。
【００７１】
一方、検査対象パラメータが上記書込対象のパラメータではないと判断すると（Ｓ５２０でＮｏ）、当該検査対象パラメータは、必然的に参照対象のパラメータに該当することになるため、ＣＰＵ１１は、Ｓ５５０に移行し、検査対象パラメータの重要度定義データに基づき、検査対象パラメータの重要度が値１に定義されているか否かを判断する。この判断によって、検査対象パラメータへのアクセスが不正なものであるか否かを判断する。
【００７２】
尚、Ｃ言語の場合には、代入演算子「＝」の右辺に記述されたパラメータや、比較演算子（「＜」「＞」「＝＝」「！＝」等）又は論理演算子（「＆＆」「｜｜」「！」等）の両辺に記述されたパラメータが参照対象のパラメータの一例に該当する。
【００７３】
そして、検査対象パラメータの重要度が値１に定義されており、検査対象パラメータへのアクセスが不正なものであると判断すると（Ｓ５５０でＹｅｓ）、検査対象パラメータに対する不正アクセス情報を、表示装置４０を通じて画面表示すると共に、上記ログファイルに登録する（Ｓ５６０）。尚、不正アクセス情報としては、Ｓ５４０での処理と同様の形式の不正アクセス情報を出力することできる。その後、ＣＰＵ１１は、正当性チェック処理を終了する。
【００７４】
一方、検査対象パラメータの重要度が値２又は値３に定義されており、検査対象パラメータへのアクセスが不正なものではないと判断すると（Ｓ５５０でＮｏ）、Ｓ５６０の処理を実行せずに、正当性チェック処理を終了する。
【００７５】
以上、本実施例の情報処理装置１の構成について説明したが、本実施例の情報処理装置１によれば、定義リスト２３に定義付けられた各パラメータの重要度に基づき、コンパイル対象の制御プログラムにおいて、外部制御部品が所有するパラメータである外部パラメータへのアクセスが不正なアクセスでないかどうか判断し、不正なアクセスであれば、この情報をユーザに伝達するために、不正アクセス情報を画面表示及びファイル出力する。
【００７６】
従って、制御プログラムや車両制御システムの設計者等のユーザは、制御プログラムのコンパイル時に画面に表示される内容、又は、ログファイルの内容に従って、不正なアクセスの実行されるプログラムコードを容易に把握して、制御プログラムを、車両制御システムに組み込む前に容易に修正することができる。
【００７７】
即ち、この情報処理装置１を用いれば、ユーザは、複数の制御部品を組み合わせて車両制御システムを構築する際に、コンパイル対象の制御プログラムから他の制御部品へのアクセスが適切であるか否かを容易に判断することができ、車両制御システムに対して、適切な制御プログラムを組み込むことができる。
【００７８】
よって、この情報処理装置１によれば、不適切な制御プログラムの車両制御システムへの導入により、車両の安全性に対する影響の大きいパラメータが車両制御システム内において意図せずに書き換えられるなどのエラーが生じるのを抑えることができ、安全性の高い車両制御システムを構築することができる。
【００７９】
ところで、本発明は、上記実施例に限定されるものではなく、種々の態様を採ることができる。上記実施例では、その説明を簡単にするために、Ｓ３００において、パラメータへの参照が行われるプログラムコード及びパラメータへの書込が行われるプログラムコードを検出し、Ｓ６００において文法チェックを行うようにしたが、例えば、これらのプログラムコードの検出及び文法チェックは、Ｓ３００において同時に実行されても良い。
【００８０】
また、上記実施例の情報処理装置１には、アクセス権限の概念を導入して、コンパイル対象の制御プログラムのアクセス権限レベルに応じ、パラメータへのアクセスが不正なアクセスであるか否かの判断基準を変更するように情報処理装置１を構成してもよい。
【００８１】
例えば、アクセス権限レベルを、上記重要度と同じ値１から値３までの３段階の値を採るパラメータとして定義する。但し、ここでは、値が小さい程、アクセス権限の度合いが高いものとする。そして、Ｓ１００では、コンパイル対象の制御プログラムの制御部品名と共に、この制御プログラムのアクセス権限レベルの情報を、入力装置３０を通じて取得する。そして、Ｓ５１０では、検査対象パラメータが、コンパイル対象の制御プログラムにて定義されたパラメータであるか否かの判断と共に、コンパイル対象の制御プログラムのアクセス権限レベルが、検査対象パラメータに対して定義された重要度以下の値であるか否かを判断する。
【００８２】
そして、検査対象パラメータが、コンパイル対象の制御プログラムにて定義されたパラメータである場合には、勿論Ｓ５１０で肯定判断するが、検査対象パラメータが、コンパイル対象の制御プログラムにて定義されたパラメータでなくても、コンパイル対象の制御プログラムのアクセス権限レベルが、検査対象パラメータの重要度以下の値である場合には、Ｓ５１０で肯定判断するようにする。
【００８３】
即ち、検査対象パラメータが、コンパイル対象の制御プログラムにて定義されたパラメータでなく、且つ、コンパイル対象の制御プログラムのアクセス権限レベルが、アクセス先パラメータの重要度より大きい値である場合に限って、Ｓ５１０で否定判断し、Ｓ５２０以降の手順を上記実施例と同様の手順で実行するようにコンパイラ２１を構成する。
【００８４】
このような構成によれば、アクセス元の制御部品のアクセス権限レベルが、アクセス先パラメータの重要度以下の値である場合には、重要度に依らず、及び、パラメータへのアクセスが書込動作を伴うアクセスであるのか参照動作を伴うアクセスであるのかに依らず、そのパラメータへのアクセスが正当なアクセスであると判断され、アクセス元の制御部品のアクセス権限レベルが、アクセス先のパラメータの重要度より大きい値である場合に限って、重要度に基づき、アクセスの正当／不当が判断される。
【００８５】
この例によれば、パラメータの重要度として値１のような外部からのアクセスが強固に制限される重要度を設定しても、アクセス元制御部品のアクセス権限レベルの調整により、そのパラメータに対するアクセスを不正なアクセスとしなくて済み、重要度とアクセス権限レベルとの調整により、情報処理装置１を用いて、制御部品間のアクセスの適否を詳細に判断することができるといった利点がある。
【００８６】
最後に、用語間の対応関係について説明する。情報処理装置１は、検査装置の一例に対応し、ＣＰＵ１１が実行するＳ３００及びＳ４００の処理は、検出手段によって実現される処理の一例に対応する。また、ＣＰＵ１１が実行するＳ５１０〜Ｓ５３０，Ｓ５５０の処理は、判断手段によって実現される処理の一例に対応し、ＣＰＵ１１が実行するＳ５４，Ｓ５６０の処理は、出力手段によって実現される処理の一例に対応し、ＣＰＵ１１が実行するＳ６００の処理は、コンパイル手段によって実現される処理の一例に対応する。
【符号の説明】
【００８７】
１…情報処理装置、１０…演算装置、１１…ＣＰＵ、１３…ＲＡＭ、２０…ハードディスク装置、２１…コンパイラ、２３…定義リスト、３０…入力装置、４０…表示装置、５０…ドライブ装置、１００…エンジンＥＣＵ、１１０…ウォッチドッグユニット、１２０…電子スロットル制御ユニット、１３０…水温算出ユニット、１４０…燃料噴射制御ユニット、１５０…点火制御ユニット
【図１】
2013037398.tif 000003
【図２】
2013037398.tif 000004
【図３】
2013037398.tif 000005
【図４】
2013037398.tif 000006
【図５】
2013037398.tif 000007