(57)【要約】【課題】  プログラミング言語に精通していない者が、そのプログラミング言語により記述されたソフトウェアが組み込まれた装置を解析するに際して、必要最小限の範囲でそのソフトウェアを理解することを支援する。【解決手段】  ソフトウェアのソースコード情報・解析対象装置２００の制御信号・回路図情報を表示する。そのなかから着目する部分を選択すると、着目制御信号判別部１２１が、選択部分に関連する制御信号を着目制御信号とする。更に、ソースコードを解析して得た制御信号の依存関係に基づき、着目制御信号と依存関係のある制御信号も、着目制御信号とする。着目制御信号に関連する部分を判別し、強調して表示する。また、ソフトウェアのソースコード情報のうち、解析対象装置２００の制御部が実際に実行している部分に対応する部分を判別し、強調して表示する。【選択図】        図９
2006323480.tif 000002
【特許請求の範囲】
【請求項１】
実行可能なソフトウェアを内蔵した制御部と、
上記制御部により制御される制御対象部と、
を有する解析対象装置の解析を支援する解析支援装置において、
上記ソフトウェアのソースコードの情報であるソースコード情報を記憶するソースコード情報記憶部と、
上記解析対象装置と接続して、上記解析対象装置の制御部と上記解析対象装置の制御対象部との間の制御信号を取得する制御信号取得部と、
上記解析対象装置の回路図の情報である回路図情報を記憶する回路図情報記憶部と、
上記ソースコード情報記憶部が記憶したソースコード情報を表示するソースコード情報表示部と、
上記制御信号取得部が取得した制御信号を表示する制御信号表示部と、
上記回路図情報記憶部が記憶した回路図情報を表示する回路図情報表示部と
を有することを特徴とする解析支援装置。
【請求項２】
上記解析支援装置は、更に、
上記制御信号のうち特定の制御信号を着目制御信号として判別する着目制御信号判別部を有し、
上記制御信号表示部は、更に、
上記制御信号のうち、上記着目制御信号判別部が判別した着目制御信号を強調して表示する
ことを特徴とする請求項１に記載の解析支援装置。
【請求項３】
上記解析支援装置は、更に、
上記制御信号のうち特定の制御信号を着目制御信号として判別する着目制御信号判別部と、
上記ソフトウェアのソースコードにおいて上記制御信号を記述した記述方法と上記記述方法で記述された上記制御信号との対応関係を示す記述対応関係を記憶する記述対応関係記憶部と、
上記記述対応関係記憶部が記憶した記述対応関係に基づいて、上記ソースコード情報記憶部が記憶したソースコード情報のうち、上記着目制御信号判別部が判別した着目制御信号に対応するソースコード情報を着目ソースコード情報として判別する着目ソースコード情報判別部と、
を有し、上記ソースコード情報表示部は、更に、
上記ソースコード情報のうち、上記着目ソースコード情報判別部が判別した着目ソースコード情報を強調して表示する
ことを特徴とする請求項１に記載の解析支援装置。
【請求項４】
上記解析支援装置は、更に、
上記制御信号のうち特定の制御信号を着目制御信号として判別する着目制御信号判別部と、
上記回路図情報記憶部が記憶した回路図情報において上記制御信号に対応する回路部分と上記回路部分に対応する上記制御信号との対応関係を示す制御対応関係を記憶する制御対応関係記憶部と、
上記制御対応関係記憶部が記憶した制御対応関係に基づいて、上記着目制御信号判別部が判別した着目制御信号に対応する回路部分を着目回路部分として判別する着目回路部分判別部と、
を有し、上記回路図情報表示部は、更に、
上記回路図情報のうち、上記着目回路部分判別部が判別した着目回路部分を強調して表示する
ことを特徴とする請求項１に記載の解析支援装置。
【請求項５】
上記解析支援装置は、更に、
上記制御信号表示部が表示した制御信号から選択した選択制御信号を入力させる選択制御信号入力部を有し、
上記着目制御信号判別部は、
上記選択制御信号入力部に入力された選択制御信号を、上記着目制御信号として判別する
ことを特徴とする請求項２乃至請求項４のいずれかに記載の解析支援装置。
【請求項６】
上記解析支援装置は、更に、
上記ソースコード情報表示部が表示したソースコード情報から選択した選択ソースコード情報を入力させる選択ソースコード情報入力部と、
上記ソフトウェアのソースコードにおいて上記制御信号を記述した記述方法と上記記述方法で記述された上記制御信号との対応関係を示す記述対応関係を記憶する記述対応関係記憶部と、
を有し、上記着目制御信号判別部は、
上記記述対応関係記憶部が記憶した記述対応関係に基づいて、上記選択ソースコード情報入力部に入力された選択ソースコード情報に対応する制御信号を、上記着目制御信号として判別する
ことを特徴とする請求項２または請求項４に記載の解析支援装置。
【請求項７】
上記解析支援装置は、更に、
上記回路図情報表示部が表示した回路図情報から選択した選択回路部分を入力させる選択回路部分入力部と、
上記回路図情報記憶部が記憶した回路図情報において上記制御信号に対応する回路部分と上記回路部分に対応する上記制御信号との対応関係を示す制御対応関係を記憶する制御対応関係記憶部と、
を有し、上記着目制御信号判別部は、
上記制御対応関係記憶部が記憶した制御対応関係に基づいて、上記選択回路部分入力部に入力された選択回路部分に対応する制御信号を、上記着目制御信号として判別する
ことを特徴とする請求項２または請求項３に記載の解析支援装置。
【請求項８】
上記解析支援装置は、更に、
上記制御信号取得部が取得した制御信号のうち異常値を示している制御信号を異常制御信号として判別する異常制御信号判別部を有し、
上記着目制御信号判別部は、
上記異常制御信号判別部が判別した異常制御信号を、上記着目制御信号として判別する
ことを特徴とする請求項２乃至請求項４のいずれかに記載の解析支援装置。
【請求項９】
上記解析支援装置は、更に、
上記記述対応関係記憶部が記憶した記述対応関係及び上記ソースコード情報記憶部が記憶したソースコード情報に基づいて、上記着目制御信号と依存関係のある制御信号を依存制御信号として判別する依存制御信号判別部を有し、
上記着目制御信号判別部は、更に、
上記依存制御信号判別部が判別した依存制御信号を上記着目制御信号として判別する
ことを特徴とする請求項３に記載の解析支援装置。
【請求項１０】
上記解析支援装置は、更に、
上記ソフトウェアのソースコードにおいて上記制御信号を記述した記述方法と上記記述方法で記述された上記制御信号との対応関係を示す記述対応関係を記憶する記述対応関係記憶部と、
上記記述対応関係記憶部が記憶した記述対応関係及び上記ソースコード情報記憶部が記憶したソースコード情報に基づいて、上記着目制御信号と依存関係のある制御信号を依存制御信号として判別する依存制御信号判別部と、
を有し、上記着目制御信号判別部は、更に、
上記依存制御信号判別部が判別した依存制御信号を上記着目制御信号として判別する
ことを特徴とする請求項２または請求項４に記載の解析支援装置。
【請求項１１】
上記解析支援装置は、更に、
上記制御対象装置の制御部が実際に実行している上記ソフトウェアの実行経路を判別し、
上記ソースコード情報記憶部が記憶したソースコード情報のうち、上記実行経路に対応するソースコード情報を実行ソースコード情報として判別する実行ソースコード情報判別部を有し、
上記ソースコード情報表示部は、更に、
上記実行ソースコード情報判別部が判別した実行ソースコード情報を強調して表示する
ことを特徴とする請求項１に記載の解析支援装置。
【請求項１２】
上記解析支援装置は、更に、
上記ソフトウェアのソースコードにおいて上記制御信号を記述した記述方法と上記記述方法で記述された上記制御信号との対応関係を示す記述対応関係を記憶する記述対応関係記憶部を有し、
上記実行ソースコード情報判別部は、
上記ソースコード情報記憶部が記憶したソースコード情報及び上記記述対応関係記憶部が記憶した記述対応関係及び上記制御信号取得部が取得した制御信号に基づいて、上記実行ソースコード情報を判別する
ことを特徴とする請求項１１に記載の解析支援装置。
【請求項１３】
上記解析支援装置は、更に、
上記制御対象装置と接続して、上記制御対象装置の制御部が記憶する記憶内容を取得する記憶内容取得部と、
上記ソフトウェアのソースコードにおいて上記記憶内容を記述した記述方法と上記記述方法で記述された上記記憶内容との対応関係を示す記憶対応関係を記憶する記憶対応関係記憶部と、
を有し、
上記実行ソースコード情報判別部は、
上記ソースコード情報記憶部が記憶したソースコード情報及び上記記憶対応関係記憶部が記憶した記憶対応関係及び上記記憶内容取得部が取得した記憶内容に基づいて、上記実行ソースコード情報を判別する
ことを特徴とする請求項１１に記載の解析支援装置。
【請求項１４】
上記解析支援装置は、更に、
上記制御対象装置と接続して、上記制御対象装置の制御部の実行アドレスを取得する実行アドレス取得部と、
上記ソースコード情報記憶部が記憶したソースコード情報において、上記実行アドレスに対応するソースコード情報と、上記ソースコード情報に対応する上記実行アドレスとの対応関係を示すアドレス対応関係を記憶するアドレス対応関係記憶部と、
を有し、
上記実行ソースコード情報判別部は、
上記実行アドレス取得部が取得した実行アドレスにより、上記制御対象装置の制御部が実際に実行している上記ソフトウェアの実行経路を判別し、
上記アドレス対応関係記憶部が記憶したアドレス対応関係により、実行経路に対応するソースコード情報を、上記実行ソースコード情報として判別する
ことを特徴とする請求項１１に記載の解析支援装置。
【請求項１５】
上記ソースコード情報記憶部は、上記ソースコード情報として、
上記ソフトウェアの制御の流れを図形化したチャート図形についてのチャート図形情報を記憶し、
上記ソースコード情報表示部は、上記ソースコード情報として、
上記ソースコード情報記憶部が記憶したチャート図形情報を表示する
ことを特徴とする請求項１に記載の解析支援装置。
【請求項１６】
上記記述対応関係記憶部は、上記記述対応関係として、
上記ソフトウェアのソースコードにおいて上記制御信号を記述した変数と、上記変数によって記述された上記制御信号との対応関係を示す変数対応関係を記憶し、
上記ソースコード情報記憶部は、上記ソースコード情報として、
上記ソフトウェアのソースコードにおいて上記変数が使用されている位置についての変数使用位置情報を記憶し、
上記着目ソースコード情報判別部は、
上記記述対応関係記憶部が記憶した変数対応関係により、上記着目制御信号を記述した変数を着目変数として判別し、
上記ソースコード情報記憶部が記憶した変数使用位置情報により、上記着目変数が使用されている位置に対応するソースコード情報を上記着目ソースコード情報として判別する
ことを特徴とする請求項３に記載の解析支援装置。
【請求項１７】
上記制御対応関係記憶部は、上記制御対応関係として、
上記解析対象装置のうち外部の情報を収集する情報収集部に対応する回路部分と上記情報集部が収集する情報を上記解析対象装置の制御部へ伝達する上記制御信号との対応関係を示す情報収集信号対応関係と、
上記解析対象装置のうち上記解析対象装置の制御部から伝達された制御信号によって動作する動作部に対応する回路部分と上記動作部に伝達される上記制御信号との対応関係を示す動作信号対応関係と
を記憶し、
上記着目回路部分判別部は、
上記制御対応関係記憶部が記憶した情報収集信号対応関係及び動作信号対応関係により、上記着目制御信号に対応する回路部分を上記着目回路部分として判別する
ことを特徴とする請求項４に記載の解析支援装置。
【請求項１８】
上記記述対応関係記憶部は、上記記述対応関係として、
上記ソフトウェアのソースコードにおいて上記制御信号を記述した変数と、上記変数によって記述された上記制御信号との対応関係を示す変数対応関係を記憶し、
上記ソースコード情報記憶部は、上記ソースコード情報として、
上記ソフトウェアのソースコードにおいて上記変数が使用されている位置についての変数使用位置情報を記憶し、
上記着目制御信号判別部は、
上記ソースコード情報記憶部が記憶した変数使用位置情報により、上記ソフトウェアのソースコードにおいて、上記選択ソースコード情報入力部に入力された選択ソースコード情報に対応する部分で使用されている変数を選択変数として判別し、
上記記述対応関係記憶部が記憶した変数対応関係により、上記選択変数に対応する制御信号を上記着目制御信号として判別する
ことを特徴とする請求項６に記載の解析支援装置。
【請求項１９】
上記制御対応関係記憶部は、上記制御対応関係として、
上記解析対象装置のうち外部の情報を収集する情報収集部に対応する回路部分と上記情報集部が収集する情報を上記解析対象装置の制御部へ伝達する上記制御信号との対応関係を示す情報収集信号対応関係と、
上記解析対象装置のうち上記解析対象装置の制御部から伝達された制御信号によって動作する動作部に対応する回路部分と上記動作部に伝達される上記制御信号との対応関係を示す動作信号対応関係と、
を記憶し、
上記着目制御信号判別部は、
上記制御対応関係記憶部が記憶した情報収集信号対応関係及び動作信号対応関係により、上記選択回路部分入力部に入力された選択回路部分に対応する制御信号を上記着目制御信号として判別する
ことを特徴とする請求項７に記載の解析支援装置。
【請求項２０】
上記記述対応関係記憶部は、上記記述対応関係として、
上記ソフトウェアのソースコードにおいて上記制御信号を記述した変数と、上記変数によって記述された上記制御信号との対応関係を示す変数対応関係を記憶し、
上記ソースコード情報記憶部は、上記ソースコード情報として、
上記ソフトウェアのソースコードにおける上記変数の依存関係を示す変数依存関係を記憶し、
上記依存制御信号判別部は、
上記記述対応関係記憶部が記憶した変数対応関係により、上記着目制御信号に対応する変数を着目変数として判別し、
上記ソースコード情報記憶部が記憶した変数依存関係により、上記着目変数と依存関係のある変数を依存変数として判別し、
上記記述対応関係記憶部が記憶した変数対応関係により、上記依存変数に対応する制御信号を上記依存制御信号として判別する
ことを特徴とする請求項９または請求項１０に記載の解析支援装置。
【請求項２１】
上記記述対応関係記憶部は、上記記述対応関係として、
上記ソフトウェアのソースコードにおいて上記制御信号を記述した変数と、上記変数によって記述された上記制御信号との対応関係を示す変数対応関係を記憶し、
上記ソースコード情報記憶部は、上記ソースコード情報として、
上記ソフトウェアのソースコードにおける制御の流れの分岐位置及び合流位置を示す制御フロー情報と、
上記分岐位置における分岐条件を示す制御条件情報と、
を記憶し、上記実行ソースコード情報判別部は、
上記ソースコード解析情報記憶部が記憶した制御フロー情報により、上記ソースコード情報記憶部が記憶したソースコード情報を上記分岐位置及び上記合流位置によって分割し、
上記記述対応関係記憶部が記憶した変数対応関係により、上記制御信号取得部が取得した制御信号に対応する変数の値を判別し、
上記ソースコード情報記憶部が記憶した制御条件情報により、上記分岐位置において、上記分岐条件を満たすかどうかを判別して、上記制御対象装置の制御部が実際に実行している上記ソフトウェアの実行経路を推定し、
分割された上記ソースコード情報のうち、上記実行経路に対応するソースコード情報を上記実行ソースコード情報として判別する
ことを特徴とする請求項１２に記載の解析支援装置。
【請求項２２】
上記記憶対応関係記憶部は、上記記憶対応関係として、
上記ソフトウェアのソースコードにおいて上記記憶内容を記述した変数と、上記変数によって記述された上記記憶内容との対応関係を示す変数記憶対応関係を記憶し、
上記ソースコード情報記憶部は、上記ソースコード情報として、
上記ソフトウェアのソースコードにおける制御の流れの分岐位置及び合流位置を示す制御フロー情報と、
上記分岐位置における分岐条件を示す制御条件情報と、
を記憶し、上記実行ソースコード情報判別部は、
上記ソースコード解析情報記憶部が記憶した制御フロー情報により、上記ソースコード情報記憶部が記憶したソースコード情報を上記分岐位置及び上記合流位置によって分割し、
上記記憶対応関係記憶部が記憶した変数記憶対応関係により、上記記憶内容取得部が取得した記憶内容に対応する変数の値を判別し、
上記ソースコード情報記憶部が記憶した制御条件情報により、上記分岐位置において、上記分岐条件を満たすかどうかを判別して、上記制御対象装置の制御部が実際に実行している上記ソフトウェアの実行経路を推定し、
分割された上記ソースコード情報のうち、上記実行経路に対応するソースコード情報を上記実行ソースコード情報として判別する
ことを特徴とする請求項１３に記載の解析支援装置。
【請求項２３】
上記ソースコード情報記憶部は、上記ソースコード情報として、
関数の定義位置、戻り値、引数、使用している広域変数、局所変数、マクロ、呼び出している関数、呼び出されている関数、関数のプログラム図の情報を含む関数情報と、
広域変数の定義位置、型、使用されている位置の情報を含む広域変数情報と、
局所変数の定義位置、型、使用されている位置の情報を含む局所変数情報と、
引数の定義位置、型、使用されている位置の情報を含む引数情報と、
型の定義位置、定義の実体、使用されている位置の情報を含む型情報と、
マクロの定義、使用されている位置の情報を含むマクロ情報と、
定数の使用されている位置の情報を含む定数情報と、
関数スコープの中での広域変数の依存関係の情報を含む広域変数依存関係情報と、
を記憶する
ことを特徴とする請求項１に記載の解析支援装置。
【請求項２４】
上記解析対象装置は、エレベータであることを特徴とする請求項１乃至請求項２３のいずれかに記載の解析支援装置。
【請求項２５】
上記解析支援装置は、上記解析対象装置の故障の解析を支援するものであることを特徴とする請求項１乃至請求項２４のいずれかに記載の解析支援装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェアの組み込まれた装置の解析を支援する解析支援装置に関する。
【背景技術】
【０００２】
コンピュータソフトウェアの内容の理解を容易にするための装置は、いくつか提案されている。
例えば、特許文献１は、ソフトウェアのソースコードを解析し、その構文及び意味に関する情報を記憶する。ユーザからの問い合わせに応じて、モジュールの関係、変数の関係等を表示することにより、ソフトウェアの内容の理解を容易にするものである。
【０００３】
特許文献２は、ソフトウェアのソースコードを解析して、その制御の流れに関する情報を記憶する。特に、制御の流れの分岐・合流に注目して、これを階層化し、制御の流れを階層レベルごとに視覚化して表示することにより、制御の流れの把握を容易にするものである。
【０００４】
特許文献３は、ソフトウェアの実行時の動作をソースコードのレベルで仮想的にシミュレートし、ソフトウェアを１ステップ実行するごとに、変数の値等を調べて、トレース情報として記憶する。記憶されたトレース情報に基づいて、ソフトウェアの実行時の振る舞いを仮想的に再現することで、ソフトウェアの処理を時間を追って見るだけでなく、時間を遡って見ることができる。また、制御の流れやデータの流れを時間軸上に表現した図形を表示することにより、制御の流れやデータの流れの把握を容易にするものである。
【特許文献１】特開平６−２５９２４４（００１２〜００４４）
【特許文献２】特開平７−２６１９９０（０００８〜００７３）
【特許文献３】特開２００２−１０８６４９（００１３〜００７４）
【発明の開示】
【発明が解決しようとする課題】
【０００５】
上記の装置は、ソフトウェア開発者等そのソフトウェアを記述したプログラム言語に精通した者が、ソフトウェアのデバッグ、保守、改良等する場合にそれを支援することを目的としている。
【０００６】
現代社会においては、多くの製品にコンピュータが組み込まれ、その中でソフトウェアを実行している。
このような製品が故障した場合、例えば、エレベータのように設置場所から動かせない製品であれば、修理担当者が現場に行って修理することになる。修理担当者が故障の原因を探索するにあたり、そのなかに組み込まれたソフトウェアの内容を理解する必要に迫られる場合もある。しかし、修理担当者は必ずしもそのソフトウェアを記述した言語に精通しているとは限らない。
【０００７】
従来のエレベータは、ラダー言語のような単純な論理の組み合わせで多くのプログラムが実装されていた。このため、故障が発生した場合も、論理式を解析することにより、比較的容易に、故障の直接の要因となっている変数から、故障の発端の原因となっている変数を探索することが可能であった。しかし、近年、エレベータの制御に対する仕様が大規模、複雑化し、ラダー言語以外の高級言語でプログラムが実装されることが多くなった。このため、従来のように論理式を解析する手法のみで、故障の直接の要因となっている変数から、故障の発端の原因となっている変数を探索することが困難となっていた。
【０００８】
エレベータの据付現場において、故障が発生した場合、本来ハードウェアをＯＮする変数Ａが、ＯＮにならないような状況において、このハードウェアをＯＮする変数Ａが何であるかを調査し、なぜ、その変数ＡがＯＮにならないかを、変数Ａがプログラムでどこで使用されているかを調査し、更に、変数ＡをＯＮにしない条件は何であるかを調べて、最終的に、故障の発端の原因となる変数を探索している。プログラムがラダーのような単純な論理の組み合わせで実装されている場合、この探索は比較的容易であるが、Ｃ言語のような高級言語でプログラムが実装されている場合は、探索の効率が悪く、これを効率的に行う必要があるという課題があった。
【０００９】
また、従来、ラダープログラムを対象に探索を実施していた作業者が、言語の仕様が複雑なＣ言語のような高級言語を対象に探索を実施するには、言語の理解に対するギャップを克服する必要があるという課題があった。
【００１０】
そこで、ソフトウェアを記述したプログラム言語に精通していない者がそのソフトウェアの内容を理解するのを助けることが課題となる。
【００１１】
更にいえば、修理担当者は故障の原因を探索するために必要な最小限の範囲でソフトウェアの内容を理解すればよいのであって、それ以上のことを知る必要はない。
【００１２】
したがって、装置に組み込まれたソフトウェアの内容を深く理解せずとも、その装置が解析できるのであれば、そのほうが好ましい。
【００１３】
本発明は、例えば、上述したような課題を解決して、ソフトウェアの組み込まれた装置の解析を容易にし、作業効率を高めることを目的とする。
【課題を解決するための手段】
【００１４】
本発明に係る解析支援装置は、
実行可能なソフトウェアを内蔵した制御部と、
上記制御部により制御される制御対象部と、
を有する解析対象装置の解析を支援する解析支援装置において、
上記ソフトウェアのソースコードの情報であるソースコード情報を記憶するソースコード情報記憶部と、
上記解析対象装置と接続して、上記解析対象装置の制御部と上記解析対象装置の制御対象部との間の制御信号を取得する制御信号取得部と、
上記解析対象装置の回路図の情報である回路図情報を記憶する回路図情報記憶部と、
上記ソースコード情報記憶部が記憶したソースコード情報を表示するソースコード情報表示部と、
上記制御信号取得部が取得した制御信号を表示する制御信号表示部と、
上記回路図情報記憶部が記憶した回路図情報を表示する回路図情報表示部と
を有することを特徴とする。
【発明の効果】
【００１５】
本発明は、例えば、制御信号についての情報、ソフトウェアについての情報、回路図についての情報を表示することで、作業者の理解を容易にし、解析対象装置の解析の効率が高くなるとの効果を有する。
【発明を実施するための最良の形態】
【００１６】
実施の形態１．
実施の形態１を図１〜図６を用いて説明する。
図１は、解析支援装置１００のハードウェア構成の一例を示す。
図１において、解析支援装置１００は、システムユニット９１０、ＣＲＴ（Ｃａｔｈｏｄｅ  Ｒａｙ  Ｔｕｂｅ）表示装置９０１、キーボード（Ｋ／Ｂ）９０２、マウス９０３、コンパクトディスク装置（ＣＤＤ）９０５、プリンタ装置９０６、スキャナ装置９０７を備え、これらはケーブルで接続されている。
さらに、解析支援装置１００は、ＦＡＸ機９３２、電話器９３１とケーブルで接続され、また、ローカルエリアネットワーク（ＬＡＮ）９４２、ゲートウェイ９４１を介してインターネット９４０に接続されている。
また、解析支援装置１００は、ＬＡＮ９４２を介して、エレベータ２００（解析対象装置の一例）に接続されている。
しかし、必ずしもＬＡＮを介する必要はなく、直接接続する構成でもよい。逆に、インターネットを介して、遠隔接続する構成でもよい。また、常に接続されている必要もなく、コネクタを介して接続し、必要のないときには、外しておく構成でもよい。
【００１７】
図２は、解析支援装置１００の内部構成の一例を示す。
図２において、解析支援装置１００は、プログラムを実行するＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）９１１を備えている。ＣＰＵ９１１は、バス９１２を介してＲＯＭ９１３、ＲＡＭ９１４、通信ボード９１５、ＣＲＴ表示装置９０１、Ｋ／Ｂ９０２、マウス９０３、ＦＤＤ（Ｆｌｅｘｉｂｌｅ  Ｄｉｓｋ  Ｄｒｉｖｅ）９０４、磁気ディスク装置９２０、ＣＤＤ９０５、プリンタ装置９０６、スキャナ装置９０７と接続されている。
ＲＡＭ９１４は、揮発性メモリの一例である。ＲＯＭ９１３、ＦＤＤ９０４、ＣＤＤ９０５、磁気ディスク装置９２０は、不揮発性メモリの一例である。これらは、記憶装置あるいは記憶部の一例である。
通信ボード９１５は、ＦＡＸ機９３２、電話器９３１、ＬＡＮ９４２等に接続されている。
例えば、通信ボード９１５、Ｋ／Ｂ９０２、スキャナ装置９０７、ＦＤＤ９０４などは、入力部の一例である。
また、例えば、通信ボード９１５、ＣＲＴ表示装置９０１などは、出力部の一例である。
ここで、通信ボード９１５は、ＬＡＮ９４２に限らず、直接、インターネット９４０、或いはＩＳＤＮ等のＷＡＮ（ワイドエリアネットワーク）に接続されていても構わない。直接、インターネット９４０、或いはＩＳＤＮ等のＷＡＮに接続されている場合、解析支援装置１００は、インターネット９４０、或いはＩＳＤＮ等のＷＡＮに接続され、ゲートウェイ９４１は不用となる。
【００１８】
磁気ディスク装置９２０には、オペレーティングシステム（ＯＳ）９２１、ウィンドウシステム９２２、プログラム群９２３、ファイル群９２４が記憶されている。プログラム群９２３は、ＣＰＵ９１１、ＯＳ９２１、ウィンドウシステム９２２により実行される。
上記プログラム群９２３には、以下に述べる実施の形態の説明において「〜部」として説明する機能を実行するプログラムが記憶されている。プログラムは、ＣＰＵ９１１により読み出され実行される。
【００１９】
ファイル群９２４には、以下に述べる実施の形態の説明において、「〜の判定結果」、「〜の計算結果」、「〜の処理結果」として説明するものが、「〜ファイル」として記憶されている。
また、以下に述べる実施の形態の説明において説明するフローチャートの矢印の部分は主としてデータの入出力を示し、そのデータの入出力のためにデータは、磁気ディスク装置９２０、ＦＤ（Ｆｌｅｘｉｂｌｅ  Ｄｉｓｋ）、光ディスク、ＣＤ（コンパクトディスク）、ＭＤ（ミニディスク）、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）等のその他の記録媒体に記録される。あるいは、信号線やその他の伝送媒体により伝送される。
【００２０】
また、以下に述べる実施の形態の説明において「〜部」として説明するものは、ＲＯＭ９１３に記憶されたファームウェアで実現されていても構わない。或いは、ソフトウェアのみ、或いは、ハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。
【００２１】
また、以下に述べる実施の形態を実施するプログラムは、また、磁気ディスク装置９２０、ＦＤ（Ｆｌｅｘｉｂｌｅ  Ｄｉｓｋ）、光ディスク、ＣＤ（コンパクトディスク）、ＭＤ（ミニディスク）、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）等のその他の記録媒体による記録装置を用いて記憶されても構わない。
【００２２】
図３は、解析の対象であるエレベータ２００（解析対象装置の一例）の内部構成を示す。また、エレベータ２００の制御部２１０が実行するソフトウェア５１１の開発過程を概念的に示している。
この例では、解析対象装置として、エレベータを例にとって説明するが、およそソフトウェアによって制御される装置であれば、何でも構わない。
エレベータ２００は、実行可能なソフトウェアを実行する制御部２１０、制御部２１０と制御信号で結ばれた制御対象部２２０、解析支援装置１００を接続するための接続部２３０などから成る。
制御対象部２２０に備えられた回転数センサー２２１、位置センサー２２２、積載重量センサー２２３、行き先ボタン２２４、呼出しボタン２２５等の情報収集部は、外部から情報を収集し、制御信号により、制御部２１０に伝える。
制御部２１０は、磁気ディスク装置２４０に記憶されたソフトウェア５１１を実行し、制御信号を出す。
制御信号は、駆動モータ２２６、現在階表示器２２７、到着表示灯２２８等の動作部に伝えられ、所定の動作をする。
【００２３】
これらの制御信号は、制御部から見ると、所定のアドレスが割り付けられており、ＲＯＭ（リードオンリーメモリ）やＲＡＭ（ランダムアクセスメモリ）に対するのと同じように書込み・読出しが可能である。
【００２４】
制御部で実行されているソフトウェア５１１は、開発段階においてＣ言語で書かれたソースコードをコンパイルして得られた機械語によって記述されている。Ｃコンパイラ装置３００がソースコード５０１をコンパイルして作成し、エレベータ２００の磁気ディスク装置２４０が記憶する。
このとき、各制御信号に割り振られたアドレスは、コンパイル時に装置情報５２１としてＣコンパイラ装置３００に与えられており、Ｃコンパイラ装置３００は、それに基づいて、制御信号を記述した変数を、所定のアドレスに変換する。
装置情報５２１には、その他に、制御部２１０が使用できるＲＡＭ２５１のアドレス等、ソースコードを制御部２１０で実行できるソフトウェアにコンパイルするのに必要な情報が含まれている。
なお、ソースコードはＣ言語で書かれているものに限らず、ＦＯＲＴＲＡＮ（フォートラン）、ＣＯＢＯＬ（コボル）、ＢＡＳＩＣ（ベーシック）などの言語で書かれていてもよいし、アセンブリ言語で書かれたものをアセンブルしてもよい。また、スクリプト言語で書かれたソースコードを制御部２１０がインタプリトしながら実行する形でも構わない。
【００２５】
Ｃコンパイラ３００は、コンパイルしたソフトウェア５１１のほか、ソースコードと機械語のアドレスとの対応を示すアドレス対応関係５１２、ソースコードにおいて記述されている変数と、それに対応するＲＡＭ上のアドレスとの対応を示す変数記憶対応関係５１３等も出力している。
アドレス対応関係５１２は、解析支援装置１００のアドレス対応関係記憶部１５２が記憶する。同様に、変数記憶対応関係５１３は、記憶対応関係記憶部１５３が記憶する。
【００２６】
また、同じソースコード５０１は、ソースコード解析装置４００が解析を行う。ソースコード解析装置４００は、ソースコード解析情報５３１として、例えば、以下のような情報を出力する。
関数の定義位置、戻り値、引数、使用している広域変数、局所変数、マクロ、呼び出している関数、呼び出されている関数、関数のプログラム図の情報を含む関数情報。
広域変数の定義位置、型、使用されている位置の情報を含む広域変数情報。
局所変数の定義位置、型、使用されている位置の情報を含む局所変数情報。
引数の定義位置、型、使用されている位置の情報を含む引数情報。
型の定義位置、定義の実体、使用されている位置の情報を含む型情報。
マクロの定義、使用されている位置の情報を含むマクロ情報。
定数の使用されている位置の情報を含む定数情報。
関数スコープの中での広域変数の依存関係を含む広域変数依存関係情報。
また、変数対応関係５３２として、制御信号を記述した変数とその変数によって記述された制御信号との対応を示す情報を出力する。
ソースコード５０１及びソースコード解析情報５３１は、ソースコード情報として解析支援装置１００のソースコード情報記憶部１５１が記憶する。また、変数対応関係５３２は、記述対応関係記憶部１５４が記憶する。
【００２７】
この他に、エレベータ２００の回路図の情報である回路図情報５５１は回路図情報記憶部１５５が記憶する。
回路図情報５５１には、例えば、回路図のイメージデータあるいは回路図のＣＡＤ（Ｃｏｍｐｕｔｅｒ  ａｉｄｅｄ  ｄｅｓｉｇｎ：コンピュータ支援設計）データ等、回路図面そのものに関する情報のほか、装置のブロック構成や、各信号線の名称等の情報も含まれている。
【００２８】
また、エレベータ２００における制御信号とその制御信号に対応する回路部分を示す回路情報との対応関係を示す制御対応関係５６１は制御対応関係記憶部１５６が記憶する。
制御対応関係５６１には、例えば、エレベータ２００の情報収集部に対応する回路部分を示す回路情報と、その情報収集部が収集した情報を制御部２１０に伝えるための制御信号との対応を示す情報収集信号対応関係や、エレベータ２００の動作部に対応する回路部分を示す回路情報と、その動作部を動作させるために制御部から伝えられる制御信号との対応を示す動作信号対応関係などがある。
例えば、回転数センサー２２１は、駆動モータ２２６の回転数を検知し、その情報を制御信号として制御部に伝える。したがって、回転数センサー２２１が検知した回転数を示す制御信号は、回路情報のうち、回転数センサー２２１を示す回路情報と対応している。
【００２９】
これら解析支援装置１００の各記憶部は、解析支援装置１００の磁気ディスク装置９２０の中に、これらの情報を記憶する。
これらの情報は、通常電子データの形で出力されるので、これをフレキシブルディスクに記憶し、解析支援装置１００に読み込ませる。あるいは、インターネット等に接続されたサーバーに記憶し、必要に応じて、解析支援装置１００がダウンロードしてもよい。更に、解析対象装置の種別を入力すると、解析支援装置１００が自動的に読み込む構成としてもよい。
【００３０】
図４は、解析支援装置１００のうち表示部に関連する部分を示す。
解析支援装置１００には大きく分けて３つの表示部がある。
【００３１】
制御信号表示部１１１は、エレベータ２００内の制御信号名及び制御信号の内容をＣＲＴ（Ｃａｔｈｏｄｅ−Ｒａｙ  Ｔｕｂｅ：陰極線管）９０１に表示する。制御信号の内容は、制御信号取得部１４１がエレベータ２００の接続部２３０と通信して、取得する。しかし、エレベータ２００の接続部２３０を介して、直接、制御信号を伝える信号線に接続し、取得してもよい。
【００３２】
ソースコード情報表示部１１２は、ソースコード情報記憶部１５１が記憶するソースコード情報をＣＲＴに表示する。ソースコード情報には、ソースコード５０１やソースコード解析情報５３１等がある。
図５及び図６は、ソースコード情報表示部１１２が表示するソースコード情報の一例を示す。
【００３３】
図５は、ソースコード情報のうち、関数の定義位置、戻り値、引数、使用しているグローバル変数（広域変数）、使用しているローカル変数（局所変数）、使用しているマクロ、呼び出している関数、呼び出されている関数などを含む関数情報と、広域変数の定義位置、型、使用されている位置などを含む広域変数情報を表示した例である。この例では、ソースコード情報記憶部１５１がＨＴＭＬ（Ｈｙｐｅｒｔｅｘｔ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ：ハイパーテキストマークアップランゲージ）形式でソースコード情報を記憶し、ソースコード情報表示部１１２が表示形式に変換して表示する。しかし、ソースコード情報記憶部１５１が表示されるイメージデータを記憶し、そのまま表示する構成でも構わないし、データベースとして記憶し、表示形式に変換して表示する構成でも構わない。
【００３４】
また、図６は、ソースコード情報のうち、プログラムの制御の流れを図形化したチャート図形情報を表示した例である。この例では、ＨＣＰチャート（Ｈｉｅｒａｒｃｈｉｃａｌ  ａｎｄ  Ｃｏｍｐａｃｔ  ｄｅｓｃｒｉｐｔｉｏｎ  ｃｈａｒｔ：階層的簡略記述チャート）を用いているが、フローチャートを用いても構わないし、ＳＰＤ（Ｓｔｒｕｃｔｕｒｅｄ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｄｉａｇｒａｍ：構造化プログラミング図）チャートやＮＳチャート（Ｎａｓｓｉ−Ｓｈｎｅｉｄｅｒｍａｎ  ｃｈａｒｔ：ナシ・シュナイダーマンチャート）など他の構造化チャートを用いても構わない。あるいは、状態遷移図などを用いても構わない。
【００３５】
回路図情報表示部１１３は、回路図情報記憶部１５５が記憶する回路図情報をＣＲＴ９０１に表示する。
【００３６】
例えば、エレベータ２００が故障したとする。修理担当者がエレベータ設置場所に派遣され、故障個所の探索を始める。
修理担当者は、解析支援装置１００をエレベータ２００に接続して、制御信号を調べる。
ここで、正常な制御信号が制御部２１０から駆動モータ２２６などの動作部に送られているにもかかわらず、それによって動作するはずの動作部が動作しないのであれば、その動作部が故障していることがわかる。
また、回転数センサー２２１などの情報収集部から制御部２１０に送られる制御信号が異常値であれば、その情報収集部が故障していることがわかる。
【００３７】
このように、解析支援装置１００のＣＲＴ９０１には、制御信号の内容とともに、エレベータの回路図及び制御部で実行されているソフトウェアのソースコード情報が表示されているので、どのような制御信号が出ていれば正常で、どのような制御信号が出ていれば異常なのかを理解することが容易になる。
【００３８】
更に、ソースコード情報として、ソースコードをそのまま表示するだけでなく、ソースコードを解析し、その結果得られる情報を様々な形で表示することにより、修理担当者がソースコードを記述した言語に精通していない場合であっても、制御部２１０が実行しているソフトウェアの処理内容を理解することが容易になる。
【００３９】
このように、解析対象装置の制御信号についての情報、解析対象装置の制御部が実行しているソフトウェアについての情報及び解析対象装置の回路図についての情報をＣＲＴ９０１に表示することにより、解析対象装置の解析の効率を高めることができる。
【００４０】
実施の形態２．
実施の形態２を図１〜図８を用いて説明する。
この実施の形態における解析支援装置１００の全体構成は、実施の形態１で説明した構成と同じ構成である。
【００４１】
実施の形態１で挙げた例において、解析支援装置１００のＣＲＴ９０１に表示される情報が、必要な情報だけに絞られていれば、修理担当者が故障個所を発見する効率が良くなる。
例えば、駆動モータ２２６が動かないという症状が出ているのであれば、制御部２１０から駆動モータ２２６に対して送られる制御信号を調べる必要がある。
この実施の形態では、特定の制御信号に着目し、着目した着目制御信号に関連する部分を強調して表示する。
まず、着目制御信号判別部１２１が特定の制御信号を着目制御信号として判別する。
制御信号表示部１１１は、着目制御信号の名称及び着目制御信号の内容をＣＲＴ９０１に強調して表示する。
【００４２】
ここで、「強調して表示する」とは、当該部分の色を変えて表示する、当該部分の背景の色を変えて表示する、当該部分の線を太くして表示する、当該部分を大きく表示する、当該部分を画面中央に表示するなどして、当該部分を目立つように表示することをいう。また、当該部分以外の部分の色を変えて表示する、当該部分以外の部分の背景の色を変えて表示する、当該部分以外の部分の線を細くして表示する、当該部分以外の部分を小さく表示する、当該部分以外の部分を画面の端に表示する、当該部分以外の部分の細部を省略して表示する、当該部分以外の部分を表示しないなどして、当該部分を目立つように表示することも含まれる。
【００４３】
制御信号がソースコードの中でどのように記述されているかについての情報である記述対応関係は、記述対応関係記憶部１５４が記憶している。
着目ソースコード情報判別部１２２は、記述対応関係記憶部１５４から記述対応関係を読出し、着目制御信号に対応するソースコード情報を選らび出す。これを着目ソースコード情報としてソースコード情報表示部１１２に送ると、ソースコード情報表示部１１２は着目ソースコード情報をＣＲＴ９０１に強調して表示する。
【００４４】
図７は、ソースコード５０１の中で制御信号を記述した一例である。
ここでは、制御信号はそれに対応する広域変数という形で記述されている。
例えば、駆動モータ２２６の回転数を制御するために制御部から伝えられる制御信号は、「ｍｏｔｏｒ＿ｓｐｅｅｄ」という変数で記述されており、変数「ｍｏｔｏｒ＿ｓｐｅｅｄ」に値を代入すると、その値が制御信号として駆動モータ２２６に送られ、駆動モータ２２６は与えられた回転数になるように動作する。
したがって、駆動モータ２２６を駆動する制御信号に着目した場合、ソースコード５０１の中で変数「ｍｏｔｏｒ＿ｓｐｅｅｄ」が使われている部分が、着目制御信号に対応する部分となる。
【００４５】
図８において、変数「ｇｌｏｂａｌ＿ｉｎ」及び変数「ｇｌｏｂａｌ＿ｏｕｔ」はソースコードのなかで制御信号を記述したものである。ここでは、すべての制御信号を着目制御信号としている。
ソースコード情報表示部１１２は、ここで、ソースコード情報のうちソフトウェアの制御の流れを図形化したチャート図形情報を表示している。このとき、チャート図形情報とともに、それに対応するソースコードも表示しているが、着目制御信号を記述した変数「ｇｌｏｂａｌ＿ｉｎ」及び「ｇｌｏｂａｌ＿ｏｕｔ」が表れる行はそのまま表示しているのに対し、それ以外の行はコメントのみとし、細部を省略して表示している。これにより、着目制御信号を記述した変数の表れる行が目立つようになる。
【００４６】
制御信号が回路図のどの部分と対応するかについての情報である制御対応関係は、制御対応関係記憶部１５６が記憶している。
着目回路部分判別部１２３は、制御対応関係記憶部１５６から制御対応関係を読出し、着目制御信号に対応する回路図情報を選び出す。これを着目回路部分として回路図情報表示部１１３に送ると、回路図情報表示部１１３は着目回路図情報をＣＲＴ９０１に強調して表示する。
例えば、駆動モータ２２６を駆動する制御信号に着目した場合には、駆動モータ２２６に対応する回路図情報が着目回路部分となる。また、回転数センサー２２１から送られる駆動モータ２２６の回転数を示す制御信号に着目した場合には、回転数センサー２２１に対応する回路図情報が着目回路部分となる。
【００４７】
例えば、駆動モータ２２６が動かないという症状が出ているのであれば、制御部２１０から駆動モータ２２６に対して送られる制御信号を着目制御信号とする。すると、その制御信号に関連する情報が強調して表示されるので、修理担当者が他の不必要な情報に気をとられることがなくなり、故障個所を容易に発見できるようになる。
【００４８】
このように、ＣＲＴ９０１に表示される情報のうち、着目制御信号に関連する情報を強調して表示することにより、解析対象装置の解析の効率を高めることができる。
【００４９】
実施の形態３．
実施の形態３を図１〜図９を用いて説明する。
この実施の形態における解析支援装置１００の全体構成は、実施の形態１で説明した構成に、図９の構成を加えたものである。
図９は、この実施の形態における解析支援装置１００の一部を示す。
【００５０】
ここでは、着目制御信号判別部１２１がどのようにして着目制御信号を判別するかについて説明する。
【００５１】
実施の形態２で挙げた例において、修理担当者が、駆動モータ２２６を駆動する制御信号を調べたいと考えたとする。
修理担当者が注目したい制御信号の名前を知っている場合、制御信号表示部１１１がＣＲＴ９０１に表示した制御信号のなかから注目したい制御信号を選択し、例えば、マウス９０３でＣＲＴ９０１に表示されているマウスポインタを動かしてその制御信号をクリックする。あるいは、キーボード９０２のカーソルキーでＣＲＴ９０１に表示されているカーソルを動かしてその制御信号に合わせ、エンターキーを押す。
選択制御信号入力部１３１は、修理担当者によるこれらの操作を監視して、修理担当者が選択した制御信号を選択制御信号とし、着目制御信号判別部１２１に送る。
この場合、着目制御信号判別部１２１は、選択制御信号をそのまま着目制御信号として判別する。
【００５２】
これにより、修理担当者が注目したい制御信号を選択することで、着目制御信号を容易に決定することができる。着目制御信号に関連する情報を強調して表示するので、修理担当者が他の不必要な情報に気をとられることがなくなり、故障個所を容易に発見できるようになる。
【００５３】
修理担当者が駆動モータ２２６を駆動する制御信号の名前を知らないが、回路図を見ればどの部分が駆動モータ２２６に対応する部分かわかる場合もある。その場合、修理担当者は、回路図情報表示部１１３がＣＲＴ９０１に表示した回路図情報のなかから駆動モータ２２６に対応する部分を選択し、マウス９０３でクリックする等の操作を行う。
選択回路部分入力部１３３は、修理担当者によるこれらの操作を監視して、修理担当者が選択した回路部分を選択回路部分とし、着目制御信号判別部１２１に送る。
制御信号が回路図のどの部分と対応するかについての情報である制御対応関係は、制御対応関係記憶部１５６が記憶している。
着目制御信号判別部１２１は、制御対応関係記憶部１５６から制御対応関係を読出し、選択回路部分に対応する制御信号を選び出して、これを着目制御信号として判別する。
【００５４】
これにより、修理担当者が注目したい制御信号を知らない場合でも、回路図情報から、故障の症状が出ている個所に対応する部分を選択することで、着目制御信号を容易に決定することができる。着目制御信号に関連する情報を強調して表示するので、修理担当者が他の不必要な情報に気をとられることがなくなり、故障個所を容易に発見できるようになる。
【００５５】
修理担当者がソースコード情報表示部１１２がＣＲＴ９０１に表示したソースコード情報を眺めているうちに、怪しい部分を発見する場合もある。その場合、修理担当者は、ソースコード情報表示部１１２がＣＲＴ９０１に表示したソースコード情報のなかから怪しい部分を選択し、マウス９０３でクリックする等の操作を行う。
選択ソースコード情報入力部１３２は、修理担当者によるこれらの操作を監視して、修理担当者が選択したソースコード情報を選択ソースコード情報とし、着目制御信号判別部１２１に送る。
【００５６】
制御信号がソースコードの中でどのように記述されているかについての情報である記述対応関係は、記述対応関係記憶部１５４が記憶している。
着目制御信号判別部１２１は、記述対応関係記憶部１５４から記述対応関係を読出し、選択ソースコード情報に対応する制御信号を選び出して、これを着目制御信号として判別する。
【００５７】
例えば、ソースコード情報表示部１１２がＣＲＴ９０１に図５のソースコード情報を表示しているときに、修理担当者が表示されている変数名をクリックしたとする。
着目制御信号判別部１２１は、記述対応関係記憶部１５４が記憶している記述対応関係のうち、ソースコード５０１のなかで制御信号を記述した変数とその変数によって記述された制御信号との対応を示す変数対応関係を読出し、選択された変数によって記述された制御信号を選び出して、それを着目制御信号として判別する。
【００５８】
また、ソースコード情報表示部１１２がＣＲＴ９０１に図６のソースコード情報を表示しているときに、修理担当者がチャート図形の一部をクリックしたとする。
着目制御信号判別部１２１は、記述対応関係記憶部１５４が記憶している記述対応関係のうち、ソースコード５０１のなかで変数が使用されている位置についての情報を読出し、選択された部分で使用されている変数を割り出す。
次に、記述対応関係記憶部１５４が記憶している記述対応関係のうち変数対応関係を読出し、選択された部分で使用されている変数によって記述された制御信号を選び出して、それを着目制御信号として判別する。
【００５９】
これにより、修理担当者がソースコード情報から怪しい部分を発見した場合でも、その部分を選択することで、着目制御信号を容易に決定することができる。着目制御信号に関連する情報を強調して表示するので、修理担当者が他の不必要な情報に気をとられることがなくなり、故障個所を容易に発見できるようになる。
【００６０】
制御信号が正常な場合にどのような値を示すかがあらかじめわかっている場合には、異常制御信号判別部１２４が正常な制御信号の範囲を記憶しておき、制御信号取得部１４１が取得した制御信号の値がその範囲から逸脱したら、異常制御信号判別部１２４がその制御信号を異常制御信号として判別する。
あるいは、修理担当者に正常な制御信号の範囲を入力させて、その範囲を逸脱したら、異常制御信号判別部１２４がその制御信号を異常制御信号として判別することとしてもよい。
着目制御信号判別部１２１は、異常制御信号判別部１２４が判別した異常制御信号をそのまま着目制御信号として判別する。
【００６１】
これにより、異常な制御信号の発見を自動化することができ、着目制御信号を容易に決定することができる。着目制御信号に関連する情報を強調して表示するので、修理担当者が他の不必要な情報に気をとられることがなくなり、故障個所を容易に発見できるようになる。
このように、着目制御信号を容易に決定できることにより、解析対象装置の解析の効率を高めることができる。
【００６２】
実施の形態４．
実施の形態４を図１〜図１３を用いて説明する。
この実施の形態における解析支援装置１００の全体構成は、実施の形態３で説明した構成と同じ構成である。
【００６３】
エレベータ２００の制御部２１０は、ソフトウェア５１１の実行により、入力された制御信号に基づいて複雑な計算を行っている。そして、その結果に基づいて制御信号を出力する。
したがって、制御信号同士の関係は非常に複雑に絡み合っている。
【００６４】
修理担当者が故障個所を探索する場合、通常は故障の症状が出ている個所から探索を始める。例えば、駆動モータ２２６が動かないのであれば、駆動モータ２２６を駆動する制御信号を調べる。
ここで、駆動モータ２２６を駆動する制御信号が正常であるにもかかわらず、駆動モータ２２６が動かないのであれば、駆動モータ２２６が故障していることがわかる。
しかし、そもそも駆動モータ２２６を駆動する制御信号が異常値なのであれば、駆動モータ２２６が動かないのは当然であり、他の部分が故障していることになる。
そこで、修理担当者は、駆動モータ２２６を駆動する制御信号が異常値を示す原因を探索することになる。
【００６５】
しかし、この探索は容易ではない。エレベータ２００の制御部２１０が実行しているソフトウェア５１１がどのような処理を行っているかを理解する必要があり、修理担当者がそのソフトウェア５１１のソースコード５０１を記述した言語に精通しているとは限らないからである。
【００６６】
修理担当者は、制御信号が異常値を示す原因を探索しようとしているので、エレベータ２００の制御部２１０におけるソフトウェア５１１の実行により、異常値を示している制御信号に影響を与えている制御信号がどれかを知りたいはずである。
【００６７】
そこで、この実施の形態では、着目制御信号判別部１２１が判別した着目制御信号に基づき、依存制御信号判別部１２５がその着目制御信号と依存関係のある制御信号を依存制御信号として判別し、着目制御信号判別部１２１が、その依存制御信号を着目制御信号として判別する。
【００６８】
ここで、依存関係とは、ソフトウェア５１１を実行している制御部２１０に入力される制御信号が、制御部２１０から出力される制御信号に対して影響を与えるという関係にある２つの制御信号の間の関係をいう。
図１０〜図１３は、制御部２１０が実行しているソフトウェア５１１のソースコード５０１の一例である。
【００６９】
図１０において、変数「ｇ＿ｉｎ１」及び変数「ｇ＿ｏｕｔ１」はともに、ソースコード５０１のなかで制御信号を記述したものである。
関数「ｆｕｎｃ＿Ｘ」のなかで変数「ｇ＿ｉｎ１」の値が変数「ｇ＿ｏｕｔ１」に代入されている。したがって、関数「ｆｕｎｃ＿Ｘ」が実行されるとき、変数「ｇ＿ｉｎ１」の値が変わっていれば、変数「ｇ＿ｏｕｔ１」の値も変わる。したがって、変数「ｇ＿ｉｎ１」によって記述されている制御信号の値が変われば、変数「ｇ＿ｏｕｔ１」によって記述されている制御信号の値も変わる。すなわち、この２つの制御信号の間には、代入による依存関係がある。
【００７０】
図１１において、変数「ｇ＿ｉｎ２」及び変数「ｇ＿ｏｕｔ２」はともに、ソースコード５０１のなかで制御信号を記述したものである。しかし、変数「ｌ＿ｃｙｕｕｋａｎ１」は、一時的に値を記憶するために設けられているもので、制御信号とは無関係である。
関数「ｆｕｎｃ＿Ｘ」のなかで変数「ｇ＿ｉｎ２」と変数「ｇ＿ｏｕｔ２」は、一つの代入式の右辺と左辺に記述されているのではないので、関係がないようにも見える。しかし、実際には、変数「ｇ＿ｉｎ２」の値が変数「ｌ＿ｃｈｕｕｋａｎ１」に代入され、変数「ｌ＿ｃｈｕｕｋａｎ１」の値が変数「ｇ＿ｏｕｔ２」に代入されている。したがって、変数「ｇ＿ｉｎ２」の値が変わっていれば、変数「ｌ＿ｃｙｕｕｋａｎ１」の値が変わり、その結果、変数「ｇ＿ｏｕｔ２」の値も変わる。すなわち、変数「ｇ＿ｉｎ２」によって記述されている制御信号と、変数「ｇ＿ｏｕｔ２」によって記述されている制御信号との間には、やはり代入による依存関係がある。
【００７１】
図１２において、変数「ｇ＿ｉｎ３」及び変数「ｇ＿ｏｕｔ３」はともに、ソースコード５０１のなかで制御信号を記述したものである。
関数「ｆｕｎｃ＿Ｘ」のなかで、変数「ｇ＿ｉｎ３」の値が０と等しいかによってソフトウェアの実行経路が変わる。ソフトウェアの実行経路が変わることにより、変数「ｇ＿ｏｕｔ３」に代入される値が変わる。したがって、変数「ｇ＿ｉｎ３」の値が変われば、変数「ｇ＿ｏｕｔ３」の値も変わる可能性がある。すなわち、変数「ｇ＿ｉｎ３」によって記述されている制御信号と、変数「ｇ＿ｏｕｔ３」によって記述されている制御信号との間には、条件分岐による依存関係がある。
【００７２】
図１３において、変数「ｇ＿ｉｎ４」及び変数「ｇ＿ｏｕｔ４」はともに、ソースコード５０１のなかで制御信号を記述したものである。しかし、変数「ｌ＿ｃｙｕｕｋａｎ２」は、一時的に値を記憶するために設けられているもので、制御信号とは無関係である。
関数「ｆｕｎｃ＿Ｘ」のなかで、変数「ｇ＿ｉｎ３」の値が変数「ｌ＿ｃｙｕｕｋａｎ２」に代入される。次に、変数「ｌ＿ｃｙｕｕｋａｎ２」の値が０と等しいかによってソフトウェアの実行経路が変わる。ソフトウェアの実行経路が変わることにより、変数「ｇ＿ｏｕｔ４」に代入される値が変わる。したがって、変数「ｇ＿ｉｎ４」の値が変われば、変数「ｇ＿ｏｕｔ４」の値も変わる可能性がある。すなわち、変数「ｇ＿ｉｎ４」によって記述されている制御信号と、変数「ｇ＿ｏｕｔ４」によって記述されている制御信号との間にも、条件分岐による依存関係がある。
【００７３】
このような依存関係に基づけば、ある制御信号が異常値を示す原因となっている制御信号を絞り込むことが可能である。すなわち、異常値を示している制御信号と依存関係のある制御信号のどれかに原因となっている制御信号があるはずである。その制御信号と依存関係のない制御信号は無関係である。
したがって、修理担当者は、異常値を示している制御信号と依存関係のある制御信号だけを探索すればよい。
【００７４】
そこで、この実施の形態では、着目制御信号と依存関係のある制御信号も、着目制御信号とすることにより、その制御信号に関連する情報を強調して表示する。修理担当者が他の不必要な情報に気をとられることがなくなり、故障個所を容易に発見できるようになる。
また、着目制御信号が複数ある場合には、２つ以上の着目制御信号と依存関係のある制御信号を特に注目すべき制御信号として、それに関連する情報を更に強調して表示することとしてもよい。２つ以上の症状が同時に出ている場合、その原因となっている故障は、一つであることが多い。したがって、これにより、探索すべき制御信号を更に絞り込むことができる。
【００７５】
あるいは、依存制御信号と依存関係のある制御信号も、更に着目制御信号として、それに関連する情報も強調して表示することとしてもよい。そうすれば、ある制御信号に原因があるとすれば他にも影響が出そうな制御信号に注目することができる。その結果、他の制御信号には影響が出ていないのであれば、修理担当者は、その制御信号が原因ではないのではないかと推測することができる。
【００７６】
これにより、修理担当者がソースコード５０１を記述した言語に精通していなくても、探索すべき制御信号を絞り込むことが容易となり、故障個所を容易に発見できるようになる。
【００７７】
このように、着目制御信号を容易に絞り込むことができることにより、解析対象装置の解析の効率を高めることができる。
【００７８】
実施の形態５．
実施の形態５を図１〜図３及び図１４を用いて説明する。
図１〜図３は、この実施の形態における解析支援装置１００の構成を示す。図面の説明は、実施の形態１に記載したので、ここでは省略する。
この実施の形態における解析支援装置１００は、更に、図１４に示す構成を有する。
【００７９】
エレベータ２００の制御部２１０は、通常、ソフトウェア５１１のすべての部分を実行しているわけではない。ソフトウェア５１１の制御の流れのなかには、いくつかの分岐点及び合流点が存在し、ある条件を満たした場合にのみ、その部分を実行する。
したがって、その条件を満たしていない状態では、ソフトウェア５１１のなかに実行されない部分が存在することになる。
【００８０】
すなわち、ソースコード情報表示部１１２がＣＲＴ９０１に表示するソースコード情報のうち、実際に実行されていない部分に対応するソースコード情報は、表示する必要がない。それどころか、そのようなソースコード情報が表示されていると、修理担当者がその部分に気をとられてしまい、故障個所の発見の効率を悪くする原因にもなり得る。
【００８１】
そこで、この実施の形態では、実行ソースコード情報判別部１６１が、エレベータ２００の制御部２１０が実際に実行しているソフトウェアの実行経路を判別し、ソースコード情報記憶部１５１が記憶しているソースコード情報のうち、その実行経路に関連するソースコード情報を実行ソースコード情報として判別する。ソースコード情報表示部１１２は、ソースコード情報記憶部１５１が記憶しているソースコード情報のうち実行ソースコード情報を強調して表示する。
【００８２】
その結果、修理担当者が他の不必要な情報に気をとられることがなくなり、故障個所を容易に発見できるようになる。
【００８３】
このように、ＣＲＴ９０１に表示される情報のうち、実際に実行されている実行経路に関連する情報を強調して表示することにより、解析対象装置の解析の効率を高めることができる。
【００８４】
実施の形態６．
実施の形態６を図１〜図３及び図１４〜図１６を用いて説明する。
この実施の形態における解析支援装置１００の全体構成は、実施の形態５で説明した構成と同じである。
【００８５】
ここでは、実行ソースコード情報判別部１６１がどのようにして実行ソースコード情報を判別するかについて説明する。
【００８６】
図１５及び図１６は、制御部２１０が実行しているソフトウェア５１１のソースコード５０１の一例及びそれに対応してソースコード情報表示部１１２がＣＲＴ９０１に表示するチャート図形情報である。この例では、チャート図形情報としてフローチャートを用いている。
図１５において、この例のソースコードは制御の流れにより、分岐位置及び合流位置で４つの部分に分割できる。すなわち、関数「ｆｕｎｃ＿Ｘ」を実行すると、「／＊  処理Ａ  ＊／」の部分は常に実行されるが、「／＊  処理Ｂ  ＊／」の部分は分岐条件「ｇ＿ｉｎ１＞０」が真の場合にのみ実行される。「／＊  処理Ｃ  ＊／」の部分は逆に分岐条件「ｇ＿ｉｎ１＞０」が偽の場合にのみ実行される。その後、制御の流れは合流し、「／＊  処理Ｄ  ＊／」の部分は常に実行される。
したがって、「／＊  処理Ｂ  ＊／」と「／＊  処理Ｃ  ＊／」のどちらを実行するかは、分岐条件「ｇ＿ｉｎ１＞０」が真かどうかを見れば判別できる。
【００８７】
図１５において、変数「ｇ＿ｉｎ１」は、ソースコード５０１のなかで制御信号を記述したものである。
したがって、変数「ｇ＿ｉｎ１」によって記述されている制御信号の値がわかれば、分岐条件「ｇ＿ｉｎ１＞０」が真かどうかがわかり、「／＊  処理Ｂ  ＊／」と「／＊  処理Ｃ  ＊／」のどちらを実行するかも判別できる。
【００８８】
制御信号取得部１４１が制御信号の内容を取得する。
実行ソースコード情報判別部１６１は、記述対応関係記憶部１５４が記憶している変数対応関係５３２を読出し、変数「ｇ＿ｉｎ１」によって記述されている制御信号の値から、変数「ｇ＿ｉｎ１」の値を求める。
実行ソースコード情報判別部１６１は、更に、変数「ｇ＿ｉｎ１」の値から、分岐条件「ｇ＿ｉｎ１＞０」が真かどうかを求める。以下、分岐条件「ｇ＿ｉｎ１＞０」が真だったとして説明する。
実行ソースコード情報判別部１６１は、分岐条件「ｇ＿ｉｎ１＞０」が真だったので、「／＊  処理Ａ  ＊／」「／＊  処理Ｂ  ＊／」「／＊  処理Ｄ  ＊／」に対応するソースコード情報を実行ソースコード情報として判別する。
ソースコード情報表示部１１２は、実行ソースコード情報を強調して表示する。図１５では、「／＊  処理Ａ  ＊／」「／＊  処理Ｂ  ＊／」「／＊  処理Ｄ  ＊／」に対応する部分を大きく、かつ、線を太くして表示することで、強調部分が目立つようにしている。
【００８９】
このように、制御信号取得部１４１が取得した制御信号に基づいてエレベータ２００の制御部２１０が実際に実行しているソフトウェア５１１の実行経路を特定することにより、制御部２１０の内部情報（例えば、実行アドレスなど）を取得しなくてもよいので、エレベータ２００と解析支援装置１００の接続のために必要な装置を軽減できる。
【００９０】
図１６において、この例のソースコードは制御の流れにより、分岐位置及び合流位置で５つの部分に分割できる。すなわち、必ず実行される部分「／＊  処理Ａ  ＊／」、変数「ｇ＿ｉｎ２」の値によって、選択的に実行される部分「／＊  処理Ｂ  ＊／」「／＊  処理Ｃ  ＊／」「／＊  処理Ｄ  ＊／」、そのあとで必ず実行される部分「／＊  処理Ｅ  ＊／」である。
【００９１】
図１６において、変数「ｇ＿ｉｎ２」は、ソースコード５０１のなかで制御信号を記述したものであるが、変数「ｌｏｃａｌ」は、一時的に値を記憶するために設けられているもので、制御信号とは無関係である。
【００９２】
制御部２１０が、「／＊  処理Ｂ  ＊／」「／＊  処理Ｃ  ＊／」「／＊  処理Ｄ  ＊／」のうち、どの処理を実行しているかを知るためには、分岐条件を調べる必要がある。
分岐条件「ｇ＿ｉｎ２＝０」が真の場合は、「／＊  処理Ｂ  ＊／」が実行される。
分岐条件「ｇ＿ｉｎ２＝０」が偽であるが分岐条件「ｇ＿ｉｎ２＝ｌｏｃａｌ」が真の場合には、「／＊  処理Ｃ  ＊／」が実行される。
上記分岐条件が両方とも偽の場合には、「／＊  処理Ｄ  ＊／」が実行される。
【００９３】
分岐条件「ｇ＿ｉｎ２＝０」が真かどうかを知るためには、変数「ｇ＿ｉｎ２」の値を知る必要がある。変数「ｇ＿ｉｎ２」はソースコード５０１のなかで制御信号を記述したものなので、変数「ｇ＿ｉｎ２」によって記述されている制御信号の値がわかれば、変数「ｇ＿ｉｎ２」の値がわかる。
【００９４】
制御信号取得部１４１が制御信号の内容を取得する。
実行ソースコード情報判別部１６１は、記述対応関係記憶部１５４が記憶している変数対応関係５３２を読出し、変数「ｇ＿ｉｎ２」によって記述されている制御信号の値から、変数「ｇ＿ｉｎ２」の値を求める。
実行ソースコード情報判別部１６１は、更に、変数「ｇ＿ｉｎ２」の値から、分岐条件「ｇ＿ｉｎ２＝０」が真かどうかを求め、真の場合には、「／＊  処理Ｂ  ＊／」に対応するソースコード情報を実行ソースコード情報として判別する。
【００９５】
分岐条件「ｇ＿ｉｎ２＝０」が偽の場合には、分岐条件「ｇ＿ｉｎ２＝ｌｏｃａｌ」が真かどうかを知る必要がある。そのためには、変数「ｇ＿ｉｎ２」の値だけでなく、変数「ｌｏｃａｌ」の値も知らなければならない。
変数「ｌｏｃａｌ」はソースコード５０１のなかで制御信号を記述したものではないので、制御信号取得部１４１が取得した制御信号の値から、変数「ｌｏｃａｌ」の値を知ることはできない。
【００９６】
変数「ｌｏｃａｌ」の値を知るには、エレベータ２００の制御部２１０が実行しているソフトウェア５１１の処理を解析支援装置１００の内部でシミュレートすればよい。
すなわち、エレベータ２００の制御部２１０に入力される制御信号の値は、制御信号取得部１４１が取得しているので、その値に基づいて制御信号を記述した変数の値を求めることができる。
次に、その値に基づいて他の変数の値を計算している場合には、その計算と同じ計算をして、他の変数の値を求める。
また、それらの変数の値によって、制御の流れが分岐する場合には、計算した変数の値に基づいて分岐条件を満たすかどうかを調べ、次に実行する処理を求める。
このように、エレベータ２００の制御部２１０が実行しているソフトウェア５１１の処理を、解析支援装置１００の内部で模倣することで、変数「ｌｏｃａｌ」の値を知ることができる。
【００９７】
このように、制御信号取得部１４１が取得した制御信号だけに基づいてエレベータ２００の制御部２１０が実際に実行しているソフトウェア５１１の実行経路を特定することにより、制御部２１０の内部情報（例えば、実行アドレスなど）を取得しなくてもよいので、エレベータ２００と解析支援装置１００の接続のために必要な装置を軽減できる。
【００９８】
しかし、別のやり方もある。エレベータ２００のＲＡＭ２５１は変数「ｌｏｃａｌ」の値を記憶している。その内容を取得すれば、変数「ｌｏｃａｌ」の値を知ることができる。
エレベータ２００のＲＡＭ２５１の記憶内容は、記憶内容取得部１４２がエレベータ２００の接続部２３０と通信して、取得する。しかし、エレベータ２００の接続部２３０を介して、直接、ＲＡＭ２５１に接続し、例えばＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ：ダイレクトメモリアクセス）により取得してもよい。
実行ソースコード情報判別部１６１は、記憶対応関係記憶部１５３が記憶している変数記憶対応関係５１３により、ＲＡＭ２５１の記憶内容のうちのどこに変数「ｌｏｃａｌ」の値があるかを判別し、変数「ｌｏｃａｌ」の値を求める。
【００９９】
ソフトウェア５１１の処理をシミュレートするやり方の場合、制御信号を取得するタイミングによっては、エレベータ２００の制御部２１０が取得した制御信号の値と異なる値を取得してしまう可能性がある。その結果、シミュレートによる変数「ｌｏｃａｌ」の値が実際とは異なり、実際の実行経路に対応しないソースコード情報を、間違って実行ソースコード情報として判別してしまう場合がある。
【０１００】
しかし、エレベータ２００のＲＡＭ２５１の記憶内容を取得することにより、変数「ｌｏｃａｌ」の値を求めれば、実際の値と異なる値となることはないので、実行ソースコード情報を間違って判別することはない。
【０１０１】
このように、エレベータ２００のＲＡＭ２５１が記憶した記憶内容を取得する記憶内容取得部１４２を設けることにより、エレベータ２００の制御部２１０が実際に実行しているソフトウェア５１１の実行経路を特定できるので、ソフトウェア５１１の処理をシミュレートする必要がなく、実行ソースコード情報を間違って判別する心配もない。
【０１０２】
以上によって、分岐条件「ｇ＿ｉｎ２＝ｌｏｃａｌ」が真だということがわかった場合、実行ソースコード情報判別部１６１は、常に実行される「／＊  処理Ａ  ＊／」「／＊  処理Ｅ  ＊／」及び選択的に実行される「／＊  処理Ｃ  ＊／」に対応するソースコード情報を実行ソースコード情報として判別する。
ソースコード情報表示部１１２は、実行ソースコード情報を強調して表示する。図１６では、「／＊  処理Ａ  ＊／」「／＊  処理Ｃ  ＊／」「／＊  処理Ｅ  ＊／」に対応する部分を大きく、かつ、線を太くして表示するだけでなく、それ以外の部分である「／＊  処理Ｂ  ＊／」「／＊  処理Ｄ  ＊／」に対応する部分を表示しないことにより、強調部分を目立たせている。
【０１０３】
なお、以上のようにして計算あるいは取得した変数の値をＣＲＴ９０１に表示する構成とすれば、ソフトウェアの動作を理解することが更に容易になり、好ましい。
【０１０４】
実施の形態７．
実施の形態７を図１〜図３及び図１７を用いて説明する。
図１〜図３は、この実施の形態における解析支援装置１００の構成を示す。図面の説明は実施の形態１に記載したので、ここでは省略する。
この実施の形態における解析支援装置１００は、更に、図１７に示す構成を有する。
【０１０５】
エレベータ２００の制御部２１０が実際に実行しているソフトウェア５１１の実行経路に対応する実行ソースコード情報を判別する方法として、もう一つのやり方がある。
エレベータ２００の制御部２１０のＰＣ（Ｐｒｏｇｒａｍ  Ｃｏｕｎｔｅｒ：プログラムカウンタ）の値など、実際に実行しているソフトウェア５１１のメモリ上のアドレスである実行アドレスを取得すれば、実行経路が特定できるので、それに対応する実行ソースコード情報が判別できる。
【０１０６】
実行アドレスは、実行アドレス取得部１４３が、エレベータ２００の接続部２３０を介して、取得する。具体的には、アドレスバスを監視して、制御部２１０が命令語を読み込むタイミングで出ているアドレスが実行アドレスである。あるいは、定期的に制御部２１０にハードウェア割込みをかけ、退避された戻りアドレスを取得すれば、その時の実行アドレスがわかる。これらの動作を行う部分はエレベータ２００に設けてあり、実行アドレス取得部１４３は接続部２３０と通信して、実行アドレスを取得する。しかし、実行アドレス取得部１４３が接続部２３０を介して、直接、制御部２１０と接続し、これらの動作を実行アドレス取得部１４３が行うことで、実行アドレスを取得してもよい。
【０１０７】
実行ソースコード情報判別部１６１は、アドレス対応関係記憶部１５２が記憶しているアドレス対応関係５１２により、その実行アドレスに対応するソースコード情報を、実行ソースコード情報として判別する。
【０１０８】
このように、エレベータ２００の制御部２１０の実行アドレスを取得する実行アドレス取得部１４３を設けることにより、エレベータ２００の制御部２１０が実際に実行しているソフトウェア５１１の実行経路を特定できるので、ソフトウェア５１１の処理をシミュレートする必要がなく、実行ソースコード情報を間違って判別する心配もない。
【０１０９】
実施の形態８．
図１８は、エレベータ故障解析装置（解析支援装置の一例）の構成の一例を示す図である。同図に示すエレベータ故障解析装置１００は、入出力装置９５０と、解析対象ソフトウェア記憶部６５１と、ソフトウェア故障解析部６７１と、変数依存関係解析部６７２と、エレベータ故障解析情報記憶部６５２と、エレベータ通信部６４１と、故障解析情報表示部６１１と、実行経路表示部６１２と、変数値表示部６１３と、エレベータ構成情報記憶部６５４と、特定構成表示部６１４と、電気回路図面関連記憶部６５３と、電気回路図面記憶部６５５と、電解回路図面表示部６１５より構成される。
【０１１０】
解析対象ソフトウェア記憶部６５１は、解析対象ソフトウェアを記憶する。
ソフトウェア故障解析部６７１は、解析対象のソフトウェアを解析し、関数の定義位置、戻り値、引数、使用しているグローバル変数、ローカル変数、マクロ、呼び出している関数、呼び出されている関数、関数のプログラム図の情報を含む関数情報、グローバル変数の定義位置、型、使用されている位置の情報を含むグローバル変数情報、ローカル変数の定義位置、型、使用されている位置の情報を含むローカル変数情報、引数の定義位置、型、使用されている位置の情報を含む引数情報、型の定義位置、定義の実体、使用位置の情報を含む型情報、マクロの定義、使用位置の情報を含むマクロ情報、定数の使用位置の情報を含む定数情報を含むエレベータのソフトウェアの情報を生成する。
変数依存関係解析部６７２は、関数スコープの中で、グローバル変数の依存関係を解析する。
エレベータ故障解析情報記憶部６５２は、ソフトウェア故障解析部６７１及び変数依存関係解析部６７２の解析結果を記憶する。
エレベータ通信部１４１は、エレベータと通信し、エレベータの実行経路の情報及び、エレベータ中の変数の値の情報を取得する。
故障解析情報表示部６１１は、エレベータ故障解析情報記憶部の情報を表示する。
実行経路表示部６１２は、エレベータ通信部を介してエレベータと通信し、実行経路を取得し、実行した経路に関係するエレベータ故障解析情報記憶部のみを表示する。
変数値表示部６１３は、エレベータ通信部を介してエレベータと通信し、定期的に、エレベータ中の変数の値を表示する。
エレベータ構成情報記憶部６５４は、エレベータソフトウェアの構成を記憶する。
特定構成表示部６１４は、エレベータ構成情報記憶部６５４を参照し、特定のエレベータ構成に関係する情報のみを表示する。
電気回路図面関連記憶部６５３は、関数や変数と、関数や変数に関連する電気回路図面との関連の情報を記憶する。
電気回路図面記憶部６５５は、電気回路図面を記憶する。
電気回路図面表示部は、電気回路図面関連記憶部６５３、電気回路図面記憶部６５５を参照して特定の関数や変数に関連する電気回路図面を表示する。
【０１１１】
本実施例においては、実施の形態１〜実施の形態７と異なり、エレベータ故障解析装置が、ソースコード解析装置４００を含む構成となっている。
【０１１２】
本実施例において、エレベータ故障解析装置１は、図５に示すような高級言語であるＣ言語で記述されたプログラムを故障解析対象プログラムとする。
【０１１３】
ソフトウェア故障解析部６７１は、解析対象ソフトウェア記憶部６５１が記憶する解析対象装置のソフトウェアのソースコードを解析し、下記の情報を含むエレベータ故障解析情報を生成する。
・  関数情報：
関数の定義位置、戻り値、引数、使用しているグローバル変数、ローカル変数、マクロ、呼び出している関数、呼び出されている関数、関数のプログラム図の情報を含む関数情報
・  グローバル変数情報：
グローバル変数の定義位置、型、使用されている位置の情報を含むグローバル変数情報
・  ローカル変数情報：
ローカル変数の定義位置、型、使用されている位置の情報を含むローカル変数情報
・  引数情報：
引数の定義位置、型、使用されている位置の情報を含む引数情報
・  型情報：
型の定義位置、定義の実体、使用位置の情報を含む型情報
・  マクロ情報：
マクロの定義位置、定義、使用位置の情報を含むマクロ情報
・  定数情報：
定数の使用位置の情報を含む定数情報
図５のソフトウェアを解析し、生成されたエレベータ故障解析情報を故障解析情報表示部６１１（ソースコード情報表示部の一例）を介してＨＴＭＬ形式で表示する。表示される関数情報及び、グローバル変数情報を図５に示す。表示の形式はＨＴＭＬ形式以外の任意の形式で構わない。
【０１１４】
このように、解析支援装置にソースコード解析装置を含む構成とすることで、あらかじめソースコードを解析しておく必要がなくなる。
【０１１５】
実施の形態９．
この実施の形態における解析支援装置１００の構成は、実施の形態８で説明した構成と同じである。
この実施の形態は、更に、プログラム図を生成する際に、作業者に必要な情報のみを生成する。
【０１１６】
従来のプログラム図情報作成装置は
・  ソースとコメントの両者
・  ソースのみ
・  コメントのみ
の情報を抽出することが可能である。
【０１１７】
しかし、全てのソースの情報をプログラム図情報として抽出すると、作業者に不要な情報を与えることになる場合があるため、全てのソースの情報についてプログラム図情報を生成するのではなく、プログラムの文法に着目して、作業者に必要な情報のみをプログラム図のソースとして抽出し、プログラム図を生成することが望ましいことがある。
【０１１８】
たとえば、作業者がエレベータの故障解析時に最も有効な情報はグローバル変数への読み書きの情報であった場合、プログラムの解析を行うことで、グローバル変数への読み書きの部分を抽出する。図６のソフトウェアで、これまでのプログラム図生成ツールでは、ソースとコメントの情報を抽出しようとすると、図６のようにグローバル変数の読み書きに関係ないソースまで表示されてしまう。本装置を使用すると、プログラムの文法要素を解析した後で、プログラム図を生成するため、グローバル変数の読み書きに関係するソースのみを含む図８のようなプログラム図を生成することが可能である。作業者に必要な情報の絞込みは、文法要素のみだけでなく、変数や関数の命名規則など別の規則で与えることも可能である。
【０１１９】
このように、プログラミングの段階で、あらかじめ、ソースコードの中で作業者に必要な情報と必要でない情報を区別できるように記述しておき、その記述に基づいて、強調して表示する部分を選択すれば、作業者が注目すべき情報をより素早く発見できるようになる。
【０１２０】
実施の形態１０．
この実施の形態における解析支援装置１００の構成は、実施の形態８で説明した構成と同じである。
この実施の形態は、更に、関数スコープの中で、解析対象の変数が依存している変数を、絞り込むことを支援する。
【０１２１】
変数依存解析部６７２は、関数スコープにおけるグローバル変数の依存関係を抽出することが可能である。関数スコープにおけるグローバル変数の依存関係を抽出することで、エレベータの故障している信号に着目した故障原因の究明に役にたつ。依存関係には下記の種類がある。
・  代入に関する依存関係
・  制御に関する依存関係
また，依存関係は，内部変数を介して上記の依存関係が成立することがある。
【０１２２】
代入に関する依存関係とは，図１０に示すグローバル変数ｇ＿ｏｕｔ１とｇ＿ｉｎ１の関係であり，ｇ＿ｏｕｔ１はｇ＿ｉｎ１に依存している。これは一般的に，代入式の左辺のグローバル変数が，代入式の右辺に含まれるグローバル変数に依存するという関係である。
【０１２３】
代入に関する依存関係が内部変数を介して成立する例を図１１に示す。図に示すグローバル変数ｇ＿ｏｕｔ２とｇ＿ｉｎ２の関係であり，ｇ＿ｏｕｔ２はｇ＿ｉｎ２に依存している。この例では，ｌ＿ｃｙｕｕｋａｎ１という内部変数を介して代入に関する依存関係が成立している。一般的に内部変数を介して代入に関する依存関係が成立するとは，代入に関する依存関係において依存されるグローバル変数が内部変数Ａに代入され，代入式の左辺にが，代入に関する依存関係において依存するグローバル変数であり，代入式の右辺に内部変数Ａが含まれる場合である。
【０１２４】
制御に関する依存関係とは，図１２に示すグローバル変数ｇ＿ｏｕｔ３とｇ＿ｉｎ３の関係であり，ｇ＿ｏｕｔ３はｇ＿ｉｎ３に依存している。これは一般的には，制御文の条件式の評価結果によって，値が変更されるグローバル変数が，制御文の条件式に含まれるグローバル変数に依存するという関係である。
【０１２５】
制御に関する依存関係が内部変数を介して成立する例を図に示す。図１３に示すグローバル変数ｇ＿ｏｕｔ４とｇ＿ｉｎ４の関係であり，ｇ＿ｏｕｔ４はｇ＿ｉｎ４に依存している。この例では，ｌ＿ｃｙｕｕｋａｎ２という内部変数を介して制御に関する依存関係が成立している。一般的に内部変数を介して制御に関する依存関係が成立するとは，制御に関する依存関係において依存されるグローバル変数が内部変数Ａに代入され，代入に関する依存関係において依存するグローバル変数が，制御文の条件式の評価結果によって，値が変更されるグローバル変数であり，制御文の制御式に内部変数Ａが含まれる場合である。
【０１２６】
このように、変数の依存関係を表示することにより、作業者が注目すべき情報を容易に絞り込めるようになる。
【０１２７】
実施の形態１１．
この実施の形態における解析支援装置１００の構成は、実施の形態８で説明した構成と同じである。
この実施の形態は、更に、動作中のエレベータと通信を行い、解析対象の変数の値を取得する。
【０１２８】
エレベータ通信部６４１は、エレベータ故障解析装置１００とエレベータ２００との通信インターフェースであり、ソフトウェアの実アドレスやプログラムにおける変数のスコープ及び変数名を指定することで、任意のエレベータの信号の状態を参照したり、変更したりする。エレベータ故障解析装置１００を介することで、エレベータ故障解析情報の中での任意のグローバル変数の値の情報を、エレベータから取得し、変数値表示部６１３が取得した値を表示する。
【０１２９】
このように、解析対象装置から情報を取得するだけでなく、解析対象装置の信号の状態を直接変更できる構成とすれば、信号の状態の変化が実際に解析対象装置の動作にどのように影響するかを直接確認することができるので、解析対象装置の解析の効率が高くなる。
【０１３０】
実施の形態１２．
この実施の形態における解析支援装置１００の構成は、実施の形態８で説明した構成と同じである。
この実施の形態は、更に、動作中のエレベータと通信して取得した変数の値を参照して、プログラム図中で、実行されているプログラム経路を表示する。
【０１３１】
実行経路表示部、エレベータのプログラムの実行経路に影響を与えるグローバル変数の情報を定期的に、エレベータ通信部を介して得ることにより、プログラムの実行経路を監視し、その結果を表示する。図１９に解析対象のソフトウェアのソースコードを示す。このソフトウェアのソースコードにおいて、グローバル変数ｇ＿ｉｎ１及び，ｇ＿ｉｎ２は分岐を含む関数ｆｕｎｃ＿Ｘ（）の実行経路を決定する変数である。実行経路表示部６１２は定期的に，ｇ＿ｉｎ１及び，ｇ＿ｉｎ２の値を，エレベータ通信部６４１を介して得る。
【０１３２】
ｇ＿ｉｎ１が０より大きい場合は、／＊  経路Ａ１を実行  ＊／の部分の色を変えるなどして、実行されていることが作業者が認知できるようにし、ｇ＿ｉｎ１が０以下の場合は、／＊  経路Ａ２を実行  ＊／の部分の色を変えるなどして、実行されていることを作業者が認知できるようにする。
【０１３３】
ｇ＿ｉｎ２が０の場合は、／＊  経路Ｂ１を実行  ＊／の部分の色を変えるなどして，実行されていることが作業者が認知できるようにし、ｇ＿ｉｎ２が１の場合は、／＊  経路Ｂ２を実行  ＊／の部分の色を変えるなどして、実行されていることが作業者が認知できるようにし、ｇ＿ｉｎ２が０、１以外の場合は、／＊  経路Ｂ３を実行  ＊／の部分の色を変えるなどして、実行されていることを作業者が認知できるようにする。
【０１３４】
このように、実際の実行経路に着目して、強調して表示する部分を選択すれば、作業者が注目すべき情報をより素早く発見できるようになる。
【０１３５】
実施の形態１３．
この実施の形態における解析支援装置１００の構成は、実施の形態８で説明した構成と同じである。
この実施の形態は、更に、解析対象の変数に関連する電気回路図面を表示する。
【０１３６】
電気回路図面表示部６１５は、関数と関数が実現する機能に関連する電気回路図面との関係を記憶している電気回路図面関連記憶部６５３の情報を参照し、エレベータ故障解析情報中の関数に関連する電気回路図を電気回路図面記憶部６５５から選択し表示する。図２０に電気回路図面関連記憶部６５５が記憶する関連情報の例を示す。機能Ａに関連するｆｕｎｃＸａ（）を指定し、関連する電気回路図面を示した場合、電気回路図面Ａが表示され、機能Ｂに関連するｆｕｎｃＸｂ（）を指定し、関連する電気回路図面を示した場合、電気回路図面Ｂが表示される。
【０１３７】
このように、制御信号を介することなく、ソースコードと回路図面との関係を直接記述して記憶しておけば、ソフトウェアと回路の対応関係を把握しやすくなる。
【０１３８】
実施の形態１４．
この実施の形態における解析支援装置１００の構成は、実施の形態８で説明した構成と同じである。
この実施の形態は、更に、エレベータの構成毎に、対象の構成の時に関係する情報のみを表示する。
【０１３９】
特定構成表示部６１４は、エレベータのソフトウェアの構成を記憶しているエレベータ構成情報記憶部６５４を参照し、特定構成に関係している情報しか表示しない。図２１に解析対象のソフトウェアのソースコード、図２２にエレベータ構成情報記憶部中の構成情報の例を示す。関数ｆｕｎｃＸａ（）と、グローバル変数ｇ＿ｆｕｎｃ＿ａは構成Ａでのみにしか関係しないことを示し、関数ｆｕｎｃＸｂ（）と、グローバル変数ｇ＿ｆｕｎｃ＿ｂは構成Ｂでのみにしか関係しないことを示す情報の例である。構成Ａを指定した場合、関数ｆｕｎｃＸｂ（）と、グローバル変数ｇ＿ｆｕｎｃ＿ｂに関係するの故障解析情報を非表示にし、構成Ｂを指定した場合は、関数ｆｕｎｃＸａ（）と、グローバル変数ｇ＿ｆｕｎｃ＿ａに関する故障解析情報を非表示にする。
【０１４０】
このように、解析対象装置の構成に着目して、強調して表示する部分を選択すれば、作業者が注目すべき情報をより素早く発見できるようになる。
【０１４１】
以上に説明したように、効率的なエレベータの故障解析が可能となり、特に、エレベータプログラムの開発者以外でも，故障元の変数から，故障の原因となっている変数を調査する場合の作業効率が向上する。
【０１４２】
また、プログラム図情報として、（１）ソースとコメントの両者、（２）ソースのみ（３）コメントのみの情報が抽出可能になったり、対象の構成の時に関係する情報のみを表示することで、作業者が故障解析作業に必要最小限度の情報だけを参照することにより、故障解析を行うことが可能となる。
【０１４３】
さらに、稼動中のエレベータの信号の値を参照したり、実行経路を表示したり、関連する電気回路図面を参照したり、することで故障原因の調査が効率化される。
【０１４４】
これにより、エレベータの据付現場において、高度なＣ言語に対する理解がない作業者でも、故障の直接の要因となっている変数から、故障の発端の原因となっている変数を探索することが、効率的に実記可能となる。
【０１４５】
実施の形態１５．
以上、実施の形態１〜実施の形態１４で述べた構成は、任意に組み合わせることができる。
【０１４６】
これにより、各構成の効果を相乗させることができ、更に、解析対象装置の解析の効率を高めることができる。
【図面の簡単な説明】
【０１４７】
【図１】実施の形態１〜実施の形態１４における解析支援装置のハードウェア構成の一例を示す図。
【図２】実施の形態１〜実施の形態１４における解析支援装置の内部構成の一例を示す図。
【図３】実施の形態１〜実施の形態７における解析の対象であるエレベータ（解析対象装置の一例）の内部構成を示す図及びそのエレベータの制御部が実行するソフトウェアの開発過程の概念図。
【図４】実施の形態１〜実施の形態７における解析支援装置の一部（表示部関連）を示す図。
【図５】ソースコードの一例及び実施の形態１〜実施の形態７においてそのソースコードに対応してソースコード情報表示部が表示するソースコード情報の一例を示す図。
【図６】ソースコードの一例及び実施の形態１〜実施の形態７においてそのソースコードに対応してソースコード情報表示部が表示するソースコード情報の一例を示す図。
【図７】ソースコードの一例を示す図（制御信号を変数によって記述した例）。
【図８】ソースコードの一例及び実施の形態２〜実施の形態７においてそのソースコードに対応してソースコード情報表示部が表示するソースコード情報の一例を示す図。
【図９】実施の形態２〜実施の形態４における解析支援装置の一部（着目制御信号判別部関連）を示す図。
【図１０】ソースコードの一例を示す図（代入による依存関係の例）。
【図１１】ソースコードの一例を示す図（代入による依存関係の例）。
【図１２】ソースコードの一例を示す図（条件分岐による依存関係の例）。
【図１３】ソースコードの一例を示す図（条件分岐による依存関係の例）。
【図１４】実施の形態５〜実施の形態６における解析支援装置の一部（実行ソースコード情報判別部関連）を示す図。
【図１５】ソースコードの一例及び実施の形態５〜実施の形態７においてそのソースコードに対応してソースコード情報表示部が表示するソースコード情報の一例を示す図。
【図１６】ソースコードの一例及び実施の形態５〜実施の形態７において、ソースコードに対応してソースコード情報表示部が表示するソースコード情報の一例を示す図。
【図１７】実施の形態７における解析支援装置の一部（実行ソースコード情報判別部関連）を示す図。
【図１８】実施の形態８〜実施の形態１４における解析支援装置の全体構成の一例を示す図。
【図１９】ソースコードの一例を示す図。
【図２０】実施の形態１３における電気回路図面関連記憶部が記憶する情報の一例を示す図。
【図２１】ソースコードの一例を示す図。
【図２２】実施の形態１４におけるエレベータ構成情報記憶部が記憶する情報の一例を示す図。
【符号の説明】
【０１４８】
１００  解析支援装置、１１１  制御信号表示部、１１２  ソースコード情報表示部、１１３  回路図情報表示部、１２１  着目制御信号判別部、１２２  着目ソースコード情報判別部、１２３  着目回路部分判別部、１２４  異常制御信号判別部、１２５  依存制御信号判別部、１３１  選択制御信号入力部、１３２  選択ソースコード情報入力部、１３３  選択回路部分入力部、１４１  制御信号取得部、１４２  記憶内容取得部、１４３  実行アドレス取得部、１５１  ソースコード情報記憶部、１５２  アドレス対応関係記憶部、１５３  記憶対応関係記憶部、１５４  記述対応関係記憶部、１５５  回路図情報記憶部、１５６  制御対応関係記憶部、１６１  実行ソースコード情報判別部、２００  エレベータ（解析対象装置の一例）、２１０  制御部、２２０  制御対象部、２２１  回転数センサー、２２２  位置センサー、２２３  積載重量センサー、２２４  行き先ボタン、２２５  呼出しボタン、２２６  駆動モータ、２２７  現在階表示器、２２８  到着表示灯、２３０  接続部、２４０  磁気ディスク装置、２５１  ＲＡＭ（記憶部の一例）、３００  Ｃコンパイラ装置、４００  ソースコード解析装置、５０１  ソースコード、５１１  実行可能なソフトウェア、５１２  アドレス対応関係、５１３  変数記憶対応関係、５２１  装置情報、５３１  ソースコード解析情報、５３２  変数対応関係、５５１  回路図情報、５６１  制御対応関係、６１１  故障解析情報表示部、６１２  実行経路表示部、６１３  変数値表示部、６１４  特定構成表示部、６１５  電気回路図面表示部、６４１  エレベータ通信部、６５１  解析対象ソフトウェア記憶部、６５２  エレベータ故障解析情報記憶部、６５３  電気回路図面関連記憶部、６５４  エレベータ構成情報記憶部、６５５  電気回路図面記憶部、６７１  ソフトウェア故障解析部、６７２  変数依存関係解析部、９０１  ＣＲＴ、９０２  キーボード、９０３  マウス、９０４  ＦＤＤ（フレキシブルディスク装置）、９０５  ＣＤＤ（コンパクトディスク装置）、９０６  プリンタ装置、９０７  スキャナ装置、９１０  システムユニット、９１１  ＣＰＵ（中央処理装置）、９１２  バス、９１３  ＲＯＭ、９１４  ＲＡＭ、９１５  通信ボード、９２０  磁気ディスク装置、９２１  ＯＳ（オペレーティングシステム）、９２２  ウィンドウシステム、９２３  プログラム群、９２４  ファイル群、９３１  電話器、９３２  ＦＡＸ（ファクス）機、９４０  インターネット、９４１  ゲートウェイ、９４２  ＬＡＮ、９５０  入出力装置。
【図１】
2006323480.tif 000003
【図２】
2006323480.tif 000004
【図３】
2006323480.tif 000005
【図４】
2006323480.tif 000006
【図５】
2006323480.tif 000007
【図６】
2006323480.tif 000008
【図７】
2006323480.tif 000009
【図８】
2006323480.tif 000010
【図９】
2006323480.tif 000011
【図１０】
2006323480.tif 000012
【図１１】
2006323480.tif 000013
【図１２】
2006323480.tif 000014
【図１３】
2006323480.tif 000015
【図１４】
2006323480.tif 000016
【図１５】
2006323480.tif 000017
【図１６】
2006323480.tif 000018
【図１７】
2006323480.tif 000019
【図１８】
2006323480.tif 000020
【図１９】
2006323480.tif 000021
【図２０】
2006323480.tif 000022
【図２１】
2006323480.tif 000023
【図２２】
2006323480.tif 000024