(57)【特許請求の範囲】
【請求項１】
オブジェクト指向プログラムのソースコードを解析し、性能劣化の可能性のある箇所を検出する性能劣化解析部と、
性能の予測を行う性能予測部と、
前記性能劣化解析部及び性能予測部に共通の共通部とを有し、
前記性能劣化解析部には、
オブジェクト指向プログラムの実行性能を劣化させる可能性のある箇所を、予め実行環境毎に性能劣化情報として蓄積した実行環境別性能劣化情報記憶手段と、性能劣化箇所の解析処理を行う性能劣化箇所解析部と、性能劣化箇所の検出情報をディスプレイ装置の画面に表示する性能劣化箇所表示処理部とを少なくとも備え、
前記共通部には、解析対象のオブジェクト指向プログラムのソースコードを記憶したソースコード記憶手段と、外部からの入力値を基に、前記性能劣化箇所解析部に対して解析制御を行う解析制御手段を少なくとも備えたオブジェクト指向プログラム性能改善支援装置であって、
前記性能劣化箇所解析部は、前記解析制御手段の制御により、前記解析対象ソースコード記憶手段のソースコードを取り込み、該ソースコードを動作させることなく静的に解析して、前記実行環境別性能劣化情報記憶手段の性能劣化情報が含まれる箇所を、実行性能を劣化させる可能性のある箇所として検出する機能を有し、
前記性能劣化箇所表示処理部は、前記性能劣化箇所解析部が検出した結果の情報をディスプレイ装置の画面に表示する機能を有すると共に、
前記性能予測部には、
実行環境別性能実測情報を予め登録しておく実行環境別性能実測情報登録手段と、実行環境別性能予測情報を予め登録しておく実行環境別性能予測情報登録手段と、性能予測式の導出処理を行う性能予測式導出部と、結果計算部と、性能予測結果の情報をディスプレイ装置の画面に表示する処理を行う性能予測結果表示処理部とを少なくとも備え、
前記性能予測式導出部は、前記解析制御部の制御により、前記解析対象ソースコード記憶手段のソースコードを取り込み、該ソースコードを動作させることなく静的に解析し、指定された処理中で、或るメソッドが呼ばれた際に生成されるクラスのインスタンス又は配列の数の性能予測式を導出し、併せて、前記実行環境別性能実測情報登録手段に予め登録されているクラス毎のメモリ使用量情報を用いて、特定の実行環境におけるメモリ使用量の性能予測計算式を導出する機能を有すると共に、
外部からの入力値によって指示があった場合、前記導出された性能予測式を、前記実行環境別性能予測情報登録手段に登録する機能を有し、
前記結果計算部は、ユーザが入力した値を前記性能予測計算式に代入して性能予測値を得る機能を有し、
前記性能予測結果表示処理部は、前記性能予測計算式の変数部分に対応する前記ソースコードの箇所をディスプレイ装置の画面に表示する機能を有し、
前記結果計算部は、前記表示された情報を基にユーザが入力した値を、前記性能予測式導出部が導出した性能予測式に代入して性能予測値を得る機能を有することを特徴とするオブジェクト指向プログラム性能改善支援装置。
【請求項２】
オブジェクト指向プログラムのソースコードを解析し、性能劣化の可能性のある箇所を検出する性能劣化解析部と、
性能の予測を行う性能予測部と、
前記性能劣化解析部及び性能予測部に共通の共通部とを有し、
前記性能劣化解析部には、
オブジェクト指向プログラムの実行性能を劣化させる可能性のある箇所を、予め実行環境毎に性能劣化情報として蓄積した実行環境別性能劣化情報記憶手段と、性能劣化箇所の解析処理を行う性能劣化箇所解析部と、性能劣化箇所の検出情報をディスプレイ装置の画面に表示する性能劣化箇所表示処理部とを少なくとも備え、
前記共通部には、解析対象のオブジェクト指向プログラムのソースコードを記憶したソースコード記憶手段と、外部からの入力値を基に、前記性能劣化箇所解析部に対して解析制御を行う解析制御手段を少なくとも備えたオブジェクト指向プログラム性能改善支援装置に、
前記性能劣化箇所解析部は、前記解析制御手段の制御により、前記解析対象ソースコード記憶手段のソースコードを取り込み、該ソースコードを動作させることなく静的に解析して、前記実行環境別性能劣化情報記憶手段の性能劣化情報が含まれる箇所を、実行性能を劣化させる可能性のある箇所として検出する機能を有し、
前記性能劣化箇所表示処理部は、前記性能劣化箇所解析部が検出した結果の情報をディスプレイ装置の画面に表示する機能を有すると共に、
前記性能予測部には、
実行環境別性能実測情報を予め登録しておく実行環境別性能実測情報登録手段と、実行環境別性能予測情報を予め登録しておく実行環境別性能予測情報登録手段と、性能予測式の導出処理を行う性能予測式導出部と、結果計算部と、性能予測結果の情報をディスプレイ装置の画面に表示する処理を行う性能予測結果表示処理部とを少なくとも備え、
前記性能予測式導出部は、前記解析制御部の制御により、前記解析対象ソースコード記憶手段のソースコードを取り込み、該ソースコードを動作させることなく静的に解析し、指定された処理中で、或るメソッドが呼ばれた際に生成されるクラスのインスタンス又は配列の数の性能予測式を導出し、併せて、前記実行環境別性能実測情報登録手段に予め登録されているクラス毎のメモリ使用量情報を用いて、特定の実行環境におけるメモリ使用量の性能予測計算式を導出する機能を有すると共に、
外部からの入力値によって指示があった場合、前記導出された性能予測式を、前記実行環境別性能予測情報登録手段に登録する機能を有し、
前記結果計算部は、ユーザが入力した値を前記性能予測計算式に代入して性能予測値を得る機能を有し、
前記性能予測結果表示処理部は、前記性能予測計算式の変数部分に対応する前記ソースコードの箇所をディスプレイ装置の画面に表示する機能を有し、
前記結果計算部は、前記表示された情報を基にユーザが入力した値を、前記性能予測式導出部が導出した性能予測式に代入して性能予測値を得る機能を有するという前記各部の機能を実現させるためのプログラムを格納したコンピュータ読み取り可能な記録媒体。
【請求項３】
オブジェクト指向プログラムのソースコードを解析し、性能劣化の可能性のある箇所を検出する性能劣化解析部と、
性能の予測を行う性能予測部と、
前記性能劣化解析部及び性能予測部に共通の共通部とを有し、
前記性能劣化解析部には、
オブジェクト指向プログラムの実行性能を劣化させる可能性のある箇所を、予め実行環境毎に性能劣化情報として蓄積した実行環境別性能劣化情報記憶手段と、性能劣化箇所の解析処理を行う性能劣化箇所解析部と、性能劣化箇所の検出情報をディスプレイ装置の画面に表示する性能劣化箇所表示処理部とを少なくとも備え、
前記共通部には、解析対象のオブジェクト指向プログラムのソースコードを記憶したソースコード記憶手段と、外部からの入力値を基に、前記性能劣化箇所解析部に対して解析制御を行う解析制御手段を少なくとも備えたオブジェクト指向プログラム性能改善支援装置に、
前記性能劣化箇所解析部は、前記解析制御手段の制御により、前記解析対象ソースコード記憶手段のソースコードを取り込み、該ソースコードを動作させることなく静的に解析して、前記実行環境別性能劣化情報記憶手段の性能劣化情報が含まれる箇所を、実行性能を劣化させる可能性のある箇所として検出する機能を有し、
前記性能劣化箇所表示処理部は、前記性能劣化箇所解析部が検出した結果の情報をディスプレイ装置の画面に表示する機能を有すると共に、
前記性能予測部には、
実行環境別性能実測情報を予め登録しておく実行環境別性能実測情報登録手段と、実行環境別性能予測情報を予め登録しておく実行環境別性能予測情報登録手段と、性能予測式の導出処理を行う性能予測式導出部と、結果計算部と、性能予測結果の情報をディスプレイ装置の画面に表示する処理を行う性能予測結果表示処理部とを少なくとも備え、
前記性能予測式導出部は、前記解析制御部の制御により、前記解析対象ソースコード記憶手段のソースコードを取り込み、該ソースコードを動作させることなく静的に解析し、指定された処理中で、或るメソッドが呼ばれた際に生成されるクラスのインスタンス又は配列の数の性能予測式を導出し、併せて、前記実行環境別性能実測情報登録手段に予め登録されているクラス毎のメモリ使用量情報を用いて、特定の実行環境におけるメモリ使用量の性能予測計算式を導出する機能を有すると共に、
外部からの入力値によって指示があった場合、前記導出された性能予測式を、前記実行環境別性能予測情報登録手段に登録する機能を有し、
前記結果計算部は、ユーザが入力した値を前記性能予測計算式に代入して性能予測値を得る機能を有し、
前記性能予測結果表示処理部は、前記性能予測計算式の変数部分に対応する前記ソースコードの箇所をディスプレイ装置の画面に表示する機能を有し、
前記結果計算部は、前記表示された情報を基にユーザが入力した値を、前記性能予測式導出部が導出した性能予測式に代入して性能予測値を得る機能を有するという前記各部の機能を実現させるためのプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、オブジェクト指向プログラムの実行性能改善支援を行うオブジェクト指向プログラム性能改善支援装置及び記録媒体に関する。
【０００２】
【従来の技術】
従来、オブジェクト指向設計を行う場合、性能評価（メモリ使用量やインスタンス数の評価）には、プロファイラと呼ばれる技術が用いられていた。このプロファイラは、プログラムを実際に実行しながら、生成されるインスタンス数やそのメモリ使用量を測定するものである。
【０００３】
この場合、プロファイラを使用するには、コンパイルして実行可能なソースコード（実行可能なプログラム）が必要である。すなわち、一般に、設計情報が与えられると、該設計情報からソースコードを生成し、このソースコードをコンパイルして実行可能なソースコード（実行可能なプログラム）を作成する。
【０００４】
そして、プロファイラは、実行可能なソースコードを実際に実行しながら、生成されるインスタンス数やメモリ使用量を測定し、その結果の情報から性能評価を行っていた。
【０００５】
【発明が解決しようとする課題】
前記のような従来のものにおいては、次のような課題があった。
【０００６】
従来のプロファイラと呼ばれる技術では、コンパイル、リンクが行なえる段階までプログラムを完成しておく必要がある。つまり、開発がほぼ終了する段階まで性能のボトルネックを検出できない。また、性能のボトルネックとなっている部分は明確になっても、どのような改善を行なえば良いかは明らかにならない。
【０００７】
本発明は、このような従来の課題を解決し、オブジェクト指向プログラムのソースコードを静的に解析し、実行性能を劣化させる可能性のある部分を検出し、その部分に対する改善案を提示して、プログラムの性能改善を支援できるようにすることを目的とする。
【０００８】
【課題を解決するための手段】
図１は本発明の原理説明図である。図１において、性能劣化解析部は、性能劣化箇所解析部７と、性能劣化箇所表示処理部９と、反復・集中箇所検出部１０を備え、性能予測部には、性能予測式導出部１２と、結果計算部１６と、性能予測結果表示処理部１８を備え、共通部には、解析制御部２と、改善情報表示処理部５を備えている。本発明は前記の目的を達成するため、次のように構成した。
【０００９】
(1) ：オブジェクト指向プログラム性能改善支援装置において、オブジェクト指向プログラムの実行性能を劣化させる可能性のあるクラス名、処理名、処理パターンを実行環境毎に性能劣化情報として予め蓄積し、これを実行環境別性能劣化情報として用いることで、オブジェクト指向プログラムのソースコードを静的に解析し、ソースコード中で実行性能を劣化させる可能性のある箇所を表示する処理手段（性能劣化箇所解析部７、性能劣化箇所表示処理部９を含む手段）を備えている。
【００１０】
(2) ：前記(1) のオブジェクト指向プログラム性能改善支援装置において、ソースコード中の性能を劣化させる可能性のある箇所に対して、実行環境毎の性能改善方法を予め登録してある実行環境別性能改善情報を用いて、プログラミングの改善方法を表示する処理手段（改善情報表示処理部５を含む手段）を備えている。
【００１１】
(3) ：前記(1) のオブジェクト指向プログラム性能改善支援装置において、解析対象ソースコードを静的に解析して、ループ、再帰呼出し、多くの箇所で使われるメソッドなど、実行回数が多くなる箇所を特定する反復・集中箇所検出手段（反復・集中箇所検出部１０を含む手段）を備え、実行環境別性能劣化情報の項目毎に、実行回数が多くなる箇所のみ解析の対象とするか、或いはソースコードの全範囲を解析の対象にするかを切り替え可能とする。
【００１２】
(4) ：前記(1) のオブジェクト指向プログラム性能改善支援装置において、実行環境別性能劣化情報の項目毎に、実行性能に対する影響の度合いをランク付けする情報の登録と修正を可能とし、ソースコード中で実行性能を劣化させる可能性のある箇所を、実行性能に対する影響の大きさで順序付けて表示する処理手段（性能劣化箇所表示処理部９を含む手段）を備えている。
【００１３】
(5) ：オブジェクト指向プログラムのソースコードを静的に解析し、指定された処理中でメモリを確保している箇所が何箇所あるか、クラス又はタイプ毎に特定の実行環境における数の性能予測計算式を導出し、合わせて実行環境別性能実測情報に予め登録してあるクラス又はタイプ毎のメモリ使用量情報を用いて、特定の実行環境におけるメモリ使用量の性能予測計算式を導出する第１の処理手段（性能予測式導出部１２の一部を含む手段）と、
入力値によって指示があった場合は、導出した性能予測計算式を実行環境別性能予測情報に登録する第２の処理手段（性能予測式導出部１２の一部を含む手段）と、性能予測計算式の変数部分は、対応するソースコードの箇所を表示し、ユーザが対話的に入力可能とする第３の処理手段（性能予測結果表示処理部１８を含む手段）と、ユーザが入力した値を性能予測計算式に代入して性能予測値を得る第４の処理手段（結果計算部１６を含む手段）とを備えている。
【００１４】
(6) ：オブジェクト指向プログラム性能改善支援装置において、予め登録してある実行環境別性能実測情報を用いて、オブジェクト指向プログラムのソースコードを静的に解析し、指定された処理の、特定の実行環境における処理時間のオーバヘッドの性能予測計算式を導出する第１の処理手段（性能予測式導出部１２の一部を含む手段）と、入力値によって指示があった場合は、導出した性能予測計算式を実行環境別性能予測情報に登録する第２の処理手段（性能予測式導出部１２の一部を含む手段）と、性能予測計算式の変換部分は、対応するソースコードの箇所を表示し、ユーザが対話的に入力可能とする第３の処理手段（性能予測結果表示処理部１８を含む手段）と、ユーザが入力した値を性能予測計算式に代入して性能予測値を得る第４の処理手段（結果計算部１６を含む手段）とを備えている。
【００１５】
(7) ：前記(5) のオブジェクト指向プログラム性能改善支援装置において、実行環境毎の性能改善方法を予め登録してある実行環境別性能改善情報を用いて、確保されるメモリ量を減らすためのプログラミングの改善方法を表示する処理手段（改善情報表示処理部５を含む手段）を備えている。
【００１６】
(8) ：前記(6) のオブジェクト指向プログラム性能改善支援装置において、ソースコード中で処理時間のオーバヘッドを発生させている箇所に対して、実行環境毎の性能改善方法を予め登録してある実行環境別性能改善情報を用いて、プログラムの改善方法を表示する処理手段（改善情報表示処理部５を含む手段）を備えている。
【００１７】
以上をまとめると、本発明の構成は次の通りである。
(a) ：オブジェクト指向プログラムのソースコードを解析し、性能劣化の可能性のある箇所を検出する性能劣化解析部と、
性能の予測を行う性能予測部と、
前記性能劣化解析部及び性能予測部に共通の共通部とを有し、
前記性能劣化解析部には、
オブジェクト指向プログラムの実行性能を劣化させる可能性のある箇所を、予め実行環境毎に性能劣化情報として蓄積した実行環境別性能劣化情報記憶手段と、性能劣化箇所の解析処理を行う性能劣化箇所解析部と、性能劣化箇所の検出情報をディスプレイ装置の画面に表示する性能劣化箇所表示処理部とを少なくとも備え、
前記共通部には、解析対象のオブジェクト指向プログラムのソースコードを記憶したソースコード記憶手段と、外部からの入力値を基に、前記性能劣化箇所解析部に対して解析制御を行う解析制御手段を少なくとも備えたオブジェクト指向プログラム性能改善支援装置であって、
前記性能劣化箇所解析部は、前記解析制御手段の制御により、前記解析対象ソースコード記憶手段のソースコードを取り込み、該ソースコードを動作させることなく静的に解析して、前記実行環境別性能劣化情報記憶手段の性能劣化情報が含まれる箇所を、実行性能を劣化させる可能性のある箇所として検出する機能を有し、
前記性能劣化箇所表示処理部は、前記性能劣化箇所解析部が検出した結果の情報をディスプレイ装置の画面に表示する機能を有すると共に、
前記性能予測部には、
実行環境別性能実測情報を予め登録しておく実行環境別性能実測情報登録手段と、実行環境別性能予測情報を予め登録しておく実行環境別性能予測情報登録手段と、性能予測式の導出処理を行う性能予測式導出部と、結果計算部と、性能予測結果の情報をディスプレイ装置の画面に表示する処理を行う性能予測結果表示処理部とを少なくとも備え、
前記性能予測式導出部は、前記解析制御部の制御により、前記解析対象ソースコード記憶手段のソースコードを取り込み、該ソースコードを動作させることなく静的に解析し、指定された処理中で、或るメソッドが呼ばれた際に生成されるクラスのインスタンス又は配列の数の性能予測式を導出し、併せて、前記実行環境別性能実測情報登録手段に予め登録されているクラス毎のメモリ使用量情報を用いて、特定の実行環境におけるメモリ使用量の性能予測計算式を導出する機能を有すると共に、
外部からの入力値によって指示があった場合、前記導出された性能予測式を、前記実行環境別性能予測情報登録手段に登録する機能を有し、
前記結果計算部は、ユーザが入力した値を前記性能予測計算式に代入して性能予測値を得る機能を有し、
前記性能予測結果表示処理部は、前記性能予測計算式の変数部分に対応する前記ソースコードの箇所をディスプレイ装置の画面に表示する機能を有し、
前記結果計算部は、前記表示された情報を基にユーザが入力した値を、前記性能予測式導出部が導出した性能予測式に代入して性能予測値を得る機能を有することを特徴とする。
【００１８】
（作用）
前記構成に基づく本発明の作用を説明する。
【００１９】
(a) ：前記(1) では、前記処理手段は、オブジェクト指向プログラムの実行性能を劣化させる可能性のあるクラス名、処理名、処理パターンを実行環境毎に性能劣化情報として予め蓄積し、これを実行環境別性能劣化情報として用いることで、オブジェクト指向プログラムのソースコードを静的に解析し、ソースコード中で実行性能を劣化させる可能性のある箇所を表示する。
【００２０】
この場合、従来技術では、ソースコード全体が完成した実行可能な形になっていないと実行性能劣化部分の検出が行なえなかった。それに対して、本発明の装置では、一部分だけ出来ているソースコードを解析して、実行性能を劣化させる可能性のある箇所を検出できる。従って、従来技術よりも開発の早い段階で実行性能に関する問題を発見できる。
【００２１】
また、実行環境別性能劣化情報を性能劣化箇所解析部７に作り込まず、外部から追加、修正が可能なデータとして蓄積している。従って、例えば、ユーザが自分のプロジェクトに合わせて実行環境別性能劣化情報の追加、修正を行なえるため、ユーザの実行環境や設計方針に合った解析が可能になる。
【００２２】
(b) ：前記(2) では、前記処理手段は、ソースコード中の性能を劣化させる可能性のある箇所に対して、実行環境毎の性能改善方法を予め登録してある実行環境別性能改善情報を用いて、プログラミングの改善方法を表示する。
【００２３】
この場合、従来技術では、性能劣化部分を指摘するだけに留まっているのに対し、本発明の装置では、実行性能を劣化させる可能性のある箇所に対して、対処法を提示することができる。また、実行環境別性能改善情報を改善情報表示処理部５に作り込まず、外部から追加、修正が可能なデータとして蓄積している。
【００２４】
このため、ユーザが自分のプロジェクトに合わせて実行環境別性能改善情報の追加、修正を行なえるため、ユーザの実行環境や設計方針に合った対処法の提示が可能になる。
【００２５】
(c) ：前記(3) では、反復・集中箇所検出手段は、解析対象ソースコードを静的に解析して、ループ、再帰呼出し、多くの箇所で使われるメソッドなど、実行回数が多くなる箇所を特定する。これにより、実行環境別性能劣化情報の項目毎に、実行回数が多くなる箇所のみ解析の対象とするか、或いはソースコードの全範囲を解析の対象にするかを切り替え可能とする。
【００２６】
ところで、実行性能を劣化させる可能性のあるクラス名、処理名、処理パターン、すなわち、実行環境別性能劣化情報の各項目には、大別して、１回現れるだけでも問題になるものと、繰返し現れると問題になる（言い換えれば、１回だけなら問題にならない）ものの２種類がある。
【００２７】
本発明の装置では、１回現れるだけでも問題になる項目は解析対象ソースコード全体を対象に検出し、繰返し現れると問題になる項目は反復・集中箇所検出結果を対象に検出する。こうすることで、１回だけなら問題にならない項目に関して、反復・集中処理しない部分に現れていることまで指摘するような、過剰な検出を防ぐことができる。
【００２８】
更に、１回現れるだけでも問題になるものと繰返し現れると問題になるものの間の境界は、ユーザの設計方針や対象システムの性質によって異なる場合が多い。また、何回以上を「実行回数が多い」とするのが適切かということも、ユーザによって異なる。
【００２９】
本発明の装置では、ユーザが実行環境別性能劣化情報の各項目を修正して、実行回数が多くなる箇所のみ解析の対象にするか、ソースコードの全範囲を解析の対象にするかを柔軟に切り替えることができる。また、何回以上を反復・集中として検出するかもユーザが指定できる。これによってユーザは、自分のプロジェクトに最適な解析ができる。
【００３０】
(d) ：前記(4) では、前記処理手段は、実行環境別性能劣化情報の項目毎に、実行性能に対する影響の度合いをランク付けする情報の登録と修正を可能とし、ソースコード中で実行性能を劣化させる可能性のある箇所を、実行性能に対する影響の大きさで順序付けて表示する。
【００３１】
実行性能を劣化させる可能性のあるクラス名、処理名、処理パターン、すなわち、実行環境別性能劣化情報の各項目には、実行性能に対する影響が大きなものと小さなものとがある。問題を解決する際には、実行性能に対する影響が大きなものから順に行うのが望ましい。
【００３２】
本発明の装置では、実行環境別性能劣化情報の項目毎に、実行性能に対する影響の度合いをランク付けする情報を登録することで、性能劣化箇所解析結果（性能劣化箇所解析部７の出力）を実行性能に対する影響の大きなものから順に表示することを可能にする。
【００３３】
また、実行性能に対する影響の大小は、ユーザが構築するシステムの性質や実行環境によって異なることが多いが、実行環境別性能劣化情報を修正することで、ユーザに最適な解析結果を得られるようにすることができる。
【００３４】
(e) ：前記(5) では、第１の処理手段は、オブジェクト指向プログラムのソースコードを静的に解析し、指定された処理中でメモリを確保している箇所が何箇所あるか、クラス又はタイプ毎に特定の実行環境における数の性能予測計算式を導出し、合わせて実行環境別性能実測情報に予め登録してあるクラス又はタイプ毎のメモリ使用量情報を用いて、特定の実行環境におけるメモリ使用量の性能予測計算式を導出する。
【００３５】
第２の処理手段は、入力値によって指示があった場合は、導出した性能予測計算式を実行環境別性能予測情報に登録する。第３の処理手段は、性能予測計算式の変数部分は、対応するソースコードの箇所を表示し、ユーザが対話的に入力可能とする。第４の処理手段は、ユーザが入力した値を性能予測計算式に代入して性能予測値を得る。
【００３６】
オブジェクト指向プログラムでは、オブジェクト（クラスのインスタンス）や配列がメモリを圧迫することで性能問題が起こることが多い。しかし、従来技術は、ソースコード全体が完成し実行可能な形になってから生成されるオブジェクトや配列の数とメモリ使用量を実測するだけで、事前の予測が行えなかった。
【００３７】
本発明の装置では、ソースコードを解析して、或るメソッドが呼ばれた際に生成されるクラスのインスタンスや配列の数の予測式を作る。また、メモリ使用量は、各クラスのインスタンスや配列について実行環境毎に予め実測した情報（実行環境別性能実測情報）を用いて、予測式を作る。ソースコードを解析するだけでは分からない部分は式の変数とし、ユーザと対話しながら解決することができる。
【００３８】
また、各処理（メソッドやコンストラクタ）毎に作成した予測式を実行環境別性能予測情報に登録して再利用できるので、同じ処理について予測式を再計算せずに済み、性能予測式導出部１２の処理を効率化できる。
【００３９】
(f) ：前記(6) では、第１の処理手段は、予め登録してある実行環境別性能実測情報を用いて、オブジェクト指向プログラムのソースコードを静的に解析し、指定された処理の、特定の実行環境における処理時間のオーバヘッドの性能予測計算式を導出する。第２の処理手段は、入力値によって指示があった場合は、導出した性能予測計算式を実行環境別性能予測情報に登録する。
【００４０】
第３の処理手段は、性能予測計算式の変換部分は、対応するソースコードの箇所を表示し、ユーザが対話的に入力可能とする。第４の処理手段は、ユーザが入力した値を性能予測計算式に代入して性能予測値を得る。
【００４１】
この場合、従来技術では、ソースコード全体が完成し、実行可能な形になってからメソッドの実行にかかる時間を実測するだけで、事前の予測は行えなかった。本発明の装置では、ソースコードを解析して、処理（メソッドやコンストラクタ）毎に処理時間のオーバーヘッドの予測式を作る。
【００４２】
式の作成には、基本的な処理のオーバーヘッドについて実行環境毎に予め実測した情報（実行環境別性能実測情報）を用いる。このようにして、ソースコードを解析するだけでは分からない部分は式の変数とし、ユーザと対話しながら解決することができる。
【００４３】
(g) ：前記(7) では、前記処理手段は、実行環境毎の性能改善方法を予め登録してある実行環境別性能改善情報を用いて、確保されるメモリ量を減らすためのプログラミングの改善方法を表示する。
【００４４】
この場合、従来技術では、性能劣化部分を指摘するだけに留まっているのに対し、本発明の装置では、実行性能を劣化させる可能性のある箇所に対して、対処法を提示することができる。また、実行環境別性能改善情報を改善情報表示処理部５に作り込まず、外部から追加、修正が可能なデータとして蓄積している。
【００４５】
従って、ユーザが自分のプロジェクトに合わせて実行環境別性能改善情報４の追加、修正が行なえるため、ユーザの実行環境や設計方針に合った対処法の提示が可能になる。
【００４６】
(h) ：前記(8) では、前記処理手段は、ソースコード中で処理時間のオーバヘッドを発生させている箇所に対して、実行環境毎の性能改善方法を予め登録してある実行環境別性能改善情報を用いて、プログラムの改善方法を表示する。
【００４７】
この場合、従来技術では、性能劣化部分を指摘するだけに留まっているのに対し、本発明の装置では、実行性能を劣化させる可能性のある箇所に対して、対処法を提示することができる。また、実行環境別性能改善情報を改善情報表示処理部５に作り込まず、外部から追加、修正が可能なデータとして蓄積している。
【００４８】
このようにすれば、ユーザが自分のプロジェクトに合わせて実行環境別性能改善情報４の追加、修正が行なえるため、ユーザの実行環境や設計方針に合った対処法の提示が可能になる。
【００４９】
(i) ：前記(9) では、コンピュータが記録媒体のプログラムを読み出して実行することにより、又は、前記プログラムを実行することにより、前記オブジェクト指向プログラムの実行性能を劣化させる可能性のあるクラス名、処理名、処理パターンを実行環境毎に性能劣化情報として予め蓄積する手順と、これを実行環境別性能劣化情報として用いることで、オブジェクト指向プログラムのソースコードを静的に解析し、ソースコード中で実行性能を劣化させる可能性のある箇所を表示する手順を実行する。
【００５０】
この場合、従来技術では、ソースコード全体が完成した実行可能な形になっていないと実行性能劣化部分の検出が行なえなかった。それに対して、本発明の装置では、一部分だけ出来ているソースコードを解析して、実行性能を劣化させる可能性のある箇所を検出できる。従って、従来技術よりも開発の早い段階で実行性能に関する問題を発見できる。
【００５１】
また、実行環境別性能劣化情報を性能劣化箇所解析部７に作り込まず、外部から追加、修正が可能なデータとして蓄積している。従って、例えば、ユーザが自分のプロジェクトに合わせて実行環境別性能劣化情報の追加、修正を行なえるため、ユーザの実行環境や設計方針に合った解析が可能になる。
【００５２】
【発明の実施の形態】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。
【００５３】
§１：装置の説明
図２は装置の説明図（その１）、図３は装置の説明図（その２）、図４は装置の説明図（その３）である。以下、図２〜図４に基づいて、オブジェクト指向プログラム性能改善支援装置を説明する。
【００５４】
図２に示すように、オブジェクト指向プログラム性能改善支援装置は、大別すると、共通部Ａと、性能劣化解析処理を行う性能劣化解析部Ｂと、性能予測処理を行う性能予測部Ｃから構成されている。
【００５５】
図３に示すように、共通部Ａは、解析時の制御を行う解析制御部２と、改善情報の表示処理を行う改善情報表示処理部５を備えている。そして、共通部Ａの情報等には、解析対象ソースコード１と、入力値３と、実行環境別性能改善情報４がある。
【００５６】
性能劣化解析部Ｂは、性能劣化箇所の解析処理を行う性能劣化箇所解析部７と、性能劣化箇所をディスプレイ装置の画面に表示する性能劣化箇所表示処理部９と、反復・集中箇所を検出する反復・集中箇所検出部１０を備えている。そして、性能劣化解析部Ｂの情報等には、実行環境別性能劣化情報６と、性能劣化箇所検出結果８と、反復・集中箇所検出結果１１がある。
【００５７】
図４に示すように、性能予測部Ｃは、性能予測式の導出処理を行う性能予測式導出部１２と、結果計算処理を行う結果計算部１６と、性能予測結果表示処理部１８を備えている。そして、性能予測部Ｃの情報等には、実行環境別性能実測情報１３と、実行環境別性能予測情報１４と、性能予測計算式１５と、性能予測値１７がある。
【００５８】
前記構成のオブジェクト指向プログラム性能改善支援装置の処理の特徴は次の通りである。
【００５９】
(1) ：オブジェクト指向プログラムの実行性能を劣化させる可能性のあるクラス名、処理名、処理パターンを実行環境毎に性能劣化情報として予め蓄積し（以降、これを「実行環境別性能劣化情報６」と呼ぶ）、これを用いて性能劣化箇所解析部７がオブジェクト指向プログラムのソースコード（解析対象ソースコード１）を静的に解析し、ソースコード中で実行性能を劣化させる可能性のある箇所（性能劣化箇所検出結果８）を性能劣化箇所表示処理部９がディスプレイ装置の表示画面に表示する。
【００６０】
この場合、従来技術では、ソースコード全体が、完成した実行可能な形になっていないと実行性能劣化部分の検出が行なえなかった。それに対して、本発明の装置では、一部分だけ出来ているソースコードを解析して、実行性能を劣化させる可能性のある箇所を検出できる。従って、従来技術よりも開発の早い段階で実行性能に関する問題を発見できる。
【００６１】
また、実行環境別性能劣化情報６を性能劣化箇所解析部７に作り込まず、外部から追加、修正が可能なデータとして蓄積していることも特徴である。例えば、ユーザが自分のプロジェクトに合わせて実行環境別性能劣化情報６の追加、修正を行なえるため、ユーザの実行環境や設計方針に合った解析が可能になる。
【００６２】
(2) ：前記(1) のオブジェクト指向プログラム性能改善支援装置において、ソースコード中の性能を劣化させる可能性のある箇所（性能劣化箇所検出結果８）に対して、実行環境毎の性能改善方法を予め登録してある実行環境別性能改善情報４を用いて、改善情報表示処理部５が、ディスプレイ装置の表示画面にプログラミングの改善方法を表示する。
【００６３】
この場合、従来技術では、性能劣化部分を指摘するだけに留まっているのに対し、本発明の装置では、実行性能を劣化させる可能性のある箇所に対して、対処法を提示することができる。また、実行環境別性能改善情報４を改善情報表示処理部５に作り込まず、外部から追加、修正が可能なデータとして蓄積している。このため、ユーザが自分のプロジェクトに合わせて実行環境別性能改善情報４の追加、修正を行なえるため、ユーザの実行環境や設計方針に合った対処法の提示が可能になる。
【００６４】
(3) ：前記(1) のオブジェクト指向プログラム性能改善支援装置において、解析対象ソースコード１を静的に解析して、ループ、再帰呼出し、多くの箇所で使われるメソッドなど、実行回数が多くなる箇所（反復・集中箇所検出結果１１）を特定する反復・集中箇所検出部１０を有し、実行環境別性能劣化情報６の項目毎に、実行回数が多くなる箇所（反復・集中箇所検出結果１１）のみ解析の対象とするか、或いはソースコードの全範囲（解析対象ソースコード１）を解析の対象にするかを切り替え可能とする。
【００６５】
実行性能を劣化させる可能性のあるクラス名、処理名、処理パターン（すなわち、実行環境別性能劣化情報６の各項目）には、大別して、１回現れるだけでも問題になるものと、繰返し現れると問題になる（言い換えれば、１回だけなら問題にならない）ものの２種類がある。本発明の装置では、１回現れるだけでも問題になる項目は解析対象ソースコード１全体を対象に検出し、繰返し現れると問題になる項目は反復・集中箇所検出結果１１（反復・集中箇所検出部１０の出力）を対象に検出する。
【００６６】
こうすることで、１回だけなら問題にならない項目に関して、反復・集中処理しない部分に現れていることまで指摘するような、過剰な検出を防ぐことができる。
【００６７】
更に、１回現れるだけでも問題になるものと繰返し現れると問題になるものの間の境界は、ユーザの設計方針や対象システムの性質によって異なる場合が多い。また、何回以上を「実行回数が多い」とするのが適切かということも、ユーザによって異なる。本発明の装置では、ユーザが実行環境別性能劣化情報６の各項目を修正して、実行回数が多くなる箇所のみ解析の対象にするか、ソースコードの全範囲を解析の対象にするかを柔軟に切り替えることができる。また、何回以上を反復・集中として検出するかもユーザが指定できる。これによってユーザは、自分のプロジェクトに最適な解析ができる。
【００６８】
(4) ：前記(1) のオブジェクト指向プログラム性能改善支援装置において、実行環境別性能劣化情報６の項目毎に、実行性能に対する影響の度合いをランク付けする情報の登録と修正を可能とし、ソースコード中で実行性能を劣化させる可能性のある箇所（性能劣化箇所検出結果８）を、性能劣化箇所表示処理部９が、実行性能に対する影響の大きさで順序付けて、ディスプレイ装置の表示画面に表示する。
【００６９】
実行性能を劣化させる可能性のあるクラス名、処理名、処理パターン（すなわち、実行環境別性能劣化情報６の各項目）には、実行性能に対する影響が大きなものと小さなものとがある。問題を解決する際には、実行性能に対する影響が大きなものから順に行うのが望ましい。
【００７０】
本発明の装置では、実行環境別性能劣化情報６の項目毎に、実行性能に対する影響の度合いをランク付けする情報を登録することで、性能劣化箇所検出結果８（性能劣化箇所解析部７の出力）を実行性能に対する影響の大きなものから順に表示することを可能にする。また、実行性能に対する影響の大小は、ユーザが構築するシステムの性質や実行環境によって異なることが多いが、実行環境別性能劣化情報６を修正することで、ユーザに最適な解析結果を得られるようにすることができる。
【００７１】
(5) ：オブジェクト指向プログラムのソースコード（解析対象ソースコード１）を静的に解析し、指定された処理中でメモリを確保している箇所が何箇所あるか、クラス又はタイプ毎に特定の実行環境における数の性能予測計算式１５を導出する。また、合わせて実行環境別性能実測情報１３に予め登録してあるクラス又はタイプ毎のメモリ使用量情報を用いて、特定の実行環境におけるメモリ使用量の性能予測計算式１５を導出する。
【００７２】
入力値３によって指示があった場合は、導出した性能予測計算式１５を実行環境別性能予測情報１４に登録する。性能予測計算式１５の変数部分は、性能予測結果表示処理部１８が、対応するソースコードの箇所を表示し、ユーザが対話的に入力可能とする。ユーザが入力した値を結果計算部１６が性能予測計算式１５に代入して性能予測値１７を得る。
【００７３】
この場合、オブジェクト指向プログラムでは、オブジェクト（クラスのインスタンス）や配列がメモリを圧迫することで性能問題が起こることが多い。しかし、従来技術は、ソースコード全体が完成し実行可能な形になってから生成されるオブジェクトや配列の数とメモリ使用量を実測するだけで、事前の予測が行えなかった。
【００７４】
本発明の装置では、ソースコードを解析して、或るメソッドが呼ばれた際に生成されるクラスのインスタンスや配列の数の予測式を作る。また、メモリ使用量は、各クラスのインスタンスや配列について実行環境毎に予め実測した情報（実行環境別性能実測情報１３）を用いて、予測式を作る。ソースコードを解析するだけでは分からない部分は式の変数とし、ユーザと対話しながら解決する。
【００７５】
また、各処理（メソッドやコンストラクタ）毎に作成した予測式を実行環境別性能予測情報１４に登録して再利用できるので、同じ処理について予測式を再計算せずに済み、性能予測式導出部１２の処理を効率化できる。
【００７６】
(6) ：オブジェクト指向プログラム性能改善支援装置において、予め登録してある実行環境別性能実測情報１３を用いてオブジェクト指向プログラムのソースコード（解析対象ソースコード１）を静的に解析し、指定された処理の「特定の実行環境における処理時間のオーバーヘッドの性能予測計算式１５」を導出する。
【００７７】
また、入力値３によって指示があった場合は、導出した性能予測計算式１５を実行環境別性能予測情報１４に登録する。そして、性能予測計算式１５の変換部分は、対応するソースコードの箇所をディスプレイ装置の表示画面に表示し、ユーザが対話的に入力可能とする。ユーザが入力した値を結果計算部１６が性能予測計算式１５に代入して性能予測値１７を得る。
【００７８】
この場合、従来技術では、ソースコード全体が完成し、実行可能な形になってからメソッドの実行にかかる時間を実測するだけで、事前の予測は行えなかった。本発明の装置では、ソースコードを解析して、処理（メソッドやコンストラクタ）毎に処理時間のオーバーヘッドの予測式を作る。
【００７９】
予測式の作成には、基本的な処理のオーバーヘッドについて実行環境毎に予め実測した情報（実行環境別性能実測情報１３）を用いる。ソースコードを解析するだけでは分からない部分は式の変数とし、ユーザと対話しながら解決する。
【００８０】
(7) ：前記(5) のオブジェクト指向プログラム性能改善支援装置において、実行環境毎の性能改善方法を予め登録してある実行環境別性能改善情報４を用いて、改善情報表示処理部５が、確保されるメモリ量を減らすためのプログラミングの改善方法を表示する。
【００８１】
この場合、従来技術では、性能劣化部分を指摘するだけに留まっているのに対し、本発明の装置では、実行性能を劣化させる可能性のある箇所に対して対処法を提示することができる。また、実行環境別性能改善情報４を改善情報表示処理部５に作り込まず、外部から追加、修正が可能なデータとして蓄積している。
【００８２】
このように、ユーザが自分のプロジェクトに合わせて実行環境別性能改善情報４の追加、修正が行なえるため、ユーザの実行環境や設計方針に合った対処法の提示が可能になる。
【００８３】
(8) ：前記(6) のオブジェクト指向プログラム性能改善支援装置において、ソースコード中で処理時間のオーバヘッドを発生させている箇所に対して、実行環境毎の性能改善方法を予め登録してある実行環境別性能改善情報４を用いて、改善情報表示処理部５がプログラムの改善方法をディスプレイ装置の表示画面に表示する。
【００８４】
この場合、従来技術では、性能劣化部分を指摘するだけに留まっているのに対し、本発明の装置では、実行性能を劣化させる可能性のある箇所に対して、対処法を提示することができる。
【００８５】
また、実行環境別性能改善情報４を改善情報表示処理部５に作り込まず、外部から追加、修正が可能なデータとして蓄積している。このように、ユーザが自分のプロジェクトに合わせて実行環境別性能改善情報４の追加、修正が行なえるため、ユーザの実行環境や設計方針に合った対処法の提示が可能になる。
【００８６】
§２：装置全体の処理の説明
図５は装置全体の処理フローチャート（その１）、図６は装置全体の処理フローチャート（その２）である。以下、図５、図６に基づいてオブジェクト指向プログラム性能改善支援装置全体の処理を説明する。なお、Ｓ−１〜Ｓ−１３は各処理ステップを示す。
【００８７】
Ｓ−１の処理では、解析制御部２は入力値３を読み込む。そして、Ｓ−２の処理では、解析制御部２は、入力値３に解析対象ソースコード１の全体の性能劣化箇所解析が指示されているかを調べ、性能劣化箇所解析が指示されていれば、Ｓ−３の処理へ移行し、性能劣化箇所解析が指示されていなければ、Ｓ−７の処理へ移行する。
【００８８】
Ｓ−３の処理では、性能劣化箇所解析部７は、解析対象ソースコード１の全範囲を対象にした性能劣化箇所解析を行ない、性能劣化箇所検出結果８を出力する。そして、Ｓ−４の処理では、性能劣化箇所表示処理部９は、性能劣化箇所検出結果８を、実行性能に対する影響の大きさで順序付けて表示する。
【００８９】
次に、Ｓ−５の処理では、解析制御部２は、入力値３に性能改善方法の表示が指示されているかを調べ、入力値３に性能改善方法の表示が指示されていれば、Ｓ−６の処理へ移行し、入力値３に性能改善方法の表示が指示されていなければこの処理を終了する。
【００９０】
Ｓ−６の処理では、解析制御部２は改善情報表示処理部５を起動し、性能劣化箇所に対する改善情報の表示を指示する。改善情報表示処理部５は、性能劣化箇所検出結果８に対する実行環境別性能改善情報４を選んで表示し、処理を終了する。
【００９１】
Ｓ７の処理では、解析制御部２は、入力値３に処理の反復・集中箇所の検出が指示されているかを調べ、入力値３に処理の反復・集中箇所の検出が指示されていればＳ−８の処理へ移行し、入力値３に処理の反復・集中箇所の検出が指示されていなければ、Ｓ−１２の処理へ移行する。
【００９２】
Ｓ−８の処理では、反復・集中箇所検出部１０は、解析対象ソースコード１を解析して、反復・集中箇所検出結果１１を出力する。Ｓ−９の処理では、性能劣化箇所表示処理部９は、反復・集中箇所検出結果１１を表示する。Ｓ−１０の処理では、解析制御部２は、入力値３に反復・集中箇所の性能劣化箇所解析が指示されているかを調べ、入力値３に反復・集中箇所の性能劣化箇所解析が指示されていれば、Ｓ−１１の処理へ移行し、入力値３に反復・集中箇所の性能劣化箇所解析が指示されていなければ、この処理を終了する。
【００９３】
Ｓ−１１の処理では、性能劣化箇所解析部７は、反復・集中箇所検出結果１１を対象にした性能劣化箇所解析を行ない、性能劣化箇所検出結果８を出力し、Ｓ−４の処理へ移行する。
【００９４】
Ｓ１２の処理では、解析制御部２は、入力値３に性能予測式の導出が指示されているかを調べ、入力値３に性能予測式の導出が指示されていれば、Ｓ−１３の処理へ移行し、入力値３に性能予測式の導出が指示されていなければ、この処理を終了する。Ｓ−１３の処理では、性能予測式導出部１２は、メモリ使用量や処理時間のオーバヘッドの性能予測計算式１５を出力し、処理を終了する。
【００９５】
§３：詳細な処理の説明
以下、オブジェクト指向プログラム性能改善支援装置の詳細な処理を説明する。
【００９６】
(1) ：前記Ｓ−３の詳細な説明
図７は詳細な処理フローチャート（その１）であり、前記Ｓ−３の詳細な処理を示す。なお、図７において、Ｓ−３−１〜Ｓ−３−５は各処理ステップを示す。前記Ｓ−３の処理では、性能劣化箇所解析部７は、解析対象ソースコード１の全範囲を対象にした性能劣化箇所解析を行ない、性能劣化箇所検出結果８を出力する。以下、この処理を更に詳細に説明する。
【００９７】
先ず、Ｓ−３−１の処理では、解析制御部２は、入力値３からソースコード名と実行環境名を読み込む。Ｓ−３−２の処理では、解析制御部２は、性能劣化箇所解析部７を起動して、ソースコード名と実行環境名を性能劣化箇所解析部７に渡す。Ｓ−３−３の処理では、性能劣化箇所解析部７は、実行環境別性能劣化情報６から与えられた実行環境名と一致する項目を読み込む。
【００９８】
Ｓ−３−４の処理では、性能劣化箇所解析部７は、ソースコード名で指定された解析対象ソースコード１を読み込み、Ｓ−３−３で読み込んだ項目に適合する箇所を検出する。Ｓ−３−５の処理では、性能劣化箇所解析部７は、Ｓ−３−４で検出した箇所と、その箇所が適合した項目の識別情報を、性能劣化箇所検出結果８として出力する。このようにしてＳ−３の処理を終了する。
【００９９】
(2) ：前記Ｓ−８の詳細な説明
図８は詳細な処理フローチャート（その２）であり、前記Ｓ−８の詳細な処理を示す。また、図９は詳細な処理の説明図であり、Ｓ−８−３の補足説明である。なお、図８において、Ｓ−８−１〜Ｓ−８−４は各処理ステップを示す。前記Ｓ−８の処理では、反復・集中箇所検出部１０は、解析対象ソースコード１を解析して、反復・集中箇所検出結果１１を出力する。以下、この処理を更に詳細に説明する。
【０１００】
先ず、Ｓ−８−１の処理では、解析制御部２は、入力値３から、ソースコード名と、繰り返し多重度、集中度を読み込む。Ｓ−８−２の処理では、解析制御部２は、反復・集中箇所検出部１０を起動して、ソースコード名、繰り返し多重度、集中度数を反復・集中箇所検出部１０に渡す。Ｓ−８−３の処理では、反復・集中箇所検出部１０は、ソースコード名で指定された解析対象ソースコード１を読み込み、以下のａ、ｂ、ｃの各箇所を検出する。
【０１０１】
ａ：繰り返し多重度以上にループが重なっている（ネストしている）箇所を検出する。ｂ：入れ子呼び出しをしている箇所を検出する。ｃ：集中度よりも多くの箇所から呼び出しを受けている処理を検出する。
【０１０２】
Ｓ−８−４の処理では、反復・集中箇所検出部１０は、Ｓ−８−３で検出した箇所を、反復・集中箇所検出結果１１として出力する。以上の処理によりＳ−８の処理を終了する。
【０１０３】
次に、Ｓ−８−３の処理を図９により補足説明をする。Ｓ−８−３の処理における前記ａでは、ループ（繰り返し）が多重になっている部分を検出する。このループの多重度は３（ループ１、ループ２、ループ３）なので、繰り返し多重度が２と指定された場合は、検出の対象となる。また、前記ｂでは、同じ処理（図の処理Ａ）を入れ子に呼び出している部分が検出の対象となる。
【０１０４】
前記ｃでは、多数の箇所から呼び出されている箇所を検出する。この場合、図の処理Ａは、Ｘ．Ｙ．Ｚの三ケ所から呼び出されているので、集中度が２と指定された場合は、検出の対象となる。
【０１０５】
(3) ：前記Ｓ−１１の詳細な説明
図１０は詳細な処理フローチャート（その３）であり、前記Ｓ−１１の詳細な処理を示す。なお、図１０において、Ｓ−１１−１〜Ｓ−１１−５は各処理ステップを示す。Ｓ−１１の処理では、性能劣化箇所解析部７は、反復・集中箇所検出結果１１を対象にした性能劣化箇所解析を行ない、性能劣化箇所検出結果８を出力する。以下、この処理を更に詳細に説明する。
【０１０６】
Ｓ−１１−１の処理では、解析制御部２は、入力値３からソースコード名と実行環境名を読み込む。Ｓ−１１−２の処理では、解析制御部２は、性能劣化箇所解析部７を起動して、ソースコード名と実行環境名を性能劣化箇所解析部７に渡す。Ｓ−１１−３の処理では、性能劣化箇所解析部７は、実行環境別性能劣化情報６から与えられた実行環境名と一致する項目を読み込む。
【０１０７】
Ｓ−１１−４の処理では、性能劣化箇所解析部７は、ソースコード名で指定された反復・集中箇所検出結果１１を読み込み、Ｓ−１１−３の処理で読み込んだ項目に適合する箇所を検出する。Ｓ−１１−５の処理では、性能劣化箇所解析部７は、Ｓ−１１−４の処理で検出した箇所と、その箇所が適合した項目の識別情報を、性能劣化箇所検出結果８として出力する。以上の処理により、Ｓ−１１の処理を終了する。
【０１０８】
(4) ：前記Ｓ−１３の詳細な説明
図１１は詳細な処理フローチャート（その４）、図１２は詳細な処理フローチャート（その５）であり、前記Ｓ−１３の詳細な処理を示す。なお、図１１、図１２において、Ｓ−１３−１〜Ｓ−１３−１１は各処理ステップを示す。Ｓ−１３の処理では、性能予測式導出部１２は、メモリ使用量や処理時間のオーバーヘッドの性能予測式１５を出力する。以下、この処理を更に詳細に説明する。
【０１０９】
Ｓ−１３−１の処理では、解析制御部２は、入力値３にメモリ使用量の予測式の導出が指示されているかを調べ、メモリ使用量の予測式の導出が指示されていればＳ−１３−２の処理へ移行し、メモリ使用量の予測式の導出が指示されていなければＳ−１３−３の処理へ移行する。
【０１１０】
Ｓ−１３−２の処理では、性能予測式導出部１２は、解析対象ソースコード１のメモリ使用量について、性能予測計算式１５を出力する。Ｓ−１３−５の処理では、性能予測結果表示処理部１８は、前記出力された性能予測計算式１５を表示する。
【０１１１】
一方、Ｓ−１３−３の処理では、解析制御部２は、入力値３に処理時間のオーバーヘッドの予測式の導出が指示されているかを調べ、処理時間のオーバヘッドの予測式の導出が指示されていれば、Ｓ−１３−４の処理へ移行し、前記性能予測計算式１５の導出が指示されていなければ、この処理を終了する。
【０１１２】
Ｓ−１３−４の処理では、性能予測式導出部１２は、解析対象ソースコード１の処理時間のオーバーヘッドについては、性能予測計算式１５を出力し、Ｓ−１３−５の処理へ移行する。Ｓ−１３−６の処理では、結果計算部１６は、性能予測計算式１５を読み込む。
【０１１３】
Ｓ−１３−７の処理では、結果計算部１６は、性能予測計算式１５に変数が残っているかを調べ、性能予測計算式１５に変数が残っていれば、Ｓ−１３−８の処理へ移行し、性能予測計算式１５に変数が残っていなければ、Ｓ−１３−１０の処理へ移行する。
【０１１４】
Ｓ−１３−８の処理では、結果計算部１６は、性能予測計算式１５の変数部分に、オペレータが入力した値を代入して計算し、性能予測値１７を出力する。Ｓ−１３−９の処理では、性能予測結果表示処理部１８は、性能予測値１７を表示し、Ｓ−１３−７の処理へ移行する。
【０１１５】
Ｓ−１３−１０の処理では、解析制御部２は、入力値３に性能改善方法の表示が指示されているかを調べ、入力値３に性能改善方法の表示が指示されていれば、Ｓ−１３−１１の処理へ移行し、入力値３に性能改善方法の表示が指示されていなければ、この処理を終了する。
【０１１６】
Ｓ−１３−１１の処理では、解析制御部２は、改善情報表示処理部５を起動し、性能予測に対する改善情報の表示を指示する。改善情報表示処理部５は、性能予測計算式１５に対する実行環境別性能改善情報４を選んで表示する。以上の処理によりＳ−１３の処理を終了する。
【０１１７】
(5) ：前記Ｓ−１３−２の詳細な説明
図１３は詳細な処理フローチャート（その６）、図１４は詳細な処理フローチャート（その７）であり、前記Ｓ−１３−２の詳細な処理を示す。なお、図１３、図１４において、Ｓ−１３−２−１〜Ｓ−１３−２−１３は各処理ステップを示す。Ｓ−１３−２の処理では、性能予測式導出部１２は、解析対象ソースコード１のメモリ使用量について、性能予測計算式１５を出力する。以下、この処理を更に詳細に説明する。
【０１１８】
Ｓ−１３−２−１の処理では、解析制御部２は、入力値３からソースコード名と処理名、実行環境名、登録指示値を読み込む。Ｓ−１３−２−２の処理では、解析制御部２は、性能予測式導出部１２を起動して、ソースコード名と、処理名、実行環境名を性能予測式導出部１２に渡す。
【０１１９】
Ｓ−１３−２−３の処理では、性能予測式導出部１２は、ソースコード名で指定された解析対象ソースコード１を読み込み、処理名で指定された処理の中で、メモリを確保している箇所を検出する。Ｓ−１３−２−４の処理では、性能予測式導出部１２は、クラスまたはタイプ毎にメモリを確保している箇所の数の性能予測計算式１５を導出する。
【０１２０】
そして、Ｓ−１３−２−５の処理では、性能予測式導出部１２は、指定された処理の中で呼び出している処理はあるかを調べ、指定された処理の中で呼び出している処理があればＳ−１３−２−６の処理へ移行し、指定された処理の中で呼び出している処理がなければＳ１３−２−７の処理へ移行する。
【０１２１】
Ｓ−１３−２−６の処理では、性能予測式導出部１２は、呼び出している処理に対して、Ｓ−１３−２−３の処理を起動し、Ｓ−１３−２−３の処理へ移行する。また、Ｓ−１３−２−７の処理では、性能予測式導出部１２は、登録指示値に実行環境別性能予測情報１４へ登録が指示されているかを調べ、登録指示値に実行環境別性能予測情報１４へ登録が指示されていればＳ−１３−２−８の処理へ移行し、登録指示値に実行環境別性能予測情報１４へ登録が指示されていなければＳ−１３−２−１１の処理へ移行する。
【０１２２】
Ｓ−１３−２−８の処理では、性能予測式導出部１２は、メモリを確保している箇所の数の性能予測計算式１５を、処理毎に実行環境別性能予測情報１４に登録しながら、Ｓ−１３−２−１の処理で読み込んだ処理名で指示された処理（呼び出しの大元の処理）の性能予測計算式１５を、クラスまたはタイプ別に組み立てて出力する。
【０１２３】
Ｓ−１３−２−９の処理では、性能予測式導出部１２は、Ｓ−１３−２−８の処理の性能予測計算式１５に現れるクラスまたはタイプのメモリ使用量について、実行環境別性能実測情報１３から与えられた実行環境名と一致する項目を読み込む。
【０１２４】
Ｓ−１３−２−１０の処理では、性能予測式導出部１２は、Ｓ−１３−２−９の処理で読み込んだメモリ使用量を用いて、メモリ使用量の性能予測計算式１５を、処理毎に実行環境別性能予測情報１４に登録しながら、Ｓ−１３−２−１の処理で読み込んだ処理名で指示された処理（呼び出しの大元の処理）の性能予測計算式１５を、クラスまたはタイプ別に組み立てて出力する。
【０１２５】
一方、Ｓ−１３−２−１１の処理では、性能予測式導出部１２は、Ｓ−１３−２−１の処理で読み込んだ処理名で指示された処理（呼び出しの大元の処理）の性能予測計算式１５を、クラスまたはタイプ別に組み立てて出力する。Ｓ−１３−２−１２の処理では、性能予測式導出部１２は、Ｓ−１３−２−８の処理の性能予測計算式１５に現れるクラスまたはタイプのメモリ使用量について、実行環境別性能実測情報１３から与えられた実行環境名と一致する項目を読み込む。
【０１２６】
Ｓ−１３−２−１３の処理では、性能予測式導出部１２は、Ｓ−１３−２−９の処理で読み込んだメモリ使用量を用いて、Ｓ−１３−２−９の処理で読み込んだメモリ使用量を用いて、Ｓ−１３−２−１で読み込んだ処理（呼び出しの大元の処理）の性能予測計算式１５を、クラスまたはタイプ別に組み立てて出力する。以上の処理により、Ｓ−１３−２の処理を終了する。
【０１２７】
(6) ：前記Ｓ−１３−４の詳細な説明
図１５は詳細な処理フローチャート（その８）、図１６は詳細な処理フローチャート（その９）であり、前記Ｓ−１３−４の詳細な処理を示す。なお、図１５、図１６において、Ｓ−１３−４−１〜Ｓ−１３−４−９は各処理ステップを示す。Ｓ−１３−４の処理では、性能予測式導出部１２は、解析対象ソースコード１の処理時間のオーバーヘッドについて、性能予測計算式１５を出力する。以下、この処理を更に詳細に説明する。
【０１２８】
Ｓ−１３−４−１の処理では、解析制御部２は、入力値３からソースコード名と処理名、実行環境名、登録指示値を読み込む。Ｓ−１３−４−２の処理では、解析制御部２は、性能予測式導出部１２を起動して、ソースコード名と処理名、実行環境名を性能予測式導出部１２に渡す。
【０１２９】
Ｓ−１３−４−３の処理では、性能予測式導出部１２は、ソースコード名で指示された解析対象ソースコード１を読み込む。Ｓ−１３−４−４の処理では、性能予測式導出部１２は、実行環境別性能実測情報１３から処理時間のオーバーヘッドについて、与えられた実行環境名と一致する処理の項目を読み、処理時間のオーバーヘッドの性能予測計算式１５を導出する。
【０１３０】
Ｓ−１３−４−５の処理では、性能予測式導出部１２は、指定された処理の中で呼び出している処理はあるかを調べ、指定された処理の中で呼び出している処理があれば、Ｓ−１３−４−６の処理へ移行し、指定された処理の中で呼び出している処理がなければＳ−１３−４−７の処理へ移行する。Ｓ−１３−４−６の処理では、性能予測式導出部１２は、呼び出している処理に対して、Ｓ−１３−４−３の処理を起動し、Ｓ−１３−４−３の処理へ移行する。
【０１３１】
Ｓ−１３−４−７の処理では、性能予測式導出部１２は、登録指示値に実行環境別性能予測情報１４への登録が指示されているかを調べ、登録指示値に実行環境別性能予測情報１４への登録が指示されていれば、Ｓ−１３−４−８の処理へ移行し、登録指示値に実行環境別性能予測情報１４への登録が指示されていなければ、Ｓ−１３−４−９の処理へ移行する。
【０１３２】
Ｓ−１３−４−８の処理では、性能予測式導出部１２は、実行時間のオーバーヘッドの性能予測計算式１５を、処理毎に実行環境別性能予測情報１４に登録しながら、Ｓ−１３−４−１の処理で読み込んだ処理名で指示された処理（呼び出しの大元の処理）の性能予測計算式１５を組み立てて出力する。
【０１３３】
Ｓ−１３−４−９の処理では、性能予測式導出部１２は、Ｓ−１３−４−１の処理で読み込んだ処理名で指示された処理（呼び出しの大元の処理）の実行時間のオーバーヘッドの性能予測計算式１５を組み立てて出力する。以上の処理によりＳ−１３−４の処理を終了する。
【０１３４】
以下、図１６に示した補足説明の図に基づいて、Ｓ−１３−２−８の処理、Ｓ−１３−２−１０の処理、及びＳ−１３−４−８の補足説明をする。性能予測式導出部１２は、図示のように処理が連鎖的に呼び出されている場合、処理Ｄ→処理Ｃ→処理Ｂ→処理Ａの順で性能予測計算式１５を作成し、実行環境別性能予測情報１４に登録していく。
【０１３５】
この時、処理Ｃの計算式は、処理Ｄの計算式＋処理Ｃ自身の計算式、処理Ａの計算式は、処理Ｂの計算式＋処理Ｄの計算式＋処理Ａ自身の計算式、というように、計算式が階層的な構造を持つ。前記Ｓ−１３−２の処理、Ｓ−１３−４の処理全体の出力となるのは、呼び出しの大元である処理Ａの性能予測計算式１５である。
【０１３６】
§４：前記各情報等の説明
以下、前記各情報等について説明する。
【０１３７】
(1) ：入力値の例の説明
図１７は入力値の例である。前記入力値３は、例えば、図１７のようになっている。この例では、入力値３として、１．処理選択値、２．解析箇所選択値、３．反復・集中箇所解析選択値、４．性能予測選択値、５．改善方法表示選択値、６．ソースコード名、７．処理名、８．実行環境名、９．繰返し多重度、１０．集中度、１１．登録指示値があり、前記各項目に対応して、それぞれの内容がある。
【０１３８】
例えば、１．処理選択値の項目では、「性能劣化解析」または「性能予測」となっている。５．改善方法表示選択値の項目では、改善方法を「表示する」または「表示しない」となっている。１１．登録指示値の項目では、実行環境別性能予測情報に「登録する」または「登録しない」となっている。
【０１３９】
(2) ：実行環境別性能劣化情報例の説明
図１８は実行環境別性能劣化情報例であり、Ａ図は実行環境別性能劣化情報の構成の例、Ｂ図は実行環境別性能劣化情報の実現例である。なお、図１８のＡ図に示した実行環境別性能劣化情報は、パターン種別と適用範囲は検出を効率的に行うための補助情報である。また、図１８のＢ図に示した実行環境別性能劣化情報において、表中「ａｌｌ」は「全体」を、「Ｌ」は「影響大」を示す。
【０１４０】
前記実行環境別性能劣化情報例では、実行環境名、項目識別名、性能劣化パターン、パターン種別、適用範囲、全体／反復・集中箇所のみ、実行時間のオーバヘッド、実行性能に対する影響の大きさ等の項目がある。そして、前記各項目に情報を格納すると、図１８のＢ図のようになる。
【０１４１】
図１８のＢ図の例では、例えば、実行環境名＝JRE1-1-8-Sun、項目識別名＝00001 、性能劣化パターン＝readLine、パターン識別＝method、適用範囲１＝java.io 、適用範囲２＝DataInput Stream、全体／反復・集中箇所のみ＝all 、実行時間のオーバヘッド＝100 、実行性能に対する影響の大きさ＝Ｌとなっている。
【０１４２】
(3) ：実行環境別性能改善情報例の説明
図１９は実行環境別性能改善情報例であり、Ａ図は実行環境別性能改善情報の構成の例、Ｂ図は実行環境別性能改善情報の実現例である。前記実行環境別性能改善情報の例では、実行環境名、項目識別名、性能劣化情報格納場所アドレス等の項目が設けてある。そして、これらの各項目に情報を格納すると、図１９のＢ図のようになる。
【０１４３】
(4) ：実行環境別性能実測情報例の説明
図２０は実行環境別性能実測情報例であり、Ａ図は実行環境別性能実測情報の構成の例、Ｂ図は実行環境別性能実測情報の実現例である。前記実行環境別性能実測情報の例では、実行環境名、項目識別名、パターン、パターン種別、適用範囲、メモリ使用量、実行時間のオーバヘッド等の項目が設けてある。そして、これらの各項目に情報を格納すると、図２０のＢ図のようになる。
【０１４４】
図２０のＢ図の例では、例えば、実行環境名＝JRE1-1-8-Sun、項目識別名＝00101 、性能劣化パターン＝String()、パターン識別＝constructor 、適用範囲１＝java.lang 、適用範囲２＝String、メモリ使用量＝58、実行時間のオーバヘッド＝50となっている。
【０１４５】
(5) ：連鎖的な呼び出し／実行環境別性能予測情報の説明
図２１は、連鎖的な呼び出し／実行環境別性能予測情報の構成の例であり、Ａ図は連鎖的な呼び出しの例、Ｂ図は実行環境別性能予測情報の構成の例である。前記連鎖的な呼び出しは、図２１のＡ図に示したように、処理Ａはｉ回繰返すループの中で処理Ｂを呼び、処理Ｃはｊ回繰返すループの中で処理Ｄを呼んでいるとする。
【０１４６】
また、図２１のＢ図に示した実行環境別性能予測情報の構成の例では、実行環境名、項目識別名、処理名、適用範囲、メモリ確保箇所数、メモリ使用量、実行時間のオーバヘッドの各項目が設定されている。なお、図２１のＢ図において、パターン種別と適用範囲は検出を効率的に行うための補助情報である。
【０１４７】
(6) ：連鎖的な呼び出しに対する実行環境別性能予測情報の例の説明
図２２は、連鎖的な呼び出しに対する実行環境別性能予測情報の例である。
この例では、連鎖的な呼び出しに対する実行環境別性能予測情報の例として、実行環境名、項目識別名、処理名、適用範囲１、２、メモリ確保箇所数、メモリ使用量、実行時間のオーバヘッドの各項目が設定されており、各項目に図示のような情報がある。
【０１４８】
(7) ：連鎖的な呼び出しを持つ処理Ａに対する性能予測計算式の説明
図２３は、連鎖的な呼び出しを持つ処理Ａに対する性能予測計算式を示した図である。この例では、処理Ａのメモリ確保箇所数、処理Ａのメモリ使用量、処理Ａの実行時間のオーバーヘッドの各項目毎の性能予測計算式が示されている。
【０１４９】
(8) ：前記連鎖的な呼び出しを持つ処理Ａに対する性能予測値の説明
図２４は、連鎖的な呼び出しを持つ処理Ａに対する性能予測値を示した図である。この例では、前記処理Ａのメモリ確保箇所数、処理Ａのメモリ使用量、処理Ａの実行時間のオーバーヘッドの各項目毎の性能予測値が示されている。
【０１５０】
§５：具体的な装置例と記録媒体の説明
図２５は具体的な装置例である。前記オブジェクト指向プログラム性能改善支援装置は、パーソナルコンピュータ、ワークステーション等の任意のコンピュータにより実現することができる。この装置は、コンピュータ本体２１と、該コンピュータ本体２１に接続されたディスプレイ装置２２、入力装置（キーボード／マウス等）２３、リムーバブルディスクドライブ（「ＲＤＤ」という）２４、ハードディスク装置（「ＨＤＤ」という）２５等で構成されている。
【０１５１】
そして、コンピュータ本体２１には、内部の各種制御や処理を行うＣＰＵ２６と、プログラムや各種データを格納しておくためのＲＯＭ２７（不揮発性メモリ）と、メモリ２８と、インタフェース制御部（「Ｉ／Ｆ制御部」という）２９と、通信制御部３０等が設けてある。なお、前記リムーバブルディスクドライブ２４には、フレキシブルディスクドライブや光ディスクドライブ等が含まれる。
【０１５２】
前記構成の装置において、例えば、前記ＲＯＭ２７、或いはハードディスク装置２５のディスク（記録媒体）に、前記オブジェクト指向プログラム性能改善支援装置の処理を実現するためのプログラムを格納しておき、このプログラムをＣＰＵ２６が読み出して実行することにより、前記処理を実行する。
【０１５３】
しかし、本発明はこのような例に限らず、例えば、ハードディスク装置２５のディスクに、次のようにしてプログラムを格納し、このプログラムをＣＰＵ２６が実行することで前記処理を行うことも可能である。
【０１５４】
▲１▼：他の装置で作成されたリムーバブルディスクに格納されているプログラム（他の装置で作成したプログラムデータ）を、リムーバブルディスクドライブ２４により読み取り、ハードディスク装置２５のディスク（記録媒体）に格納する。
【０１５５】
▲２▼：ＬＡＮやその他の通信回線を介して他の装置から伝送されたプログラム等のデータを、通信制御部３０を介して受信し、そのデータをハードディスク装置２５のディスクに格納する。
【０１５６】
（付記）
（付記１）：オブジェクト指向プログラムの実行性能を劣化させる可能性のあるクラス名、処理名、処理パターンを実行環境毎に性能劣化情報として予め蓄積し、これを実行環境別性能劣化情報として用いることで、オブジェクト指向プログラムのソースコードを静的に解析し、ソースコード中で実行性能を劣化させる可能性のある箇所を表示する処理手段を備えていることを特徴とするオブジェクト指向プログラム性能改善支援装置。
【０１５７】
（付記２）：オブジェクト指向プログラムのソースコードを静的に解析し、指定された処理中でメモリを確保している箇所が何箇所あるか、クラス又はタイプ毎に特定の実行環境における数の性能予測計算式を導出し、合わせて実行環境別性能実測情報に予め登録してあるクラス又はタイプ毎のメモリ使用量情報を用いて、特定の実行環境におけるメモリ使用量の性能予測計算式を導出する第１の処理手段と、入力値によって指示があった場合は、導出した性能予測計算式を実行環境別性能予測情報に登録する第２の処理手段と、性能予測計算式の変数部分は、対応するソースコードの箇所を表示し、ユーザが対話的に入力可能とする第３の処理手段と、ユーザが入力した値を性能予測計算式に代入して性能予測値を得る第４の処理手段とを備えていることを特徴とするオブジェクト指向プログラム性能改善支援装置。
【０１５８】
（付記３）：予め登録してある実行環境別性能実測情報を用いて、オブジェクト指向プログラムのソースコードを静的に解析し、指定された処理の、特定の実行環境における処理時間のオーバヘッドの性能予測計算式を導出する第１の処理手段と、入力値によって指示があった場合は、導出した性能予測計算式を実行環境別性能予測情報に登録する第２の処理手段と、性能予測計算式の変換部分は、対応するソースコードの箇所を表示し、ユーザが対話的に入力可能とする第３の処理手段と、ユーザが入力した値を性能予測計算式に代入して性能予測値を得る第４の処理手段とを備えていることを特徴とするオブジェクト指向プログラム性能改善支援装置。
【０１５９】
（付記４）：コンピュータに、オブジェクト指向プログラムの実行性能を劣化させる可能性のあるクラス名、処理名、処理パターンを実行環境毎に性能劣化情報として予め蓄積し、これを実行環境別性能劣化情報として用いることで、オブジェクト指向プログラムのソースコードを静的に解析し、ソースコード中で実行性能を劣化させる可能性のある箇所を表示する処理手段の機能を実現させるためのプログラム、又は該プログラムを記録したコンピュータ読み取り可能な記録媒体。
【０１６０】
【発明の効果】
以上説明したように、本発明によれば次のような効果がある。
【０１６１】
(1) ：請求項１では、前記処理手段は、オブジェクト指向プログラムの実行性能を劣化させる可能性のあるクラス名、処理名、処理パターンを実行環境毎に性能劣化情報として予め蓄積し、これを実行環境別性能劣化情報として用いることで、オブジェクト指向プログラムのソースコードを静的に解析し、ソースコード中で実行性能を劣化させる可能性のある箇所を表示する。
【０１６２】
この場合、従来技術では、ソースコード全体が完成した実行可能な形になっていないと実行性能劣化部分の検出が行なえなかった。それに対して、本発明の装置では、一部分だけ出来ているソースコードを解析して、実行性能を劣化させる可能性のある箇所を検出できる。従って、従来技術よりも開発の早い段階で実行性能に関する問題を発見できる。
【０１６３】
また、実行環境別性能劣化情報を性能劣化箇所解析部に作り込まず、外部から追加、修正が可能なデータとして蓄積している。従って、例えば、ユーザが自分のプロジェクトに合わせて実行環境別性能劣化情報の追加、修正を行なえるため、ユーザの実行環境や設計方針に合った解析が可能になる。
【０１６４】
(2) ：請求項２では、第１の処理手段は、オブジェクト指向プログラムのソースコードを静的に解析し、指定された処理中でメモリを確保している箇所が何箇所あるか、クラス又はタイプ毎に特定の実行環境における数の性能予測計算式を導出し、合わせて実行環境別性能実測情報に予め登録してあるクラス又はタイプ毎のメモリ使用量情報を用いて、特定の実行環境におけるメモリ使用量の性能予測計算式を導出する。
【０１６５】
第２の処理手段は、入力値によって指示があった場合は、導出した性能予測計算式を実行環境別性能予測情報に登録する。第３の処理手段は、性能予測計算式の変数部分は、対応するソースコードの箇所を表示し、ユーザが対話的に入力可能とする。第４の処理手段は、ユーザが入力した値を性能予測計算式に代入して性能予測値を得る。
【０１６６】
この場合、オブジェクト指向プログラムでは、オブジェクト（クラスのインスタンス）や配列がメモリを圧迫することで性能問題が起こることが多い。しかし、従来技術は、ソースコード全体が完成し実行可能な形になってから生成されるオブジェクトや配列の数とメモリ使用量を実測するだけで、事前の予測が行えなかった。
【０１６７】
本発明の装置では、ソースコードを解析して、或るメソッドが呼ばれた際に生成されるクラスのインスタンスや配列の数の予測式を作る。また、メモリ使用量は、各クラスのインスタンスや配列について実行環境毎に予め実測した情報（実行環境別性能実測情報）を用いて、予測式を作る。ソースコードを解析するだけでは分からない部分は式の変数とし、ユーザと対話しながら解決することができる。
【０１６８】
また、各処理（メソッドやコンストラクタ）毎に作成した予測式を実行環境別性能予測情報に登録して再利用できるので、同じ処理について予測式を再計算せずに済み、性能予測式導出部の処理を効率化できる。
【０１６９】
(3) ：請求項３では、コンピュータが記録媒体のプログラムを読み出して実行することにより、オブジェクト指向プログラムの実行性能を劣化させる可能性のあるクラス名、処理名、処理パターンを実行環境毎に性能劣化情報として予め蓄積する手順と、これを実行環境別性能劣化情報として用いることで、オブジェクト指向プログラムのソースコードを静的に解析し、ソースコード中で実行性能を劣化させる可能性のある箇所を表示する手順を実行する。
【０１７０】
この場合、従来技術では、ソースコード全体が完成した実行可能な形になっていないと実行性能劣化部分の検出が行なえなかった。それに対して、本発明の装置では、一部分だけ出来ているソースコードを解析して、実行性能を劣化させる可能性のある箇所を検出できる。従って、従来技術よりも開発の早い段階で実行性能に関する問題を発見できる。
【０１７１】
また、実行環境別性能劣化情報を性能劣化箇所解析部に作り込まず、外部から追加、修正が可能なデータとして蓄積している。従って、例えば、ユーザが自分のプロジェクトに合わせて実行環境別性能劣化情報の追加、修正を行なえるため、ユーザの実行環境や設計方針に合った解析が可能になる。
【０１７２】
(4) ：付記３では、第１の処理手段は、予め登録してある実行環境別性能実測情報を用いて、オブジェクト指向プログラムのソースコードを静的に解析し、指定された処理の、特定の実行環境における処理時間のオーバヘッドの性能予測計算式を導出する。第２の処理手段は、入力値によって指示があった場合は、導出した性能予測計算式を実行環境別性能予測情報に登録する。
【０１７３】
第３の処理手段は、性能予測計算式の変換部分は、対応するソースコードの箇所を表示し、ユーザが対話的に入力可能とする。第４の処理手段は、ユーザが入力した値を性能予測計算式に代入して性能予測値を得る。
【０１７４】
この場合、従来技術では、ソースコード全体が完成し、実行可能な形になってからメソッドの実行にかかる時間を実測するだけで、事前の予測は行えなかった。本発明の装置では、ソースコードを解析して、処理（メソッドやコンストラクタ）毎に処理時間のオーバヘッドの予測式を作る。
【０１７５】
式の作成には、基本的な処理のオーバヘッドについて実行環境毎に予め実測した情報（実行環境別性能実測情報）を用いる。このようにして、ソースコードを解析するだけでは分からない部分は式の変数とし、ユーザと対話しながら解決することができる。
【図面の簡単な説明】
【図１】本発明の原理説明図である。
【図２】本発明の実施の形態における装置の説明図（その１）である。
【図３】本発明の実施の形態における装置の説明図（その２）である。
【図４】本発明の実施の形態における装置の説明図（その３）である。
【図５】本発明の実施の形態における装置全体の処理フローチャート（その１）である。
【図６】本発明の実施の形態における装置全体の処理フローチャート（その２）である。
【図７】本発明の実施の形態における詳細な処理フローチャート（その１）である。
【図８】本発明の実施の形態における詳細な処理フローチャート（その２）である。
【図９】本発明の実施の形態における詳細な処理の説明図である。
【図１０】本発明の実施の形態における詳細な処理フローチャート（その３）である。
【図１１】本発明の実施の形態における詳細な処理フローチャート（その４）である。
【図１２】本発明の実施の形態における詳細な処理フローチャート（その５）である。
【図１３】本発明の実施の形態における詳細な処理フローチャート（その６）である。
【図１４】本発明の実施の形態における詳細な処理フローチャート（その７）である。
【図１５】本発明の実施の形態における詳細な処理フローチャート（その８）である。
【図１６】本発明の実施の形態における詳細な処理フローチャート（その９）である。
【図１７】本発明の実施の形態における入力値の例である。
【図１８】本発明の実施の形態における実行環境別性能劣化情報例であり、Ａ図は実行環境別性能劣化情報の構成の例、Ｂ図は実行環境別性能劣化情報の実現例である。
【図１９】本発明の実施の形態における実行環境別性能改善情報例であり、Ａ図は実行環境別性能改善情報の構成の例、Ｂ図は実行環境別性能改善情報の実現例である。
【図２０】本発明の実施の形態における実行環境別性能実測情報例であり、Ａ図は実行環境別性能実測情報の構成の例、Ｂ図は実行環境別性能実測情報の実現例である。
【図２１】本発明の実施の形態における連鎖的な呼出し／実行環境別性能予測情報の構成の例であり、Ａ図は連鎖的な呼出しの例、Ｂ図は実行環境別性能予測情報の構成の例である。
【図２２】本発明の実施の形態における連鎖的な呼出しに対する実行環境別性能予測情報の例である。
【図２３】本発明の実施の形態における連鎖的な呼出しを持つ処理Ａに対する性能予測計算式を示した図である。
【図２４】本発明の実施の形態における連鎖的な呼出しを持つ処理Ａに対する性能予測値を示した図である。
【図２５】本発明の実施の形態における具体的な装置例である。
【符号の説明】
１  解析対象ソースコード
２  解析制御部
３  入力値
４  実行環境別性能改善情報
５  改善情報表示処理部
６  実行環境別性能劣化情報
７  性能劣化箇所解析部
８  性能劣化箇所検出結果
９  性能劣化箇所表示処理部
１０  反復・集中箇所検出部
１１  反復・集中箇所検出結果
１２  性能予測式導出部
１３  実行環境別性能実測情報
１４  実行環境別性能予測情報
１５  性能予測計算式
１６  結果計算部
１７  性能予測値
１８  性能予測結果表示処理部
２１  コンピュータ本体
２２  ディスプレイ装置
２３  入力装置
２４  リムーバブルディスクドライブ（ＲＤＤ）
２５  ハードディスク装置（ＨＤＤ）
２６  ＣＰＵ
２７  ＲＯＭ
２８  メモリ
２９  インターフェイス制御部（Ｉ／Ｆ制御部）
３０  通信制御部
【図１】
0003961787.tif 000002
【図２】
0003961787.tif 000003
【図３】
0003961787.tif 000004
【図４】
0003961787.tif 000005
【図５】
0003961787.tif 000006
【図６】
0003961787.tif 000007
【図７】
0003961787.tif 000008
【図８】
0003961787.tif 000009
【図９】
0003961787.tif 000010
【図１０】
0003961787.tif 000011
【図１１】
0003961787.tif 000012
【図１２】
0003961787.tif 000013
【図１３】
0003961787.tif 000014
【図１４】
0003961787.tif 000015
【図１５】
0003961787.tif 000016
【図１６】
0003961787.tif 000017
【図１７】
0003961787.tif 000018
【図１８】
0003961787.tif 000019
【図１９】
0003961787.tif 000020
【図２０】
0003961787.tif 000021
【図２１】
0003961787.tif 000022
【図２２】
0003961787.tif 000023
【図２３】
0003961787.tif 000024
【図２４】
0003961787.tif 000025
【図２５】
0003961787.tif 000026