(57)【要約】  ソフトウェア実行時の条件の差による影響を表示可能な技術を提供することを目的とする。影響分析装置は、異なる複数の条件下でそれぞれ収集された複数の実行トレースを蓄積する実行トレース蓄積部と、実行トレース蓄積部に蓄積された複数の実行トレースに基づいて、複数のイベントと、複数のイベントのそれぞれの時刻の平均及びばらつきとを含む代表実行トレースを算出する代表実行トレース算出部と、代表実行トレース算出部で算出された代表実行トレースを蓄積する代表実行トレース蓄積部とを備える。
2021064887.tif 000002
【特許請求の範囲】
【請求項１】
ソフトウェアにおける関数の入口イベント及び出口イベントを含む複数のイベントと、前記複数のイベントの時刻とを含む複数の実行トレースを、異なる複数の条件下でそれぞれ収集する実行トレース収集部と、
前記実行トレース収集部で収集された前記複数の実行トレースを蓄積する実行トレース蓄積部と、
前記実行トレース蓄積部に蓄積された前記複数の実行トレースに基づいて、前記複数のイベントと、前記複数のイベントのそれぞれの前記時刻の平均及びばらつきとを含む代表実行トレースを算出する代表実行トレース算出部と、
前記代表実行トレース算出部で算出された前記代表実行トレースを蓄積する代表実行トレース蓄積部と、
前記代表実行トレース蓄積部に蓄積された前記代表実行トレースを出力する出力部と
を備える、影響分析装置。
【請求項２】
請求項１に記載の影響分析装置であって、
前記代表実行トレース蓄積部に蓄積された前記代表実行トレースに含まれる前記平均を基準とする許容範囲を規定し、前記実行トレース蓄積部に蓄積された前記複数の実行トレースのうち、前記時刻が前記許容範囲外である前記実行トレースを抽出する抽出部をさらに備え、
前記出力部は、前記抽出部で抽出された前記実行トレースを、抽出に用いた前記代表実行トレースに重畳して表示する、影響分析装置。
【請求項３】
請求項２に記載の影響分析装置であって、
前記代表実行トレース蓄積部は、
互いの前記複数のイベントの組み合わせが異なる複数の前記代表実行トレースを蓄積し、
前記抽出部は、
前記代表実行トレース蓄積部に蓄積された前記複数の代表実行トレースのうち、前記実行トレース蓄積部に蓄積された前記複数の実行トレースと前記複数のイベントの組み合わせの差が最も小さい前記代表実行トレースを抽出に用いる、影響分析装置。
【請求項４】
請求項１から請求項３のうちのいずれか１項に記載の影響分析装置であって、
前記実行トレース蓄積部に蓄積される前記実行トレースを、前記実行トレース収集部で収集された前記実行トレースのうち、予め指定された開始イベントと予め指定された終了イベントとを有する前記実行トレースに制限する制限部をさらに備える、影響分析装置。
【請求項５】
請求項１から請求項４のうちのいずれか１項に記載の影響分析装置であって、
前記実行トレースは変数をさらに含み、
変数の種類を減らす写像を用いて、前記実行トレース収集部で収集された前記実行トレースの前記変数を変換する変換部をさらに備える、影響分析装置。
【請求項６】
実行トレース収集部が、ソフトウェアにおける関数の入口イベント及び出口イベントを含む複数のイベントと、前記複数のイベントの時刻とを含む複数の実行トレースを、異なる複数の条件下でそれぞれ収集し、
実行トレース蓄積部が、前記実行トレース収集部で収集された前記複数の実行トレースを蓄積し、
代表実行トレース算出部が、前記実行トレース蓄積部に蓄積された前記複数の実行トレースに基づいて、前記複数のイベントと、前記複数のイベントのそれぞれの前記時刻の平均及びばらつきとを含む代表実行トレースを算出し、
代表実行トレース蓄積部が、前記代表実行トレース算出部で算出された前記代表実行トレースを蓄積し、
出力部が、前記代表実行トレース蓄積部に蓄積された前記代表実行トレースを出力する、影響分析方法。
【請求項７】
ソフトウェアにおける関数の入口イベント及び出口イベントを含む複数のイベントと、前記複数のイベントの時刻とを含む複数の実行トレースを、異なる複数の条件下でそれぞれ収集する手段と、
収集された前記複数の実行トレースを蓄積する手段と、
蓄積された前記複数の実行トレースに基づいて、前記複数のイベントと、前記複数のイベントのそれぞれの前記時刻の平均及びばらつきとを含む代表実行トレースを算出する手段と、
算出された前記代表実行トレースを蓄積する手段と、
蓄積された前記代表実行トレースを出力する手段と、をコンピュータに実行させる、影響分析プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェアの影響分析装置、影響分析方法、及び、影響分析プログラムに関する。
【背景技術】
【０００２】
ソースコードなどの変更によるソフトウェアへの影響を分析する影響分析装置について様々な技術が提案されている。例えば特許文献１には、関数や変数の依存関係から影響範囲を抽出する技術が提案されている。例えば特許文献２には、ソースコードにタグを挿入して得られる実行トレースを計測し、関数の実行時間を収集する技術が提案されている。【０００３】
例えば特許文献３には、関数名をメモリに保持する技術が提案され、例えば特許文献４には、関数呼び出し履歴を比較する技術が提案されている。例えば特許文献５には、適当な間隔でマシン命令のシーケンスを多数採取するサンプリングトレースが提案されている。例えば特許文献６には、ジョブの種類とその実行時間とを含むジョブ履歴の外れ度合いを評価する技術が提案されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１５−１１６６１号公報
【特許文献２】特開平１１−３１６６９６号公報
【特許文献３】特開２００１−２８２５７６号公報
【特許文献４】特開２００６−０５３７８８号公報
【特許文献５】特開２００４−０７８３３８号公報
【特許文献６】国際公開第２０１８／１４６７１４号
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、従来の影響分析装置は、ソフトウェアの実行を考慮せずに静的解析で得られた依存関係を用いる。このため、処理内容の変更による影響を確認できても、ソフトウェア実行時の条件の差による影響を確認することができないという問題があった。【０００６】
そこで、本発明は、上記のような問題点を鑑みてなされたものであり、ソフトウェア実行時の条件の差による影響を表示可能な技術を提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明に係る影響分析装置は、ソフトウェアにおける関数の入口イベント及び出口イベントを含む複数のイベントと、前記複数のイベントの時刻とを含む複数の実行トレースを、異なる複数の条件下でそれぞれ収集する実行トレース収集部と、前記実行トレース収集部で収集された前記複数の実行トレースを蓄積する実行トレース蓄積部と、前記実行トレース蓄積部に蓄積された前記複数の実行トレースに基づいて、前記複数のイベントと、前記複数のイベントのそれぞれの前記時刻の平均及びばらつきとを含む代表実行トレースを算出する代表実行トレース算出部と、前記代表実行トレース算出部で算出された前記代表実行トレースを蓄積する代表実行トレース蓄積部と、前記代表実行トレース蓄積部に蓄積された前記代表実行トレースを出力する出力部とを備える。
【発明の効果】
【０００８】
本発明によれば、異なる複数の条件下でそれぞれ収集された複数の実行トレースに基づいて、複数のイベントのそれぞれの時刻の平均及びばらつきを含む代表実行トレースを算出して表示する。このような構成によれば、ソフトウェア実行時の条件の差による影響を表示することができる。【０００９】
本発明の目的、特徴、態様及び利点は、以下の詳細な説明と添付図面とによって、より明白となる。
【図面の簡単な説明】
【００１０】
【図１】実施の形態１に係る影響分析装置の構成を示すブロック図である。
【図２】実施の形態１に係る実行トレースの例を示す図である。
【図３】実施の形態１に係る代表実行トレースの例を示す図である。
【図４】実施の形態１に係る影響分析装置の表示例を示す図である。
【図５】実施の形態１に係る影響分析装置の動作を示すフローチャートである。
【図６】実施の形態１に係る影響分析装置の動作を示すフローチャートである。
【図７】実施の形態２に係る影響分析装置の構成を示すブロック図である。
【図８】実施の形態２に係る影響分析装置の動作を示すフローチャートである。
【図９】実施の形態２に係る影響分析装置の動作を示すフローチャートである。
【図１０】実施の形態２に係る影響分析装置の動作例を説明するための図である。
【図１１】実施の形態２に係る影響分析装置の動作例を説明するための図である。
【図１２】実施の形態２に係る影響分析装置の表示例を示す図である。
【図１３】実施の形態３に係る影響分析装置の構成を示すブロック図である。
【図１４】実施の形態３に係る開始イベント及び終了イベントの例を示す図である。
【図１５】実施の形態３に係る影響分析装置の動作例を説明するための図である。
【図１６】実施の形態３に係る影響分析装置の動作を示すフローチャートである。
【図１７】実施の形態４に係る影響分析装置の構成を示すブロック図である。
【図１８】実施の形態４に係る写像の規則の例を説明するための図である。
【図１９】実施の形態４に係る影響分析装置の動作例を説明するための図である。
【図２０】実施の形態４に係る影響分析装置の動作を示すフローチャートである。
【発明を実施するための形態】
【００１１】
＜実施の形態１＞
図１は、本発明の実施の形態１に係る影響分析装置の構成を示すブロック図である。この影響分析装置は、ソースコードなどの変更によるソフトウェアの性能への影響を分析する装置である。以下、当該影響を「変更影響」と記し、変更前のソフトウェアを「変更前ソフトウェア」と記し、変更後のソフトウェアを「変更後ソフトウェア」と記して説明する。
【００１２】
図１に示す影響分析装置は、実行トレース収集部１と、実行トレース蓄積部２と、代表実行トレース算出部３と、代表実行トレース蓄積部４と、表示部５とを備える。実行トレース蓄積部２の入力は、実行トレース収集部１の出力と接続される。代表実行トレース算出部３の入力は、実行トレース蓄積部２の出力と接続される。代表実行トレース蓄積部４の入力は、代表実行トレース算出部３の出力と接続される。表示部５の入力は、代表実行トレース蓄積部４の出力と接続される。
【００１３】
実行トレース収集部１は、複数の実行トレースを、異なる複数の条件下でそれぞれ収集するツールである。詳細は後述するが、実行トレースは、ソフトウェアにおける１つ以上の関数の入口イベント及び出口イベントを含む複数のイベントと、複数のイベントの時刻とを含むイベント系列である。なお、入口イベント及び出口イベントは、それぞれ入口の通過イベント及び出口の通過イベントと呼ぶこともできる。時刻は、ある時点からある時点までの測定時間であり、例えばイベントの時刻は、基準時点からイベントが発生した時点までの測定時間である。
【００１４】
実行トレース収集部１は、例えば、ソースコードに追加のコードを挿入する方式のツール、つまりインストゥルメントする方式のツールであってもよい。または、実行トレース収集部１は、例えば、マイクロプロセッサのマクロセルから得られる命令トレースを収集するデバッガを有し、ソースコードに人手でロギング関数を埋め込んだログ生成機能を有するツールであってもよい。または、実行トレース収集部１は、例えば、監視対象のイベントに比べて短いサンプリング間隔で履歴を取得可能なサンプリングトレースツールであってもよい。
【００１５】
図２は、実行トレース６の例を示す図である。実行トレース６は、関数の入口イベント及び出口イベントを含む複数のイベントと、当該複数のイベントが行われる時刻とを含む。時刻は、例えば、トレースを開始してからの経過時間であってもよいし、イベントとその直前のイベントとの差分時間であってもよい。図２の例ではｆｕｎｃＡ関数と、ｆｕｎｃＡ関数から呼び出されるｆｕｎｃＢ関数と、ｆｕｎｃＡ関数から呼び出されるｆｕｎｃＣ関数とについて、経過時間が入口イベント及び出口イベントの時刻として示され、括弧内に差分時間が示されている。
【００１６】
ｆｕｎｃＡ＠ｅｎｔｅｒはｆｕｎｃＡ関数の入口を示し、ｆｕｎｃＡ＠ｌｅａｖｅはｆｕｎｃＡ関数の出口を示す。同様に、ｆｕｎｃＢ＠ｅｎｔｅｒはｆｕｎｃＢ関数の入口を示し、ｆｕｎｃＢ＠ｌｅａｖｅはｆｕｎｃＢ関数の出口を示し、ｆｕｎｃＣ＠ｅｎｔｅｒはｆｕｎｃＣ関数の入口を示し、ｆｕｎｃＣ＠ｌｅａｖｅはｆｕｎｃＣ関数の出口を示す。
【００１７】
図２の例では、まずｆｕｎｃＡ関数が０ｎｓ（０ｎｓ）で処理を開始し、ｆｕｎｃＡ関数はｆｕｎｃＢ関数を７０ｎｓ（７０ｎｓ）で呼び出す。それから、ｆｕｎｃＢ関数は２８０ｎｓ（２１０ｎｓ）で処理を終え、ｆｕｎｃＡ関数が再び処理を行い、ｆｕｎｃＡ関数はｆｕｎｃＣ関数を３３０ｎｓ（５０ｎｓ）で呼び出す。そして、ｆｕｎｃＣ関数は５００ｎｓ（１７０ｎｓ）で処理を終え、ｆｕｎｃＡ関数が再び処理を行って６００ｎｓ（１００ｎｓ）で処理を終える。
【００１８】
複数の実行トレース６は、それぞれ複数の条件下で処理対象のソフトウェアを動作させることによって収集され、後述するように実質的に代表実行トレース算出部３によって統計処理される。複数の条件は、例えば、連続稼動時間、他プロセス及び他タスクの数、並びに、他プロセス及び他タスクの起動環境の少なくともいずれか１つが互いに異なる。
【００１９】
実行トレース蓄積部２は、実行トレース収集部１で収集された複数の実行トレース６を蓄積する。複数の実行トレース６は互いに独立して実行トレース蓄積部２に蓄積されてもよいし、互いに区別可能な状態で連続的に繋げられたり結合されたりして実行トレース蓄積部２に蓄積されてもよい。
【００２０】
代表実行トレース算出部３は、実行トレース蓄積部２に蓄積された複数の実行トレース６に基づいて統計処理を行うことにより代表実行トレースを算出する。
【００２１】
図３は、代表実行トレース７の例を示す図である。代表実行トレース７は、複数のイベントと、当該複数のイベントのそれぞれの時刻の平均及びばらつきとを含むイベント系列である。代表実行トレース７の複数のイベントは、代表実行トレース７の算出に用いられる実行トレース６の複数のイベントと同じである。時刻は、上述と同様に、例えば経過時間であってもよいし、差分時間であってもよい。ばらつきは、例えば分散であってもよいし、標準偏差であってもよい。図３では、代表実行トレース７の時刻の平均及びばらつきの例として、平均差分時間及び分散差分時間が示されている。以下、時刻が差分時間であり、ばらつきが分散である場合について主に説明するが、時刻が経過時間である場合、及び、ばらつきが標準偏差である場合も以下と同様である。
【００２２】
図３の例では、まずｆｕｎｃＡ関数が０ｎｓ、分散０ｎｓで処理を開始し、ｆｕｎｃＡ関数はｆｕｎｃＢ関数を平均７０ｎｓ、分散１０ｎｓで呼び出す。そして、ｆｕｎｃＢ関数は平均２００ｎｓ、分散２０ｎｓで処理を終え、ｆｕｎｃＡ関数が再び処理を行い、ｆｕｎｃＡ関数はｆｕｎｃＣ関数を平均３０ｎｓ、分散１５ｎｓで呼び出す。そして、ｆｕｎｃＣ関数は平均１７０ｎｓ、分散１３ｎｓで処理を終え、ｆｕｎｃＡ関数が再び処理を行って１１０ｎｓ、分散１０ｎｓで処理を終える。
【００２３】
代表実行トレース蓄積部４は、代表実行トレース算出部３で算出された代表実行トレース７を蓄積する。
【００２４】
表示部５は、代表実行トレース蓄積部４に蓄積された代表実行トレース７を選択し、選択した代表実行トレース７をタイミング図の態様で表示する。以下、出力部は代表実行トレース７を表示する表示部５であるものとして説明するが、これに限ったものではなく、例えば代表実行トレース７を送信する通信部であってもよい。代表実行トレース７は、イベントごとに統計処理された平均及びばらつきを持つため、関数の遷移であるイベント遷移は、平均及びばらつきに対応するイベント発生間隔を持たせて表示される。
【００２５】
図４は、表示部５による代表実行トレース７の表示例である。図４では、ｆｕｎｃＡ関数がｆｕｎｃＢ関数及びｆｕｎｃＣ関数をこの順に呼び出す動作が示されている。表示部５は、関数の遷移を統計的処理の結果である代表実行トレース７に基づいて表示する。例えば、表示部５は、「平均差分時間±２×分散差分時間」のイベント発生間隔を持たせて、関数の遷移を表示する。図４の例では、表示部５は、ｆｕｎｃＡ関数などからｆｕｎｃＢ関数などへの関数遷移を２つの矢印で表現している。左側の矢印は「平均差分時間−２×分散差分時間」を示し、右側の矢印は「平均差分時間＋２×分散差分時間」を示している。
【００２６】
実行トレース収集部１、実行トレース蓄積部２、代表実行トレース算出部３、及び、代表実行トレース蓄積部４は、変更前ソフトウェア及び変更後ソフトウェアのそれぞれについて処理を行う。そして、表示部５が、変更前ソフトウェアの代表実行トレース７と、変更後ソフトウェアの代表実行トレース７とを表示することにより、ユーザは変更影響を確認することができる。
【００２７】
＜動作＞
図５は、本実施の形態１に係る影響分析装置が変更影響を可視化する動作を示すフローチャートである。以下、図５を用いてこの動作を説明する。
【００２８】
ステップＳ１〜ステップＳ３では、変更前ソフトウェアについて処理が行われる。まず、ステップＳ１にて、実行トレース収集部１は、変更前ソフトウェアの実行トレース６をある条件下で取得し、実行トレース蓄積部２に蓄積する。蓄積後、処理がステップＳ２に進む。
【００２９】
ステップＳ２にて、実行トレース収集部１は、実行トレース６を取得した回数が、予め指定された指定回数に達しているか否かを判定する。達していないと判定された場合には処理がステップＳ１に戻り、当該ステップＳ１にて実行トレース収集部１は、実行トレース６を別の条件下で取得し、実行トレース蓄積部２に蓄積する。達していると判定された場合には処理がステップＳ３に進む。以上により、異なる複数の条件下で収集された複数の実行トレース６が実行トレース蓄積部２に蓄積される。
【００３０】
ステップＳ３にて、代表実行トレース算出部３は、実行トレース蓄積部２に蓄積された変更前ソフトウェアの複数の実行トレース６に基づいて、変更前ソフトウェアの代表実行トレース７を算出し、代表実行トレース蓄積部４に蓄積する。蓄積後、処理がステップＳ４に進む。
【００３１】
ステップＳ４〜ステップＳ６では、変更後ソフトウェアについて、ステップＳ１〜ステップＳ３の処理と同様の処理が行われる。まず、ステップＳ４にて、実行トレース収集部１は、変更後ソフトウェアの実行トレース６をある条件下で取得し、実行トレース蓄積部２に蓄積する。蓄積後、処理がステップＳ５に進む。
【００３２】
ステップＳ５にて、実行トレース収集部１は、実行トレース６を取得した回数が、予め指定された指定回数に達しているか否かを判定する。達していないと判定された場合には処理がステップＳ４に戻り、当該ステップＳ４にて実行トレース収集部１は、実行トレース６を別の条件下で取得し、実行トレース蓄積部２に蓄積する。達していると判定された場合には処理がステップＳ６に進む。
【００３３】
ステップＳ６にて、代表実行トレース算出部３は、実行トレース蓄積部２に蓄積された変更後ソフトウェアの複数の実行トレース６に基づいて、変更後ソフトウェアの代表実行トレース７を算出し、代表実行トレース蓄積部４に蓄積する。蓄積後、処理がステップＳ７に進む。
【００３４】
ステップＳ７にて、表示部５は、代表実行トレース蓄積部４に蓄積された代表実行トレース７を表示する。表示部５は、例えば、変更前ソフトウェアの代表実行トレース７及び変更後ソフトウェアの代表実行トレース７を選択的または同時に表示する。これにより、ユーザは、変更前ソフトウェアと変更後ソフトウェアとの間で行われた変更によるソフトウェアの性能への影響を確認することができる。表示後、図５の動作が終了する。
【００３５】
図６は、ステップＳ３及びステップＳ６における、代表実行トレース７の算出動作を示すフローチャートである。以下、図６を用いてこの動作を説明する。
【００３６】
まず、ステップＳ１１にて、代表実行トレース算出部３は、イベント系列リストを空にする。その後、処理がステップＳ１２に進む。
【００３７】
ステップＳ１２にて、代表実行トレース算出部３は、実行トレース蓄積部２から実行トレース６を取得する。取得後、処理がステップＳ１３に進む。
【００３８】
ステップＳ１３にて、代表実行トレース算出部３は、ステップＳ１２で取得された実行トレース６のイベント系列がイベント系列リストに存在するか否かを確認する。存在しない場合にはステップＳ１４に処理が進み、存在する場合にはステップＳ１５に進む。
【００３９】
ステップＳ１４にて、代表実行トレース算出部３は、存在しなかったイベント系列をイベント系列リストに追加する。追加後、処理がステップＳ１５に進む。
【００４０】
ステップＳ１５にて、代表実行トレース算出部３は、イベント系列リストにあるイベント系列のイベントについて、直前のイベントから差分時間を算出する。算出後、処理がステップＳ１６に進む。
【００４１】
ステップＳ１６にて、代表実行トレース算出部３は、実行トレース蓄積部２に蓄積された複数の実行トレース６のうち未処理の実行トレース６が存在するか否かを判定する。存在すると判定された場合には処理がステップＳ１２に戻り、当該ステップＳ１２にて、代表実行トレース算出部３は、実行トレース蓄積部２から未処理の実行トレース６を取得する。存在しないと判定された場合には処理がステップＳ１７に進む。以上の動作により、同じ種類のイベントが、最大で複数の実行トレース６と同じ数だけ得られ、それぞれについて差分時間が算出される。例えば、図２のような実行トレース６がＮ（Ｎは１以上の自然数）個収集されていた場合には、ｆｕｎｃＡ＠ｅｎｔｅｒという１種類のイベントがＮ個得られ、それぞれについて差分時間が算出される。つまり、１種類のＮ（Ｎは１以上の自然数）個のイベントの差分時間が算出される。
【００４２】
ステップＳ１７にて、代表実行トレース算出部３は、イベント系列リストから１種類の１以上のイベントを取得する。取得後、処理がステップＳ１８に進む。
【００４３】
ステップＳ１８にて、代表実行トレース算出部３は、１種類の１以上のイベントの差分時間から、平均値及び分散値を算出する。代表実行トレース算出部３は、１種類のイベントと、当該１種類のイベントの平均差分時間及び分散差分時間とを含む代表実行トレース７を生成する。その後、処理がステップＳ１９に進む。
【００４４】
ステップＳ１９にて、代表実行トレース算出部３は、イベント系列リストに未処理のイベントが存在するか否かを判定する。存在すると判定された場合には処理がステップＳ１７に戻り、当該ステップＳ１７にて、代表実行トレース算出部３は、イベント系列リストから未処理のイベントを取得する。存在しないと判定された場合には、図６の動作が終了する。
【００４５】
＜実施の形態１のまとめ＞
以上のような本実施の形態１に係る影響分析装置によれば、異なる複数の条件下でそれぞれ収集された複数の実行トレース６に基づいて、複数のイベントのそれぞれの時刻の平均及びばらつきを含む代表実行トレース７を算出して表示する。このような構成によれば、ソフトウェアの性能に対するソフトウェア実行時の条件の差による影響、例えば、他タスクや他プロセス、割込などの影響を確認するための表示を行うことができる。したがって、ユーザは、当該影響を考慮した性能影響を確認することができる。
【００４６】
＜実施の形態２＞
実施の形態１によれば、ユーザは、代表実行トレース７の時刻の平均である平均時刻と実行トレース６の時刻とを比較し、代表実行トレース７からある程度の差を有する実行トレース６を特定することで、その差の原因を調査することができる。しかしながら、代表実行トレース７のイベント系列が長い場合や、複数の実行トレース６の数が多い場合には、その作業は困難になる。このことに鑑みて、以下の説明で明らかとなるように、本発明の実施の形態２に係る影響分析装置では、代表実行トレース７からある程度の差を有する実行トレース６を自動的に抽出することが可能となっている。
【００４７】
図７は、本実施の形態２に係る影響分析装置の構成を示すブロック図である。以下、本実施の形態２に係る構成要素のうち、上述の構成要素と同じまたは類似する構成要素については同じまたは類似する参照符号を付し、異なる構成要素について主に説明する。
【００４８】
図７に示す影響分析装置の構成は、実施の形態１に係る影響分析装置の構成（図１）に、抽出部である実行トレース外れ値抽出部８が追加された構成と同様である。実行トレース蓄積部２の入力は、実行トレース収集部１の出力と接続される。代表実行トレース算出部３の入力は、実行トレース蓄積部２の出力と接続される。代表実行トレース算出部３の入力は、実行トレース蓄積部２の出力と接続される。代表実行トレース蓄積部４の入力は、代表実行トレース算出部３の出力と接続される。実行トレース外れ値抽出部８の入力は、実行トレース蓄積部２の出力、及び、代表実行トレース蓄積部４の出力と接続される。表示部５の入力は、代表実行トレース蓄積部４の出力、及び、実行トレース外れ値抽出部８の出力と接続される。
【００４９】
本実施の形態２では、代表実行トレース蓄積部４は、互いの複数のイベントの組み合わせが異なる複数の代表実行トレース７（例えば図１０のトレースＡ〜Ｄに類似するトレース）を蓄積している。ここでいう複数のイベントの組み合わせが異なることは、イベントの種類及び個数の少なくともいずれか１つが異なることを含む。
【００５０】
実行トレース外れ値抽出部８は、代表実行トレース蓄積部４に蓄積された複数の代表実行トレース７のうち、実行トレース蓄積部２に蓄積された複数の実行トレース６と複数のイベントの組み合わせの差が最も小さい代表実行トレース７を取得する。以下、実行トレース外れ値抽出部８で取得された代表実行トレース７を「最近傍系列の代表実行トレース７」と記すこともある。
【００５１】
実行トレース外れ値抽出部８は、最近傍系列の代表実行トレース７に含まれる平均である平均時刻を基準とする許容範囲を規定し、実行トレース蓄積部２に蓄積された複数の実行トレース６のうち、時刻が当該許容範囲外である実行トレース６を抽出する。以下、実行トレース外れ値抽出部８で抽出された実行トレース６を「外れ値の実行トレース６」と記すこともある。
【００５２】
表示部５は、実行トレース外れ値抽出部８より抽出された外れ値の実行トレース６を、抽出に用いた最近傍系列の代表実行トレース７に重畳して表示する。これにより、ユーザは、代表実行トレース７と、当該代表実行トレース７からある程度の差を有する実行トレース６とを確認することができる。
【００５３】
＜動作＞
図８にて、本実施の形態２に係る影響分析装置が変更影響を可視化する動作を示すフローチャートである。以下、図８を用いてこの動作を説明する。
【００５４】
ステップＳ２１〜ステップＳ２３では、変更前ソフトウェアについて、実施の形態１で説明した図５のステップＳ１〜ステップＳ３の処理と同様の処理が行われる。まず、ステップＳ２１にて、実行トレース収集部１は、変更前ソフトウェアの実行トレース６をある条件下で取得し、実行トレース蓄積部２に蓄積する。蓄積後、処理がステップＳ２２に進む。
【００５５】
ステップＳ２２にて、実行トレース収集部１は、実行トレース６を取得した回数が、予め指定された指定回数に達しているか否かを判定する。達していないと判定された場合には処理がステップＳ２１に戻り、当該ステップＳ２１にて実行トレース収集部１は、実行トレース６を別の条件下で取得し、実行トレース蓄積部２に蓄積する。達していると判定された場合には処理がステップＳ２３に進む。これにより、変更前ソフトウェアの複数の実行トレース６が実行トレース蓄積部２に蓄積される。
【００５６】
ステップＳ２３にて、代表実行トレース算出部３は、実行トレース蓄積部２に蓄積された変更前ソフトウェアの複数の実行トレース６に基づいて、変更前ソフトウェアの代表実行トレース７を算出し、代表実行トレース蓄積部４に蓄積する。
【００５７】
以上の処理は、複数のイベントの組み合わせが互いに異なる複数の実行トレース６（例えば図１０のトレースＡ〜Ｄに類似するトレース）について行われる。その結果、変更前ソフトウェアについて、互いの複数のイベントの組み合わせが異なる複数の代表実行トレース７が代表実行トレース蓄積部４に蓄積される。蓄積後、処理がステップＳ２４に進む。
【００５８】
ステップＳ２４及びステップＳ２５では、変更後ソフトウェアについて、ステップＳ２１及びステップＳ２２と同様の処理が行われる。これにより、変更後ソフトウェアの複数の実行トレース６が実行トレース蓄積部２に蓄積される。蓄積後、処理がステップＳ２６に進む。
【００５９】
ステップＳ２６にて、実行トレース外れ値抽出部８は、代表実行トレース蓄積部４に蓄積された変更前ソフトウェアの複数の代表実行トレース７から、変更前ソフトウェアの最近傍系列の代表実行トレース７を取得する。そして、実行トレース外れ値抽出部８は、変更前ソフトウェアの最近傍系列の代表実行トレース７と、実行トレース蓄積部２に蓄積された変更後ソフトウェアの複数の実行トレース６とを比較し、変更後ソフトウェアについて外れ値の実行トレース６を抽出する。それから、表示部５は、抽出された外れ値の実行トレース６を、最近傍系列の代表実行トレース７に重畳して表示する。これにより、ユーザは、変更前ソフトウェアの代表実行トレース７と、当該代表実行トレース７からある程度の差を有する変更後ソフトウェアの実行トレース６とを確認することができる。
【００６０】
図９は、ステップＳ２６における、最近傍系列の代表実行トレース７の取得動作、並びに、外れ値の実行トレース６の抽出動作及び表示動作を示すフローチャートである。以下、図９を用いてこれらの動作を説明する。
【００６１】
まず、ステップＳ３１にて、実行トレース外れ値抽出部８は、代表実行トレース蓄積部４から代表実行トレース７を取得する。取得後、処理がステップＳ３２に進む。
【００６２】
ステップＳ３２にて、実行トレース外れ値抽出部８は、ステップＳ３１で取得された代表実行トレース７と、実行トレース蓄積部２に蓄積された複数の実行トレース６との間の、複数のイベントの組み合わせの差を算出する。算出後、処理がステップＳ３３に進む。
【００６３】
ステップＳ３３にて、実行トレース外れ値抽出部８は、ステップＳ３２で算出された差が、最近傍系列の代表実行トレース７について同様に算出された差よりも小さいか否かを判定する。小さいと判定された場合には処理がステップＳ３４に進み、小さくないと判定された場合には処理がステップＳ３５に進む。
【００６４】
ステップＳ３４にて、実行トレース外れ値抽出部８は、最近傍系列の代表実行トレース７を、ステップＳ３１で取得された代表実行トレース７に更新する。更新後、処理がステップＳ３５に進む。
【００６５】
ステップＳ３５にて、実行トレース外れ値抽出部８は、代表実行トレース蓄積部４に蓄積された複数の代表実行トレース７のうち未処理の代表実行トレース７が存在するか否かを判定する。存在すると判定された場合には処理がステップＳ３１に戻り、当該ステップＳ３１にて、実行トレース外れ値抽出部８は、代表実行トレース蓄積部４から未処理の代表実行トレース７を取得する。存在しないと判定された場合には処理がステップＳ３６に進む。
【００６６】
図１０は、ステップＳ３２〜ステップＳ３５の動作例を説明するための図である。図１０の例では、基準トレースは、実行トレース蓄積部２に蓄積された実行トレース６であり、トレースＡは、１回目のステップＳ３１で取得された代表実行トレース７であり、…、トレースＤは、４回目のステップＳ３１で取得された代表実行トレース７である。以下、複数のイベントの組み合わせの差を「イベントの差」と略して説明する。
【００６７】
基準トレースのイベント系列では、ｆｕｎｃＡ関数が呼び出され、ｆｕｎｃＡ関数の中でｆｕｎｃＢ関数及びｆｕｎｃＣ関数が呼び出されている。トレースＡのイベント系列は、基準トレースのイベント系列と等しいため、イベントの差は「０」となる。
【００６８】
トレースＢのイベント系列では、ｆｕｎｃＡ関数の中でｆｕｎｃＣ関数のみが呼び出されている。つまり、トレースＢのイベント系列では、ｆｕｎｃＢ関数の呼び出しに伴うｆｕｎｃＢ関数の入口イベント及び出口イベントがないため、イベントの差は「２」となる。
【００６９】
トレースＣのイベント系列では、ｆｕｎｃＡ関数の中でｆｕｎｃＢ関数及びｆｕｎｃＤ関数が呼び出されている。つまり、トレースＣのイベント系列では、ｆｕｎｃＣ関数ではなくｆｕｎｃＤ関数が呼び出され、ｆｕｎｃＣ関数の入口イベント及び出口イベントとｆｕｎｃＤ関数の入口イベント及び出口イベントとが異なるため、イベントの差は「２」となる。
【００７０】
トレースＤのイベント系列では、ｆｕｎｃＡ関数の中でｆｕｎｃＢ関数、ｆｕｎｃＣ関数、及び、ｆｕｎｃＤ関数が呼び出されている。ｆｕｎｃＤ関数が呼び出される分だけ、ｆｕｎｃＤ関数の入口イベント及び出口イベントが増えているため、イベントの差は「２」となる。
【００７１】
実行トレース外れ値抽出部８は、以上の例についてステップＳ３２〜ステップＳ３５の処理を行った場合、トレースＡ〜Ｄのうち実行トレース６とのイベントの差が最も小さいトレースＡを、最近傍系列の代表実行トレース７として取得する。
【００７２】
なお、以上の説明では、代表実行トレース７と比較される、複数の実行トレース６同士の複数のイベントの組み合わせは互いに同じである場合について説明したが、互いに異なる場合もある。このような場合には、例えば、実行トレース外れ値抽出部８は、各実行トレース６と、代表実行トレース７とのイベントの差を求め、複数の実行トレース６について当該差を合計した値が最も小さくなる代表実行トレース７を、最近傍系列の代表実行トレース７として取得すればよい。例えば、複数の実行トレース６として、図１１の第１基準トレースが１つ、図１１の第２基準トレースが５つ存在する場合、トレースＡ、トレースＢ、トレースＣ、トレースＤのイベントの差は、それぞれ２、１０、１４、１４となる。このような場合に、実行トレース外れ値抽出部８は、トレースＡ〜Ｄのうち実行トレース６とのイベントの差が最も小さいトレースＡを、最近傍系列の代表実行トレース７として取得すればよい。
【００７３】
図９のステップＳ３６以降の処理は、実行トレース蓄積部２に蓄積された複数の実行トレース６のそれぞれについて行われる。
【００７４】
まず、ステップＳ３６にて、実行トレース外れ値抽出部８は、最近傍系列の代表実行トレース７からイベントを取得する。その後、処理がステップＳ３７に進む。
【００７５】
ステップＳ３７にて、実行トレース外れ値抽出部８は、ステップＳ３６で取得されたイベントの平均時刻を基準とする許容範囲を規定する。例えば、実行トレース外れ値抽出部８は、代表実行トレース７に含まれる分散を、分散時刻とした場合、許容範囲を、平均時刻±（分散時間×２）の範囲として規定する。実行トレース外れ値抽出部８は、実行トレース６のイベントの時刻が許容範囲内に収まっているか否かを判定する。収まっていると判定された場合には、処理がステップＳ３８に進む。収まっていないと判定された場合には、処理がステップＳ３９に進む。
【００７６】
ステップＳ３８にて、実行トレース外れ値抽出部８は、最近傍系列の代表実行トレース７のうち未処理のイベントが存在するか否かを判定する。存在すると判定された場合には処理がステップＳ３６に戻り、当該ステップＳ３６にて、実行トレース外れ値抽出部８は、最近傍系列の代表実行トレース７から未処理のイベントを取得する。存在しないと判定された場合には、図９の動作が終了する。
【００７７】
ステップＳ３９にて、実行トレース外れ値抽出部８は、ステップＳ３７で判定された実行トレース６を外れ値の実行トレース６として決定し、表示部５は、外れ値の実行トレース６を、抽出に用いた最近傍系列の代表実行トレース７に重畳して表示する。表示後、図９の動作が終了する。
【００７８】
図１２は、ステップＳ３９の表示例を示す図である。点線は最近傍系列の代表実行トレース７を示し、実線は外れ値の実行トレース６を示す。図１２に示されるような表示によれば、外れ値の実行トレース６のうち、ｆｕｎｃＡ関数からｆｕｎｃＢ関数に遷移するタイミング、及び、ｆｕｎｃＡ関数からｆｕｎｃＣ関数に遷移するタイミングが、代表実行トレース７の許容範囲から外れていることが読み取れる。
【００７９】
＜実施の形態２のまとめ＞
以上のような本実施の形態２に係る影響分析装置によれば、実行トレース蓄積部２に蓄積された複数の実行トレース６のうち、時刻が許容範囲外である実行トレース６を抽出して表示する。このような構成によれば、ユーザは、代表実行トレース７と、当該代表実行トレース７からある程度の差を有する実行トレース６とを確認することができる。このため、実行トレース６を代表実行トレース７から異ならせた原因の調査の容易化が期待できる。
【００８０】
なお以上の説明において、実行トレース外れ値抽出部８は、最近傍系列の代表実行トレース７の平均時刻との差が一定値以上である実行トレース６を抽出し、表示部５は当該実行トレース６を表示したが、これに限ったものではない。例えば、実行トレース外れ値抽出部８は、最近傍系列の代表実行トレース７に対して複数のイベントの組み合わせの差が一定数以上である実行トレース６を抽出し、表示部５は当該実行トレース６を表示してもよい。このような構成によっても、異ならせた原因の調査の容易化が期待できる。
【００８１】
＜実施の形態３＞
実施の形態１及び実施の形態２では、実行トレース収集部１で収集される実行トレース６は、開始イベント及び終了イベントが同一であることを前提とした。もし、実行トレース収集部１が収集する実行トレース６の開始イベント及び終了イベントが同一でない場合には、実行トレース６同士を正しく比較できない可能性がある。このことに鑑みて、以下の説明で明らかとなるように、本発明の実施の形態３に係る影響分析装置では、複数の実行トレース６のイベントの開始及び終了を揃えることが可能となっている。
【００８２】
図１３は、本実施の形態３に係る影響分析装置の構成を示すブロック図である。以下、本実施の形態３に係る構成要素のうち、上述の構成要素と同じまたは類似する構成要素については同じまたは類似する参照符号を付し、異なる構成要素について主に説明する。
【００８３】
図１３に示す影響分析装置は、実施の形態２に係る影響分析装置の構成（図７）に、制限部であるイベント制限部１０が追加された構成と同様である。
【００８４】
イベント制限部１０の入力は実行トレース収集部１の出力と接続される。実行トレース蓄積部２の入力はイベント制限部１０の出力と接続される。代表実行トレース算出部３の入力は、実行トレース蓄積部２の出力と接続される。代表実行トレース蓄積部４の入力は、代表実行トレース算出部３の出力と接続される。実行トレース外れ値抽出部８の入力は、実行トレース蓄積部２の出力、及び、代表実行トレース蓄積部４の出力と接続される。表示部５の入力は、代表実行トレース蓄積部４の出力、及び、実行トレース外れ値抽出部８の出力と接続される。
【００８５】
イベント制限部１０は、実行トレース蓄積部２に蓄積される実行トレース６を、実行トレース収集部１で収集された実行トレース６のうち、予め指定された開始イベントと予め指定された終了イベントとを有する実行トレース６に制限する。実行トレース収集部１で収集された実行トレース６に、開始イベントと同じイベントから終了イベントと同じイベントまでのイベント系列が１つ以上存在する場合、イベント制限部１０は、イベント系列を実行トレース６として、実行トレース蓄積部２に格納する。実行トレース収集部１で収集された実行トレース６に、開始イベントと同じイベントから終了イベントと同じイベントまでのイベント系列が１つも存在しない場合、イベント制限部１０は実行トレース６を実行トレース蓄積部２に格納しない。
【００８６】
図１４は、イベント制限部１０で指定される開始イベント及び終了イベントの例を示す図である。図１４では、開始イベントにｆｕｎｃＡ関数の入口イベントが指定され、終了イベントにｆｕｎｃＡ関数の出口イベントが指定されている。
【００８７】
図１５は、図１４の開始イベント及び出口イベントを用いたイベント制限の一例を説明するための図である。入力イベント系列、つまり実行トレース収集部１で収集された実行トレース６では、ｆｕｎｃＥ関数がｆｕｎｃＡ関数を呼び出した後、ｆｕｎｃＡ関数がｆｕｎｃＢ関数及びｆｕｎｃＣ関数をこの順に呼び出している。図１４のように、ｆｕｎｃＡ関数の入口イベント及び出口イベントが開始イベント及び終了イベントに指定された場合、イベント制限部１０は、ｆｕｎｃＡ関数がｆｕｎｃＢ関数及びｆｕｎｃＣ関数をこの順に呼び出しているイベント系列のみを、出力イベント系列として出力する。これにより、図１４及び図１５の例では、ｆｕｎｃＥ関数の入口イベント及び出口イベントを含まないイベント系列が、実行トレース６として実行トレース蓄積部２に蓄積される。
【００８８】
＜動作＞
図１６は、イベント制限部１０の動作を示すフローチャートである。以下、図１６を用いてこの動作を説明する。
【００８９】
まずステップＳ４１にて、イベント制限部１０は出力フラグを無効に設定する。その後、処理がステップＳ４２に進む。
【００９０】
ステップＳ４２にて、イベント制限部１０は、実行トレース収集部１で収集された実行トレース６からイベントを取得する。その後、処理がステップＳ４３に進む。
【００９１】
ステップＳ４３にて、イベント制限部１０は、出力フラグが有効に設定されているか否かを判定する。出力フラグが有効に設定されていると判定された場合には処理がステップＳ４７に進み、出力フラグが無効に設定されていると判定された場合には処理がステップＳ４４に進む。
【００９２】
ステップＳ４４にて、イベント制限部１０は、ステップＳ４２で取得されたイベントが開始イベントと一致するか否かを判定する。一致すると判定された場合には処理がステップＳ４５に進み、一致しないと判定された場合には処理がステップＳ５０に進む。
【００９３】
ステップＳ４５にて、イベント制限部１０は、出力フラグを有効に設定する。その後、処理がステップＳ４６に進む。
【００９４】
ステップＳ４６にて、イベント制限部１０は、新規の実行トレース６を作成する。その後、処理がステップＳ４７に進む。
【００９５】
ステップＳ４７にて、イベント制限部１０は、作成している実行トレース６に、ステップＳ４２で取得されたイベントを含める。その後、処理がステップＳ４８に進む。
【００９６】
ステップＳ４８にて、イベント制限部１０は、ステップＳ４２で取得されたイベントが終了イベントと一致するか否かを判定する。一致すると判定された場合には処理がステップＳ４９に進み、一致しないと判定された場合には処理がステップＳ５０に進む。
【００９７】
ステップＳ４９にて、イベント制限部１０は、出力フラグを無効に設定する。その後、処理がステップＳ５０に進む。
【００９８】
ステップＳ５０にて、イベント制限部１０は、実行トレース収集部１で収集された実行トレース６に未処理のイベントが存在するか否かを判定する。存在すると判定された場合には処理がステップＳ４２に戻り、当該ステップＳ４２にて、イベント制限部１０は、実行トレース収集部１で収集された実行トレース６から未処理のイベントを取得する。存在しないと判定された場合には図１６の動作が終了する。
【００９９】
＜実施の形態３のまとめ＞
以上のような本実施の形態３に係る影響分析装置によれば、実行トレース蓄積部２に蓄積される実行トレース６を、予め指定された開始イベントと予め指定された終了イベントとを有する実行トレース６に制限する。このような構成によれば、イベント系列が所望のイベント系列と異なる、実行トレース６ひいては代表実行トレース７の処理を抑制することができる。このため、影響分析装置の処理効率化、及びユーザの作業効率化を高めることができる。
【０１００】
＜実施の形態４＞
実施の形態３では、関数遷移のイベント系列でのみ、実行トレース６ひいては代表実行トレース７を分類しており、状態などの変数の違いによって、実行トレース６ひいては代表実行トレース７を分類していない。実施の形態３において、実行トレース収集部１で収集される実行トレース６が変数を含むと、変数の離散値に対して、イベントの種類が細分化される。これにより、ある２つのイベントの内容が実質的に同じであっても、それらイベント内の変数が異なることによって、それらイベントは互いに異なるものとして処理されることがある。その結果、実行トレース６ひいては代表実行トレース７の数が不要に増加する可能性がある。このことに鑑みて、以下の説明で明らかとなるように、本発明の実施の形態４に係る影響分析装置では、変数に関して実行トレース６ひいては代表実行トレース７の処理を抑制することが可能となっている。
【０１０１】
図１７は、本実施の形態４に係る影響分析装置の構成を示すブロック図である。以下、本実施の形態４に係る構成要素のうち、上述の構成要素と同じまたは類似する構成要素については同じまたは類似する参照符号を付し、異なる構成要素について主に説明する。
【０１０２】
図１７に示す影響分析装置は、実施の形態３に係る影響分析装置の構成（図１３）に、変換部であるイベント変換部１２が追加された構成と同様である。
【０１０３】
イベント変換部１２の入力は実行トレース収集部１の出力と接続される。イベント制限部１０の入力はイベント変換部１２の出力と接続される。実行トレース蓄積部２の入力はイベント制限部１０の出力と接続される。代表実行トレース算出部３の入力は、実行トレース蓄積部２の出力と接続される。代表実行トレース蓄積部４の入力は、代表実行トレース算出部３の出力と接続される。実行トレース外れ値抽出部８の入力は、実行トレース蓄積部２の出力、及び、代表実行トレース蓄積部４の出力と接続される。表示部５の入力は、代表実行トレース蓄積部４の出力、及び、実行トレース外れ値抽出部８の出力と接続される。
【０１０４】
本実施の形態４では、実行トレース６は変数を含んでいる。そして、実行トレース収集部１で収集された実行トレース６の変数が、予め指定された変数を含む場合、イベント変換部１２は、予め指定された変数が取り得る離散値の種類を減らす写像を用いて、当該実行トレース６の変数を変換する。一方、実行トレース収集部１で収集された実行トレース６の変数が、予め指定された変数を含まない場合、イベント変換部１２は、当該実行トレース６をそのまま出力する。
【０１０５】
図１８は、イベント変換部１２で用いる写像の規則の例を示す図である。図１８では、変数ｘを０，１，２のいずれかに写像する規則として、それぞれｘ＜０、０≦ｘ＜１５、１５≦ｘの変換条件が規定されている。また、変数ｙを０，１のいずれかに写像する規則として、それぞれｙ＜５、５≦ｙの変換条件が規定されている。
【０１０６】
図１９は、イベント変換部１２の出力例を示す図である。図１９には、入力イベント系列として、ｆｕｎｃＡ関数呼び出し後にｘ＝７となり、ｆｕｎｃＢ関数呼び出し後にｙ＝１０となり、ｆｕｎｃＣ関数呼び出し後にｙ＝−１となり、ｆｕｎｃＣ関数完了後にｘ＝３０となるイベント系列が示されている。イベント変換部１２が、図１８の規則を用いて図１９の入力イベント系列を変換すると、図１９の出力イベント系列が得られる。すなわち、ｆｕｎｃＡ関数呼び出し後にｘ＝１となり、ｆｕｎｃＢ関数呼び出し後にｙ＝１となり、ｆｕｎｃＣ関数呼び出し後にｙ＝０となり、ｆｕｎｃＣ関数完了後にｘ＝２となるイベント系列が得られる。
【０１０７】
＜動作＞
図２０は、イベント変換部１２の動作を示すフローチャートである。以下、図２０を用いてこの動作を説明する。
【０１０８】
まずステップＳ６１にて、イベント変換部１２は、実行トレース収集部１で収集された実行トレース６からイベントを取得する。その後、処理がステップＳ６２に進む。
【０１０９】
ステップＳ６２にて、イベント変換部１２は、ステップＳ６１で取得されたイベント内の変数が、図１８のような写像の規則で指定された変数と一致するか否かを判定する。一致すると判定された場合には処理がステップＳ６３に進み、一致しないと判定された場合には処理がステップＳ６４に進む。
【０１１０】
ステップＳ６３にて、イベント変換部１２は、ステップＳ６１で取得されたイベント内の変数の値を、写像の規則に従って変換し、変換後の値に書き換えて出力する。その後、処理がステップＳ６５に進む。
【０１１１】
ステップＳ６４にて、イベント変換部１２は、ステップＳ６１で取得されたイベントをそのまま出力する。その後、処理がステップＳ６５に進む。
【０１１２】
ステップＳ６５にて、イベント変換部１２は、実行トレース収集部１で収集された実行トレース６に未処理のイベントが存在するか否かを判定する。存在すると判定された場合には処理がステップＳ６１に戻り、当該ステップＳ６１にて、イベント変換部１２は、実行トレース収集部１で収集された実行トレース６から未処理のイベントを取得する。存在しないと判定された場合には図２０の動作が終了する。
【０１１３】
＜実施の形態４のまとめ＞
以上のような本実施の形態４に係る影響分析装置によれば、変数の種類を減らす写像を用いて、実行トレース収集部１で収集された実行トレース６の変数を変換する。このような構成によれば、関数遷移だけでなく、変数の変換条件を考慮した性能影響の比較及び原因箇所の可視化ができる。この際、変数の種類を減らすことによって実行トレース６ひいては代表実行トレース７の数を抑制することができるため、影響分析装置の処理効率化、及びユーザの作業効率化を高めることができる。
【０１１４】
＜その他について＞
実行トレース収集部１、代表実行トレース算出部３、実行トレース外れ値抽出部８、イベント制限部１０、及び、イベント変換部１２は、例えば影響分析装置に対応するコンピュータの図示しないＣＰＵ（Central Processing Unit）などが、影響分析装置の図示しない半導体メモリなどの記憶装置に記憶されたプログラムを実行することにより、当該ＣＰＵの機能として実現される。
【０１１５】
なお、本発明は、その発明の範囲内において、各実施の形態を自由に組み合わせたり、各実施の形態を適宜、変形、省略したりすることが可能である。
【０１１６】
本発明は詳細に説明されたが、上記した説明は、すべての態様において、例示であって、本発明がそれに限定されるものではない。例示されていない無数の変形例が、本発明の範囲から外れることなく想定され得るものと解される。
【符号の説明】
【０１１７】
１  実行トレース収集部、２  実行トレース蓄積部、３  代表実行トレース算出部、４  代表実行トレース蓄積部、５  表示部、６  実行トレース、７  代表実行トレース、８  実行トレース外れ値抽出部、１０  イベント制限部、１２  イベント変換部。
【図１】
2021064887.tif 000003
【図２】
2021064887.tif 000004
【図３】
2021064887.tif 000005
【図４】
2021064887.tif 000006
【図５】
2021064887.tif 000007
【図６】
2021064887.tif 000008
【図７】
2021064887.tif 000009
【図８】
2021064887.tif 000010
【図９】
2021064887.tif 000011
【図１０】
2021064887.tif 000012
【図１１】
2021064887.tif 000013
【図１２】
2021064887.tif 000014
【図１３】
2021064887.tif 000015
【図１４】
2021064887.tif 000016
【図１５】
2021064887.tif 000017
【図１６】
2021064887.tif 000018
【図１７】
2021064887.tif 000019
【図１８】
2021064887.tif 000020
【図１９】
2021064887.tif 000021
【図２０】
2021064887.tif 000022
【国際調査報告】
2021064887.tif 000023
2021064887.tif 000024
2021064887.tif 000025
2021064887.tif 000026