JP2006323480A - 解析支援装置 - Google Patents

解析支援装置 Download PDF

Info

Publication number
JP2006323480A
JP2006323480A JP2005143937A JP2005143937A JP2006323480A JP 2006323480 A JP2006323480 A JP 2006323480A JP 2005143937 A JP2005143937 A JP 2005143937A JP 2005143937 A JP2005143937 A JP 2005143937A JP 2006323480 A JP2006323480 A JP 2006323480A
Authority
JP
Japan
Prior art keywords
control signal
source code
information
unit
code information
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2005143937A
Other languages
English (en)
Other versions
JP4667954B2 (ja
Inventor
Soichi Matsui
聡一 松井
Kazunari Mori
一成 毛利
Hideki Shiozaki
秀樹 塩崎
Shiro Furuya
史郎 古谷
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Mitsubishi Electric Corp
Mitsubishi Electric Building Solutions Corp
Original Assignee
Mitsubishi Electric Corp
Mitsubishi Electric Building Techno Service Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Mitsubishi Electric Corp, Mitsubishi Electric Building Techno Service Co Ltd filed Critical Mitsubishi Electric Corp
Priority to JP2005143937A priority Critical patent/JP4667954B2/ja
Publication of JP2006323480A publication Critical patent/JP2006323480A/ja
Application granted granted Critical
Publication of JP4667954B2 publication Critical patent/JP4667954B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)

Abstract

【課題】 プログラミング言語に精通していない者が、そのプログラミング言語により記述されたソフトウェアが組み込まれた装置を解析するに際して、必要最小限の範囲でそのソフトウェアを理解することを支援する。
【解決手段】 ソフトウェアのソースコード情報・解析対象装置200の制御信号・回路図情報を表示する。そのなかから着目する部分を選択すると、着目制御信号判別部121が、選択部分に関連する制御信号を着目制御信号とする。更に、ソースコードを解析して得た制御信号の依存関係に基づき、着目制御信号と依存関係のある制御信号も、着目制御信号とする。着目制御信号に関連する部分を判別し、強調して表示する。また、ソフトウェアのソースコード情報のうち、解析対象装置200の制御部が実際に実行している部分に対応する部分を判別し、強調して表示する。
【選択図】 図9

Description

