(57)【要約】【課題】車内通信システムのシステム設計情報からソフトウェアを生成する技術において、システム設計情報の誤りを検出したとしても、誤りの内容によってはその後のソフトウェア生成を許可する。【解決手段】ソフトウェア生成装置は、検出したシステム設計情報の誤りをエラー項目として記録し（７６１）、エラー項目が記録されている場合には当該システム設計情報に基づくソフトウェアの生成を禁止し、記録されていない場合には当該システム設計情報に基づくソフトウェアの生成を許可する。しかし、ソフトウェア生成装置は、エラー無視項目のいずれかに合致するする誤りを、エラー項目として記録する対象から除外する。【選択図】 図７
2009031985.tif 000002
【特許請求の範囲】
【請求項１】
車両内で互いに通信を行う複数のＥＣＵから成る車内通信システムのうちいずれかのＥＣＵにおいて実行されるソフトウェアを、前記車内通信システムの構成および作動に対する設計内容を示すシステム設計情報に基づいて生成するためのソフトウェア生成装置であって、
前記システム設計情報中の誤りをエラー項目として検出して記憶媒体に記録する検出手段と、
前記検出手段が検出した誤りのうち、記憶媒体に記録されたエラー無視項目のいずれかに合致するものを、前記エラー項目として前記記憶媒体に記録する対象から除外し、前記エラー無視項目のいずれにも合致しないものを前記エラー項目として前記記憶媒体に記録する対象に残すフィルタ手段と、
前記フィルタ手段の作動が行われた結果、エラー項目が１つ以上残った場合、前記システム設計情報に基づく前記ソフトウェアの生成を禁止し、また、エラー項目が１つも残らなかった場合、前記システム設計情報に基づく前記ソフトウェアの生成を許可する禁止・許可手段と、を備えたことを特徴とするソフトウェア生成装置。
【請求項２】
前記検出手段は、あらかじめ記憶媒体に記録された１つ以上の検証項目のそれぞれについて、当該検証項目に付随する検出条件を満たす構成要素を前記システム設計情報から探し、満たす構成要素があれば、当該検証項目を前記エラー項目として検出し、
前記記憶媒体に記録されたエラー無視項目は、検証項目を示しており、
前記フィルタリング手段は、前記記憶媒体にエラー無視項目として記録された前記検証項目に、エラー項目として検出された前記検証項目が合致する場合、当該エラー項目に係る誤りを、当該エラー無視項目に合致する誤りであるとすることを特徴とする請求項１に記載のソフトウェア生成装置。
【請求項３】
前記検出手段は、あらかじめ記憶媒体に記録された１つ以上の検証項目のそれぞれについて、当該検証項目に付随する検出条件を満たす構成要素を前記システム設計情報から探し、満たす構成要素があれば、当該検証項目を前記エラー項目として検出し、
前記記憶媒体に記録されたエラー無視項目は、前記車内通信システム中の構成要素を示しており、
前記フィルタリング手段は、エラー項目として検出された検証項目の対象となる構成要素または当該構成要素に関連する構成要素のうちいずれかが、前記記憶媒体にエラー無視項目として記録された構成要素に合致することに基づいて、当該エラー項目に係る誤りを、当該エラー無視項目に合致する誤りであるとすることを特徴とする請求項１または２に記載のソフトウェア生成装置。
【請求項４】
前記禁止・許可手段は、前記フィルタリング手段の作動が行われた結果、エラー項目が１つも残らなかった場合、ユーザに当該フィルタリング手段の作動が行われた旨の通知および前記ソフトウェアの生成への同意の問い合わせを行い、当該問い合わせに対してユーザが同意の応答を行ったことに基づいて、前記システム設計情報に基づく前記ソフトウェアの生成を許可することを特徴とする請求項１ないし３のいずれか１つに記載のソフトウェア生成装置。
【請求項５】
前記禁止・許可手段は、前記フィルタリング手段による作動が行われた結果、エラー項目が１つも残らなかった場合、当該フィルタリング手段による作動が行われた旨を示すコメント文を、前記ソフトウェアのソースコードの一部に含めることを特徴とする請求項１ないし４のいずれか１つに記載のソフトウェア生成装置。
【請求項６】
前記禁止・許可手段は、前記フィルタリング手段による作動が行われた結果、エラー項目が１つも残らなかった場合、前記ソフトウェアの製品版を作成することを禁止する命令文を、前記ソフトウェアのソースコードの一部に含めることを特徴とする請求項１ないし５のいずれか１つに記載のソフトウェア生成装置。
【請求項７】
前記検出手段が検出する誤りは、前記システム設計情報中の前記車内通信システムにおける通信データを規定する情報と、前記システム設計情報に含まれる他の情報と、の矛盾であることを特徴とする請求項１ないし６のいずれか１つに記載のソフトウェア生成装置。
【請求項８】
車両内で互いに通信を行う複数のＥＣＵから成る車内通信システムのうちいずれかのＥＣＵにおいて実行されるソフトウェアを、前記車内通信システムの構成および作動に対する設計内容を示すシステム設計情報に基づいて生成するためのソフトウェア生成装置に用いるプログラムであって、
前記システム設計情報中の誤りをエラー項目として検出して記憶媒体に記録する検出手段、
前記検出手段が検出した誤りのうち、記憶媒体に記録されたエラー無視項目のいずれかに合致するものを、前記エラー項目として前記記憶媒体に記録する対象から除外し、前記エラー無視項目のいずれにも合致しないものを前記エラー項目として前記記憶媒体に記録する対象に残すフィルタ手段、および
前記フィルタリング手段による作動が行われた結果、エラー項目が１つ以上残った場合、前記システム設計情報に基づく前記ソフトウェアの生成を禁止し、また、エラー項目が１つも残らなかった場合、前記システム設計情報に基づく前記ソフトウェアの生成を許可する禁止・許可手段として、コンピュータを機能させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェア生成装置、および、ソフトウェア生成装置に用いるプログラムに関する。
【背景技術】
【０００２】
従来、車内通信システム中の複数のＥＣＵ間でデータ通信を行う技術が実現している。このような車内通信システム中のＥＣＵにおいて実行されるソフトウェアは、例えば以下のような方法で開発される。
【０００３】
まず、この車内通信システムについてのシステム設計情報を、車内通信システム全体の設計者が作成する。そして、当該車内通信システム中の特定のＥＣＵ用のソフトウェアの設計者が、この作成されたシステム設計情報に基づいて、ソフトウェア作成ツール等のコンピュータプログラムを用いて、ソフトウェアを作成する（例えば、特許文献１参照）。
【特許文献１】特開２００４−２８０７８６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
このような技術分野においては、誤りを含んだシステム設計情報がソフトウェア設計者に渡されてしまう場合がある。誤りには、システム設計情報内部の矛盾等がある。
【０００５】
システム設計情報内部の矛盾の例としては、例えば、以下のようなものがある。
（１）あるソフトウェア（例えばエンジンの燃料噴射量を算出するソフトウェア）が異なる２つのＥＣＵに搭載されるように規定されている
（２）あるＥＣＵから別のＥＣＵにデータが送信されるように規定されているにもかかわらず、それら２つのＥＣＵは同じ通信バスに接続されていない
そこで、システム設計情報からソフトウェアを生成する前に、システム設計情報の誤りを自動的に検出し、誤りを検出した場合、ソフトウェアの生成を禁止するような技術を、ソフトウェア生成装置において採用することが考えられる。
【０００６】
しかし、システム設計情報において誤りが検出されたとしても、必ずしも以後のソフトウェア生成を禁止したくない場合がある。例えば、システム設計情報中の誤りが検出されたとしても、車内通信システム全体の設計者がその誤りの内容を通知され、その誤りを修正したバージョンのシステム設計情報を提供するまで、ソフトウェア開発の作業を停止して待つほど開発スケジュールの余裕がない場合がある。
【０００７】
本発明は上記点に鑑み、車内通信システムのシステム設計情報からソフトウェアを生成する技術において、システム設計情報の誤りを検出したとしても、誤りの内容によってはその後のソフトウェア生成を許可する技術を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記目的を達成するための本発明の特徴は、ソフトウェア生成装置が、システム設計情報中の誤りをエラー項目として検出して記憶媒体に記録し、さらに、検出した誤りに対して、記憶媒体に記録されたエラー無視項目を用いたフィルタリング処理を行う。
【０００９】
ここでフィルタリング処理とは、検出した誤りのうち、エラー無視項目のいずれかに合致するものを、エラー項目として記憶媒体に記録する対象から除外し、エラー無視項目のいずれにも合致しないものをエラー項目として記憶媒体に記録する対象に残す処理をいう。
【００１０】
さらにソフトウェア生成装置は、フィルタリング処理が行われた結果エラー項目が１つ以上残った場合、当該システム設計情報に基づくソフトウェアの生成を禁止し、また、エラー項目が１つも残らなかった場合、当該システム設計情報に基づくソフトウェアの生成を許可することを特徴とする。ここで、ソフトウェア生成装置は、ソフトウェアの一部を生成するものであってもよい。
【００１１】
このように、ソフトウェア生成装置は、検出したシステム設計情報の誤りをエラー項目として記録し、エラー項目が記録されている場合には当該システム設計情報に基づくソフトウェアの生成を禁止し、記録されていない場合には当該システム設計情報に基づくソフトウェアの生成を許可する。しかし、ソフトウェア生成装置は、エラー無視項目のいずれかに合致するする誤りを、エラー項目として記録する対象から除外する。したがって、システム設計情報の誤りのうち、あらかじめ定められたものについては、仮にその誤りが検出されたとしても、それによってソフトウェアの生成を禁止することがない。
【００１２】
このようになっているので、車内通信システムのシステム設計情報からソフトウェアを生成する技術において、システム設計情報の誤りを検出したとしても、誤りの内容によってはその後のソフトウェア生成を許可することができる。
【００１３】
ここで、ソフトウェア生成装置は、あらかじめ記憶媒体に記録された１つ以上の検証項目のそれぞれについて、当該検証項目に付随する検出条件を満たす構成要素をシステム設計情報から探し、満たす構成要素があれば、当該検証項目をエラー項目として検出するようになっていてもよい。
【００１４】
ここでいう検出条件とは、誤りを検出するための条件であり、システム設計情報中の構成要素の属性についての条件である。例えば、「（１）構成要素Ａはアプリケーション間で送受信されるように規定されたアプリケーションデータであり、（２）構成要素Ｂはネットワーク内を流れるように規定されたネットワークデータであり、（３）構成要素Ａと構成要素Ｂとは対応関係にあり、（４）構成要素Ａの通信周期は、構成要素Ｂの通信周期よりも短い」という条件が、検出条件の一例に相当する。
【００１５】
なお、システム設計情報の構成要素とは、ＥＣＵ、通信バス、通信データ等、システム設計情報において属性（例えば、接続関係、通信周期等）が規定される対象のデータ、データの送信元、データの宛先、データの伝送媒体等をいう。
【００１６】
このように、検証項目を用いた誤りの検出を行う場合、記憶媒体に記録されたエラー無視項目は、検証項目を示すようになっていてもよい。そして、ソフトウェア生成装置は、当該記憶媒体にエラー無視項目として記録された検証項目に、エラー項目として検出された検証項目が合致する場合、当該エラー項目に係る誤りを、当該エラー無視項目に合致する誤りであるとするようになっていてもよい。
【００１７】
このようになっていることで、ソフトウェア生成装置は、検証項目毎に、検出した誤りのエラー項目からの除外、非除外を切り分けることができる。したがって、ソフトウェア生成装置のユーザが無視したい検証項目は除外対象とし、無視したくない検証項目は除外対象としないようにすることができる。
【００１８】
また、上記のように検証項目を用いた誤りの検出を行う場合、記憶媒体に記録されたエラー無視項目は、車内通信システム中の構成要素を示すようになっていてもよい。さらにこの場合、ソフトウェア生成装置は、エラー項目として検出された検証項目の対象となる構成要素または当該構成要素に関連する構成要素のうちいずれかが、前記記憶媒体にエラー無視項目として記録された構成要素に合致することに基づいて、当該エラー項目に係る誤りを、当該エラー無視項目に合致する誤りであるとするようになっていてもよい。
【００１９】
このようになっていることで、ソフトウェア生成装置は、システム設計情報の構成要素毎に、検出した誤りの除外、非除外を切り分けることができる。したがって、あるＥＣＵのソフトウェアの設計者が、自らの作業に関係がないＥＣＵ、データ等についての誤りは除外対象とし、自らの作業に関係がある構成要素についての誤りは除外対象としないようにすることができる。
【００２０】
また、ソフトウェア生成装置は、フィルタリング処理が行われた結果、エラー項目が１つも残らなかった場合、当該フィルタリング処理が行われた旨の通知、およびソフトウェアの生成への同意の問い合わせを、ユーザに対して行い、当該問い合わせに対してユーザが同意の応答を行ったことに基づいて、システム設計情報に基づくソフトウェアの生成を許可するようになっていてもよい。
【００２１】
このようにすることで、ユーザに対して、システム設計情報中の誤りがあることの確認、およびその誤りにも関わらずソフトウェアの生成を進めることへの同意を取り付けた上で、ソフトウェアの生成を許可する。したがって、ユーザに、これから先のソフトウェアの生成作業が自己責任において行うものであることを認識させることができる。
【００２２】
また、ソフトウェア生成装置は、フィルタリングが行われた結果、エラー項目が１つも残らなかった場合、当該フィルタリングが行われた旨を示すコメント文を、ソフトウェアのソースコードの一部に含めるようになっていてもよい。このようにすることで、当該ソースコードの内容をユーザが読んだとき、システム設計情報中の誤りがあるにもかかわらずソースコードが生成された可能性があることを確認することができる。
【００２３】
また、ソフトウェア生成装置は、フィルタリングが行われた結果、エラー項目が１つも残らなかった場合、ソフトウェアの製品版を作成することを禁止する命令文を、生成するソフトウェアのソースコードの一部に含めるようになっていてもよい。このようにすることで、当該ソフトウェアの非製品版を生成することができても、当該ソフトウェアの製品版を生成することができなくなる。したがって、誤りを含むシステム設計情報に基づいて生成されたソフトウェアを、誤って販売製品に組み込んでしまう可能性を低減することができる。
【００２４】
また、ソフトウェア生成装置が検出する誤りは、システム設計情報中の車内通信システムにおける通信データを規定する情報と、システム設計情報に含まれる他の情報と、の矛盾であってもよい。なお、本発明の特徴は、プログラムとしても実現することができる。
【発明を実施するための最良の形態】
【００２５】
以下、本発明の一実施形態について説明する。図１に、車内通信システム６０において、複数のＥＣＵ（ＥＣＵ−Ｅ０１、ＥＣＵ−Ｅ０２、ＥＣＵ−Ｅ０３）のそれぞれが車両内の通信バスＢ１、Ｂ２のいずれかまたは両方に接続されている状態の例を示す。本実施形態は、これら複数のＥＣＵのそれぞれに搭載されるＣＰＵ（図示せず）に実行させるソフトウェアの作成の手順およびその作成の手順において用いる装置について説明する。
【００２６】
図２に、各ＣＰＵにおいて実行されるソフトウェア群のソフトウェア階層構造を示す。各ＣＰＵが実行するソフトウェアは、ソフトウェアプラットフォーム（以下、ソフトウェアＰＦという）１、コンフィギュレーションコード（図中では、コンフィグコードと記す）２、およびアプリケーション３に分けられる。なお、コンフィギュレーションコード２は、ソフトウェアＰＦ１の一部であると捉えてもよいし、ソフトウェアＰＦ１とは別個のものと捉えてもよい。
【００２７】
ソフトウェアＰＦは、当該ＣＰＵを搭載するＥＣＵのハードウェアを直接駆動するためのプログラム群である。したがって、ソフトウェアＰＦの構成は、当該ＥＣＵのハードウェア構成に強く依存している。ソフトウェアＰＦの例としては、ＯＳ（例えばＯＳＥＫ−ＯＳ（登録商標））、デバイスドライバがある。
【００２８】
アプリケーションは、ソフトウェアＰＦの提供する機能を利用することで、当該ＣＰＵを搭載するＥＣＵのハードウェアを駆動するソフトウェア群である。アプリケーションとしては、例えば、当該ＥＣＵがエンジンＥＣＵであれば、エンジン点火タイミングの計算のために必要な諸量（アクセル開度、エンジン回転速等）を他のＥＣＵ（あるいは同一ＥＣＵ中の他のＣＰＵ）から受信し、それら受信した情報から点火タイミングを算出し、算出した点火タイミングが実現するよう、インジェクタを制御する処理を実現するためのソフトウェアがある。
【００２９】
ソフトウェアＰＦが提供する機能のアプリケーションによる利用は、例えば、ソフトウェアＰＦが、ハードウェアを用いた作動（例えば、アクチュエータへの制御信号の出力、センサからの検出信号の取得、他のＥＣＵとの間の信号の送受信）を実行するためのアプリケーションインターフェース（以下ＡＰＩという）を提供し、アプリケーションが、必要に応じてそれらＡＰＩを呼び出すことで実現する。
【００３０】
異なるＥＣＵに搭載されるソフトウェアＰＦは、共通のＡＰＩをアプリケーションに提供するようになっていることが多い。したがって、アプリケーションの作成においては、ＥＣＵのハードウェア構成を意識してコーディングする必要がなくなる。
【００３１】
コンフィギュレーションコードは、アプリケーションが扱う通信用のデータの詳細情報（例えば、送受信周期、初期値、フェイル値）を含んでいる。アプリケーションが扱う通信用のデータとは、当該アプリケーションが、他のＣＰＵで実行される他のアプリケーションと受け渡しをするデータをいう。通信相手のアプリケーションが同じＥＣＵ内の他のＣＰＵで実行される場合には、当該データはＣＰＵ間通信のデータとなる。通信相手のアプリケーションが他のＥＣＵ内のＣＰＵで実行される場合には、当該通信データはＥＣＵ間通信のデータとなる。また、コンフィギュレーションコードは、ソフトウェアＰＦを利用して当該通信データの送信または受信を実現するためのプログラムを含む。ソフトウェアＰＦを利用して通信データの送信または受信を実現するためのプログラムとは、具体的には、データの送受信用の関数プログラム（以下、通信データ関数という）である。これらの通信データ関数は、ソフトウェアＰＦの提供するＡＰＩを利用している。そして、アプリケーションは、これらデータ送受信用の通信データ関数を呼び出すことで、データの送受信を実現するように記述されている。
【００３２】
あるＣＰＵにおけるコンフィギュレーションコードは、当該ＣＰＵで実行される全アプリケーションが扱う通信データの種類毎に１つのデータ送受信用関数を有するようになっている。
【００３３】
あるＣＰＵ用のソフトウェアの実行イメージ（すなわちオブジェクトコード）は、図３に示すように、当該ＣＰＵ用のソフトウェアＰＦ、コンフィギュレーションコード、アプリケーションをコンパイルしてリンク（本明細書においては、スタティックリンクをいう）することで作成される。
【００３４】
図４に、コンフィギュレーションコードの生成の方法を概略的に示す。コンフィギュレーションコード８は、コンフィグコード生成装置５０において実行されるプログラムであるコンフィグツール７の処理によって作成される。
【００３５】
コンフィグコード生成装置５０は、図示しない演算回路（すなわちＣＰＵ）、ＲＡＭ、ＲＯＭ、ハードディスクドライブ（記憶媒体の一例に相当する）、操作装置（キーボード、マウス等）、ディスプレイ等を備えている。当該演算回路は、ＲＡＭまたはハードディスクドライブに記憶されているコンフィグツール７を読み出して実行する。演算回路がコンフィグツール７を実行しているとき、コンフィギュレーションコード８の作成者であるユーザは、後述するエラー無視項目リストの情報を含むシステム設計情報４等の情報を参照し、参照した情報を、操作装置を操作することで、演算回路に入力する。演算回路は、これら入力された情報に基づいて、コンフィギュレーションコード８を生成し、ハードディスクドライブに記録する。また、コンフィギュレーションコード８の生成のためにコンフィグツール７で用いられる設定情報は、プロジェクト情報５としてハードディスクドライブに記録される。
【００３６】
なお、図３で示した、コンパイル、リンク、実行イメージの生成の処理については、コンフィグコード生成装置５０の演算回路が行うようになっていてもよいし、コンフィグコード生成装置５０以外の装置が行うようになっていてもよい。コンフィグコード生成装置５０以外の装置がコンパイル、リンク、実行イメージの生成を行う場合であっても、コンフィグコード生成装置５０は、本発明のソフトウェア生成装置に該当する。なぜなら、コンフィギュレーションコード８は最終的に作成されるオブジェクトコードの一部でもあるからである。
【００３７】
図５に、システム設計情報４の一例を模式的に示す。システム設計情報は、車内通信システム６０中の各構成要素についての属性を記述する情報である。システム設計情報の構成要素とは、例えば、車内通信システム６０中のＥＣＵ（図５においてはＥＣＵ−Ｅ０１、Ｅ０２）のそれぞれ、アプリケーション（図５においてはアプリケーションＡ０１、Ａ０２）のそれぞれ、通信バス（図５においてはバスＢ１）のそれぞれ、通信データ（図５においてはデータＡ、フレーム１中のＣＡＮＩＤ１、Ｆ１データ１およびＦ１データ２）のそれぞれ等がある。このように、システム設計情報の構成要素は、データ、データの送信元、送信先、データの伝送媒体である。
【００３８】
各構成要素の属性としては、例えば、各データの送信元、送信先、送信媒体、データ型、各データの送信周期（すなわち更新周期）がある。図５の例においては、データＡについては、送信元がアプリケーションＡ０１に規定され、送信先がアプリケーションＡ０２に規定され、データ型が符号付１６ビット整数に規定され、更新周期が６４ミリ秒に規定されている。また、Ｆ１データ１については、フレーム１に含まれる旨規定されている。また、フレーム１は、送信元がＥＣＵ−Ｅ０１に規定され、送信先がＥＣＵ−Ｅ０２に規定され、データ伝送媒体がバスＢ１に規定され、更新周期が１００ミリ秒に規定されている。
【００３９】
なお、データＡは、アプリケーション間で送受信されるように規定されているので、アプリケーションデータである。また、フレーム１中のＦ１データ１、Ｆ１データ２は、ＥＣＵ間で送受信されるように規定されているので、ネットワークデータである。
【００４０】
また、各構成要素の他の属性としては、例えば、各データ、アプリケーション、ＥＣＵ、通信バス間の利用関係がある。図５の例においては、データＡは、アプリケーションＡ０１、Ａ０２によって送受信されるので、アプリケーションＡ０１、Ａ０２によって利用されている。また、アプリケーションＡ０１は、ＥＣＵ−Ｅ０１によって実行されているので、ＥＣＵ−Ｅ０１によって利用されている。また、アプリケーションＡ０２は、ＥＣＵ−Ｅ０２によって実行されているので、ＥＣＵ−Ｅ０２によって利用されている。
【００４１】
また、各構成要素の他の属性としては、例えば、アプリケーションデータとネットワークデータの間の対応関係がある。図５の例においては、アプリケーションデータＡは、フレーム１のＦ１データ１としてバスＢ１中で伝送される旨規定されているので、データＡとＦ１データ１とは対応関係にある。
【００４２】
また、各構成要素の他の属性としては、例えば、ＥＣＵと通信バスとの間の接続関係がある。図５の例においては、ＥＣＵ−Ｅ０１、Ｅ０２が、バスＢ１に接続されるように規定されている。
【００４３】
このシステム設計情報は、車内通信システム６０全体の設計者が作成し、車内通信システム６０中の各ＥＣＵ用ソフトウェアの設計者に渡されるという形態で用いられることが多い。各ソフトウェアの設計者は、このシステム設計情報に基づいて、コンフィグツール７を利用して、自らが担当するＥＣＵにおいて実行されるソフトウェアの設計を行う。
【００４４】
図６に、コンフィグツール７の機能構成をブロック図で示す。コンフィグツール７を実行することで、コンフィグコード生成装置５０の演算回路は、ユーザ操作受付処理７１、コンフィグ編集処理７２、ファイル出力処理７３、ファイル入力処理７４、コンフィグコード生成処理７５、および検証処理７６を実現することができる。
【００４５】
ユーザ操作受付処理７１において、演算回路は、コンフィグコード生成装置５０の操作装置に対するユーザの操作内容に応じた作動を実現する。具体的には、システム設計情報等の編集を行う旨の操作が為されたとき、コンフィグ編集処理７２の実行を開始する。また、ファイルのセーブ（すなわちハードディスクドライブへの保存）を行う旨の操作が為されたとき、ファイル出力処理７３の実行を開始する。また、システム設計情報等のファイルのロード（すなわちハードディスクドライブからの読み出し）を行う旨の操作が為されたとき、ファイル入力処理７４の実行を開始する。また、コンフィギュレーションコード生成を行う旨の操作が為されたとき、コンフィグコード生成処理７５の実行を開始する。また、検証を行う旨の操作が為されたとき、検証処理７６の実行を開始する。
【００４６】
コンフィグ編集処理７２において、演算回路は、システム設計情報の内容の新規作成、追加、修正、削除等のユーザ操作を、操作装置を介して受け付け、受け付けた操作に従ってシステム設計情報をＲＡＭ上に生成し、またはＲＡＭ上のシステム設計情報に変更を加える。ファイル出力処理７３において、演算回路は、作成されたシステム設計情報、コンフィギュレーションコード等のデータを、ハードディスクドライブに記録する。
【００４７】
ファイル入力処理７４において、演算回路は、システム設計情報をハードディスクドライブ等の記憶媒体からＲＡＭに読み出す。コンフィグコード生成処理７５において、演算回路は、ＲＡＭ中のシステム設計情報からコンフィギュレーションコードを生成する。検証処理７６において、演算回路は、ＲＡＭ中のシステム設計情報の誤りを検証する。
【００４８】
なお、ファイル入力処理７４、コンフィグコード生成処理７５において、検証処理７６の実行が呼び出される場合がある。
【００４９】
以下、演算回路による検証処理７６、ファイル入力処理７４、コンフィグコード生成処理７５の詳細について説明する。図７に、検証処理７６のフローチャートを示す。検証処理７６において、演算回路は、まずステップ７６１で、ＲＡＭ中のシステム設計情報に対してエラー検出を行う。
【００５０】
具体的には、演算回路は、当該システム設計情報中の誤りを、誤り毎に１つのエラー項目として検出し、当該エラー項目をＲＡＭ中に記録する。
【００５１】
誤りの検出は、あらかじめＲＯＭまたはハードディスクドライブに１個または複数個記録された検証項目を用いて行う。図８に、検証項目の一例を示す。この例においては、１つの検証項目は、当該検証項目を一意に識別するための項目ナンバー、当該検証項目の種別を示す項目タイプ、および当該検証項目に付随する検出条件の情報を含んでいる。
【００５２】
検出条件とは、誤りを検出するための条件であり、システム設計情報中の構成要素の属性についての条件である。図８の例においては、「アプリケーションデータの送信周期がネットワークデータの送信周期より短い」という条件が、検出条件である。この条件は、対象とする構成要素をＡ、Ｂとすると、当該構成要素Ａ、Ｂの属性について「（１）構成要素Ａはアプリケーション間で送受信されるように規定されたアプリケーションデータであり、（２）構成要素Ｂはネットワーク内を流れるように規定されたネットワークデータであり、（３）構成要素Ａと構成用度Ｂとは対応関係にあり、（４）構成要素Ａの通信周期は、構成要素Ｂの通信周期よりも短い」という規定を与えている。
【００５３】
この条件が満たされている場合、アプリケーションデータの要求する通信頻度を、当該アプリケーションデータに対応するネットワークデータが達成できない。したがって、システム設計情報において、データＡを規定する情報と、Ｆ１データ１を規定する情報（システム設計情報に含まれる他の情報の一例に相当する）と、の間に矛盾が存在することになる。
【００５４】
他の検証項目の例としては、システム設計情報中の情報間の矛盾、アプリケーションデータとネットワークデータの間の重複した対応関係、ソフトウェアＰＦの制約事項無視、出力するよう規定されたソースコードの文法違反、等がある。システム設計情報中の情報間の矛盾としては、例えば、互いに異なるＥＣＵで実行される２つのアプリケーション間で送受信されるアプリケーションデータに対応するネットワークデータが存在しないという矛盾がある。
【００５５】
なお、演算回路は、ユーザが操作装置に対して所定の変更操作を行うことに基づいて、その操作内容に従った検証項目の変更を行うようになっていてもよい。
【００５６】
検証項目を用いた誤りの検出のために、演算回路は、検証項目のそれぞれについて、以下のような処理を行う。
（１）当該検証項目に付随する検出条件を満たす構成要素を当該システム設計情報から探索する
（２）探索の結果、当該検出条件を満たす構成要素（または構成要素の組）があれば、当該検証項目をエラー項目として検出する
（３）検出したエラー項目をＲＡＭに記録する
このような処理によって、（２）の手順で検出した構成要素（または構成要素の組）毎に、エラー項目が生成される。
【００５７】
ここで、（２）の手順について、図８に示した検証項目ＶＤ−１０００を例にとって、さらに詳しく説明する。（２）の手順において、演算回路は、以下のようなステップを実行する。
（２−１）システム設計情報に規定されている全ＥＣＵのそれぞれについて、（２−２）以降の処理を実行する。
（２−２）当該ＥＣＵが利用している全アプリケーションのそれぞれについて（２−３）以降の処理を実行する。
（２−３）当該アプリケーションが送信している全アプリケーションデータのそれぞれについて（２−４）以降の処理を実行する。
（２−４）当該アプリケーションデータが、ネットワークデータに対応付けられている場合、（２−５）以降の処理を実行する。
（２−５）当該アプリケーションデータについて規定された送信周期が、当該ネットワークデータを含むフレームについて規定された送信周期より短いか否かを判定し、短い場合、当該エラー項目を生成する。
【００５８】
この手順（２−５）で生成されるエラー項目は、当該検証項目の項目ナンバー、当該検証項目のタイプ、および、エラー検出位置情報を含む。エラー検出位置情報とは、エラー項目に対応する検出条件の対象となる構成要素（図８の例においてはアプリケーションデータおよびネットワークデータ）、または、当該構成要素に利用関係、対応関係等で関連する構成要素を示す情報である。具体的には、エラー検出位置情報は、当該アプリケーション、当該アプリケーションデータ、当該ＥＣＵ、当該ネットワークデータ、当該ネットワークデータを含むフレームを含む。
【００５９】
図９に、このような手順（２−１）〜（２−５）によって生成されるエラー項目のリストを例示する。この例においては、ＶＤ−１０００についての２つのエラー項目が、リストに含まれている。
【００６０】
ステップ７６１に続いてステップ７６２では、フィルタリング処理を行う。すなわち、エラー無視項目リストをＲＯＭまたはハードディスクドライブから読み出し、読み出したエラー無視項目リストのいずれかに合致するエラー項目を、エラー項目リストから削除し、読み出したエラー無視項目リストのいずれにも合致しないエラー項目を、エラー項目リストに残す。
【００６１】
エラー無視項目リストは、どのエラー項目をエラー項目リストから除外するかを指定する項目（すなわちエラー無視項目）を１つ以上有するリストである。なお、演算回路は、ユーザが操作装置に対して所定の変更操作を行うことに基づいて、その操作内容に従って、エラー無視項目リストの内容の変更を行うようになっていてもよい。
【００６２】
図１０に、エラー無視項目リストの一例を示す。この例においては、エラー無視項目リストは、２つのエラー無視項目を含んでいる。１つは、検証項目ナンバーＶＤ−１０００についてのエラー無視項目であり、もう１つは、検証項目ナンバーＶＤ−１００１についてのものである。
【００６３】
各エラー無視項目は、検出位置の情報を含んでいる場合と含んでいない場合とがある。検出位置の情報は、除外対象の構成要素を示す情報である。検証項目ナンバーＶＤ−１００１についてのエラー無視項目は、検出位置を含んでいない。このようなエラー無視項目に対して演算回路が行う除外処理は、当該エラー無視項目中の検証項目ナンバーと同じものを含むエラー項目を、エラー項目リストから除外し、それ以外のエラー項目を、エラー項目リストに残す。
【００６４】
また、検証項目ナンバーＶＤ−１０００についてのエラー無視項目は、データＢという検出位置を含んでいる。このようなエラー無視項目に対して演算回路が行う除外処理は、当該エラー無視項目中の検証項目ナンバーと同じものを含むエラー項目であり、かつ、当該検出位置をエラー検出位置としてとして有するすべてのエラー項目を、エラー項目リストから除外し、それ以外のエラー項目を、エラー項目リストに残す。
【００６５】
以上の２つの例のように、演算回路は、エラー無視項目として記録された検証項目に、エラー項目として検出された検証項目が合致する場合、当該エラー項目に係る誤りを、当該エラー無視項目に合致する誤りであるとする。
【００６６】
このようになっていることで、コンフィグコード生成装置５０は、検証項目毎に、検出した誤りの除外、非除外を切り分けることができる。したがって、ソフトウェア生成装置のユーザが無視したい検証項目は除外対象とし、無視したくない検証項目は除外対象としないようにすることができる。
【００６７】
また、後者（ＶＤ−１０００）の例においては、エラー項目として検出された検証項目の対象となる構成要素（エラー検出位置）または当該構成要素に関連する構成要素（エラー検出位置）のうちいずれかが、エラー無視項目として記録された構成要素（検出位置）に合致することに基づいて、当該エラー項目に係る誤りを、当該エラー無視項目に合致する誤りであるとして、エラー項目リストから除外する。
【００６８】
このようになっていることで、ソフトウェア生成装置は、システム設計情報の構成要素毎に、検出した誤りの除外、非除外を切り分けることができる。したがって、あるＥＣＵのソフトウェアの設計者が、自らの作業に関係がないＥＣＵ、データ等についての誤りは除外対象とし、自らの作業に関係がある構成要素についての誤りは除外対象としないようにすることができる。
【００６９】
なお、エラー無視項目リストの内容が空である場合、フィルタリング処理は行われない。ステップ７６２の後、検証処理７６の実行が終了する。このような検証処理７６によってシステム設計情報中の誤りをエラー項目として検出して記憶媒体に記録し、検出した誤りのうち、記憶媒体に記録されたエラー無視項目のいずれかに合致するものを、エラー項目としてＲＡＭ中のエラー項目リストに記録する対象から除外し、いずれにも合致しないものを、エラー項目に記録する対象として残す。
【００７０】
次に、ハードディスクドライブ中のシステム設計情報をＲＡＭに読み出すためのファイル入力処理７４の詳細について説明する。演算回路は、ファイル入力処理７４の実現のために、図１１にフローチャートで示すプログラムを実行する。
【００７１】
このプログラムの実行において、まずステップ７４１において、システム設計情報をハードディスクドライブからＲＡＭに読み出し、続いてステップ７４２で、上述の検証処理７６を実行する。これによって、当該システム設計情報についてのエラー項目リストが生成される。
【００７２】
続いてステップ７４４で、ステップ７２２の検証結果が「エラーなし」であるか否か、すなわち、エラー項目リストが空であるか否かを判定し、エラーなしであれば続いてステップ７４８で結果表示処理を実行する。
【００７３】
また、「エラーあり」であれば続いてステップ７４６を実行し、ステップ７４１で読み込んだシステム設計情報をＲＡＭ中から破棄する。これによって、このシステム設計情報からコンフィギュレーションコードを作成することが（すくなくとも再度システム設計情報がハードディスクドライブからＲＡＭに読み出されるまで）禁止される。ステップ７４６の後、続いてステップ７４８で結果表示処理を実行する。
【００７４】
結果表示処理を実現するために、演算回路は、図１２にフローチャートで示すプログラム２００を実行する。この結果表示処理２００の実行において、まずステップ２１０では、ＲＡＭ中のエラー無視項目リストが空であるか否か、すなわち、フィルタリング処理が行われなかったかまたは行われたか、を判定し、空でなければ続いてステップ２２０で、エラー無視項目リストをディスプレイに表示させ、さらに続いてステップ２３０を実行する。空であればステップ２２０を実行しないままステップ２３０を実行する。エラー無視項目リストが空であるということは、上述のステップ７６２のフィルタリング処理が、行われなかったことを意味しており、逆にエラー無視項目リストが空でないということは、フィルタリング処理が行われたことを意味している。
【００７５】
ステップ２３０では、直前に行われた検証処理７６の結果（例えば、エラー項目リスト）をディスプレイに表示する。続いてステップ２４０では、既にコンフィギュレーションコードを生成していれば、その生成結果を表示する。ファイル入力処理７４に続いて結果表示処理２００を実行した場合は、ステップ２４０ではディスプレイに何も表示させない。
【００７６】
次に、ＲＡＭ中のシステム設計情報に基づいてコンフィギュレーションコードを生成するためのコンフィグコード生成処理７５の詳細について説明する。演算回路は、コンフィグコード生成処理７５の実現のため、図１３にフローチャートで示すプログラムを実行する。
【００７７】
このプログラムの実行において、まずステップ７５１で、上述の検証処理７６を実行し、続いてステップ７５２で、ファイル入力処理７４のステップ７４２と同じ方法で、検証結果が「エラーなし」であるか否かを判定し、「エラーなし」であれば続いてステップ７５３を実行し、「エラーあり」であれば続いてステップ７５７で、上述の結果表示処理２００を実行する。
【００７８】
ステップ７５３では、エラー無視項目リストが空か否かを判定し、空であれば続いてステップ７５６でコード生成処理を実行する。ステップ７５２で「エラーなし」と判定され、続くステップ７５３でエラー無視項目リストが空であると判定されるということは、ステップ７５１における検証処理において、システム設計情報の誤りが検出されなかったということである。したがってこの場合は、このシステム設計情報に基づいてコンフィギュレーションコードを生成しても問題がない。
【００７９】
ステップ７５２で「エラーなし」と判定され、続くステップ７５３でエラー無視項目リストが空でないと判定されるということは、ステップ７５１における検証処理において、システム設計情報の誤りが検出されたものの、当該誤りについてのエラー項目が、エラー項目リストから削除された可能性があるということである。この場合には、ステップ７５４で、所定の表示をディスプレイに行わせる。所定の表示とは、システム設計情報の誤りを無視した可能性があるので、このシステム設計情報に基づいて作成されたコンフィギュレーションコードは保証対象外である旨の表示、および、その旨に同意するか否かを問い合わせる表示である。この表示は、フィルタリングが行われた旨の通知、およびコンフィギュレーションコードの生成への同意の問い合わせである。
【００８０】
続いてステップ７５５では、この問い合わせに対する応答が操作装置に対して行われるのを待ち、当該応答があると、この応答が同意の旨を示しているか非同意の旨を示しているかを判定する。同意の旨を示していれば続いてステップ７５６で、コンフィギュレーションコードの生成処理を実行し、逆に同意しない旨を示していれば、コンフィギュレーションコードの生成処理を行なわないままステップ７５７で結果表示処理２００を実行する。
【００８１】
このように、エラー項目リストからエラー項目のフィルタリングが行われた結果、エラー項目が１つも残らなかった場合、当該フィルタリングが行われた旨の通知、およびコンフィギュレーションコードの生成への同意の問い合わせを、ユーザに対して行い（ステップ７５４参照）、当該問い合わせに対してユーザが同意の応答を行ったことに基づいて、システム設計情報に基づくコンフィギュレーションコードの生成を許可し（ステップ７５６参照）、非同意の応答を行ったことに基づいて、システム設計情報に基づくコンフィギュレーションコードの生成を禁止する。
【００８２】
このようにすることで、ユーザに対して、システム設計情報中の誤りを無視した可能性のあることの確認、およびその誤りにも関わらずコンフィギュレーションコードの生成を進めることへの同意を取り付けた上で、コンフィギュレーションコードの生成を許可する。したがって、ユーザに、これから先のコンフィギュレーションコードの生成作業が自己責任において行うものであることを認識させることができる。
【００８３】
また、ステップ７５６のコード生成処理を実現するために、演算回路は、図１４にフローチャートで示すプログラム３００を実行する。このプログラムの実行において、まずステップ３１０で、コンフィギュレーションコードのヘッダ部を生成する。図１５に、コンフィギュレーションコードの一部を例示する。図１５の例においては、ステップ３１０で生成される部分は、１行目から６行目までの部分８１である。
【００８４】
続いてステップ３２０では、エラー無視項目リストが空であるか否か、すなわち、フィルタリングが行われなかったまたは行われたか、を判定し、空であれば続いてステップ３５０でテーブル部分を生成する。テーブル部分とは、コンフィギュレーションコードの主要部であり、対象とするＥＣＵでやりとりするデータを呼び出す関数等が含まれる部分である。図１５の例では、部分８４がテーブル部分に相当する。
【００８５】
ステップ３２０で、エラー無視項目リストが空でないと判定した場合（すなわち、システム設計情報の誤りを無視した可能性があると判定した場合）続いてステップ３３０で、フィルタリング処理を行った上で出力した暫定的なコンフィギュレーションコードである旨のコメント文を、ヘッダに追加する。図１５の例においては、ステップ３３０で追加される部分は、部分８２に相当する。
【００８６】
このように、ソフトウェア生成装置は、誤りの除外が行われた結果、エラー項目が１つも残らなかった場合、当該除外が行われた旨を示すコメント文を、ソフトウェアのソースコードの一部に含める。このようにすることで、当該ソースコードの内容をユーザが読んだとき、システム設計情報中の誤りがあるにもかかわらずソースコードが生成された可能性があることを確認することができる。
【００８７】
続いてステップ３４０では、製品バージョンの作成を禁止する命令文を、ヘッダ部に続く位置に付加する。図１５の例においては、ステップ３４０で追加される部分は、部分８３に相当する。この例における命令文は、プリプロセッサ用の命令文である。このような命令文を含むコンフィギュレーションコードを使って、製品版のオブジェクトコードを生成しようとした場合を考える。この場合、ユーザは、コンパイル時に、製品版のオブジェクトコードを生成する旨のオプション、具体的には、ＰＲＰＤＵＣＴ＿ＢＵＩＬＤオプションを、コンパイルオプションとして追加する。
【００８８】
このとき、プリプロセッサの実行において、図１５の部分８３における命令文によって、「エラー抑制状態にて生成したコードですので、製品には使用できません」というエラー表示がディスプレイに出力され、その後、コンパイルが中止される。
【００８９】
このように、演算回路は、フィルタリング処理が行われた結果、エラー項目が１つも残らなかった場合、ソフトウェアの製品版を作成することを禁止する命令文を、生成するソフトウェアのソースコードの一部としてのコンフィギュレーションコードに含める。このようにすることで、当該コンフィギュレーションコードを用いて当該ソフトウェアの非製品版を生成することができても、当該ソフトウェアの製品版を生成することができなくなる。したがって、誤りを含むシステム設計情報に基づいて生成されたソフトウェアを、誤って販売製品に組み込んでしまう可能性を低減することができる。
【００９０】
以上説明した通り、コンフィグコード生成装置５０は、検出したシステム設計情報の誤りをエラー項目として記録し（図７のステップ７６１参照）、エラー項目が記録されている場合には当該システム設計情報に基づくコンフィギュレーションコードの生成を禁止し（図１３のステップ７５２→７５７、および、図１１のステップ７４４→７４６参照）、記録されていない場合には当該システム設計情報に基づくコンフィギュレーションコードの生成を許可する（図１３のステップ７５２→７５６、および、図１１のステップ７４４→７４８参照）。しかし、コンフィグコード生成装置５０は、エラー無視項目のいずれかに合致するする誤りを、エラー項目として記録する対象から除外する（図７のステップ７６２参照）。したがって、システム設計情報の誤りのうち、あらかじめ定められたものについては、仮にその誤りが検出されたとしても、それによってソフトウェアの生成を禁止することがない。
【００９１】
このようになっているので、車内通信システムのシステム設計情報からソフトウェアを生成する技術において、システム設計情報の誤りを検出したとしても、誤りの内容によってはその後のソフトウェア生成を許可することができる。
【００９２】
なお、上記実施形態においては、コンフィグコード生成装置５０がソフトウェア生成装置の一例に相当し、コンフィグツール７がソフトウェア生成装置用のプログラムの一例に相当し、コンフィグコード生成装置５０のＲＡＭ、ＲＯＭ、フラッシュメモリ、ハードディスクドライブ等が記憶媒体の一例に相当する。また、コンピュータ７が、検証処理のステップ７６１を実行することで検出手段の一例として機能し、ステップ７６２を実行することでフィルタリング手段の一例として機能し、コンフィグコード生成処理７５のステップ７５２〜７５６を実行することで禁止・許可手段の一例として機能し、ファイル入力処理７４のステップ７４４、７４６を実行することでも禁止・許可手段の一例として機能する。
【図面の簡単な説明】
【００９３】
【図１】複数のＥＣＵのそれぞれが車両内の通信バスＢ１、Ｂ２のいずれかまたは両方に接続されている状態の例を示す図である。
【図２】各ＣＰＵにおいて実行されるプログラム群の階層構造を示す図である。
【図３】各ＣＰＵに実行させるプログラムの実行イメージを生成する手順を概略的に示す図である。
【図４】コンフィギュレーションコードの生成の方法を概略的に示す図である。
【図５】システム設計情報４の一例を模式的に示す図である。
【図６】コンフィグツール７の機能構成を示す図である。
【図７】検証処理７６のフローチャートである。
【図８】検証項目の一例を示す図である。
【図９】エラー項目リストの一例を示す図である。
【図１０】エラー無視項目リストの一例を示す図である。
【図１１】ファイル入力処理７４のフローチャートである。
【図１２】結果表示処理２００のフローチャートである。
【図１３】コンフィグコード生成処理７５のフローチャートである。
【図１４】コード生成処理３００のフローチャートである。
【図１５】生成されるコンフィギュレーションコードの一例を示す図である。
【符号の説明】
【００９４】
１…ソフトウェアＰＦ、２…コンフィギュレーションコード、３…アプリケーション、
４…システム設計情報、５…プロジェクト情報、７…コンフィグツール、
８…コンフィギュレーションコード、５０…コンフィグコード生成装置、
６０…車内通信システム、７１…ユーザ操作受付処理、７２…コンフィグ編集処理、
７３…ファイル出力処理、７４…ファイル入力処理、
７５…コンフィグコード生成処理、７６…検証処理、２００…結果表示処理、
３００…コード生成処理、Ｂ１、Ｂ２…バス、Ｅ０１〜Ｅ０３…ＥＣＵ、
Ａ０１〜Ａ０５…アプリケーション。
【図１】
2009031985.tif 000003
【図２】
2009031985.tif 000004
【図３】
2009031985.tif 000005
【図４】
2009031985.tif 000006
【図５】
2009031985.tif 000007
【図６】
2009031985.tif 000008
【図７】
2009031985.tif 000009
【図８】
2009031985.tif 000010
【図９】
2009031985.tif 000011
【図１０】
2009031985.tif 000012
【図１１】
2009031985.tif 000013
【図１２】
2009031985.tif 000014
【図１３】
2009031985.tif 000015
【図１４】
2009031985.tif 000016
【図１５】
2009031985.tif 000017