(57)【特許請求の範囲】
【請求項１】
オープン系プロセス制御システムにおいて共通的に用いられるソフトウェアを用いて規定されたプログラムの応答性の良否を診断するプログラム診断装置であって、
前記ソフトウェアを用いて規定された関数について当該関数を実行したときの処理に要する関数処理時間を記憶する関数情報記憶部と、
前記プログラムのソースにおいて使用されている前記関数を抽出するプログラム読取部と、
前記抽出された関数のうち、前記関数情報記憶部に記憶されている関数の前記関数処理時間を前記関数情報記憶部より取得して算出した前記プログラムの最大処理時間、および、前記プログラムのうち解析対象である解析対象プログラムを実行したときに使用される資源が他のプログラムによって確保され、当該解析対象プログラムが使用できないように排他されている総排他時間に基づいて、前記解析対象プログラムの最大稼働時間を算出し、前記最大稼働時間と最大許容時間とを比較して、前記解析対象プログラムの最大稼働時間が許容時間以下であるか否かを判定するプログラム解析部と、
を備えることを特徴とする、プログラム診断装置。
【請求項２】
前記プログラム解析部は、
前記各プログラムにおいて排他処理を規定する資源を確保する排他取得関数および前記資源を解放する排他開放関数を抽出して、前記資源の取得から解放までに要する排他時間を解析し、
前記解析対象プログラムにおいて使用する前記資源を排他する他のプログラムの排他時間を加算して前記総排他時間を算出することを特徴とする、請求項１に記載のプログラム診断装置。
【請求項３】
前記プログラム解析部は、前記各プログラムに含まれるすべての排他処理の排他時間を、前記プログラムを特定するプログラム特定情報および排他処理にて確保する資源を特定する資源特定情報と関連付けて、前記関数情報記憶部に記憶することを特徴とする、請求項２に記載のプログラム診断装置。
【請求項４】
前記プログラム解析部は、
前記プログラムに含まれる排他処理において、さらに他の資源を確保して他のプログラムによる使用を排他する副排他処理が含まれる場合、前記副排他処理の排他時間を、当該副排他処理が含まれるプログラムのプログラム特定情報および当該副排他処理にて確保する資源の資源特定情報と関連付けて前記関数情報記憶部に記録するとともに、前記排他処理の排他時間に前記副排他処理にて確保する資源の資源特定情報を関連付けて記録しており、
前記解析対象プログラムにて使用される資源を他のプログラムが使用のため確保している間に、前記他のプログラムにてさらに前記解析対象プログラムも使用する他の資源を確保する副排他処理が行われる場合、前記解析対象プログラムの最大稼動時間から、前記副排他処理の排他時間を除外することを特徴とする、請求項３に記載のプログラム診断装置。
【請求項５】
前記解析対象プログラムに、当該プログラムが実行される端末と他の端末との間で行われるメッセージの伝送処理が規定されているとき、
前記プログラム解析部は、前記伝送処理に要する受信時間を前記最大処理時間および前記総排他時間に加算して、前記解析対象プログラムの最大稼動時間を算出することを特徴とする、請求項１〜４のいずれか１項に記載のプログラム診断装置。
【請求項６】
オープン系プロセス制御システムにおいて共通的に用いられるソフトウェアを用いて規定されたプログラムの応答性の良否を診断するプログラム診断方法であって、
プログラムのソースにおいて使用されている前記ソフトウェアを用いて規定された関数を抽出するプログラム読取ステップと、
所定の関数を実行したときの処理に要する関数処理時間を記憶する関数情報記憶部より前記抽出された関数の前記関数処理時間を取得する関数処理時間取得ステップと、
前記抽出された関数のうち、前記関数情報記憶部に記憶されている関数の前記関数処理時間を前記関数情報記憶部より取得して算出した前記プログラムの最大処理時間、および、前記プログラムのうち解析対象である解析対象プログラムを実行したときに使用される資源が他のプログラムによって確保され、当該解析対象プログラムが使用できないように排他されている総排他時間に基づいて、前記解析対象プログラムの最大稼働時間を算出し、前記最大稼働時間と最大許容時間とを比較して、前記解析対象プログラムの最大稼働時間が許容時間以下であるか否かを判定するプログラム解析ステップと、
を含むことを特徴とする、プログラム診断方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラム診断装置およびプログラム診断方法に関し、より詳細には、プログラムの応答性を診断するプログラム診断装置およびプログラム診断方法に関する。
【背景技術】
【０００２】
従来、プログラムの開発においては、開発効率や保守性を向上させるために、所定の規約に沿った開発が行われている。規約には、例えばプログラムの記述形式に関するものや、プログラムの文法に関するもの等がある。例えば、Ｃ言語での識別子名に関する規約として、構造体や列挙子を使用する場合は必ず予約語typedefによりデータの型を定義し、そのtypedef名はタグ名と同一とする、という規約や、ローカル変数名には、#define文で定義した論理名と間違えないように、英字の大文字は使用しない、という規約等がある。このような規約に沿って開発されたプログラムが正しく記述されているか否かを判断するための方法も提案されており、プログラム自体の誤りを容易に検出することができるので、プログラムの開発効率や保守性はさらによくなっている。
【０００３】
ところで、製鉄業等におけるプロセス制御システムにおいては、２４時間操業で高い信頼性が要求される。例えば、図１３に示すように、材料１を圧延機のロール２、３により圧延する圧延プロセスにおいては、材料の厚みおよび温度を測定するセンサ４の測定値に基づき、圧延機のロール２、３間のギャップが決定され、圧延機に対する圧下設定が行われる。例えば、センサ４がロール２、３から圧延方向上流側に１０ｍ離れた位置に設けられており、材料１が速度ｖ＝１２００ｍ／ｍｉｎ（すなわち、２０ｍ／ｓｅｃ）で圧延方向に搬送されているとする。このとき、圧延機に対する圧下設定は、材料１の先頭部分がロール２、３に到達する前に完了させなければならないため、５００ｍｓｅｃという短時間で圧延機に対する圧下設定を行う必要がある。かかる時間内に処理が完了しなければ、製品不良が生じてしまい、大きな問題となる。
【０００４】
このように高い信頼性が要求される製鉄業等におけるプロセス制御システムは、これまで重電メーカ専用のコンピュータやネットワークで構成されてきた。しかしながら、近年では、仕様が公開された汎用品のコンピュータ等の機器を使用したオープン系システムであるプロセス制御システムの導入が進んでいる。オープン系システムは、オープン標準に準拠したソフトウェアや、それを使用しているコンピュータで構成されるオープン系コンピュータシステムであって、コンピュータの基本的な制御を行うオペレーティングシステム（ＯＳ）と、各業務・制御処理を行うアプリケーションソフトウェア（ＡＰ）と、これらの間に位置する共通的なソフトウェアであるミドルウェアとを具備する。なお、ミドルウェアとは、通信やファイル入出力などの特定の処理機能について、ＯＳよりも高度で具体的な機能を提供するソフトウェアであって、アプリケーションソフトウェアの中で使用することができる。
【０００５】
オープン系システムをプロセス制御分野に応用したオープン系プロセス制御システムは、例えば制御用サーバと外部機器が汎用のネットワークを介して接続されて構成される。ここで、外部機器としては、電気計装制御装置（Ｐｒｏｇｒａｍｍａｂｌｅ  Ｌｏｇｉｃ  Ｃｏｎｔｒｏｌｌｅｒ、Ｄｉｓｔｒｉｂｕｔｅｄ  Ｃｏｎｔｒｏｌ  Ｓｙｓｔｅｍ）、データベースサーバ、他工程の制御サーバなどが対象となる。このようなオープン系プロセス制御システムにおける共通的なソフトウェアであるミドルウェアは、所定の規約に沿って開発されるものである。したがって、このミドルウェアを用いたプログラムを、従来技術を用いて、プログラムの規約に沿って正しく記述されているか否かをチェックすることができる。
【０００６】
また、製鉄業等におけるプロセス制御システムのプログラムにおいては、正しく記述されているか否かだけではなく、上述のようにプログラムの稼動時間が製品の良否に大きく影響するため、プログラムの最大稼動時間のチェックも重要となる。プログラムの最大稼動時間においては、オフラインで解析することにより、システムへの適用前に問題となる箇所を検出できるので、プロセス制御システムのトラブルを事前に防ぐことができる。例えば、特許文献１には、オフライン解析によりプログラムの稼動時間を算出するプログラム自動評価方法が開示されている。特許文献１に記載の方法では、プログラム内に規定されたループ処理に要する時間も考慮することで、より正確にプログラム稼動時間を算出することができる。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開平５−１５０９７５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
ここで、プログラムが単一で動作している場合、そのプログラムの最大稼動時間が、当該プログラムの適用されているプロセス制御システムに対して処理の遅延による悪影響を及ぼさないように保障するのは比較的容易である。また、関連性の無い複数のプログラムが動作しても、ＣＰＵ割り当ての優先度をコントロールして、優先的に動作させたいプログラムに優先してＣＰＵを割り当てれば、比較的容易に最大稼動時間を保障できる。しかしながら、複数のプログラムが絡み合う場合においては、最大実行時間の保障が困難となる。
【０００９】
例えば、図１４に示すように、コンピュータＡ１０とコンピュータＢ２０との間で伝送処理が行われる場合、送信側コンピュータＡ１０のタスクＡについてのプログラムの最大稼動時間には、受信側コンピュータＢ２０との伝送受信処理時間も加算すべきである。
【００１０】
コンピュータＡ１０のタスクＡにおいて、送信ドライバを介してコンピュータＢ２０へメッセージが送信されると、受信ドライバを介してコンピュータＡ１０からメッセージを受信したコンピュータＢ２０では、タスクＢが実行される。そして、タスクＢにて受信内容の取り出しを行うと、終了メッセージがコンピュータＢ２０からコンピュータＡ１０へ送信される。コンピュータＡ１０は、コンピュータＢ２０へメッセージを送信した後終了メッセージを受信するまで待機状態となり、終了メッセージを受信するとタスクＡの処理を再開する。
【００１１】
このような場合には、タスクＡの最大稼動時間を、タスクＡの処理時間に加えて、伝送処理における受信時間を考慮して算出することで、より正確に算出することができる。
【００１２】
また、同一コンピュータ内に規定されているプログラムにおいてファイル等の排他宣言がされている場合には、排他競合相手の処理時間も考慮すべきである。例えば、図１５に示すように、コンピュータＡ１０のプログラム１、２がともにＡファイルを使用するとき、いずれか一方のプログラムがＡファイルを使用すると、そのプログラムは他方のプログラムでＡファイルを使用できないように排他する。例えば、プログラム２が先にＡファイルをオープンした場合、後からＡファイルをオープンしたプログラム１はプログラム２がＡファイルをクローズするまで待機させられる。プログラム２がＡファイルをオープンしてからクローズするまでの排他時間を考慮することにより、より正確にプログラムの最大稼動時間を算出することができる。
【００１３】
さらに、図１６に示すように、コンピュータＡ１０とコンピュータＢ２０との間で伝送処理が行われ、かつ受信側コンピュータＢ２０内に規定されているプログラムにおいてファイル等の排他宣言がされている場合は、図１４のケースと図１５のケースとが複合する状況となっている。このため、コンピュータＡ１０のタスクＡの最大稼働時間をより正確に算出するためには、受信側コンピュータＢ２０との伝送受信処理時間と、コンピュータＢ２０での排他処理を考慮した排他時間とを加算すべきである。
【００１４】
しかしながら、従来は上記図１４〜図１６に示したケースのように複数のプログラムが絡み合う場合においても、プログラムの最大稼動時間を算出する際には単一プログラムにおける動作時間のみを考慮することがほとんどであった。このため、確実にプログラムの応答性が保障されているとは言えず、プログラムが適用されたプロセス制御システムのトラブル発生の要因となる可能性が高くなる。そこで、本願発明者らは、上記ケースを考慮したプログラムの最大稼動時間の算出を検討し、特に、排他処理に要する排他時間を考慮して最大稼動時間を算出してプログラムの応答性の良否を判断する手法を発案した。
【００１５】
すなわち、本発明は、上記問題に鑑みてなされたものであり、本発明の目的とするところは、オープン系プロセス制御システムに関して、当該システム内で共通的に用いられるソフトウェアに基づき、排他処理を含むプログラムの動作の良否を診断することが可能な、新規かつ改良されたプログラム診断装置およびプログラム診断方法を提供することにある。
【課題を解決するための手段】
【００１６】
上記課題を解決するために、本発明のある観点によれば、オープン系プロセス制御システムにおいて共通的に用いられるソフトウェアを用いて規定されたプログラムの応答性の良否を診断するプログラム診断装置が提供される。プログラム診断装置は、ソフトウェアを用いて規定された関数について当該関数を実行したときの処理に要する関数処理時間を記憶する関数情報記憶部と、プログラムのソースにおいて使用されている関数を抽出するプログラム読取部と、抽出された関数のうち、関数情報記憶部に記憶されている関数の関数処理時間を関数情報記憶部より取得して算出したプログラムの最大処理時間、および、プログラムのうち解析対象である解析対象プログラムを実行したときに使用される資源が他のプログラムによって確保され、当該解析対象プログラムが使用できないように排他されている総排他時間に基づいて、解析対象プログラムの最大稼働時間を算出し、最大稼働時間と最大許容時間とを比較して、解析対象プログラムの最大稼働時間が許容時間以下であるか否かを判定するプログラム解析部と、を備えることを特徴とする。
【００１７】
プログラム解析部は、各プログラムにおいて排他処理を規定する資源を確保する排他取得関数および資源を解放する排他開放関数を抽出して、資源の取得から解放までに要する排他時間を解析し、解析対象プログラムにおいて使用する資源を排他する他のプログラムの排他時間を加算して総排他時間を算出してもよい。
【００１８】
また、プログラム解析部は、各プログラムに含まれるすべての排他処理の排他時間を、プログラムを特定するプログラム特定情報および排他処理にて確保する資源を特定する資源特定情報と関連付けて、関数情報記憶部に記憶してもよい。
【００１９】
さらに、プログラム解析部は、プログラムに含まれる排他処理において、さらに他の資源を確保して他のプログラムによる使用を排他する副排他処理が含まれる場合、副排他処理の排他時間を、当該副排他処理が含まれるプログラムのプログラム特定情報および当該副排他処理にて確保する資源の資源特定情報と関連付けて関数情報記憶部に記録するとともに、排他処理の排他時間に副排他処理にて確保する資源の資源特定情報を関連付けて記録しており、解析対象プログラムにて使用される資源を他のプログラムが使用のため確保している間に、他のプログラムにてさらに解析対象プログラムも使用する他の資源を確保する副排他処理が行われる場合、解析対象プログラムの最大稼動時間から、副排他処理の排他時間を除外してもよい。
【００２０】
また、解析対象プログラムに、当該プログラムが実行される端末と他の端末との間で行われるメッセージの伝送処理が規定されているとき、プログラム解析部は、伝送処理に要する受信時間を最大処理時間および総排他時間に加算して、解析対象プログラムの最大稼動時間を算出してもよい。
【００２１】
また、上記課題を解決するために、本発明の別の観点によれば、オープン系プロセス制御システムにおいて共通的に用いられるソフトウェアを用いて規定されたプログラムの応答性の良否を診断するプログラム診断方法が提供される。プログラム診断方法は、プログラムのソースにおいて使用されているソフトウェアを用いて規定された関数を抽出するプログラム読取ステップと、所定の関数を実行したときの処理に要する関数処理時間を記憶する関数情報記憶部より抽出された関数の関数処理時間を取得する関数処理時間取得ステップと、抽出された関数のうち、関数情報記憶部に記憶されている関数の関数処理時間を関数情報記憶部より取得して算出したプログラムの最大処理時間、および、プログラムのうち解析対象である解析対象プログラムを実行したときに使用される資源が他のプログラムによって確保され、当該解析対象プログラムが使用できないように排他されている総排他時間に基づいて、解析対象プログラムの最大稼働時間を算出し、最大稼働時間と最大許容時間とを比較して、解析対象プログラムの最大稼働時間が許容時間以下であるか否かを判定するプログラム解析ステップと、を含むことを特徴とする。
【発明の効果】
【００２２】
以上説明したように本発明によれば、オープン系プロセス制御システムに関して、当該システム内で共通的に用いられるソフトウェアに基づき、排他処理を含むプログラムの動作の良否を診断することが可能なプログラム診断装置およびプログラム診断方法を提供することにある。
【図面の簡単な説明】
【００２３】
【図１】本発明の第１の実施形態に係るプログラム診断装置の機能構成を示すブロック図である。
【図２】同実施形態に係るプログラム診断装置を用いたプログラム診断方法を示すフローチャートである。
【図３】各プログラムの排他箇所の抽出処理を説明する説明図である。
【図４】プログラムの最大稼動時間の算出方法を示す説明図である。
【図５】本発明の第２の実施形態に係るプログラム診断方法による各プログラムの排他箇所の抽出処理を説明する説明図である。
【図６】プログラムの最大稼動時間の算出方法を示す説明図である。
【図７】本発明の第３の実施形態に係るプログラム診断方法による各プログラムの排他箇所の抽出処理を説明する説明図である。
【図８】排他処理を考慮したプログラムの最大稼動時間の算出方法を示す説明図である。
【図９】プログラムにおける伝送処理の解析を説明する説明図である。
【図１０】伝送処理に要する時間を考慮したプログラムの最大稼動時間を算出する処理を示すフローチャートである。
【図１１】排他処理および伝送処理を考慮したプログラムの最大稼動時間の算出方法を示す説明図である。
【図１２】プログラム診断装置の一ハードウェア構成例を示すブロック図である。
【図１３】圧延プロセスの概要を示す説明図である。
【図１４】コンピュータ間の伝送処理を含むプログラムにおける最大稼動時間の算出方法を示す説明図である。
【図１５】排他処理を含むプログラムにおける最大稼動時間の算出方法を示す説明図である。
【図１６】コンピュータ間の伝送処理を含み、伝送先のプログラムに排他処理が含まれる場合の、プログラムにおける最大稼動時間の算出方法を示す説明図である。
【発明を実施するための形態】
【００２４】
以下に添付図面を参照しながら、本発明の好適な実施の形態について詳細に説明する。なお、本明細書及び図面において、実質的に同一の機能構成を有する構成要素については、同一の符号を付することにより重複説明を省略する。
【００２５】
＜１．第１の実施形態＞
［プログラム診断装置の構成］
まず、図１に基づいて、本発明の第１の実施形態に係るプログラム診断装置の機能構成について説明する。なお、図１は、本実施形態に係るプログラム診断装置の機能構成を示すブロック図である。
【００２６】
本実施形態に係るプログラム診断装置１００は、図１に示すように、プロセス制御システムを構成する複数のコンピュータ（Ａ〜ｎ）１０、２０、・・・と通信可能に設けられている。各コンピュータ（Ａ〜ｎ）１０、２０、・・・には、所定の処理を実行させるためのプログラムソースと、当該プログラムソースを使用するに際して定義すべき情報である回線定義情報とが格納されている。本実施形態に係るプログラムは、オープン系プロセス制御システムにおいて共通的に用いられるミドルウェアを用いて規定されている。
【００２７】
オープン系プロセス制御システムにおいて共通的に用いられるミドルウェアでは、まとまりのある処理を１つにまとめたプログラムが関数として規定されている。処理全体を規定するプログラムにおいて、関数を呼び出して実行することにより、例えば、情報の送信要求や、受信データ取り込み等のようなまとまりのある処理を実行させることができる。本実施形態に係るプログラム診断装置１００は、処理全体を規定するプログラムにおいて使用されている関数のうち、ミドルウェアにおいて規定されている、排他処理に影響する関数を抽出し、プログラムの処理に要するプログラムの最大稼動時間を算出する。
【００２８】
プログラム診断装置１００は、図１に示すように、インタフェース部１１０と、プログラム読取部１２０と、プログラム解析部１３０と、表示部１４０と、入力部１５０と、入力情報処理部１６０と、メモリ１７０と、関数情報記憶部１８０とを備える。
【００２９】
インタフェース部１１０は、各コンピュータ（Ａ〜ｎ）１０、２０、・・・と情報の送受信を行う。インタフェース部１１０は、各コンピュータ（Ａ〜ｎ）１０、２０、・・・から、プログラムソースおよび回線定義情報を受信する。なお、これらの情報は、プログラムを診断する際に取得できればよい。このため、各コンピュータ（Ａ〜ｎ）１０、２０、・・・と、プログラム診断装置１００とは、常時接続されていなくともよく、情報の取得が必要なときに接続できればよい。インタフェース部１１０は、プログラムソースをプログラム読取部１２０へ送信してメモリ１７０に記録するとともに、回線定義情報をメモリ１７０に記録する。
【００３０】
プログラム読取部１２０は、プログラムソースに記述されている関数を抽出する。プログラム読取部１２０は、関数情報記憶部１８０を参照して、排他処理のプログラムソースに使用されている関数から、少なくとも関数を実行したときに要する処理時間を考慮すべき関数を抽出する。抽出された関数は、プログラム読取部１２０からプログラム解析部１３０へ送信される。
【００３１】
プログラム解析部１３０は、プログラムの最大稼動時間を算出して、当該プログラムの応答性の良否を判定する。プログラム判定部１３０は、動作時間算出部１３２と、排他時間算出部１３４と、最大稼動時間算出部１３６とを備える。動作時間算出部１３２は、解析対象となるプログラム自体の動作時間を算出する。排他時間算出部１３４は、解析対象であるプログラムにて使用する資源を、他のプログラムが使用により確保する排他時間を算出する。最大稼動時間算出部１３６は、動作時間算出部１３２により算出された動作時間と、排他時間算出部１３４により算出された排他時間とを加算して、解析対象であるプログラムの最大稼働時間を算出する。
【００３２】
プログラム解析部１３０は、解析対象のプログラムの最大稼動時間を算出すると、当該最大稼動時間とプロセス制御システムに処理において許容される許容時間とを比較し、プログラムの良否を判定する。判定結果は、表示部１４０に送信され、表示部１４０に表示される。
【００３３】
表示部１４０は、情報を表示可能な出力手段である。表示部１４０は、プログラム解析部１３０による判定結果やプログラムソース、回転定義情報等の情報を、表示処理して表示可能な形式に変換する表示処理部と、表示処理された情報を表示する出力部とからなる。表示部１４０には、例えば、液晶ディスプレイ装置や、有機ＥＬディスプレイ装置等を用いることができる。
【００３４】
入力部１５０は、情報が入力される入力手段である。入力部１５０には、例えば、キーボードやマウス、タッチパネル等の入力装置を用いることができる。ユーザは、入力部１５０を用いて、例えば所定の情報を表示させる表示指示情報や、プログラムソースの修正指示情報等を入力することができる。入力部１５０より入力された情報は、入力情報処理部１６０へ出力される。
【００３５】
入力情報処理部１６０は、入力部１５０から入力された情報に基づいて、当該情報に基づく処理を実行する。入力情報処理部１６０は、例えば、所定の情報を表示させる表示指示情報が入力されると、当該情報をメモリ１７０から取得して、表示部１４０へ出力する。また、入力情報処理部１６０は、プログラムソースの修正指示情報が入力されると、メモリ１７０に記憶されたプログラムソースを更新するとともに、修正後のプログラムソースを表示部１４０に表示させる。
【００３６】
メモリ１７０は、プログラム診断処理に用いる各種情報を記憶する。メモリ１７０には、例えば、各コンピュータ（Ａ〜ｎ）１０、２０、・・・から取得したプログラムソースおよび回線定義情報、プログラムソースの修正履歴等が記憶される。
【００３７】
関数情報記憶部１８０は、プログラムの最大稼動時間を算出するために用いられる関数情報を記憶する。関数情報記憶部１８０は、例えば、プログラムソースから抽出すべき関数名と、当該関数の処理に要する関数処理時間とを記憶するように構成することができる。関数情報は、予め関数情報記憶部１８０に記憶させてもよく、関数情報を生成する外部装置（図示せず。）を所定のタイミングで取得して関数情報記憶部１８０に記憶させてもよい。
【００３８】
以上、本実施形態に係るプログラム診断装置１００の機能構成について説明した。
【００３９】
[プログラム診断方法]
次に、図２〜図４に基づいて、本実施形態に係るプログラム診断装置１００を用いたプログラム診断方法について説明する。なお、図２は、本実施形態に係るプログラム診断装置１００を用いたプログラム診断方法を示すフローチャートである。図３は、各プログラムの排他箇所の抽出処理を説明する説明図である。図４は、プログラムの最大稼動時間の算出方法を示す説明図である。
【００４０】
本実施形態に係るプログラム診断装置１００は、オフラインにおいてプロセス制御システムに用いられるプログラムの応答性の良否を診断する。プログラムの診断は、プロセス制御システムに用いられるコンピュータ毎に行われる（Ｓ１００）。
【００４１】
診断対象のコンピュータが決定されると、プログラム診断装置１００は、当該コンピュータのプログラム毎に内容をチェックする（Ｓ１０２）。例えば、図３に示すように、１つのコンピュータにてプログラム１〜ｎが稼動されるとき、プログラム診断装置１００は、各プログラムを順に解析していく。
【００４２】
各プログラムに対する解析処理は、まず、プログラム読取部１２０により、プログラムに含まれる関数を抽出が行われる。そして、関数情報記憶部１８０を参照して、処理に要する時間を示す関数処理時間を取得する（Ｓ１０４）。関数処理時間は、当該関数において記述されている処理を実行したときの処理に要する時間であって、例えば当該関数が他の関数を呼び出してその応答を待ち、応答を受けて処理を再開するような場合において応答を待つ待機時間や、資源を確保している間に他のプログラムによる資源の使用を排他する排他時間等は、関数処理時間には含まれない。すなわち、ステップＳ１０４で取得する関数処理時間には、プログラム１において排他待ちしない場合の純粋な処理時間のみを計上する。なお、各関数の関数処理時間は、関数情報記憶部１８０に記憶されている。
【００４３】
例えば、図３に示すプログラム１には、Csgmsg()、Csfopn()、Csfcls()といった関数が含まれる。これらの関数のうち、資源を確保するための関数であるCsfopn()と、確保していた資源を解放するための関数であるCsfcls()とは、他のプログラムによる資源の使用を排他する排他処理に関連するものである。したがって、関数Csfopn()、Csfcls()については、例えば、関数Csfopn()にて確保したい資源を他のプログラムが排他していないかを、排他中の資源情報を管理している排他中資源テーブル（図示せず。）を参照してチェックするチェック時間や、自身が資源を使用する間他のプログラムを排他する際に排他中資源テーブルに排他する資源情報を書き込むための処理時間が関数処理時間として取得される。また、関数Csfcls()にて排他中資源テーブルに書き込んだ資源情報を削除する削除時間も関数処理時間として取得される。これらの関数処理時間は、関数情報記憶部１８０に記憶されている。関数Csgmsg()についても、プログラム読取部１２０は、関数情報記憶部１８０から関数Csgmsg()の関数処理時間を取得する。そして、プログラム読取部１２０は、関数情報記憶部１８０から取得したプログラム１に含まれる各関数の関数処理時間をプログラム解析部１３０へ出力する。
【００４４】
次いで、プログラム解析部１３０の動作時間算出部１３２は、ステップＳ１０４で取得した関数処理時間に基づいて、予想最大処理時間（時間Ａ）を算出する（Ｓ１０６）。動作時間算出部１３２は、解析対象であるプログラムの関数処理時間をすべて加算して、予想最大処理時間とする。予想最大処理時間では、上述したように、排他処理が実行される排他時間は考慮されていない。
【００４５】
一方、排他時間算出部１３４は、プログラムを解析して、資源を確保する排他取得箇所および確保した資源を解放する排他開放箇所を抽出し、その間に行われる処理に要する時間を排他時間（時間Ｂ）として算出する（Ｓ１０８）。排他時間算出部１３４は、まず、プログラムから、資源を確保するための排他取得関数であるCsfopn()と、確保していた資源を解放するための排他開放関数であるCsfcls()とを抽出して、排他取得箇所および排他開放箇所を特定する。そして、資源を確保してから解放するまでの処理時間を排他時間とする。排他時間は、ステップＳ１０４、Ｓ１０６で行われるプログラムの処理時間の算出と同様に、解析プログラムにより排他取得箇所から排他開放箇所までの間に行われる処理の内容から算出することができる。
【００４６】
その後、排他時間算出部１３４は、算出した排他時間を、関数情報記憶部１８０に記憶する。排他時間は、例えば図３に示すように、プログラム名と、当該プログラムにて排他する資源名と関連付けて記録される。これより、例えば「プログラム１はＡファイルを１０ｍｓｅｃ確保する」という情報が、関数情報記憶部１８０に記録される。なお、プログラム名は、プログラムを特定するプログラム特定情報の一例であり、資源名は、資源を特定する資源特定情報の一例である。
【００４７】
このように、プログラム解析部１３０は、ステップＳ１０４〜Ｓ１０８の処理をプログラム毎に行い、各プログラムについて、予想最大処理時間と排他時間とを算出する。なお、本実施形態では、ステップＳ１０４、Ｓ１０６により予想最大処理時間を算出した後、ステップＳ１０８にて排他時間を算出したが、本発明はかかる例に限定されず、排他時間を算出した後、予想最大処理時間を算出してもよく、並行して予想最大処理時間と排他時間とを算出してもよい。
【００４８】
各プログラムの予想最大処理時間および排他時間が算出されると、プログラム解析部１３０の最大稼動時間算出部１３６は、プログラム毎に予想最大処理時間と排他時間とを加算して、プログラムの最大稼動時間（時間Ｃ）を算出する（Ｓ１１０）。例えば、図４に示すように、各プログラムについて予想最大処理時間および排他時間が算出されている。このとき、プログラム１の最大稼動時間は、予測最大処理時間１０ｍｓｅｃと、プログラム１が使用する資源を排他するすべてのプログラムの排他時間とを加算した時間となる。
【００４９】
図４に示す例では、プログラム１はファイルＡを資源として使用する。また、ファイルＡは、プログラム２、３からも資源として使用される。したがって、プログラム１にて考慮すべき排他時間は、プログラム２によるファイルＡの排他時間とプログラム３によるファイルＡの排他時間となる。すなわち、プログラム１が使用する資源を排他するすべてのプログラムの排他時間を加算した時間は、１５ｍｓｅｃ＋５ｍｓｅｃ＝２０ｍｓｅｃとなる。これより、プログラム１の最大稼動時間は、予測最大処理時間１０ｍｓｅｃに排他時間２０ｍｓｅｃを加算した３５ｍｓｅｃとなる。
【００５０】
このようにして、各プログラムにおいて排他処理を考慮した最大稼動時間が算出される。プログラム解析部１３０は、ステップＳ１１０にて算出された各プログラムの最大稼動時間と、プロセス制御システムにおいて各プログラムの処理に許容される許容時間とを比較する。そして、プログラム解析部１３０は、プログラムの最大稼動時間が許容時間内である場合には、当該プログラムの応答性は良好であると判定する。一方、プログラム解析部１３０は、プログラムの最大稼動時間が許容時間より大きい場合には、当該プログラムの応答性に問題があると判定する。このようにして、プログラム診断装置１００によるプログラムの診断が行われる。
【００５１】
なお、プログラム診断装置１００によってプログラムの応答性に問題があると判定された場合、ユーザは、判定結果を参照して、プログラムソースを修正することもできる。判定結果は、例えば、伝送処理の応答性に問題があることを通知するとともに、当該診断を行った際に考慮した関数名およびプログラムソース上で当該関数が記述されている位置を表示部１４０に表示させることで通知することができる。ユーザは、通知された判定結果に基づいて、入力部１５０からプログラムソースの修正情報を入力することができる。そして、ユーザは、修正後のプログラムソースについて、プログラム診断装置１００によるプログラム診断処理を再度実行させて、応答性が改善されたか否かを確認することができる。
【００５２】
プログラムの応答性に問題がないことが確認されると、そのプログラムをプロセス制御システムに適用することができる。このように、本実施形態に係るプログラム診断装置１００によるプログラム診断方法を用いることで、事前にプログラムの応答性を確認することができる。これにより、ソフトウェアの不具合に起因するシステム障害を事前に防止することができる。また、初心者であっても容易にかつ安価に、プログラムの不具合箇所を事前に検出することが可能となる。
【００５３】
＜２．第２の実施形態＞
次に、図５および図６に基づいて、本発明の第２の実施形態に係るプログラム診断装置１００によるプログラム診断方法について説明する。なお、図５は、本実施形態に係るプログラム診断方法による各プログラムの排他箇所の抽出処理を説明する説明図である。図６は、プログラムの最大稼動時間の算出方法を示す説明図である。本実施形態では、単一コンピュータ内のプログラムにおいて複数の資源が使用される場合における、各プログラムの最大稼動時間の算出方法を説明する。すなわち、ある資源を使用するために他のプログラムによる使用を排他している間に、さらに別の資源を使用して他のプログラムによる使用を排他する、いわゆるネスト（「副排他処理」ともいう。）が存在する場合のプログラムの最大稼動時間の算出方法を示す。
【００５４】
なお、本実施形態に係るプログラム診断装置１００と、これによるプログラム診断方法の流れは、第１の実施形態と同様である。したがって、本実施形態では、プログラム診断装置１００の構成とプログラム診断方法の流れについての詳細な説明を省略する。
【００５５】
ネストが存在する場合、解析対象のプログラムにて使用する各資源を使用する他のプログラムの排他時間すべてを考慮することにより、解析対象プログラムの最大稼動時間をより正確に判定することができる。例えば、図５に示すように、単一コンピュータ内に、プログラム１、２が存在するとする。このとき、プログラム１は、Ａファイルを使用して他のプログラムによる使用を排他している間にＢファイルも使用するため、他のプログラムによるＢファイルの使用も排他する。そこで、排他時間算出部１３４は、プログラム１にてＡファイルを使用する時間（排他時間）とともに、Ａファイル使用時にＢファイルも使用されることを関数情報記憶部１８０に記録する。
【００５６】
例えば、図５に示す例では、排他時間算出部１３４は、プログラム１を解析して、Ａファイルを確保する排他取得箇所および確保したＡファイルを解放する排他開放箇所を抽出し、その間に行われる処理に要する時間を排他時間として算出する。排他時間は、第１の実施形態と同様に算出することができる。プログラム１によるＡファイルの排他時間が１０ｍｓｅｃであるとき、排他時間算出部１３４は、関数情報記憶部１８０に「プログラム１はＡファイルを１０ｍｓｅｃ確保する」という情報を記録する。
【００５７】
ここで、プログラム１ではＡファイルを使用する間に、Ｂファイルをさらに使用している。このプログラムのネストは、排他時間算出部１３４によるプログラム解析において、Ａファイルの排他取得箇所から排他開放箇所までの間に、Ｂファイルの排他取得箇所から排他開放箇所が抽出されることにより検出することができる。排他時間算出部１３４は、ある資源を確保している間にさらに別の資源も確保するとき、当該別の資源を確保することを、関数情報記憶部１８０に関連付けて記憶する。図５に示す例では、「プログラム１はＡファイルを１０ｍｓｅｃ確保する」という情報に加えて、かかる処理の間に「Ｂファイルを確保する」という情報を関連付けて記憶する。
【００５８】
さらに、排他時間算出部１３４は、プログラム１がＢファイルの排他を取得してから解放するまでの排他時間を算出し、関数情報記憶部１８０に記録する。例えば、プログラム１によるＢファイルの排他時間が８ｍｓｅｃであるとき、関数情報記憶部１８０には「プログラム１はＢファイルを８ｍｓｅｃ確保する」という情報が記録される。ネストの情報も排他解析結果としてまとめることにより、ネスト関係も考慮して資源の排他時間を算出することができるようになり、より正確にプログラム最大稼動時間を算出することができる。
【００５９】
なお、排他時間算出部１３４は、図５に示す例においては、プログラム１によるＣファイルの排他時間、プログラム２によるＡファイルおよびＢファイルの排他時間を関数情報記憶部１８０に記録する。
【００６０】
その後、排他時間算出部１３４は、図６に示すように、各プログラムにおける予想最大処理時間（時間Ａ）と排他解析結果（時間Ｂ）とに基づき、各プログラムについて最大稼動時間を算出する。
【００６１】
まず、プログラム１については、プログラム１の予想最大処理時間１５ｍｓｅｃと、プログラム１が使用する資源を排他するすべてのプログラムの排他時間とを加算した時間となる。図５に示す例では、プログラム１はファイルＡ、Ｂ、Ｃを資源として使用する。また、ファイルＡ、Ｂは、プログラム２からも資源として使用される。したがって、プログラム１にて考慮すべき排他時間は、プログラム２によるファイルＡ、Ｂの排他時間となる。すなわち、プログラム１が使用する資源を排他するすべてのプログラムの排他時間を加算した時間は、１５ｍｓｅｃ＋１５ｍｓｅｃ＝３０ｍｓｅｃとなる。これより、プログラム１の最大稼動時間は、４５ｍｓｅｃとなる。
【００６２】
一方、プログラム２については、プログラム１の予想最大処理時２０ｍｓｅｃと、プログラム２が使用する資源を排他するすべてのプログラムの排他時間とを加算した時間となる。図５に示す例では、プログラム２はファイルＡ、Ｂを資源として使用する。また、ファイルＡ、Ｂは、プログラム１からも資源として使用される。したがって、プログラム２にて考慮すべき排他時間は、プログラム１によるファイルＡ、Ｂの排他時間となる。ここで、ＢファイルはＡファイルの排他時間にネストされているので無視することができる。すなわち、プログラム２が使用する資源を排他するすべてのプログラムの排他時間を加算した時間は、１０ｍｓｅｃとなる。これより、プログラム２の最大稼動時間は、３０ｍｓｅｃとなる。
【００６３】
以上、本発明の第２の実施形態に係るプログラム診断装置１００によるプログラム診断方法について説明した。本実施形態のプログラム診断方法では、ネスト関係も考慮してプログラムの最大稼動時間を算出することにより、より正確にプログラムの応答性の良否を判断することが可能となる。
【００６４】
＜３．第３の実施形態＞
次に、図７〜図１１に基づいて、本発明の第３の実施形態に係るプログラム診断装置１００によるプログラム診断方法について説明する。なお、図７は、本実施形態に係るプログラム診断方法による各プログラムの排他箇所の抽出処理を説明する説明図である。図８は、排他処理を考慮したプログラムの最大稼動時間の算出方法を示す説明図である。図９は、プログラムにおける伝送処理の解析を説明する説明図である。図１０は、伝送処理に要する時間を考慮したプログラムの最大稼動時間を算出する処理を示すフローチャートである。図１１は、排他処理および伝送処理を考慮したプログラムの最大稼動時間の算出方法を示す説明図である。
【００６５】
本実施形態では、複数のコンピュータ間における排他処理を考慮した各プログラムの最大稼動時間の算出方法を説明する。本実施形態においても、第２の実施形態と同様に、ネスト関係を考慮してプログラムの最大稼動時間を算出してもよい。また、本実施形態では、複数のコンピュータ間における排他処理を考慮するため、コンピュータ間におけるメッセージの伝送処理に要する受信時間も考慮して、プログラムの最大稼動時間を算出する。これにより、プログラムの最大稼動時間をより正確に算出することができ、プログラムの応答性の良否を正確に判断することができるようになる。
【００６６】
なお、本実施形態に係るプログラム診断装置１００と、これによるプログラム診断方法の一部は、第１の実施形態と同様である。したがって、本実施形態では、プログラム診断装置１００の構成とプログラム診断方法の一部についての詳細な説明を省略する。
【００６７】
複数のコンピュータ間における排他処理を考慮する場合においても、まず、動作時間算出部１３２により、複数コンピュータの全プログラムの予想最大処理時間が算出される（図２のステップＳ１０４、Ｓ１０６）。また、排他時間算出部１３４により、複数コンピュータの全プログラムが解析され、各プログラムに含まれる排他取得箇所および排他開放箇所が抽出され、その間の処理に要する時間が排他時間として算出される（図２のステップＳ１０８）。この際、排他処理にネストが存在する場合には、第２の実施形態と同様、ネストの情報も取得され、排他処理の排他時間とともに関数情報記憶部１８０に記録される。
【００６８】
図７に示す例では、コンピュータＡ１０におけるプログラムＡ−１、Ａ−２と、コンピュータＢ２０におけるプログラムＢ−１、Ｂ−２とが解析対象となる。排他時間算出部１３４は、各プログラムＡ−１、Ａ−２、Ｂ−１、Ｂ−２について、それぞれ排他取得箇所および排他開放箇所を抽出し、この間の処理に要する時間を算出する。そして、排他解析結果として、排他時間算出部１３４は、「プログラムＡ−１はＡファイルを５ｍｓｅｃ確保する」、「プログラムＡ−２はＡファイルを１０ｍｓｅｃ確保する」、「プログラムＢ−１はＡファイルを１５ｍｓｅｃ確保する」、「プログラムＢ−２はＡファイルを１０ｍｓｅｃ確保する」という情報を関数情報記憶部１８０に記録する。なお、図７に示す例ではネストは存在しない。
【００６９】
その後、最大稼動時間算出部１３６は、各プログラムにおける予想最大処理時間（時間Ａ）と排他解析結果（時間Ｂ）とに基づき、各プログラムについて最大稼動時間を算出する。
【００７０】
例えば、プログラムＡ−１については、プログラムＡ−１の予想最大処理時間１５ｍｓｅｃと、プログラムＡ−１が使用する資源を排他するすべてのプログラムの排他時間とを加算した時間となる。図８に示す例では、プログラムＡ−１はファイルＡを資源として使用する。また、ファイルＡは、プログラムＡ−２、Ｂ−１、Ｂ−２からも資源として使用される。ここで、排他時間は、解析対象のプログラムが動作するコンピュータと同一コンピュータに含まれるプログラムによるもののみを考慮すればよく、他のコンピュータのプログラムによる排他時間は考慮しない。したがって、プログラムＡ−１にて考慮すべき排他時間は、プログラムＡ−２によるファイルＡの排他時間となる。すなわち、プログラムＡ−１が使用する資源を排他するすべてのプログラムの排他時間を加算した時間は、１０ｍｓｅｃとなる。これより、プログラムＡ−１の最大稼動時間は、予想最大処理時間１５ｍｓｅｃと排他時間１０ｍｓｅｃとを加算した２５ｍｓｅｃとなる。
【００７１】
さらに、本実施形態では、複数のコンピュータ間における排他処理を考慮する。そこで、まず、図１０に示すように、プログラム解析部１３０により、プログラム毎にコンピュータ間の伝送処理についての解析が行われる（Ｓ１１２、Ｓ１１４）。ステップＳ１１４では、プログラムにおいてメッセージの送信が行われている送信箇所およびメッセージの送信先、そして、プログラムにおいてメッセージの受信が行われている受信箇所およびメッセージの送信元が抽出され、送信先からメッセージを受信するまでに要する時間が算出される。
【００７２】
図９に示す本例においては、まず、コンピュータＡ１０のプログラムＡ−１には、コンピュータＢ２０のプログラムＢ−１へメッセージを送信する関数Csdsnd()があり、メッセージの送信箇所およびメッセージの送信先を抽出することができる。また、コンピュータＢ２０のプログラムＢ−１には、コンピュータＡ１０からのメッセージを受信する関数Csdrcv()があり、メッセージの受信箇所およびメッセージの送信元を抽出することができる。そして、プログラム解析部１３０は、送信元のコンピュータがメッセージを送信してから送信先のコンピュータがメッセージを返信するまでに要する時間を受信時間（時間Ｄ）として算出する。図９に示す例では、受信時間は、コンピュータＡ１０がプログラムＡ−１の関数Csdsnd()でメッセージをコンピュータＢ２０へ送信してから、プログラムＢ−１が関数Csdrcv()で当該メッセージを受信し、返答メッセージをコンピュータＡ１０が受信するまでの時間となる。
【００７３】
コンピュータＡ１０とコンピュータＢ２０との間におけるメッセージの伝送時間が１０ｍｓｅｃであるとする。一方、プログラムＢ−１は、コンピュータＡ１０からのメッセージを受信するまでに、Ａファイルを使用している。また、ＡファイルはプログラムＢ−２においても使用されており、プログラムＢ−１は、プログラムＢ−２による排他を受ける可能性がある。プログラムＢ−２によるＡファイルの排他時間は、図８より１０ｍｓｅｃであるので、この排他処理を考慮して、受信時間は、１０ｍｓｅｃ＋１０ｍｓｅｃ＝２０ｍｓｅｃとなる。
【００７４】
その後、プログラム解析部１３０は、図２のステップＳ１１０にて算出したプログラム最大稼動時間（時間Ｃ）に、図１０のステップＳ１１４にて算出した受信時間（時間Ｄ）を加算して、プログラムの最大稼動時間とする（Ｓ１１６）。例えば、プログラムＡ−１についてみると、図１１に示すように、プログラム最大稼動時間（時間Ｃ）が２５ｍｓｅｃ、受信時間（時間Ｄ）が２０ｍｓｅｃであることから、これらを加算した４５ｍｓｅｃがプログラムＡ−１の最大稼動時間となる。
【００７５】
このようにして、各プログラムにおいて排他処理および伝送処理を考慮した最大稼動時間が算出される。プログラム解析部１３０は、ステップＳ１１６にて算出された各プログラムの最大稼動時間と、プロセス制御システムにおいて各プログラムの処理に許容される許容時間とを比較する。そして、プログラム解析部１３０は、プログラムの最大稼動時間が許容時間内である場合には、当該プログラムの応答性は良好であると判定する。一方、プログラム解析部１３０は、プログラムの最大稼動時間が許容時間より大きい場合には、当該プログラムの応答性に問題があると判定する。このようにして、プログラム診断装置１００によるプログラムの診断が行われる。
【００７６】
なお、プログラム診断装置１００によってプログラムの応答性に問題があると判定された場合、上記実施形態と同様、プログラムソースを修正することもできる。そして、ユーザは、修正後のプログラムソースについて、プログラム診断装置１００によるプログラム診断処理を再度実行させて、応答性が改善されたか否かを確認することができる。プログラムの応答性に問題がないことを確認して、そのプログラムをプロセス制御システムに適用することにより、事前にプログラムの応答性を確認することができ、ソフトウェアの不具合に起因するシステム障害を事前に防止することができる。また、初心者であっても容易にかつ安価に、プログラムの不具合箇所を事前に検出することが可能となる。
【００７７】
以上、本実施形態に係るプログラム診断装置１００によるプログラム診断方法について説明した。本実施形態のプログラム診断方法では、複数のコンピュータ間における伝送処理に要する時間も考慮してプログラムの最大稼動時間を算出することにより、より正確にプログラムの応答性の良否を判断することが可能となる。なお、本実施形態の説明においては、２つのコンピュータＡ１０、コンピュータＢ２０の間においてのみ伝送処理がある場合について説明したが、本発明はかかる例に限定されず、３つ以上のコンピュータ間の伝送処理がある場合にも、同様に受信時間を算出し、プログラムの最大稼動時間を算出することができる。
【００７８】
＜４．ハードウェア構成例＞
上述した本実施形態に係るプログラム診断装置１００は、例えばコンピュータ等の情報処理装置により実現することができる。例えば図９に示すように、プログラム診断装置１００は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１０１と、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）１０２と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１０３と、バス１０４と、インタフェース１０５と、入力装置１０６と、出力装置１０７と、ストレージ装置１０８と、通信装置１０９とを備える情報処理装置として構成することができる。
【００７９】
ＣＰＵ１０１は、演算処理装置および制御装置として機能し、各種プログラムに従ってプログラム診断装置１００内の動作全般を制御する。また、ＣＰＵ１０１は、マイクロプロセッサであってもよい。ＲＯＭ１０２は、ＣＰＵ１０１が使用するプログラムや演算パラメータ等を記憶する。ＲＡＭ１０３は、ＣＰＵ１０１の実行において使用するプログラムや、その実行において適宜変化するパラメータ等を一時記憶する。これらはバス１０４により相互に接続されている。バス１０４は、入力装置１０６、出力装置１０７、ストレージ装置１０８、および通信装置１０９を相互に接続するインタフェース１０５と接続されている。
【００８０】
入力装置１０６は、マウス、キーボード、タッチパネル、ボタン、マイク、スイッチおよびレバーなどユーザが情報を入力するための入力手段と、ユーザによる入力に基づいて入力信号を生成し、ＣＰＵ１０１に出力する入力制御回路などから構成されている。プログラム診断装置１００の作業者は、該入力装置１０６を操作することにより、プログラム診断装置１００に対して各種のデータを入力したり処理動作を指示したりすることができる。
【００８１】
出力装置１０７は、例えば、ＣＲＴ（Ｃａｔｈｏｄｅ  Ｒａｙ  Ｔｕｂｅ）ディスプレイ装置、液晶ディスプレイ（ＬＣＤ）装置、ＯＬＥＤ（Ｏｒｇａｎｉｃ  Ｌｉｇｈｔ  Ｅｍｉｔｔｉｎｇ  Ｄｉｏｄｅ）装置およびランプなどの表示装置を含む。さらに、出力装置１０７は、スピーカおよびヘッドホンなどの音声出力装置を含む。
【００８２】
ストレージ装置１０８は、プログラム診断装置１００の記憶部の一例として構成されたデータ格納用の装置であり、例えば、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）で構成される。ストレージ装置１０８は、例えばハードディスクを駆動し、ＣＰＵ１０１が実行するプログラムや各種データを格納している。また、通信装置１０９は、例えば、通信網５に接続するための通信デバイス等で構成された通信インタフェースである。通信装置１０９としては、例えば、無線ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）対応通信装置や、ワイヤレスＵＳＢ対応通信装置、有線による通信を行う通信装置等を用いることができる。
【００８３】
なお、かかる構成のプログラム診断装置１００は、例えば、当該装置に内蔵、あるいは外付けされる記憶媒体用リーダライタを備えることもできる。記憶媒体用リーダライタは、装着されている磁気ディスク、光ディスク、光磁気ディスク、または半導体メモリ等のリムーバブル記録媒体に記録されている情報を読み出して、ＲＡＭ４０３に出力する。また、プログラム診断装置１００は、外部機器と接続されるインタフェースを備えることもでき、例えばＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）などによりデータ伝送可能な外部機器との接続口として用いることができる。
【００８４】
また、上述した本実施形態に係るプログラム診断装置１００の処理は、それぞれ専用のハードウェアにより実行させてもよいが、ソフトウェアにより実行させてもよい。一連の処理をソフトウェアにより行う場合、例えば、汎用または専用のコンピュータにプログラムを実行させることにより、上記の一連の処理を実現することができる。
【００８５】
以上、添付図面を参照しながら本発明の好適な実施形態について詳細に説明したが、本発明はかかる例に限定されない。本発明の属する技術の分野における通常の知識を有する者であれば、特許請求の範囲に記載された技術的思想の範疇内において、各種の変更例または修正例に想到し得ることは明らかであり、これらについても、当然に本発明の技術的範囲に属するものと了解される。
【００８６】
例えば、上記実施形態では、診断対象のプログラムはミドルウェアであったが、本発明はかかる例に限定されず、例えば、アプリケーションソフトウェア等であってもよい。
【符号の説明】
【００８７】
１０、２０  コンピュータ
１００      プログラム診断装置
１１０      インタフェース部
１２０      プログラム読取部
１３０      プログラム解析部
１３２      動作時間算出部
１３４      排他時間算出部
１３６      最大稼動時間算出部
１４０      表示部
１５０      入力部
１６０      入力情報処理部
１７０      メモリ
１８０      関数情報記憶部
【図１】
0005589748.tif 000002
【図２】
0005589748.tif 000003
【図３】
0005589748.tif 000004
【図４】
0005589748.tif 000005
【図５】
0005589748.tif 000006
【図６】
0005589748.tif 000007
【図７】
0005589748.tif 000008
【図８】
0005589748.tif 000009
【図９】
0005589748.tif 000010
【図１０】
0005589748.tif 000011
【図１１】
0005589748.tif 000012
【図１２】
0005589748.tif 000013
【図１３】
0005589748.tif 000014
【図１４】
0005589748.tif 000015
【図１５】
0005589748.tif 000016
【図１６】
0005589748.tif 000017