本発明は、ソフトウェアの組み込まれた装置の解析を支援する解析支援装置に関する。
コンピュータソフトウェアの内容の理解を容易にするための装置は、いくつか提案されている。
例えば、特許文献1は、ソフトウェアのソースコードを解析し、その構文及び意味に関する情報を記憶する。ユーザからの問い合わせに応じて、モジュールの関係、変数の関係等を表示することにより、ソフトウェアの内容の理解を容易にするものである。
特許文献2は、ソフトウェアのソースコードを解析して、その制御の流れに関する情報を記憶する。特に、制御の流れの分岐・合流に注目して、これを階層化し、制御の流れを階層レベルごとに視覚化して表示することにより、制御の流れの把握を容易にするものである。
特許文献3は、ソフトウェアの実行時の動作をソースコードのレベルで仮想的にシミュレートし、ソフトウェアを1ステップ実行するごとに、変数の値等を調べて、トレース情報として記憶する。記憶されたトレース情報に基づいて、ソフトウェアの実行時の振る舞いを仮想的に再現することで、ソフトウェアの処理を時間を追って見るだけでなく、時間を遡って見ることができる。また、制御の流れやデータの流れを時間軸上に表現した図形を表示することにより、制御の流れやデータの流れの把握を容易にするものである。
特開平6−259244(0012〜0044) 特開平7−261990(0008〜0073) 特開2002−108649(0013〜0074)
上記の装置は、ソフトウェア開発者等そのソフトウェアを記述したプログラム言語に精通した者が、ソフトウェアのデバッグ、保守、改良等する場合にそれを支援することを目的としている。
現代社会においては、多くの製品にコンピュータが組み込まれ、その中でソフトウェアを実行している。
このような製品が故障した場合、例えば、エレベータのように設置場所から動かせない製品であれば、修理担当者が現場に行って修理することになる。修理担当者が故障の原因を探索するにあたり、そのなかに組み込まれたソフトウェアの内容を理解する必要に迫られる場合もある。しかし、修理担当者は必ずしもそのソフトウェアを記述した言語に精通しているとは限らない。
従来のエレベータは、ラダー言語のような単純な論理の組み合わせで多くのプログラムが実装されていた。このため、故障が発生した場合も、論理式を解析することにより、比較的容易に、故障の直接の要因となっている変数から、故障の発端の原因となっている変数を探索することが可能であった。しかし、近年、エレベータの制御に対する仕様が大規模、複雑化し、ラダー言語以外の高級言語でプログラムが実装されることが多くなった。このため、従来のように論理式を解析する手法のみで、故障の直接の要因となっている変数から、故障の発端の原因となっている変数を探索することが困難となっていた。
エレベータの据付現場において、故障が発生した場合、本来ハードウェアをONする変数Aが、ONにならないような状況において、このハードウェアをONする変数Aが何であるかを調査し、なぜ、その変数AがONにならないかを、変数Aがプログラムでどこで使用されているかを調査し、更に、変数AをONにしない条件は何であるかを調べて、最終的に、故障の発端の原因となる変数を探索している。プログラムがラダーのような単純な論理の組み合わせで実装されている場合、この探索は比較的容易であるが、C言語のような高級言語でプログラムが実装されている場合は、探索の効率が悪く、これを効率的に行う必要があるという課題があった。
また、従来、ラダープログラムを対象に探索を実施していた作業者が、言語の仕様が複雑なC言語のような高級言語を対象に探索を実施するには、言語の理解に対するギャップを克服する必要があるという課題があった。
そこで、ソフトウェアを記述したプログラム言語に精通していない者がそのソフトウェアの内容を理解するのを助けることが課題となる。
更にいえば、修理担当者は故障の原因を探索するために必要な最小限の範囲でソフトウェアの内容を理解すればよいのであって、それ以上のことを知る必要はない。
したがって、装置に組み込まれたソフトウェアの内容を深く理解せずとも、その装置が解析できるのであれば、そのほうが好ましい。
本発明は、例えば、上述したような課題を解決して、ソフトウェアの組み込まれた装置の解析を容易にし、作業効率を高めることを目的とする。
本発明に係る解析支援装置は、
実行可能なソフトウェアを内蔵した制御部と、
上記制御部により制御される制御対象部と、
を有する解析対象装置の解析を支援する解析支援装置において、
上記ソフトウェアのソースコードの情報であるソースコード情報を記憶するソースコード情報記憶部と、
上記解析対象装置と接続して、上記解析対象装置の制御部と上記解析対象装置の制御対象部との間の制御信号を取得する制御信号取得部と、
上記解析対象装置の回路図の情報である回路図情報を記憶する回路図情報記憶部と、
上記ソースコード情報記憶部が記憶したソースコード情報を表示するソースコード情報表示部と、
上記制御信号取得部が取得した制御信号を表示する制御信号表示部と、
上記回路図情報記憶部が記憶した回路図情報を表示する回路図情報表示部と
を有することを特徴とする。
本発明は、例えば、制御信号についての情報、ソフトウェアについての情報、回路図についての情報を表示することで、作業者の理解を容易にし、解析対象装置の解析の効率が高くなるとの効果を有する。
実施の形態1.
実施の形態1を図1〜図6を用いて説明する。
図1は、解析支援装置100のハードウェア構成の一例を示す。
図1において、解析支援装置100は、システムユニット910、CRT(Cathode Ray Tube)表示装置901、キーボード(K/B)902、マウス903、コンパクトディスク装置(CDD)905、プリンタ装置906、スキャナ装置907を備え、これらはケーブルで接続されている。
さらに、解析支援装置100は、FAX機932、電話器931とケーブルで接続され、また、ローカルエリアネットワーク(LAN)942、ゲートウェイ941を介してインターネット940に接続されている。
また、解析支援装置100は、LAN942を介して、エレベータ200(解析対象装置の一例)に接続されている。
しかし、必ずしもLANを介する必要はなく、直接接続する構成でもよい。逆に、インターネットを介して、遠隔接続する構成でもよい。また、常に接続されている必要もなく、コネクタを介して接続し、必要のないときには、外しておく構成でもよい。
図2は、解析支援装置100の内部構成の一例を示す。
図2において、解析支援装置100は、プログラムを実行するCPU(Central Processing Unit)911を備えている。CPU911は、バス912を介してROM913、RAM914、通信ボード915、CRT表示装置901、K/B902、マウス903、FDD(Flexible Disk Drive)904、磁気ディスク装置920、CDD905、プリンタ装置906、スキャナ装置907と接続されている。
RAM914は、揮発性メモリの一例である。ROM913、FDD904、CDD905、磁気ディスク装置920は、不揮発性メモリの一例である。これらは、記憶装置あるいは記憶部の一例である。
通信ボード915は、FAX機932、電話器931、LAN942等に接続されている。
例えば、通信ボード915、K/B902、スキャナ装置907、FDD904などは、入力部の一例である。
また、例えば、通信ボード915、CRT表示装置901などは、出力部の一例である。
ここで、通信ボード915は、LAN942に限らず、直接、インターネット940、或いはISDN等のWAN(ワイドエリアネットワーク)に接続されていても構わない。直接、インターネット940、或いはISDN等のWANに接続されている場合、解析支援装置100は、インターネット940、或いはISDN等のWANに接続され、ゲートウェイ941は不用となる。
磁気ディスク装置920には、オペレーティングシステム(OS)921、ウィンドウシステム922、プログラム群923、ファイル群924が記憶されている。プログラム群923は、CPU911、OS921、ウィンドウシステム922により実行される。
上記プログラム群923には、以下に述べる実施の形態の説明において「〜部」として説明する機能を実行するプログラムが記憶されている。プログラムは、CPU911により読み出され実行される。
ファイル群924には、以下に述べる実施の形態の説明において、「〜の判定結果」、「〜の計算結果」、「〜の処理結果」として説明するものが、「〜ファイル」として記憶されている。
また、以下に述べる実施の形態の説明において説明するフローチャートの矢印の部分は主としてデータの入出力を示し、そのデータの入出力のためにデータは、磁気ディスク装置920、FD(Flexible Disk)、光ディスク、CD(コンパクトディスク)、MD(ミニディスク)、DVD(Digital Versatile Disk)等のその他の記録媒体に記録される。あるいは、信号線やその他の伝送媒体により伝送される。
また、以下に述べる実施の形態の説明において「〜部」として説明するものは、ROM913に記憶されたファームウェアで実現されていても構わない。或いは、ソフトウェアのみ、或いは、ハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。
また、以下に述べる実施の形態を実施するプログラムは、また、磁気ディスク装置920、FD(Flexible Disk)、光ディスク、CD(コンパクトディスク)、MD(ミニディスク)、DVD(Digital Versatile Disk)等のその他の記録媒体による記録装置を用いて記憶されても構わない。
図3は、解析の対象であるエレベータ200(解析対象装置の一例)の内部構成を示す。また、エレベータ200の制御部210が実行するソフトウェア511の開発過程を概念的に示している。
この例では、解析対象装置として、エレベータを例にとって説明するが、およそソフトウェアによって制御される装置であれば、何でも構わない。
エレベータ200は、実行可能なソフトウェアを実行する制御部210、制御部210と制御信号で結ばれた制御対象部220、解析支援装置100を接続するための接続部230などから成る。
制御対象部220に備えられた回転数センサー221、位置センサー222、積載重量センサー223、行き先ボタン224、呼出しボタン225等の情報収集部は、外部から情報を収集し、制御信号により、制御部210に伝える。
制御部210は、磁気ディスク装置240に記憶されたソフトウェア511を実行し、制御信号を出す。
制御信号は、駆動モータ226、現在階表示器227、到着表示灯228等の動作部に伝えられ、所定の動作をする。
これらの制御信号は、制御部から見ると、所定のアドレスが割り付けられており、ROM(リードオンリーメモリ)やRAM(ランダムアクセスメモリ)に対するのと同じように書込み・読出しが可能である。
制御部で実行されているソフトウェア511は、開発段階においてC言語で書かれたソースコードをコンパイルして得られた機械語によって記述されている。Cコンパイラ装置300がソースコード501をコンパイルして作成し、エレベータ200の磁気ディスク装置240が記憶する。
このとき、各制御信号に割り振られたアドレスは、コンパイル時に装置情報521としてCコンパイラ装置300に与えられており、Cコンパイラ装置300は、それに基づいて、制御信号を記述した変数を、所定のアドレスに変換する。
装置情報521には、その他に、制御部210が使用できるRAM251のアドレス等、ソースコードを制御部210で実行できるソフトウェアにコンパイルするのに必要な情報が含まれている。
なお、ソースコードはC言語で書かれているものに限らず、FORTRAN(フォートラン)、COBOL(コボル)、BASIC(ベーシック)などの言語で書かれていてもよいし、アセンブリ言語で書かれたものをアセンブルしてもよい。また、スクリプト言語で書かれたソースコードを制御部210がインタプリトしながら実行する形でも構わない。
Cコンパイラ300は、コンパイルしたソフトウェア511のほか、ソースコードと機械語のアドレスとの対応を示すアドレス対応関係512、ソースコードにおいて記述されている変数と、それに対応するRAM上のアドレスとの対応を示す変数記憶対応関係513等も出力している。
アドレス対応関係512は、解析支援装置100のアドレス対応関係記憶部152が記憶する。同様に、変数記憶対応関係513は、記憶対応関係記憶部153が記憶する。
また、同じソースコード501は、ソースコード解析装置400が解析を行う。ソースコード解析装置400は、ソースコード解析情報531として、例えば、以下のような情報を出力する。
関数の定義位置、戻り値、引数、使用している広域変数、局所変数、マクロ、呼び出している関数、呼び出されている関数、関数のプログラム図の情報を含む関数情報。
広域変数の定義位置、型、使用されている位置の情報を含む広域変数情報。
局所変数の定義位置、型、使用されている位置の情報を含む局所変数情報。
引数の定義位置、型、使用されている位置の情報を含む引数情報。
型の定義位置、定義の実体、使用されている位置の情報を含む型情報。
マクロの定義、使用されている位置の情報を含むマクロ情報。
定数の使用されている位置の情報を含む定数情報。
関数スコープの中での広域変数の依存関係を含む広域変数依存関係情報。
また、変数対応関係532として、制御信号を記述した変数とその変数によって記述された制御信号との対応を示す情報を出力する。
ソースコード501及びソースコード解析情報531は、ソースコード情報として解析支援装置100のソースコード情報記憶部151が記憶する。また、変数対応関係532は、記述対応関係記憶部154が記憶する。
この他に、エレベータ200の回路図の情報である回路図情報551は回路図情報記憶部155が記憶する。
回路図情報551には、例えば、回路図のイメージデータあるいは回路図のCAD(Computer aided design:コンピュータ支援設計)データ等、回路図面そのものに関する情報のほか、装置のブロック構成や、各信号線の名称等の情報も含まれている。
また、エレベータ200における制御信号とその制御信号に対応する回路部分を示す回路情報との対応関係を示す制御対応関係561は制御対応関係記憶部156が記憶する。
制御対応関係561には、例えば、エレベータ200の情報収集部に対応する回路部分を示す回路情報と、その情報収集部が収集した情報を制御部210に伝えるための制御信号との対応を示す情報収集信号対応関係や、エレベータ200の動作部に対応する回路部分を示す回路情報と、その動作部を動作させるために制御部から伝えられる制御信号との対応を示す動作信号対応関係などがある。
例えば、回転数センサー221は、駆動モータ226の回転数を検知し、その情報を制御信号として制御部に伝える。したがって、回転数センサー221が検知した回転数を示す制御信号は、回路情報のうち、回転数センサー221を示す回路情報と対応している。
これら解析支援装置100の各記憶部は、解析支援装置100の磁気ディスク装置920の中に、これらの情報を記憶する。
これらの情報は、通常電子データの形で出力されるので、これをフレキシブルディスクに記憶し、解析支援装置100に読み込ませる。あるいは、インターネット等に接続されたサーバーに記憶し、必要に応じて、解析支援装置100がダウンロードしてもよい。更に、解析対象装置の種別を入力すると、解析支援装置100が自動的に読み込む構成としてもよい。
図4は、解析支援装置100のうち表示部に関連する部分を示す。
解析支援装置100には大きく分けて3つの表示部がある。
制御信号表示部111は、エレベータ200内の制御信号名及び制御信号の内容をCRT(Cathode−Ray Tube:陰極線管)901に表示する。制御信号の内容は、制御信号取得部141がエレベータ200の接続部230と通信して、取得する。しかし、エレベータ200の接続部230を介して、直接、制御信号を伝える信号線に接続し、取得してもよい。
ソースコード情報表示部112は、ソースコード情報記憶部151が記憶するソースコード情報をCRTに表示する。ソースコード情報には、ソースコード501やソースコード解析情報531等がある。
図5及び図6は、ソースコード情報表示部112が表示するソースコード情報の一例を示す。
図5は、ソースコード情報のうち、関数の定義位置、戻り値、引数、使用しているグローバル変数(広域変数)、使用しているローカル変数(局所変数)、使用しているマクロ、呼び出している関数、呼び出されている関数などを含む関数情報と、広域変数の定義位置、型、使用されている位置などを含む広域変数情報を表示した例である。この例では、ソースコード情報記憶部151がHTML(Hypertext Markup Language:ハイパーテキストマークアップランゲージ)形式でソースコード情報を記憶し、ソースコード情報表示部112が表示形式に変換して表示する。しかし、ソースコード情報記憶部151が表示されるイメージデータを記憶し、そのまま表示する構成でも構わないし、データベースとして記憶し、表示形式に変換して表示する構成でも構わない。
また、図6は、ソースコード情報のうち、プログラムの制御の流れを図形化したチャート図形情報を表示した例である。この例では、HCPチャート(Hierarchical and Compact description chart:階層的簡略記述チャート)を用いているが、フローチャートを用いても構わないし、SPD(Structured Programming Diagram:構造化プログラミング図)チャートやNSチャート(Nassi−Shneiderman chart:ナシ・シュナイダーマンチャート)など他の構造化チャートを用いても構わない。あるいは、状態遷移図などを用いても構わない。
回路図情報表示部113は、回路図情報記憶部155が記憶する回路図情報をCRT901に表示する。
例えば、エレベータ200が故障したとする。修理担当者がエレベータ設置場所に派遣され、故障個所の探索を始める。
修理担当者は、解析支援装置100をエレベータ200に接続して、制御信号を調べる。
ここで、正常な制御信号が制御部210から駆動モータ226などの動作部に送られているにもかかわらず、それによって動作するはずの動作部が動作しないのであれば、その動作部が故障していることがわかる。
また、回転数センサー221などの情報収集部から制御部210に送られる制御信号が異常値であれば、その情報収集部が故障していることがわかる。
このように、解析支援装置100のCRT901には、制御信号の内容とともに、エレベータの回路図及び制御部で実行されているソフトウェアのソースコード情報が表示されているので、どのような制御信号が出ていれば正常で、どのような制御信号が出ていれば異常なのかを理解することが容易になる。
更に、ソースコード情報として、ソースコードをそのまま表示するだけでなく、ソースコードを解析し、その結果得られる情報を様々な形で表示することにより、修理担当者がソースコードを記述した言語に精通していない場合であっても、制御部210が実行しているソフトウェアの処理内容を理解することが容易になる。
このように、解析対象装置の制御信号についての情報、解析対象装置の制御部が実行しているソフトウェアについての情報及び解析対象装置の回路図についての情報をCRT901に表示することにより、解析対象装置の解析の効率を高めることができる。
実施の形態2.
実施の形態2を図1〜図8を用いて説明する。
この実施の形態における解析支援装置100の全体構成は、実施の形態1で説明した構成と同じ構成である。
実施の形態1で挙げた例において、解析支援装置100のCRT901に表示される情報が、必要な情報だけに絞られていれば、修理担当者が故障個所を発見する効率が良くなる。
例えば、駆動モータ226が動かないという症状が出ているのであれば、制御部210から駆動モータ226に対して送られる制御信号を調べる必要がある。
この実施の形態では、特定の制御信号に着目し、着目した着目制御信号に関連する部分を強調して表示する。
まず、着目制御信号判別部121が特定の制御信号を着目制御信号として判別する。
制御信号表示部111は、着目制御信号の名称及び着目制御信号の内容をCRT901に強調して表示する。
ここで、「強調して表示する」とは、当該部分の色を変えて表示する、当該部分の背景の色を変えて表示する、当該部分の線を太くして表示する、当該部分を大きく表示する、当該部分を画面中央に表示するなどして、当該部分を目立つように表示することをいう。また、当該部分以外の部分の色を変えて表示する、当該部分以外の部分の背景の色を変えて表示する、当該部分以外の部分の線を細くして表示する、当該部分以外の部分を小さく表示する、当該部分以外の部分を画面の端に表示する、当該部分以外の部分の細部を省略して表示する、当該部分以外の部分を表示しないなどして、当該部分を目立つように表示することも含まれる。
制御信号がソースコードの中でどのように記述されているかについての情報である記述対応関係は、記述対応関係記憶部154が記憶している。
着目ソースコード情報判別部122は、記述対応関係記憶部154から記述対応関係を読出し、着目制御信号に対応するソースコード情報を選らび出す。これを着目ソースコード情報としてソースコード情報表示部112に送ると、ソースコード情報表示部112は着目ソースコード情報をCRT901に強調して表示する。
図7は、ソースコード501の中で制御信号を記述した一例である。
ここでは、制御信号はそれに対応する広域変数という形で記述されている。
例えば、駆動モータ226の回転数を制御するために制御部から伝えられる制御信号は、「motor_speed」という変数で記述されており、変数「motor_speed」に値を代入すると、その値が制御信号として駆動モータ226に送られ、駆動モータ226は与えられた回転数になるように動作する。
したがって、駆動モータ226を駆動する制御信号に着目した場合、ソースコード501の中で変数「motor_speed」が使われている部分が、着目制御信号に対応する部分となる。
図8において、変数「global_in」及び変数「global_out」はソースコードのなかで制御信号を記述したものである。ここでは、すべての制御信号を着目制御信号としている。
ソースコード情報表示部112は、ここで、ソースコード情報のうちソフトウェアの制御の流れを図形化したチャート図形情報を表示している。このとき、チャート図形情報とともに、それに対応するソースコードも表示しているが、着目制御信号を記述した変数「global_in」及び「global_out」が表れる行はそのまま表示しているのに対し、それ以外の行はコメントのみとし、細部を省略して表示している。これにより、着目制御信号を記述した変数の表れる行が目立つようになる。
制御信号が回路図のどの部分と対応するかについての情報である制御対応関係は、制御対応関係記憶部156が記憶している。
着目回路部分判別部123は、制御対応関係記憶部156から制御対応関係を読出し、着目制御信号に対応する回路図情報を選び出す。これを着目回路部分として回路図情報表示部113に送ると、回路図情報表示部113は着目回路図情報をCRT901に強調して表示する。
例えば、駆動モータ226を駆動する制御信号に着目した場合には、駆動モータ226に対応する回路図情報が着目回路部分となる。また、回転数センサー221から送られる駆動モータ226の回転数を示す制御信号に着目した場合には、回転数センサー221に対応する回路図情報が着目回路部分となる。
例えば、駆動モータ226が動かないという症状が出ているのであれば、制御部210から駆動モータ226に対して送られる制御信号を着目制御信号とする。すると、その制御信号に関連する情報が強調して表示されるので、修理担当者が他の不必要な情報に気をとられることがなくなり、故障個所を容易に発見できるようになる。
このように、CRT901に表示される情報のうち、着目制御信号に関連する情報を強調して表示することにより、解析対象装置の解析の効率を高めることができる。
実施の形態3.
実施の形態3を図1〜図9を用いて説明する。
この実施の形態における解析支援装置100の全体構成は、実施の形態1で説明した構成に、図9の構成を加えたものである。
図9は、この実施の形態における解析支援装置100の一部を示す。
ここでは、着目制御信号判別部121がどのようにして着目制御信号を判別するかについて説明する。
実施の形態2で挙げた例において、修理担当者が、駆動モータ226を駆動する制御信号を調べたいと考えたとする。
修理担当者が注目したい制御信号の名前を知っている場合、制御信号表示部111がCRT901に表示した制御信号のなかから注目したい制御信号を選択し、例えば、マウス903でCRT901に表示されているマウスポインタを動かしてその制御信号をクリックする。あるいは、キーボード902のカーソルキーでCRT901に表示されているカーソルを動かしてその制御信号に合わせ、エンターキーを押す。
選択制御信号入力部131は、修理担当者によるこれらの操作を監視して、修理担当者が選択した制御信号を選択制御信号とし、着目制御信号判別部121に送る。
この場合、着目制御信号判別部121は、選択制御信号をそのまま着目制御信号として判別する。
これにより、修理担当者が注目したい制御信号を選択することで、着目制御信号を容易に決定することができる。着目制御信号に関連する情報を強調して表示するので、修理担当者が他の不必要な情報に気をとられることがなくなり、故障個所を容易に発見できるようになる。
修理担当者が駆動モータ226を駆動する制御信号の名前を知らないが、回路図を見ればどの部分が駆動モータ226に対応する部分かわかる場合もある。その場合、修理担当者は、回路図情報表示部113がCRT901に表示した回路図情報のなかから駆動モータ226に対応する部分を選択し、マウス903でクリックする等の操作を行う。
選択回路部分入力部133は、修理担当者によるこれらの操作を監視して、修理担当者が選択した回路部分を選択回路部分とし、着目制御信号判別部121に送る。
制御信号が回路図のどの部分と対応するかについての情報である制御対応関係は、制御対応関係記憶部156が記憶している。
着目制御信号判別部121は、制御対応関係記憶部156から制御対応関係を読出し、選択回路部分に対応する制御信号を選び出して、これを着目制御信号として判別する。
これにより、修理担当者が注目したい制御信号を知らない場合でも、回路図情報から、故障の症状が出ている個所に対応する部分を選択することで、着目制御信号を容易に決定することができる。着目制御信号に関連する情報を強調して表示するので、修理担当者が他の不必要な情報に気をとられることがなくなり、故障個所を容易に発見できるようになる。
修理担当者がソースコード情報表示部112がCRT901に表示したソースコード情報を眺めているうちに、怪しい部分を発見する場合もある。その場合、修理担当者は、ソースコード情報表示部112がCRT901に表示したソースコード情報のなかから怪しい部分を選択し、マウス903でクリックする等の操作を行う。
選択ソースコード情報入力部132は、修理担当者によるこれらの操作を監視して、修理担当者が選択したソースコード情報を選択ソースコード情報とし、着目制御信号判別部121に送る。
制御信号がソースコードの中でどのように記述されているかについての情報である記述対応関係は、記述対応関係記憶部154が記憶している。
着目制御信号判別部121は、記述対応関係記憶部154から記述対応関係を読出し、選択ソースコード情報に対応する制御信号を選び出して、これを着目制御信号として判別する。
例えば、ソースコード情報表示部112がCRT901に図5のソースコード情報を表示しているときに、修理担当者が表示されている変数名をクリックしたとする。
着目制御信号判別部121は、記述対応関係記憶部154が記憶している記述対応関係のうち、ソースコード501のなかで制御信号を記述した変数とその変数によって記述された制御信号との対応を示す変数対応関係を読出し、選択された変数によって記述された制御信号を選び出して、それを着目制御信号として判別する。
また、ソースコード情報表示部112がCRT901に図6のソースコード情報を表示しているときに、修理担当者がチャート図形の一部をクリックしたとする。
着目制御信号判別部121は、記述対応関係記憶部154が記憶している記述対応関係のうち、ソースコード501のなかで変数が使用されている位置についての情報を読出し、選択された部分で使用されている変数を割り出す。
次に、記述対応関係記憶部154が記憶している記述対応関係のうち変数対応関係を読出し、選択された部分で使用されている変数によって記述された制御信号を選び出して、それを着目制御信号として判別する。
これにより、修理担当者がソースコード情報から怪しい部分を発見した場合でも、その部分を選択することで、着目制御信号を容易に決定することができる。着目制御信号に関連する情報を強調して表示するので、修理担当者が他の不必要な情報に気をとられることがなくなり、故障個所を容易に発見できるようになる。
制御信号が正常な場合にどのような値を示すかがあらかじめわかっている場合には、異常制御信号判別部124が正常な制御信号の範囲を記憶しておき、制御信号取得部141が取得した制御信号の値がその範囲から逸脱したら、異常制御信号判別部124がその制御信号を異常制御信号として判別する。
あるいは、修理担当者に正常な制御信号の範囲を入力させて、その範囲を逸脱したら、異常制御信号判別部124がその制御信号を異常制御信号として判別することとしてもよい。
着目制御信号判別部121は、異常制御信号判別部124が判別した異常制御信号をそのまま着目制御信号として判別する。
これにより、異常な制御信号の発見を自動化することができ、着目制御信号を容易に決定することができる。着目制御信号に関連する情報を強調して表示するので、修理担当者が他の不必要な情報に気をとられることがなくなり、故障個所を容易に発見できるようになる。
このように、着目制御信号を容易に決定できることにより、解析対象装置の解析の効率を高めることができる。
実施の形態4.
実施の形態4を図1〜図13を用いて説明する。
この実施の形態における解析支援装置100の全体構成は、実施の形態3で説明した構成と同じ構成である。
エレベータ200の制御部210は、ソフトウェア511の実行により、入力された制御信号に基づいて複雑な計算を行っている。そして、その結果に基づいて制御信号を出力する。
したがって、制御信号同士の関係は非常に複雑に絡み合っている。
修理担当者が故障個所を探索する場合、通常は故障の症状が出ている個所から探索を始める。例えば、駆動モータ226が動かないのであれば、駆動モータ226を駆動する制御信号を調べる。
ここで、駆動モータ226を駆動する制御信号が正常であるにもかかわらず、駆動モータ226が動かないのであれば、駆動モータ226が故障していることがわかる。
しかし、そもそも駆動モータ226を駆動する制御信号が異常値なのであれば、駆動モータ226が動かないのは当然であり、他の部分が故障していることになる。
そこで、修理担当者は、駆動モータ226を駆動する制御信号が異常値を示す原因を探索することになる。
しかし、この探索は容易ではない。エレベータ200の制御部210が実行しているソフトウェア511がどのような処理を行っているかを理解する必要があり、修理担当者がそのソフトウェア511のソースコード501を記述した言語に精通しているとは限らないからである。
修理担当者は、制御信号が異常値を示す原因を探索しようとしているので、エレベータ200の制御部210におけるソフトウェア511の実行により、異常値を示している制御信号に影響を与えている制御信号がどれかを知りたいはずである。
そこで、この実施の形態では、着目制御信号判別部121が判別した着目制御信号に基づき、依存制御信号判別部125がその着目制御信号と依存関係のある制御信号を依存制御信号として判別し、着目制御信号判別部121が、その依存制御信号を着目制御信号として判別する。
ここで、依存関係とは、ソフトウェア511を実行している制御部210に入力される制御信号が、制御部210から出力される制御信号に対して影響を与えるという関係にある2つの制御信号の間の関係をいう。
図10〜図13は、制御部210が実行しているソフトウェア511のソースコード501の一例である。
図10において、変数「g_in1」及び変数「g_out1」はともに、ソースコード501のなかで制御信号を記述したものである。
関数「func_X」のなかで変数「g_in1」の値が変数「g_out1」に代入されている。したがって、関数「func_X」が実行されるとき、変数「g_in1」の値が変わっていれば、変数「g_out1」の値も変わる。したがって、変数「g_in1」によって記述されている制御信号の値が変われば、変数「g_out1」によって記述されている制御信号の値も変わる。すなわち、この2つの制御信号の間には、代入による依存関係がある。
図11において、変数「g_in2」及び変数「g_out2」はともに、ソースコード501のなかで制御信号を記述したものである。しかし、変数「l_cyuukan1」は、一時的に値を記憶するために設けられているもので、制御信号とは無関係である。
関数「func_X」のなかで変数「g_in2」と変数「g_out2」は、一つの代入式の右辺と左辺に記述されているのではないので、関係がないようにも見える。しかし、実際には、変数「g_in2」の値が変数「l_chuukan1」に代入され、変数「l_chuukan1」の値が変数「g_out2」に代入されている。したがって、変数「g_in2」の値が変わっていれば、変数「l_cyuukan1」の値が変わり、その結果、変数「g_out2」の値も変わる。すなわち、変数「g_in2」によって記述されている制御信号と、変数「g_out2」によって記述されている制御信号との間には、やはり代入による依存関係がある。
図12において、変数「g_in3」及び変数「g_out3」はともに、ソースコード501のなかで制御信号を記述したものである。
関数「func_X」のなかで、変数「g_in3」の値が0と等しいかによってソフトウェアの実行経路が変わる。ソフトウェアの実行経路が変わることにより、変数「g_out3」に代入される値が変わる。したがって、変数「g_in3」の値が変われば、変数「g_out3」の値も変わる可能性がある。すなわち、変数「g_in3」によって記述されている制御信号と、変数「g_out3」によって記述されている制御信号との間には、条件分岐による依存関係がある。
図13において、変数「g_in4」及び変数「g_out4」はともに、ソースコード501のなかで制御信号を記述したものである。しかし、変数「l_cyuukan2」は、一時的に値を記憶するために設けられているもので、制御信号とは無関係である。
関数「func_X」のなかで、変数「g_in3」の値が変数「l_cyuukan2」に代入される。次に、変数「l_cyuukan2」の値が0と等しいかによってソフトウェアの実行経路が変わる。ソフトウェアの実行経路が変わることにより、変数「g_out4」に代入される値が変わる。したがって、変数「g_in4」の値が変われば、変数「g_out4」の値も変わる可能性がある。すなわち、変数「g_in4」によって記述されている制御信号と、変数「g_out4」によって記述されている制御信号との間にも、条件分岐による依存関係がある。
このような依存関係に基づけば、ある制御信号が異常値を示す原因となっている制御信号を絞り込むことが可能である。すなわち、異常値を示している制御信号と依存関係のある制御信号のどれかに原因となっている制御信号があるはずである。その制御信号と依存関係のない制御信号は無関係である。
したがって、修理担当者は、異常値を示している制御信号と依存関係のある制御信号だけを探索すればよい。
そこで、この実施の形態では、着目制御信号と依存関係のある制御信号も、着目制御信号とすることにより、その制御信号に関連する情報を強調して表示する。修理担当者が他の不必要な情報に気をとられることがなくなり、故障個所を容易に発見できるようになる。
また、着目制御信号が複数ある場合には、2つ以上の着目制御信号と依存関係のある制御信号を特に注目すべき制御信号として、それに関連する情報を更に強調して表示することとしてもよい。2つ以上の症状が同時に出ている場合、その原因となっている故障は、一つであることが多い。したがって、これにより、探索すべき制御信号を更に絞り込むことができる。
あるいは、依存制御信号と依存関係のある制御信号も、更に着目制御信号として、それに関連する情報も強調して表示することとしてもよい。そうすれば、ある制御信号に原因があるとすれば他にも影響が出そうな制御信号に注目することができる。その結果、他の制御信号には影響が出ていないのであれば、修理担当者は、その制御信号が原因ではないのではないかと推測することができる。
これにより、修理担当者がソースコード501を記述した言語に精通していなくても、探索すべき制御信号を絞り込むことが容易となり、故障個所を容易に発見できるようになる。
このように、着目制御信号を容易に絞り込むことができることにより、解析対象装置の解析の効率を高めることができる。
実施の形態5.
実施の形態5を図1〜図3及び図14を用いて説明する。
図1〜図3は、この実施の形態における解析支援装置100の構成を示す。図面の説明は、実施の形態1に記載したので、ここでは省略する。
この実施の形態における解析支援装置100は、更に、図14に示す構成を有する。
エレベータ200の制御部210は、通常、ソフトウェア511のすべての部分を実行しているわけではない。ソフトウェア511の制御の流れのなかには、いくつかの分岐点及び合流点が存在し、ある条件を満たした場合にのみ、その部分を実行する。
したがって、その条件を満たしていない状態では、ソフトウェア511のなかに実行されない部分が存在することになる。
すなわち、ソースコード情報表示部112がCRT901に表示するソースコード情報のうち、実際に実行されていない部分に対応するソースコード情報は、表示する必要がない。それどころか、そのようなソースコード情報が表示されていると、修理担当者がその部分に気をとられてしまい、故障個所の発見の効率を悪くする原因にもなり得る。
そこで、この実施の形態では、実行ソースコード情報判別部161が、エレベータ200の制御部210が実際に実行しているソフトウェアの実行経路を判別し、ソースコード情報記憶部151が記憶しているソースコード情報のうち、その実行経路に関連するソースコード情報を実行ソースコード情報として判別する。ソースコード情報表示部112は、ソースコード情報記憶部151が記憶しているソースコード情報のうち実行ソースコード情報を強調して表示する。
その結果、修理担当者が他の不必要な情報に気をとられることがなくなり、故障個所を容易に発見できるようになる。
このように、CRT901に表示される情報のうち、実際に実行されている実行経路に関連する情報を強調して表示することにより、解析対象装置の解析の効率を高めることができる。
実施の形態6.
実施の形態6を図1〜図3及び図14〜図16を用いて説明する。
この実施の形態における解析支援装置100の全体構成は、実施の形態5で説明した構成と同じである。
ここでは、実行ソースコード情報判別部161がどのようにして実行ソースコード情報を判別するかについて説明する。
図15及び図16は、制御部210が実行しているソフトウェア511のソースコード501の一例及びそれに対応してソースコード情報表示部112がCRT901に表示するチャート図形情報である。この例では、チャート図形情報としてフローチャートを用いている。
図15において、この例のソースコードは制御の流れにより、分岐位置及び合流位置で4つの部分に分割できる。すなわち、関数「func_X」を実行すると、「/* 処理A */」の部分は常に実行されるが、「/* 処理B */」の部分は分岐条件「g_in1>0」が真の場合にのみ実行される。「/* 処理C */」の部分は逆に分岐条件「g_in1>0」が偽の場合にのみ実行される。その後、制御の流れは合流し、「/* 処理D */」の部分は常に実行される。
したがって、「/* 処理B */」と「/* 処理C */」のどちらを実行するかは、分岐条件「g_in1>0」が真かどうかを見れば判別できる。
図15において、変数「g_in1」は、ソースコード501のなかで制御信号を記述したものである。
したがって、変数「g_in1」によって記述されている制御信号の値がわかれば、分岐条件「g_in1>0」が真かどうかがわかり、「/* 処理B */」と「/* 処理C */」のどちらを実行するかも判別できる。
制御信号取得部141が制御信号の内容を取得する。
実行ソースコード情報判別部161は、記述対応関係記憶部154が記憶している変数対応関係532を読出し、変数「g_in1」によって記述されている制御信号の値から、変数「g_in1」の値を求める。
実行ソースコード情報判別部161は、更に、変数「g_in1」の値から、分岐条件「g_in1>0」が真かどうかを求める。以下、分岐条件「g_in1>0」が真だったとして説明する。
実行ソースコード情報判別部161は、分岐条件「g_in1>0」が真だったので、「/* 処理A */」「/* 処理B */」「/* 処理D */」に対応するソースコード情報を実行ソースコード情報として判別する。
ソースコード情報表示部112は、実行ソースコード情報を強調して表示する。図15では、「/* 処理A */」「/* 処理B */」「/* 処理D */」に対応する部分を大きく、かつ、線を太くして表示することで、強調部分が目立つようにしている。
このように、制御信号取得部141が取得した制御信号に基づいてエレベータ200の制御部210が実際に実行しているソフトウェア511の実行経路を特定することにより、制御部210の内部情報(例えば、実行アドレスなど)を取得しなくてもよいので、エレベータ200と解析支援装置100の接続のために必要な装置を軽減できる。
図16において、この例のソースコードは制御の流れにより、分岐位置及び合流位置で5つの部分に分割できる。すなわち、必ず実行される部分「/* 処理A */」、変数「g_in2」の値によって、選択的に実行される部分「/* 処理B */」「/* 処理C */」「/* 処理D */」、そのあとで必ず実行される部分「/* 処理E */」である。
図16において、変数「g_in2」は、ソースコード501のなかで制御信号を記述したものであるが、変数「local」は、一時的に値を記憶するために設けられているもので、制御信号とは無関係である。
制御部210が、「/* 処理B */」「/* 処理C */」「/* 処理D */」のうち、どの処理を実行しているかを知るためには、分岐条件を調べる必要がある。
分岐条件「g_in2=0」が真の場合は、「/* 処理B */」が実行される。
分岐条件「g_in2=0」が偽であるが分岐条件「g_in2=local」が真の場合には、「/* 処理C */」が実行される。
上記分岐条件が両方とも偽の場合には、「/* 処理D */」が実行される。
分岐条件「g_in2=0」が真かどうかを知るためには、変数「g_in2」の値を知る必要がある。変数「g_in2」はソースコード501のなかで制御信号を記述したものなので、変数「g_in2」によって記述されている制御信号の値がわかれば、変数「g_in2」の値がわかる。
制御信号取得部141が制御信号の内容を取得する。
実行ソースコード情報判別部161は、記述対応関係記憶部154が記憶している変数対応関係532を読出し、変数「g_in2」によって記述されている制御信号の値から、変数「g_in2」の値を求める。
実行ソースコード情報判別部161は、更に、変数「g_in2」の値から、分岐条件「g_in2=0」が真かどうかを求め、真の場合には、「/* 処理B */」に対応するソースコード情報を実行ソースコード情報として判別する。
分岐条件「g_in2=0」が偽の場合には、分岐条件「g_in2=local」が真かどうかを知る必要がある。そのためには、変数「g_in2」の値だけでなく、変数「local」の値も知らなければならない。
変数「local」はソースコード501のなかで制御信号を記述したものではないので、制御信号取得部141が取得した制御信号の値から、変数「local」の値を知ることはできない。
変数「local」の値を知るには、エレベータ200の制御部210が実行しているソフトウェア511の処理を解析支援装置100の内部でシミュレートすればよい。
すなわち、エレベータ200の制御部210に入力される制御信号の値は、制御信号取得部141が取得しているので、その値に基づいて制御信号を記述した変数の値を求めることができる。
次に、その値に基づいて他の変数の値を計算している場合には、その計算と同じ計算をして、他の変数の値を求める。
また、それらの変数の値によって、制御の流れが分岐する場合には、計算した変数の値に基づいて分岐条件を満たすかどうかを調べ、次に実行する処理を求める。
このように、エレベータ200の制御部210が実行しているソフトウェア511の処理を、解析支援装置100の内部で模倣することで、変数「local」の値を知ることができる。
このように、制御信号取得部141が取得した制御信号だけに基づいてエレベータ200の制御部210が実際に実行しているソフトウェア511の実行経路を特定することにより、制御部210の内部情報(例えば、実行アドレスなど)を取得しなくてもよいので、エレベータ200と解析支援装置100の接続のために必要な装置を軽減できる。
しかし、別のやり方もある。エレベータ200のRAM251は変数「local」の値を記憶している。その内容を取得すれば、変数「local」の値を知ることができる。
エレベータ200のRAM251の記憶内容は、記憶内容取得部142がエレベータ200の接続部230と通信して、取得する。しかし、エレベータ200の接続部230を介して、直接、RAM251に接続し、例えばDMA(Direct Memory Access:ダイレクトメモリアクセス)により取得してもよい。
実行ソースコード情報判別部161は、記憶対応関係記憶部153が記憶している変数記憶対応関係513により、RAM251の記憶内容のうちのどこに変数「local」の値があるかを判別し、変数「local」の値を求める。
ソフトウェア511の処理をシミュレートするやり方の場合、制御信号を取得するタイミングによっては、エレベータ200の制御部210が取得した制御信号の値と異なる値を取得してしまう可能性がある。その結果、シミュレートによる変数「local」の値が実際とは異なり、実際の実行経路に対応しないソースコード情報を、間違って実行ソースコード情報として判別してしまう場合がある。
しかし、エレベータ200のRAM251の記憶内容を取得することにより、変数「local」の値を求めれば、実際の値と異なる値となることはないので、実行ソースコード情報を間違って判別することはない。
このように、エレベータ200のRAM251が記憶した記憶内容を取得する記憶内容取得部142を設けることにより、エレベータ200の制御部210が実際に実行しているソフトウェア511の実行経路を特定できるので、ソフトウェア511の処理をシミュレートする必要がなく、実行ソースコード情報を間違って判別する心配もない。
以上によって、分岐条件「g_in2=local」が真だということがわかった場合、実行ソースコード情報判別部161は、常に実行される「/* 処理A */」「/* 処理E */」及び選択的に実行される「/* 処理C */」に対応するソースコード情報を実行ソースコード情報として判別する。
ソースコード情報表示部112は、実行ソースコード情報を強調して表示する。図16では、「/* 処理A */」「/* 処理C */」「/* 処理E */」に対応する部分を大きく、かつ、線を太くして表示するだけでなく、それ以外の部分である「/* 処理B */」「/* 処理D */」に対応する部分を表示しないことにより、強調部分を目立たせている。
なお、以上のようにして計算あるいは取得した変数の値をCRT901に表示する構成とすれば、ソフトウェアの動作を理解することが更に容易になり、好ましい。
実施の形態7.
実施の形態7を図1〜図3及び図17を用いて説明する。
図1〜図3は、この実施の形態における解析支援装置100の構成を示す。図面の説明は実施の形態1に記載したので、ここでは省略する。
この実施の形態における解析支援装置100は、更に、図17に示す構成を有する。
エレベータ200の制御部210が実際に実行しているソフトウェア511の実行経路に対応する実行ソースコード情報を判別する方法として、もう一つのやり方がある。
エレベータ200の制御部210のPC(Program Counter:プログラムカウンタ)の値など、実際に実行しているソフトウェア511のメモリ上のアドレスである実行アドレスを取得すれば、実行経路が特定できるので、それに対応する実行ソースコード情報が判別できる。
実行アドレスは、実行アドレス取得部143が、エレベータ200の接続部230を介して、取得する。具体的には、アドレスバスを監視して、制御部210が命令語を読み込むタイミングで出ているアドレスが実行アドレスである。あるいは、定期的に制御部210にハードウェア割込みをかけ、退避された戻りアドレスを取得すれば、その時の実行アドレスがわかる。これらの動作を行う部分はエレベータ200に設けてあり、実行アドレス取得部143は接続部230と通信して、実行アドレスを取得する。しかし、実行アドレス取得部143が接続部230を介して、直接、制御部210と接続し、これらの動作を実行アドレス取得部143が行うことで、実行アドレスを取得してもよい。
実行ソースコード情報判別部161は、アドレス対応関係記憶部152が記憶しているアドレス対応関係512により、その実行アドレスに対応するソースコード情報を、実行ソースコード情報として判別する。
このように、エレベータ200の制御部210の実行アドレスを取得する実行アドレス取得部143を設けることにより、エレベータ200の制御部210が実際に実行しているソフトウェア511の実行経路を特定できるので、ソフトウェア511の処理をシミュレートする必要がなく、実行ソースコード情報を間違って判別する心配もない。
実施の形態8.
図18は、エレベータ故障解析装置(解析支援装置の一例)の構成の一例を示す図である。同図に示すエレベータ故障解析装置100は、入出力装置950と、解析対象ソフトウェア記憶部651と、ソフトウェア故障解析部671と、変数依存関係解析部672と、エレベータ故障解析情報記憶部652と、エレベータ通信部641と、故障解析情報表示部611と、実行経路表示部612と、変数値表示部613と、エレベータ構成情報記憶部654と、特定構成表示部614と、電気回路図面関連記憶部653と、電気回路図面記憶部655と、電解回路図面表示部615より構成される。
解析対象ソフトウェア記憶部651は、解析対象ソフトウェアを記憶する。
ソフトウェア故障解析部671は、解析対象のソフトウェアを解析し、関数の定義位置、戻り値、引数、使用しているグローバル変数、ローカル変数、マクロ、呼び出している関数、呼び出されている関数、関数のプログラム図の情報を含む関数情報、グローバル変数の定義位置、型、使用されている位置の情報を含むグローバル変数情報、ローカル変数の定義位置、型、使用されている位置の情報を含むローカル変数情報、引数の定義位置、型、使用されている位置の情報を含む引数情報、型の定義位置、定義の実体、使用位置の情報を含む型情報、マクロの定義、使用位置の情報を含むマクロ情報、定数の使用位置の情報を含む定数情報を含むエレベータのソフトウェアの情報を生成する。
変数依存関係解析部672は、関数スコープの中で、グローバル変数の依存関係を解析する。
エレベータ故障解析情報記憶部652は、ソフトウェア故障解析部671及び変数依存関係解析部672の解析結果を記憶する。
エレベータ通信部141は、エレベータと通信し、エレベータの実行経路の情報及び、エレベータ中の変数の値の情報を取得する。
故障解析情報表示部611は、エレベータ故障解析情報記憶部の情報を表示する。
実行経路表示部612は、エレベータ通信部を介してエレベータと通信し、実行経路を取得し、実行した経路に関係するエレベータ故障解析情報記憶部のみを表示する。
変数値表示部613は、エレベータ通信部を介してエレベータと通信し、定期的に、エレベータ中の変数の値を表示する。
エレベータ構成情報記憶部654は、エレベータソフトウェアの構成を記憶する。
特定構成表示部614は、エレベータ構成情報記憶部654を参照し、特定のエレベータ構成に関係する情報のみを表示する。
電気回路図面関連記憶部653は、関数や変数と、関数や変数に関連する電気回路図面との関連の情報を記憶する。
電気回路図面記憶部655は、電気回路図面を記憶する。
電気回路図面表示部は、電気回路図面関連記憶部653、電気回路図面記憶部655を参照して特定の関数や変数に関連する電気回路図面を表示する。
本実施例においては、実施の形態1〜実施の形態7と異なり、エレベータ故障解析装置が、ソースコード解析装置400を含む構成となっている。
本実施例において、エレベータ故障解析装置1は、図5に示すような高級言語であるC言語で記述されたプログラムを故障解析対象プログラムとする。
ソフトウェア故障解析部671は、解析対象ソフトウェア記憶部651が記憶する解析対象装置のソフトウェアのソースコードを解析し、下記の情報を含むエレベータ故障解析情報を生成する。
・ 関数情報:
関数の定義位置、戻り値、引数、使用しているグローバル変数、ローカル変数、マクロ、呼び出している関数、呼び出されている関数、関数のプログラム図の情報を含む関数情報
・ グローバル変数情報:
グローバル変数の定義位置、型、使用されている位置の情報を含むグローバル変数情報
・ ローカル変数情報:
ローカル変数の定義位置、型、使用されている位置の情報を含むローカル変数情報
・ 引数情報:
引数の定義位置、型、使用されている位置の情報を含む引数情報
・ 型情報:
型の定義位置、定義の実体、使用位置の情報を含む型情報
・ マクロ情報:
マクロの定義位置、定義、使用位置の情報を含むマクロ情報
・ 定数情報:
定数の使用位置の情報を含む定数情報
図5のソフトウェアを解析し、生成されたエレベータ故障解析情報を故障解析情報表示部611(ソースコード情報表示部の一例)を介してHTML形式で表示する。表示される関数情報及び、グローバル変数情報を図5に示す。表示の形式はHTML形式以外の任意の形式で構わない。
このように、解析支援装置にソースコード解析装置を含む構成とすることで、あらかじめソースコードを解析しておく必要がなくなる。
実施の形態9.
この実施の形態における解析支援装置100の構成は、実施の形態8で説明した構成と同じである。
この実施の形態は、更に、プログラム図を生成する際に、作業者に必要な情報のみを生成する。
従来のプログラム図情報作成装置は
・ ソースとコメントの両者
・ ソースのみ
・ コメントのみ
の情報を抽出することが可能である。
しかし、全てのソースの情報をプログラム図情報として抽出すると、作業者に不要な情報を与えることになる場合があるため、全てのソースの情報についてプログラム図情報を生成するのではなく、プログラムの文法に着目して、作業者に必要な情報のみをプログラム図のソースとして抽出し、プログラム図を生成することが望ましいことがある。
たとえば、作業者がエレベータの故障解析時に最も有効な情報はグローバル変数への読み書きの情報であった場合、プログラムの解析を行うことで、グローバル変数への読み書きの部分を抽出する。図6のソフトウェアで、これまでのプログラム図生成ツールでは、ソースとコメントの情報を抽出しようとすると、図6のようにグローバル変数の読み書きに関係ないソースまで表示されてしまう。本装置を使用すると、プログラムの文法要素を解析した後で、プログラム図を生成するため、グローバル変数の読み書きに関係するソースのみを含む図8のようなプログラム図を生成することが可能である。作業者に必要な情報の絞込みは、文法要素のみだけでなく、変数や関数の命名規則など別の規則で与えることも可能である。
このように、プログラミングの段階で、あらかじめ、ソースコードの中で作業者に必要な情報と必要でない情報を区別できるように記述しておき、その記述に基づいて、強調して表示する部分を選択すれば、作業者が注目すべき情報をより素早く発見できるようになる。
実施の形態10.
この実施の形態における解析支援装置100の構成は、実施の形態8で説明した構成と同じである。
この実施の形態は、更に、関数スコープの中で、解析対象の変数が依存している変数を、絞り込むことを支援する。
変数依存解析部672は、関数スコープにおけるグローバル変数の依存関係を抽出することが可能である。関数スコープにおけるグローバル変数の依存関係を抽出することで、エレベータの故障している信号に着目した故障原因の究明に役にたつ。依存関係には下記の種類がある。
・ 代入に関する依存関係
・ 制御に関する依存関係
また,依存関係は,内部変数を介して上記の依存関係が成立することがある。
代入に関する依存関係とは,図10に示すグローバル変数g_out1とg_in1の関係であり,g_out1はg_in1に依存している。これは一般的に,代入式の左辺のグローバル変数が,代入式の右辺に含まれるグローバル変数に依存するという関係である。
代入に関する依存関係が内部変数を介して成立する例を図11に示す。図に示すグローバル変数g_out2とg_in2の関係であり,g_out2はg_in2に依存している。この例では,l_cyuukan1という内部変数を介して代入に関する依存関係が成立している。一般的に内部変数を介して代入に関する依存関係が成立するとは,代入に関する依存関係において依存されるグローバル変数が内部変数Aに代入され,代入式の左辺にが,代入に関する依存関係において依存するグローバル変数であり,代入式の右辺に内部変数Aが含まれる場合である。
制御に関する依存関係とは,図12に示すグローバル変数g_out3とg_in3の関係であり,g_out3はg_in3に依存している。これは一般的には,制御文の条件式の評価結果によって,値が変更されるグローバル変数が,制御文の条件式に含まれるグローバル変数に依存するという関係である。
制御に関する依存関係が内部変数を介して成立する例を図に示す。図13に示すグローバル変数g_out4とg_in4の関係であり,g_out4はg_in4に依存している。この例では,l_cyuukan2という内部変数を介して制御に関する依存関係が成立している。一般的に内部変数を介して制御に関する依存関係が成立するとは,制御に関する依存関係において依存されるグローバル変数が内部変数Aに代入され,代入に関する依存関係において依存するグローバル変数が,制御文の条件式の評価結果によって,値が変更されるグローバル変数であり,制御文の制御式に内部変数Aが含まれる場合である。
このように、変数の依存関係を表示することにより、作業者が注目すべき情報を容易に絞り込めるようになる。
実施の形態11.
この実施の形態における解析支援装置100の構成は、実施の形態8で説明した構成と同じである。
この実施の形態は、更に、動作中のエレベータと通信を行い、解析対象の変数の値を取得する。
エレベータ通信部641は、エレベータ故障解析装置100とエレベータ200との通信インターフェースであり、ソフトウェアの実アドレスやプログラムにおける変数のスコープ及び変数名を指定することで、任意のエレベータの信号の状態を参照したり、変更したりする。エレベータ故障解析装置100を介することで、エレベータ故障解析情報の中での任意のグローバル変数の値の情報を、エレベータから取得し、変数値表示部613が取得した値を表示する。
このように、解析対象装置から情報を取得するだけでなく、解析対象装置の信号の状態を直接変更できる構成とすれば、信号の状態の変化が実際に解析対象装置の動作にどのように影響するかを直接確認することができるので、解析対象装置の解析の効率が高くなる。
実施の形態12.
この実施の形態における解析支援装置100の構成は、実施の形態8で説明した構成と同じである。
この実施の形態は、更に、動作中のエレベータと通信して取得した変数の値を参照して、プログラム図中で、実行されているプログラム経路を表示する。
実行経路表示部、エレベータのプログラムの実行経路に影響を与えるグローバル変数の情報を定期的に、エレベータ通信部を介して得ることにより、プログラムの実行経路を監視し、その結果を表示する。図19に解析対象のソフトウェアのソースコードを示す。このソフトウェアのソースコードにおいて、グローバル変数g_in1及び,g_in2は分岐を含む関数func_X()の実行経路を決定する変数である。実行経路表示部612は定期的に,g_in1及び,g_in2の値を,エレベータ通信部641を介して得る。
g_in1が0より大きい場合は、/* 経路A1を実行 */の部分の色を変えるなどして、実行されていることが作業者が認知できるようにし、g_in1が0以下の場合は、/* 経路A2を実行 */の部分の色を変えるなどして、実行されていることを作業者が認知できるようにする。
g_in2が0の場合は、/* 経路B1を実行 */の部分の色を変えるなどして,実行されていることが作業者が認知できるようにし、g_in2が1の場合は、/* 経路B2を実行 */の部分の色を変えるなどして、実行されていることが作業者が認知できるようにし、g_in2が0、1以外の場合は、/* 経路B3を実行 */の部分の色を変えるなどして、実行されていることを作業者が認知できるようにする。
このように、実際の実行経路に着目して、強調して表示する部分を選択すれば、作業者が注目すべき情報をより素早く発見できるようになる。
実施の形態13.
この実施の形態における解析支援装置100の構成は、実施の形態8で説明した構成と同じである。
この実施の形態は、更に、解析対象の変数に関連する電気回路図面を表示する。
電気回路図面表示部615は、関数と関数が実現する機能に関連する電気回路図面との関係を記憶している電気回路図面関連記憶部653の情報を参照し、エレベータ故障解析情報中の関数に関連する電気回路図を電気回路図面記憶部655から選択し表示する。図20に電気回路図面関連記憶部655が記憶する関連情報の例を示す。機能Aに関連するfuncXa()を指定し、関連する電気回路図面を示した場合、電気回路図面Aが表示され、機能Bに関連するfuncXb()を指定し、関連する電気回路図面を示した場合、電気回路図面Bが表示される。
このように、制御信号を介することなく、ソースコードと回路図面との関係を直接記述して記憶しておけば、ソフトウェアと回路の対応関係を把握しやすくなる。
実施の形態14.
この実施の形態における解析支援装置100の構成は、実施の形態8で説明した構成と同じである。
この実施の形態は、更に、エレベータの構成毎に、対象の構成の時に関係する情報のみを表示する。
特定構成表示部614は、エレベータのソフトウェアの構成を記憶しているエレベータ構成情報記憶部654を参照し、特定構成に関係している情報しか表示しない。図21に解析対象のソフトウェアのソースコード、図22にエレベータ構成情報記憶部中の構成情報の例を示す。関数funcXa()と、グローバル変数g_func_aは構成Aでのみにしか関係しないことを示し、関数funcXb()と、グローバル変数g_func_bは構成Bでのみにしか関係しないことを示す情報の例である。構成Aを指定した場合、関数funcXb()と、グローバル変数g_func_bに関係するの故障解析情報を非表示にし、構成Bを指定した場合は、関数funcXa()と、グローバル変数g_func_aに関する故障解析情報を非表示にする。
このように、解析対象装置の構成に着目して、強調して表示する部分を選択すれば、作業者が注目すべき情報をより素早く発見できるようになる。
以上に説明したように、効率的なエレベータの故障解析が可能となり、特に、エレベータプログラムの開発者以外でも,故障元の変数から,故障の原因となっている変数を調査する場合の作業効率が向上する。
また、プログラム図情報として、(1)ソースとコメントの両者、(2)ソースのみ(3)コメントのみの情報が抽出可能になったり、対象の構成の時に関係する情報のみを表示することで、作業者が故障解析作業に必要最小限度の情報だけを参照することにより、故障解析を行うことが可能となる。
さらに、稼動中のエレベータの信号の値を参照したり、実行経路を表示したり、関連する電気回路図面を参照したり、することで故障原因の調査が効率化される。
これにより、エレベータの据付現場において、高度なC言語に対する理解がない作業者でも、故障の直接の要因となっている変数から、故障の発端の原因となっている変数を探索することが、効率的に実記可能となる。
実施の形態15.
以上、実施の形態1〜実施の形態14で述べた構成は、任意に組み合わせることができる。
これにより、各構成の効果を相乗させることができ、更に、解析対象装置の解析の効率を高めることができる。
実施の形態1〜実施の形態14における解析支援装置のハードウェア構成の一例を示す図。 実施の形態1〜実施の形態14における解析支援装置の内部構成の一例を示す図。 実施の形態1〜実施の形態7における解析の対象であるエレベータ(解析対象装置の一例)の内部構成を示す図及びそのエレベータの制御部が実行するソフトウェアの開発過程の概念図。 実施の形態1〜実施の形態7における解析支援装置の一部(表示部関連)を示す図。 ソースコードの一例及び実施の形態1〜実施の形態7においてそのソースコードに対応してソースコード情報表示部が表示するソースコード情報の一例を示す図。 ソースコードの一例及び実施の形態1〜実施の形態7においてそのソースコードに対応してソースコード情報表示部が表示するソースコード情報の一例を示す図。 ソースコードの一例を示す図(制御信号を変数によって記述した例)。 ソースコードの一例及び実施の形態2〜実施の形態7においてそのソースコードに対応してソースコード情報表示部が表示するソースコード情報の一例を示す図。 実施の形態2〜実施の形態4における解析支援装置の一部(着目制御信号判別部関連)を示す図。 ソースコードの一例を示す図(代入による依存関係の例)。 ソースコードの一例を示す図(代入による依存関係の例)。 ソースコードの一例を示す図(条件分岐による依存関係の例)。 ソースコードの一例を示す図(条件分岐による依存関係の例)。 実施の形態5〜実施の形態6における解析支援装置の一部(実行ソースコード情報判別部関連)を示す図。 ソースコードの一例及び実施の形態5〜実施の形態7においてそのソースコードに対応してソースコード情報表示部が表示するソースコード情報の一例を示す図。 ソースコードの一例及び実施の形態5〜実施の形態7において、ソースコードに対応してソースコード情報表示部が表示するソースコード情報の一例を示す図。 実施の形態7における解析支援装置の一部(実行ソースコード情報判別部関連)を示す図。 実施の形態8〜実施の形態14における解析支援装置の全体構成の一例を示す図。 ソースコードの一例を示す図。 実施の形態13における電気回路図面関連記憶部が記憶する情報の一例を示す図。 ソースコードの一例を示す図。 実施の形態14におけるエレベータ構成情報記憶部が記憶する情報の一例を示す図。
符号の説明
100 解析支援装置、111 制御信号表示部、112 ソースコード情報表示部、113 回路図情報表示部、121 着目制御信号判別部、122 着目ソースコード情報判別部、123 着目回路部分判別部、124 異常制御信号判別部、125 依存制御信号判別部、131 選択制御信号入力部、132 選択ソースコード情報入力部、133 選択回路部分入力部、141 制御信号取得部、142 記憶内容取得部、143 実行アドレス取得部、151 ソースコード情報記憶部、152 アドレス対応関係記憶部、153 記憶対応関係記憶部、154 記述対応関係記憶部、155 回路図情報記憶部、156 制御対応関係記憶部、161 実行ソースコード情報判別部、200 エレベータ(解析対象装置の一例)、210 制御部、220 制御対象部、221 回転数センサー、222 位置センサー、223 積載重量センサー、224 行き先ボタン、225 呼出しボタン、226 駆動モータ、227 現在階表示器、228 到着表示灯、230 接続部、240 磁気ディスク装置、251 RAM(記憶部の一例)、300 Cコンパイラ装置、400 ソースコード解析装置、501 ソースコード、511 実行可能なソフトウェア、512 アドレス対応関係、513 変数記憶対応関係、521 装置情報、531 ソースコード解析情報、532 変数対応関係、551 回路図情報、561 制御対応関係、611 故障解析情報表示部、612 実行経路表示部、613 変数値表示部、614 特定構成表示部、615 電気回路図面表示部、641 エレベータ通信部、651 解析対象ソフトウェア記憶部、652 エレベータ故障解析情報記憶部、653 電気回路図面関連記憶部、654 エレベータ構成情報記憶部、655 電気回路図面記憶部、671 ソフトウェア故障解析部、672 変数依存関係解析部、901 CRT、902 キーボード、903 マウス、904 FDD(フレキシブルディスク装置)、905 CDD(コンパクトディスク装置)、906 プリンタ装置、907 スキャナ装置、910 システムユニット、911 CPU(中央処理装置)、912 バス、913 ROM、914 RAM、915 通信ボード、920 磁気ディスク装置、921 OS(オペレーティングシステム)、922 ウィンドウシステム、923 プログラム群、924 ファイル群、931 電話器、932 FAX(ファクス)機、940 インターネット、941 ゲートウェイ、942 LAN、950 入出力装置。

Claims (25)

  1. 実行可能なソフトウェアを内蔵した制御部と、
    上記制御部により制御される制御対象部と、
    を有する解析対象装置の解析を支援する解析支援装置において、
    上記ソフトウェアのソースコードの情報であるソースコード情報を記憶するソースコード情報記憶部と、
    上記解析対象装置と接続して、上記解析対象装置の制御部と上記解析対象装置の制御対象部との間の制御信号を取得する制御信号取得部と、
    上記解析対象装置の回路図の情報である回路図情報を記憶する回路図情報記憶部と、
    上記ソースコード情報記憶部が記憶したソースコード情報を表示するソースコード情報表示部と、
    上記制御信号取得部が取得した制御信号を表示する制御信号表示部と、
    上記回路図情報記憶部が記憶した回路図情報を表示する回路図情報表示部と
    を有することを特徴とする解析支援装置。
  2. 上記解析支援装置は、更に、
    上記制御信号のうち特定の制御信号を着目制御信号として判別する着目制御信号判別部を有し、
    上記制御信号表示部は、更に、
    上記制御信号のうち、上記着目制御信号判別部が判別した着目制御信号を強調して表示する
    ことを特徴とする請求項1に記載の解析支援装置。
  3. 上記解析支援装置は、更に、
    上記制御信号のうち特定の制御信号を着目制御信号として判別する着目制御信号判別部と、
    上記ソフトウェアのソースコードにおいて上記制御信号を記述した記述方法と上記記述方法で記述された上記制御信号との対応関係を示す記述対応関係を記憶する記述対応関係記憶部と、
    上記記述対応関係記憶部が記憶した記述対応関係に基づいて、上記ソースコード情報記憶部が記憶したソースコード情報のうち、上記着目制御信号判別部が判別した着目制御信号に対応するソースコード情報を着目ソースコード情報として判別する着目ソースコード情報判別部と、
    を有し、上記ソースコード情報表示部は、更に、
    上記ソースコード情報のうち、上記着目ソースコード情報判別部が判別した着目ソースコード情報を強調して表示する
    ことを特徴とする請求項1に記載の解析支援装置。
  4. 上記解析支援装置は、更に、
    上記制御信号のうち特定の制御信号を着目制御信号として判別する着目制御信号判別部と、
    上記回路図情報記憶部が記憶した回路図情報において上記制御信号に対応する回路部分と上記回路部分に対応する上記制御信号との対応関係を示す制御対応関係を記憶する制御対応関係記憶部と、
    上記制御対応関係記憶部が記憶した制御対応関係に基づいて、上記着目制御信号判別部が判別した着目制御信号に対応する回路部分を着目回路部分として判別する着目回路部分判別部と、
    を有し、上記回路図情報表示部は、更に、
    上記回路図情報のうち、上記着目回路部分判別部が判別した着目回路部分を強調して表示する
    ことを特徴とする請求項1に記載の解析支援装置。
  5. 上記解析支援装置は、更に、
    上記制御信号表示部が表示した制御信号から選択した選択制御信号を入力させる選択制御信号入力部を有し、
    上記着目制御信号判別部は、
    上記選択制御信号入力部に入力された選択制御信号を、上記着目制御信号として判別する
    ことを特徴とする請求項2乃至請求項4のいずれかに記載の解析支援装置。
  6. 上記解析支援装置は、更に、
    上記ソースコード情報表示部が表示したソースコード情報から選択した選択ソースコード情報を入力させる選択ソースコード情報入力部と、
    上記ソフトウェアのソースコードにおいて上記制御信号を記述した記述方法と上記記述方法で記述された上記制御信号との対応関係を示す記述対応関係を記憶する記述対応関係記憶部と、
    を有し、上記着目制御信号判別部は、
    上記記述対応関係記憶部が記憶した記述対応関係に基づいて、上記選択ソースコード情報入力部に入力された選択ソースコード情報に対応する制御信号を、上記着目制御信号として判別する
    ことを特徴とする請求項2または請求項4に記載の解析支援装置。
  7. 上記解析支援装置は、更に、
    上記回路図情報表示部が表示した回路図情報から選択した選択回路部分を入力させる選択回路部分入力部と、
    上記回路図情報記憶部が記憶した回路図情報において上記制御信号に対応する回路部分と上記回路部分に対応する上記制御信号との対応関係を示す制御対応関係を記憶する制御対応関係記憶部と、
    を有し、上記着目制御信号判別部は、
    上記制御対応関係記憶部が記憶した制御対応関係に基づいて、上記選択回路部分入力部に入力された選択回路部分に対応する制御信号を、上記着目制御信号として判別する
    ことを特徴とする請求項2または請求項3に記載の解析支援装置。
  8. 上記解析支援装置は、更に、
    上記制御信号取得部が取得した制御信号のうち異常値を示している制御信号を異常制御信号として判別する異常制御信号判別部を有し、
    上記着目制御信号判別部は、
    上記異常制御信号判別部が判別した異常制御信号を、上記着目制御信号として判別する
    ことを特徴とする請求項2乃至請求項4のいずれかに記載の解析支援装置。
  9. 上記解析支援装置は、更に、
    上記記述対応関係記憶部が記憶した記述対応関係及び上記ソースコード情報記憶部が記憶したソースコード情報に基づいて、上記着目制御信号と依存関係のある制御信号を依存制御信号として判別する依存制御信号判別部を有し、
    上記着目制御信号判別部は、更に、
    上記依存制御信号判別部が判別した依存制御信号を上記着目制御信号として判別する
    ことを特徴とする請求項3に記載の解析支援装置。
  10. 上記解析支援装置は、更に、
    上記ソフトウェアのソースコードにおいて上記制御信号を記述した記述方法と上記記述方法で記述された上記制御信号との対応関係を示す記述対応関係を記憶する記述対応関係記憶部と、
    上記記述対応関係記憶部が記憶した記述対応関係及び上記ソースコード情報記憶部が記憶したソースコード情報に基づいて、上記着目制御信号と依存関係のある制御信号を依存制御信号として判別する依存制御信号判別部と、
    を有し、上記着目制御信号判別部は、更に、
    上記依存制御信号判別部が判別した依存制御信号を上記着目制御信号として判別する
    ことを特徴とする請求項2または請求項4に記載の解析支援装置。
  11. 上記解析支援装置は、更に、
    上記制御対象装置の制御部が実際に実行している上記ソフトウェアの実行経路を判別し、
    上記ソースコード情報記憶部が記憶したソースコード情報のうち、上記実行経路に対応するソースコード情報を実行ソースコード情報として判別する実行ソースコード情報判別部を有し、
    上記ソースコード情報表示部は、更に、
    上記実行ソースコード情報判別部が判別した実行ソースコード情報を強調して表示する
    ことを特徴とする請求項1に記載の解析支援装置。
  12. 上記解析支援装置は、更に、
    上記ソフトウェアのソースコードにおいて上記制御信号を記述した記述方法と上記記述方法で記述された上記制御信号との対応関係を示す記述対応関係を記憶する記述対応関係記憶部を有し、
    上記実行ソースコード情報判別部は、
    上記ソースコード情報記憶部が記憶したソースコード情報及び上記記述対応関係記憶部が記憶した記述対応関係及び上記制御信号取得部が取得した制御信号に基づいて、上記実行ソースコード情報を判別する
    ことを特徴とする請求項11に記載の解析支援装置。
  13. 上記解析支援装置は、更に、
    上記制御対象装置と接続して、上記制御対象装置の制御部が記憶する記憶内容を取得する記憶内容取得部と、
    上記ソフトウェアのソースコードにおいて上記記憶内容を記述した記述方法と上記記述方法で記述された上記記憶内容との対応関係を示す記憶対応関係を記憶する記憶対応関係記憶部と、
    を有し、
    上記実行ソースコード情報判別部は、
    上記ソースコード情報記憶部が記憶したソースコード情報及び上記記憶対応関係記憶部が記憶した記憶対応関係及び上記記憶内容取得部が取得した記憶内容に基づいて、上記実行ソースコード情報を判別する
    ことを特徴とする請求項11に記載の解析支援装置。
  14. 上記解析支援装置は、更に、
    上記制御対象装置と接続して、上記制御対象装置の制御部の実行アドレスを取得する実行アドレス取得部と、
    上記ソースコード情報記憶部が記憶したソースコード情報において、上記実行アドレスに対応するソースコード情報と、上記ソースコード情報に対応する上記実行アドレスとの対応関係を示すアドレス対応関係を記憶するアドレス対応関係記憶部と、
    を有し、
    上記実行ソースコード情報判別部は、
    上記実行アドレス取得部が取得した実行アドレスにより、上記制御対象装置の制御部が実際に実行している上記ソフトウェアの実行経路を判別し、
    上記アドレス対応関係記憶部が記憶したアドレス対応関係により、実行経路に対応するソースコード情報を、上記実行ソースコード情報として判別する
    ことを特徴とする請求項11に記載の解析支援装置。
  15. 上記ソースコード情報記憶部は、上記ソースコード情報として、
    上記ソフトウェアの制御の流れを図形化したチャート図形についてのチャート図形情報を記憶し、
    上記ソースコード情報表示部は、上記ソースコード情報として、
    上記ソースコード情報記憶部が記憶したチャート図形情報を表示する
    ことを特徴とする請求項1に記載の解析支援装置。
  16. 上記記述対応関係記憶部は、上記記述対応関係として、
    上記ソフトウェアのソースコードにおいて上記制御信号を記述した変数と、上記変数によって記述された上記制御信号との対応関係を示す変数対応関係を記憶し、
    上記ソースコード情報記憶部は、上記ソースコード情報として、
    上記ソフトウェアのソースコードにおいて上記変数が使用されている位置についての変数使用位置情報を記憶し、
    上記着目ソースコード情報判別部は、
    上記記述対応関係記憶部が記憶した変数対応関係により、上記着目制御信号を記述した変数を着目変数として判別し、
    上記ソースコード情報記憶部が記憶した変数使用位置情報により、上記着目変数が使用されている位置に対応するソースコード情報を上記着目ソースコード情報として判別する
    ことを特徴とする請求項3に記載の解析支援装置。
  17. 上記制御対応関係記憶部は、上記制御対応関係として、
    上記解析対象装置のうち外部の情報を収集する情報収集部に対応する回路部分と上記情報集部が収集する情報を上記解析対象装置の制御部へ伝達する上記制御信号との対応関係を示す情報収集信号対応関係と、
    上記解析対象装置のうち上記解析対象装置の制御部から伝達された制御信号によって動作する動作部に対応する回路部分と上記動作部に伝達される上記制御信号との対応関係を示す動作信号対応関係と
    を記憶し、
    上記着目回路部分判別部は、
    上記制御対応関係記憶部が記憶した情報収集信号対応関係及び動作信号対応関係により、上記着目制御信号に対応する回路部分を上記着目回路部分として判別する
    ことを特徴とする請求項4に記載の解析支援装置。
  18. 上記記述対応関係記憶部は、上記記述対応関係として、
    上記ソフトウェアのソースコードにおいて上記制御信号を記述した変数と、上記変数によって記述された上記制御信号との対応関係を示す変数対応関係を記憶し、
    上記ソースコード情報記憶部は、上記ソースコード情報として、
    上記ソフトウェアのソースコードにおいて上記変数が使用されている位置についての変数使用位置情報を記憶し、
    上記着目制御信号判別部は、
    上記ソースコード情報記憶部が記憶した変数使用位置情報により、上記ソフトウェアのソースコードにおいて、上記選択ソースコード情報入力部に入力された選択ソースコード情報に対応する部分で使用されている変数を選択変数として判別し、
    上記記述対応関係記憶部が記憶した変数対応関係により、上記選択変数に対応する制御信号を上記着目制御信号として判別する
    ことを特徴とする請求項6に記載の解析支援装置。
  19. 上記制御対応関係記憶部は、上記制御対応関係として、
    上記解析対象装置のうち外部の情報を収集する情報収集部に対応する回路部分と上記情報集部が収集する情報を上記解析対象装置の制御部へ伝達する上記制御信号との対応関係を示す情報収集信号対応関係と、
    上記解析対象装置のうち上記解析対象装置の制御部から伝達された制御信号によって動作する動作部に対応する回路部分と上記動作部に伝達される上記制御信号との対応関係を示す動作信号対応関係と、
    を記憶し、
    上記着目制御信号判別部は、
    上記制御対応関係記憶部が記憶した情報収集信号対応関係及び動作信号対応関係により、上記選択回路部分入力部に入力された選択回路部分に対応する制御信号を上記着目制御信号として判別する
    ことを特徴とする請求項7に記載の解析支援装置。
  20. 上記記述対応関係記憶部は、上記記述対応関係として、
    上記ソフトウェアのソースコードにおいて上記制御信号を記述した変数と、上記変数によって記述された上記制御信号との対応関係を示す変数対応関係を記憶し、
    上記ソースコード情報記憶部は、上記ソースコード情報として、
    上記ソフトウェアのソースコードにおける上記変数の依存関係を示す変数依存関係を記憶し、
    上記依存制御信号判別部は、
    上記記述対応関係記憶部が記憶した変数対応関係により、上記着目制御信号に対応する変数を着目変数として判別し、
    上記ソースコード情報記憶部が記憶した変数依存関係により、上記着目変数と依存関係のある変数を依存変数として判別し、
    上記記述対応関係記憶部が記憶した変数対応関係により、上記依存変数に対応する制御信号を上記依存制御信号として判別する
    ことを特徴とする請求項9または請求項10に記載の解析支援装置。
  21. 上記記述対応関係記憶部は、上記記述対応関係として、
    上記ソフトウェアのソースコードにおいて上記制御信号を記述した変数と、上記変数によって記述された上記制御信号との対応関係を示す変数対応関係を記憶し、
    上記ソースコード情報記憶部は、上記ソースコード情報として、
    上記ソフトウェアのソースコードにおける制御の流れの分岐位置及び合流位置を示す制御フロー情報と、
    上記分岐位置における分岐条件を示す制御条件情報と、
    を記憶し、上記実行ソースコード情報判別部は、
    上記ソースコード解析情報記憶部が記憶した制御フロー情報により、上記ソースコード情報記憶部が記憶したソースコード情報を上記分岐位置及び上記合流位置によって分割し、
    上記記述対応関係記憶部が記憶した変数対応関係により、上記制御信号取得部が取得した制御信号に対応する変数の値を判別し、
    上記ソースコード情報記憶部が記憶した制御条件情報により、上記分岐位置において、上記分岐条件を満たすかどうかを判別して、上記制御対象装置の制御部が実際に実行している上記ソフトウェアの実行経路を推定し、
    分割された上記ソースコード情報のうち、上記実行経路に対応するソースコード情報を上記実行ソースコード情報として判別する
    ことを特徴とする請求項12に記載の解析支援装置。
  22. 上記記憶対応関係記憶部は、上記記憶対応関係として、
    上記ソフトウェアのソースコードにおいて上記記憶内容を記述した変数と、上記変数によって記述された上記記憶内容との対応関係を示す変数記憶対応関係を記憶し、
    上記ソースコード情報記憶部は、上記ソースコード情報として、
    上記ソフトウェアのソースコードにおける制御の流れの分岐位置及び合流位置を示す制御フロー情報と、
    上記分岐位置における分岐条件を示す制御条件情報と、
    を記憶し、上記実行ソースコード情報判別部は、
    上記ソースコード解析情報記憶部が記憶した制御フロー情報により、上記ソースコード情報記憶部が記憶したソースコード情報を上記分岐位置及び上記合流位置によって分割し、
    上記記憶対応関係記憶部が記憶した変数記憶対応関係により、上記記憶内容取得部が取得した記憶内容に対応する変数の値を判別し、
    上記ソースコード情報記憶部が記憶した制御条件情報により、上記分岐位置において、上記分岐条件を満たすかどうかを判別して、上記制御対象装置の制御部が実際に実行している上記ソフトウェアの実行経路を推定し、
    分割された上記ソースコード情報のうち、上記実行経路に対応するソースコード情報を上記実行ソースコード情報として判別する
    ことを特徴とする請求項13に記載の解析支援装置。
  23. 上記ソースコード情報記憶部は、上記ソースコード情報として、
    関数の定義位置、戻り値、引数、使用している広域変数、局所変数、マクロ、呼び出している関数、呼び出されている関数、関数のプログラム図の情報を含む関数情報と、
    広域変数の定義位置、型、使用されている位置の情報を含む広域変数情報と、
    局所変数の定義位置、型、使用されている位置の情報を含む局所変数情報と、
    引数の定義位置、型、使用されている位置の情報を含む引数情報と、
    型の定義位置、定義の実体、使用されている位置の情報を含む型情報と、
    マクロの定義、使用されている位置の情報を含むマクロ情報と、
    定数の使用されている位置の情報を含む定数情報と、
    関数スコープの中での広域変数の依存関係の情報を含む広域変数依存関係情報と、
    を記憶する
    ことを特徴とする請求項1に記載の解析支援装置。
  24. 上記解析対象装置は、エレベータであることを特徴とする請求項1乃至請求項23のいずれかに記載の解析支援装置。
  25. 上記解析支援装置は、上記解析対象装置の故障の解析を支援するものであることを特徴とする請求項1乃至請求項24のいずれかに記載の解析支援装置。
JP2005143937A 2005-05-17 2005-05-17 解析支援装置 Expired - Fee Related JP4667954B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2005143937A JP4667954B2 (ja) 2005-05-17 2005-05-17 解析支援装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005143937A JP4667954B2 (ja) 2005-05-17 2005-05-17 解析支援装置

Publications (2)

Publication Number Publication Date
JP2006323480A true JP2006323480A (ja) 2006-11-30
JP4667954B2 JP4667954B2 (ja) 2011-04-13

Family

ID=37543134

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005143937A Expired - Fee Related JP4667954B2 (ja) 2005-05-17 2005-05-17 解析支援装置

Country Status (1)

Country Link
JP (1) JP4667954B2 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008204446A (ja) * 2007-01-26 2008-09-04 National Institute Of Advanced Industrial & Technology ソースファイル編集システム
JP2008243042A (ja) * 2007-03-28 2008-10-09 Toshiba Corp ハイブリッドモデルのシミュレーション装置、方法及びプログラム
WO2012011145A1 (ja) 2010-07-20 2012-01-26 株式会社 日立製作所 ソフトウェア保守支援装置及びそれにより検証した電子制御装置
JPWO2014141352A1 (ja) * 2013-03-11 2017-02-16 株式会社日立製作所 システム制御装置

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0573354A (ja) * 1991-09-12 1993-03-26 Mitsubishi Electric Corp データ処理装置
JPH06171854A (ja) * 1992-12-03 1994-06-21 Hitachi Building Syst Eng & Service Co Ltd エレベータの電気的結線図の表示装置
JPH06263357A (ja) * 1993-03-12 1994-09-20 Mitsubishi Electric Corp エレベータの制御装置
JPH06274567A (ja) * 1993-03-22 1994-09-30 Mitsubishi Electric Corp 論理シミュレーション装置
JPH08292881A (ja) * 1995-04-24 1996-11-05 Nec Corp プログラム影響範囲表示装置
JP2001157235A (ja) * 1999-11-30 2001-06-08 Hitachi Commun Syst Inc 蓄積プログラム制御式自動交換機
JP2002108649A (ja) * 2000-09-29 2002-04-12 Toshiba Corp トレース解析を支援するためのプログラムを記録した記録媒体及びプログラム製品
JP2002312197A (ja) * 2001-04-12 2002-10-25 Toshiba Corp 制御装置およびモニタ装置
JP2003108404A (ja) * 2001-09-27 2003-04-11 Toshiba Corp デバッグ装置、デバッグ方法およびデバッグプログラム

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0573354A (ja) * 1991-09-12 1993-03-26 Mitsubishi Electric Corp データ処理装置
JPH06171854A (ja) * 1992-12-03 1994-06-21 Hitachi Building Syst Eng & Service Co Ltd エレベータの電気的結線図の表示装置
JPH06263357A (ja) * 1993-03-12 1994-09-20 Mitsubishi Electric Corp エレベータの制御装置
JPH06274567A (ja) * 1993-03-22 1994-09-30 Mitsubishi Electric Corp 論理シミュレーション装置
JPH08292881A (ja) * 1995-04-24 1996-11-05 Nec Corp プログラム影響範囲表示装置
JP2001157235A (ja) * 1999-11-30 2001-06-08 Hitachi Commun Syst Inc 蓄積プログラム制御式自動交換機
JP2002108649A (ja) * 2000-09-29 2002-04-12 Toshiba Corp トレース解析を支援するためのプログラムを記録した記録媒体及びプログラム製品
JP2002312197A (ja) * 2001-04-12 2002-10-25 Toshiba Corp 制御装置およびモニタ装置
JP2003108404A (ja) * 2001-09-27 2003-04-11 Toshiba Corp デバッグ装置、デバッグ方法およびデバッグプログラム

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008204446A (ja) * 2007-01-26 2008-09-04 National Institute Of Advanced Industrial & Technology ソースファイル編集システム
JP2008243042A (ja) * 2007-03-28 2008-10-09 Toshiba Corp ハイブリッドモデルのシミュレーション装置、方法及びプログラム
WO2012011145A1 (ja) 2010-07-20 2012-01-26 株式会社 日立製作所 ソフトウェア保守支援装置及びそれにより検証した電子制御装置
US9170805B2 (en) 2010-07-20 2015-10-27 Hitachi, Ltd. Software maintenance supporting device for analyzing relationships between variables
JPWO2014141352A1 (ja) * 2013-03-11 2017-02-16 株式会社日立製作所 システム制御装置

Also Published As

Publication number Publication date
JP4667954B2 (ja) 2011-04-13

Similar Documents

Publication Publication Date Title
US8612372B2 (en) Detection rule-generating facility
US9535821B1 (en) Displaying violated coding rules in source code
JP5132779B2 (ja) 障害イベントの検出を支援する装置、障害イベントの検出を支援する方法及びコンピュータプログラム
US20070162903A1 (en) Systems and methods for identifying and displaying dependencies
CN105765528A (zh) 具有可配置原点定义的应用执行路径跟踪
CN102236550A (zh) 软件开发工具
JP2005258944A (ja) プログラム解析装置、その解析方法及びプログラム
JP6906677B2 (ja) ソフトウェア可視化装置、ソフトウェア可視化方法およびソフトウェア可視化プログラム
CN1983173B (zh) 图形用户界面设计方法和设备
JP3842592B2 (ja) 変更危険度測定システム、変更危険度測定方法及び変更危険度測定プログラム
JP5762154B2 (ja) 情報処理装置及び情報処理方法及びプログラム
Grechanik et al. Creating GUI testing tools using accessibility technologies
CN102236551A (zh) 软件开发工具
Silva et al. Combining static and dynamic analysis for the reverse engineering of web applications
US7519956B2 (en) Method for generating document components and managing same
JP4667954B2 (ja) 解析支援装置
Almeida et al. Towards a catalog of usability smells
JP6199314B2 (ja) 演算子の優先順位のグラフィカル表現
US8798971B2 (en) System and method for using a truth table graphical function in a statechart
JP6692289B2 (ja) 画面情報生成装置、画面情報生成方法、及びプログラム
US8819626B2 (en) Sharable development environment bookmarks for functional/data flow
CN115080448B (zh) 一种软件代码不可达路径自动检测的方法和装置
GB2397905A (en) Method for automatically generating and ordering test scripts
Agouf et al. Understanding Class Name Regularity: A Simple Heuristic and Supportive Visualization.
JP5019021B2 (ja) 制御プログラム開発支援装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080205

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20091119

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100608

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100802

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110111

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110112

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140121

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4667954

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees