(57)【要約】【課題】プログラムのプログラム構造と振舞いを示すメトリクスを解析し、ユーザが確認したい図に対し汎用的に抽象化を実行して出力できるプログラム分析装置を提供する。【解決手段】メトリクス解析装置１２は、プログラム構造と振舞いを示す全体要素群１８を入力して、プログラムのメトリクスを解析し、メトリクス１９を出力する。重要度算出装置１３は、メトリクス１９と重み値２０とを入力し、全体要素群１８の各要素ｅに対して、メトリクス１９と重み値２０とから要素重要度を算出する。要素抽出装置１４は、全体要素群１８の各要素ｅについて要素重要度の値に基づいて、重要要素を抽出して、抽出要素群２２として出力する。出力装置１５は、抽出要素群２２として出力された重要要素を図式化して出力する。【選択図】図１
2019160008.tif 000002
【特許請求の範囲】
【請求項１】
プログラムのプログラム構造と振舞いを示す全体要素群を入力して、プログラムのメトリクスを解析し、メトリクスを出力するメトリクス解析装置と、
前記メトリクスと重み値とを入力し、前記全体要素群の各要素に対して、前記メトリクスと前記重み値とから要素重要度を算出する重要度算出装置と、
前記全体要素群の各要素について前記要素重要度の値に基づいて抽出要素群を出力する要素抽出装置と
を備えたプログラム分析装置。
【請求項２】
プログラムのプログラム構造と振舞いとを解析して前記全体要素群を出力するコード解析装置を備えた請求項１に記載のプログラム分析装置。
【請求項３】
前記抽出要素群を出力する出力装置を備えた請求項１又は２に記載のプログラム分析装置。
【請求項４】
前記重要度算出装置は、
前記メトリクスから前記全体要素群の各要素に対する統合メトリクスを算出し、
前記全体要素群の各要素ｅに対して、前記統合メトリクスと重み値の値から前記要素重要度を算出する請求項１から３いずれか１項に記載のプログラム分析装置。
【請求項５】
前記重要度算出装置は、
前記全体要素群の要素ｅと関連するメトリクスの総和を統合メトリクスとして算出し、
前記全体要素群の要素ｅに対して、統合メトリクスと重み値の積の総和を要素重要度として算出する請求項１から４いずれか１項に記載のプログラム分析装置。
【請求項６】
メトリクス解析装置が、プログラムのプログラム構造と振舞いを示す全体要素群を入力して、プログラムのメトリクスを解析し、メトリクスを出力し、
重要度算出装置が、前記メトリクスと重み値とを入力し、前記要素群の各要素に対して、メトリクスと重み値とから要素重要度を算出し、
要素抽出装置が、前記要素群の各要素について前記要素重要度の値に基づいて抽出要素群を出力するプログラム分析方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、プログラム分析装置及びプログラム分析方法に関するものであり、プログラムのソースコード等からプログラムの構造及び振舞いを抽出する装置に関するものである。
【背景技術】
【０００２】
ソフトウェア開発では、機能追加又は不具合改修を実施する際、対象プログラムの構造及び振舞いを確認してプログラムの修正内容を決定する。しかし、ドキュメントの不備により、対象ソフトウェアの構造及び振舞いの認識が困難な場合がある。その際用いられる技術がリバースエンジニアリングである。
【０００３】
リバースエンジニアリングでは、ソースコード解析等でモジュール同士の関連性及びロジックの呼び出し構造を解析・図式化する。このリバースエンジニアリングの解析・図式化により、ソフトウェアの構造を認識しやすくすることができる。当該技術は、市販されている設計開発支援ツール、モデリングツール、及び、その他の各種ツールで利用されている。
【０００４】
しかし、リバースエンジニアリングした際に、クラス・関数等の構成要素が全て抽出されてしまうため、図が巨大になりがちである。人が認識しやすい図にするには、自身が確認したい要素のみを抽出するよう修正を施さなければならない。
【０００５】
上記課題に対応するため、リバースエンジニアリングによって抽出したプログラム構造又は振舞いについて、重要でない要素を捨象することにより、人が認識しやすい図に変換する先行技術が存在する。例えば、特許文献１では、プログラム構造を基に、オブジェクト指向のプログラム構造の特徴（可視性等）をもとに抽出対象のクラス／メンバ候補の重要度を評価し、重要度の高い要素のみを含んだ図を自動生成する方法を示している。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０００−１１２７４２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
特許文献１に示された先行技術で実施している図の抽象化は、オブジェクト指向言語に特化したアルゴリズムであり、入力情報又は出力される図に依存したアルゴリズムとなっており、他形式の場合には適用することができない。
本発明は、ユーザが確認したい図に対し汎用的に抽象化を実行して出力できるプログラム分析装置を提供する。
【課題を解決するための手段】
【０００８】
この発明に係るプログラム分析装置は、
プログラムのプログラム構造と振舞いを示す全体要素群を入力して、プログラムのメトリクスを解析し、メトリクスを出力するメトリクス解析装置と、
前記メトリクスと重み値とを入力し、前記全体要素群の各要素に対して、前記メトリクスと前記重み値とから要素重要度を算出する重要度算出装置と、
前記全体要素群の各要素について前記要素重要度の値に基づいて抽出要素群を出力する要素抽出装置と
を備えた。
【発明の効果】
【０００９】
この発明によれば、重要度算出装置がメトリクスと重み値とから要素重要度を算出するので、プログラム構造又は振舞いを構成する要素のうち重要度の低い要素を省略して図式化し、ユーザに提示することができる。
【図面の簡単な説明】
【００１０】
【図１】実施の形態１に係るプログラム分析装置１００を示す図である。
【図２】本発明の実施の形態１に係るプログラム分析装置１００の全体処理を示すフローチャートである。
【図３】実施の形態１に係るプログラム分析装置１００における要素抽出処理１０２の詳細処理を示すフローチャートである。
【図４】実施の形態１に係るプログラム分析装置１００におけるメトリクス統合処理２０３の具体例を示す図である。
【図５】実施の形態１に係るプログラム分析装置１００における重要度算出処理２０４の具体例を示す図である。
【図６】実施の形態１に係るプログラム分析装置１００における最終出力図の具体例を示す図である。
【図７】実施の形態３に係るプログラム分析装置１００を示す図である。
【発明を実施するための形態】
【００１１】
実施の形態１．
＊＊＊構成の説明＊＊＊
図１は、実施形態１に係るプログラム分析装置としてのプログラム分析装置１００を示す図である。
プログラム分析装置１００は、コード解析装置１１、メトリクス解析装置１２、重要度算出装置１３、要素抽出装置１４、及び、出力装置１５を備える。
プログラム分析装置１００は、ソースコード１６、ログ１７、全体要素群１８、メトリクス１９、重み値２０、要素重要度２１、抽出要素群２２をデータとして取り扱う。
これらのデータは、電子データであり、メモリ又は記憶部に記憶され、メモリ又は記憶部から読み込まれて使用される。
【００１２】
コード解析装置１１は、プログラムのソースコード１６を入力して、プログラム構造と振舞いとを解析してプログラム構造と振舞いとを示す要素群を全体要素群１８として出力する。
【００１３】
メトリクス解析装置１２は、プログラム構造と振舞いを示す全体要素群１８及びログ１７を入力して、プログラムのメトリクスを解析し、メトリクス１９を出力する。
ここでのメトリクスとは、ソフトウェアメトリクスのことであり、ソフトウェアメトリクスとは、ソフトウェア及びソフトウェア開発を種々の視点から定量的に評価したものであり、各種の数値を有する。
【００１４】
重要度算出装置１３は、メトリクス１９と重み値２０とを入力し、全体要素群１８の各要素ｅに対して、メトリクス１９と重み値２０とから要素重要度を算出する。
【００１５】
要素抽出装置１４は、全体要素群の各要素ｅについて要素重要度の値に基づいて、重要要素を抽出して、抽出要素群２２として出力する。
【００１６】
出力装置１５は、抽出要素群２２として出力された重要要素を図式化して出力する。
【００１７】
＊＊＊ハードウェア構成の説明＊＊＊
以下、プログラム分析装置１００のハードウェア構成の補足説明を行う。
図１に示すプロセッサ９０１は、プロセッシングを行うＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）である。
プロセッサ９０１は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）等である。
図１に示すメモリ９０２は、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）である。
図１に示す補助記憶装置９０３は、記録媒体の一例であり、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、フラッシュメモリ、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）等である。
図１に示す通信インターフェース９０４は、データを受信するレシーバー及びデータを送信するトランスミッターを含む。
通信インターフェース９０４は、例えば、通信チップ又はＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）等を有する。
【００１８】
また、コード解析装置１１、メトリクス解析装置１２、重要度算出装置１３、要素抽出装置１４、出力装置１５、オペレーティングシステム６０７、ネットワークドライバ６０８及びストレージドライバ６０９の処理の結果を示す情報、データ、信号値及び変数値が、メモリ９０２、補助記憶装置９０３、プロセッサ９０１内のレジスタ及びキャッシュメモリの少なくともいずれかに記憶される。
また、コード解析装置１１、メトリクス解析装置１２、重要度算出装置１３、要素抽出装置１４、出力装置１５、オペレーティングシステム６０７、ネットワークドライバ６０８及びストレージドライバ６０９の機能を実現するプログラムは、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ＤＶＤ等の可搬記憶媒体その他の記録媒体に記憶されてもよい。
【００１９】
また、コード解析装置１１、メトリクス解析装置１２、重要度算出装置１３、要素抽出装置１４、及び、出力装置１５の「装置」を、「デバイス」又は「回路」又は「工程」又は「手順」又は「処理」又は「部」に読み替えてもよい。
また、プログラム分析装置１００は、ロジックＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）、ＧＡ（Ｇａｔｅ  Ａｒｒａｙ）、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ
Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）、ＦＰＧＡ（Ｆｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）といった処理回路により実現されてもよい。
なお、プロセッサと、メモリと、プロセッサとメモリの組合せと、処理回路との上位概念を、「プロセッシングサーキットリー」という。つまり、プロセッサと、メモリと、プロセッサとメモリの組合せと、処理回路とは、それぞれ「プロセッシングサーキットリー」の具体例である。
【００２０】
＊＊＊動作の説明＊＊＊
プログラム分析装置１００のプログラム分析方法について説明する。
プログラム分析方法の具体例として、図２のプログラム分析装置１００の全体処理を示すフローチャートによりプログラム構造と振舞いの抽出方法を説明する。
【００２１】
コード解析装置１１は、全体抽出処理１０１において、ソースコードを入力として、全体要素群１８を出力する。
本手順は、リバースエンジニアリングの従来技術にて実現可能である。市販のツールでは、ソースコードを入力としてプログラム構造をＸＭＬ（Ｅｘｔｅｎｓｉｂｌｅ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）構造で出力する機能を提供しているものがあり、その出力を利用して以降の手順を実施しても構わない。
【００２２】
メトリクス解析装置１２と重要度算出装置１３により要素抽出処理１０２で行われる要素抽出処理の詳細手順を図３に示す。
要素抽出処理１０２は、メトリクス算出処理２０１、重要度設定処理２０２、メトリクス統合処理２０３、重要度算出処理２０４、及び、要素選定処理２０５にて構成され、各処理を順に実行することにより実現する。以下、メトリクス解析装置１２と重要度算出装置１３のは、詳細手順の内容を示す。
【００２３】
メトリクス解析装置１２は、メトリクス算出処理２０１において、ログ１７と全体要素群１８を入力として、メトリクス１９を算出する。
ここで、ログ１７とは、対象プログラムが出力するログ又はＯＳ（オペレーティングシステム）から出力されるログ、プログラム開発の過程で発生したデータ（バージョン管理システムのコミットログ等）等を意味している。
メトリクス解析装置１２への入力は、データの内容に応じて、ログ１７と全体要素群１８のどちらか片方のみでも構わない。
メトリクス解析装置１２は、メトリクス１９として、プログラムの内容を解析して得られたソフトウェアメトリクス、又は、プログラム実行ログの内容を解析して得られたソフトウェアメトリクス、又は、プログラム開発の過程で発生したデータを解析して得られたメトリクスを出力する。
メトリクス解析装置１２によるメトリクス算出処理２０１によって算出されるメトリクスの例としては、プロセスフローの実行回数、対象モジュールのライン数、サイクロマティック複雑度、実行時の呼び出し回数、処理実行時間、構成管理のコミット回数等が挙げられる。
図４の（ａ）は、メトリクス１９を表形式で示したものである。
図４の（ａ）のメトリクス１９は、種類数をｎ個としている。
図４の（ｂ）において、Ｐ１〜Ｐ５はプロセスであり、ｅ１〜ｅ５はプロセス間の関連を示す要素であり、Ｆ１は、Ｐ１，Ｐ２，Ｐ４，Ｐ５からなるプロセスフローであり、Ｆ２は、Ｐ１，Ｐ３，Ｐ４，Ｐ５からなるプロセスフローである。
図４の（ａ）に示すように、メトリクス解析装置１２によるメトリクス算出処理２０１によって、１番目のメトリクスｍ１としてプロセスフローの実行回数が採用され、プロセスフローＦ１、Ｆ２の実行回数が判明しているものとする。
図４の（ａ）では、プロセスフローＦ１の実行回数は２０００回であり、プロセスフローＦ２の実行回数は１５００回であることが判明している。
【００２４】
重要度算出装置１３は、重要度設定処理２０２において、重み値ｗを設定する。
まず、ユーザは、メトリクス算出処理２０１で得られたメトリクス１９について、重み値２０を決定する。ユーザは、図で確認したい側面に対応するメトリクスの重み値を高めに設定し、捨象したい側面に対応するメトリクスの重み値を低めに設定する。重要度算出装置１３は、ユーザが決定した重み値２０を入力して記憶する。
なお、重要度算出に利用しないメトリクスに関して、ユーザは、当該メトリクスを重要度算出の対象として指定しないか、又は、重み値を０として設定する。
【００２５】
重要度算出装置１３は、メトリクス統合処理２０３において、全体要素群１８とメトリクス１９の内容を照合し、最終的に出力される図中の要素に対する統合メトリクスを算出する。
このメトリクス統合処理２０３は、図中の各要素とメトリクス１９は必ずしも１対１で関連付かないため、演算により各要素に関連するメトリクスを一意に決定するために行う。
【００２６】
重要度算出装置１３は、ｉ番目のメトリクスｍｉに対する統合メトリクスｘｅ（ｉ）を下記式によって算出する。
統合メトリクスｘｅ（ｉ）は要素ｅと関連するメトリクスｍｉｊの総和を算出することを意味する。ただし、ベクトルｂはメトリクスｍｉが要素ｅと関連するメトリクスであるかを表す関連値を要素に持つベクトルであり、ベクトルｂの要素ｂｊは下記のとおり定義される。もし、得られたメトリクスｍｉｊが要素ｅと関連付く場合、ｂｊの値は１とする。逆に、メトリクスｍｉｊが要素ｅと無関係の場合、ｂｊの値は０とする。
重要度算出装置１３は、要素ｅとメトリクスｍｉｊとが関連するか否かを示す関連値ｂをベクトルｂとして記憶している。
【００２７】
【数１】
2019160008.tif 000003
【００２８】
統合メトリクスの算出例を図４の（ｃ）に示す。
要素ｅ１の統合メトリクスｘｅ（１）は、要素ｅと関連付くメトリクスｍ１ｊの総和であり、重要度算出装置１３は、要素ｅ１と関連付くＦ１のｂ１の値は１とし、要素ｅ１と無関係のＦ１のｂ２の値は０とし、要素ｅ１の統合メトリクスｘｅ１（１）を、以下の式で求めることができる。
【００２９】
ｘｅ１（１）＝ｂ１ｍ１１＋ｂ２ｍ１２＝１・２０００＋０・１５００＝２０００
【００３０】
同様に、重要度算出装置１３は、図４の（ｃ）に示すように、要素ｅ２からｅ５の統合メトリクスも計算する。
【００３１】
メトリクスとしてプロセスフローの実行回数を採用した場合、図中のｅ１とｅ３の統合メトリクスはプロセスフローＦ１の実行回数２０００となり、ｅ２とｅ４の統合メトリクスはプロセスフローＦ２の実行回数１５００となり、ｅ５の統合メトリクスはプロセスフローＦ１とＦ２の実行回数の和である３５００となる。
ｅ１の統合メトリクス＝２０００
ｅ２の統合メトリクス＝１５００
ｅ３の統合メトリクス＝２０００
ｅ４の統合メトリクス＝１５００
ｅ５の統合メトリクス＝３５００
【００３２】
重要度算出装置１３は、重要度算出処理２０４において、全体要素群１８の各要素ｅに対して、メトリクス１９と重み値２０の値から要素重要度２１を算出する。例えば、要素ｅに対する重要度Ｓｅは以下の式にて定義できる。
以下の式は、要素重要度２１を、重み値２０の値と統合メトリクスとの積の総和で求めることを示している。
ただし、ｎはメトリクス１９の種類数、ベクトルｗはメトリクスに対する重み値２０のｎ次元ベクトル、ベクトルｘはメトリクス統合処理２０３で算出した統合メトリクスをスケーリングにより０から１まで範囲の値に変換した値のｎ次元ベクトルである。なお、重要度算出式は必ずしも下記である必要はなく、メトリクスの特性に応じて特定のメトリクスの次数を変更し、別の重要度算出式を定義し評価しても構わない。
【００３３】
【数２】
2019160008.tif 000004
【００３４】
スケーリングを実施するのは、メトリクスの種類によって取りうる値のスケールが異なるため、値の調整を施さないとスケールの大きいメトリクスの重要度算出に与える影響が支配的となってしまうためである。スケーリングの手法は、従来技術のものを利用して構わない。スケーリング手法の一例として、Ｍｉｎ−Ｍａｘ正規化がある。Ｍｉｎ−Ｍａｘ正規化では、データの最大値を１、最小値を０となるように、値を補正するものである。具体的には、統合メトリクスは下記式により値を補正することができる。
【００３５】
【数３】
2019160008.tif 000005
【００３６】
図４の例の場合、要素ｅ１の正規化後の統合メトリクスは下記のとおり算出される。
【００３７】
【数４】
2019160008.tif 000006
【００３８】
要素ｅ１の正規化後の統合メトリクス＝（２０００−１５００）／（３５００−１５００）＝０．２５
要素ｅ２の正規化後の統合メトリクス＝（１５００−１５００）／（３５００−１５００）＝０
要素ｅ３の正規化後の統合メトリクス＝（２０００−１５００）／（３５００−１５００）＝０．２５
要素ｅ４の正規化後の統合メトリクス＝（１５００−１５００）／（３５００−１５００）＝０
要素ｅ５の正規化後の統合メトリクス＝（３５００−１５００）／（３５００−１５００）＝１
【００３９】
図５にプロセスフロー図における各プロセス間の関連に関する重要度算出の一例を示す。
２番目のメトリクスから算出された要素ｅ１の正規化後の統合メトリクスが以下のようなものであるとする。
要素ｅ１の正規化後の統合メトリクス＝１
要素ｅ２の正規化後の統合メトリクス＝１
要素ｅ３の正規化後の統合メトリクス＝０
要素ｅ４の正規化後の統合メトリクス＝０．２５
要素ｅ５の正規化後の統合メトリクス＝１
また、メトリクス１９の種類数ｎ＝２とし、メトリクスｍ１、ｍ２に対する重み値ｗ１、ｗ２が以下のようなものであるとする。
ｗ１＝１
ｗ２＝０．２５
【００４０】
重要度算出装置１３は、統合メトリクスの正規化結果とメトリクスに対する重み値の積和により、プロセス間の関連に関する重要度Ｓｅｋ（ｋ＝１，２，…，５）を算出する。
Ｓｅ１＝１・０．２５＋０．２５・１＝０．５
同様に、重要度算出装置１３は、図５に示すように、要素ｅ２からｅ５の重要度Ｓｅｋの値も計算することができる。
【００４１】
要素抽出装置１４は、要素選定処理２０５において、全体要素群１８の各要素について要素重要度２１の値を照らし合わせ、最終的に図として出力する重要要素を、抽出要素群２２として出力する。具体的には、重要度算出処理２０４で算出した値が閾値θ以上の重要度の要素を重要要素として抽出する。閾値θは別途ユーザが指定でき、任意の値をとることができる。
例えば、図５で示した重要度に対して閾値θを０．２５に設定した場合、ｅ１、ｅ２、ｅ３、ｅ５は重要度が閾値θ以上であるため、重要要素として抽出される。ｅ４は重要度が閾値θ未満であるため、重要要素として抽出されない。
【００４２】
出力装置１５は、表示処理１０３において、出力装置１５は抽出要素群２２の内容を図式化して出力し、ユーザに提示する。画面表示、レポート出力等の提示形式は問わない。
図５で示した重要度に対して閾値θを０．２５に設定した場合、最終的に図６で示す図が最終的に出力される。閾値θが０．２５より低いｅ４の関連が省略されて作成される。
【００４３】
＊＊＊実施の形態１のまとめ＊＊＊
実施形態１に係るプログラム分析装置としてのプログラム分析装置１００の特徴点は、重要度算出装置１３である。
【００４４】
重要度算出装置１３は、全体要素群１８とメトリクス１９との内容を照合し、全体要素群１８の各要素に対する統合メトリクスを算出する。具体的には、重要度算出装置１３は、全体要素群の要素ｅと関連付くメトリクスの総和を統合メトリクスとして算出する。
【００４５】
さらに、重要度算出装置１３は、全体要素群の各要素ｅに対して、統合メトリクスと重み値の値から要素重要度を算出する。具体的には、重要度算出装置１３は、全体要素群の各要素ｅに対して、統合メトリクスと重み値の積の総和を要素重要度として算出する。
【００４６】
実施の形態１に係るプログラム分析装置１００は、プログラム構造・振舞い解析機能とリバースエンジニアリングの結果出力機能とに対し、重要度算出装置１３による重要度算出機能を組み合わせることにより抽象化した図を汎用的に作成するものである。
【００４７】
＊＊＊実施の形態１の効果の説明＊＊＊
実施の形態１に係るプログラム分析装置１００は、プログラム構造又は振舞いを構成する要素のうち重要度の低い要素を省略して図式化し、ユーザに提示する機能を有する。
このため、実施の形態１に係るプログラム分析装置１００によれば、リバースエンジニアリングして得られた図について、ユーザが確認したい観点での図が出力され、人手で整形する時間が減少し、プログラムの概要把握に要する時間的コストが削減できることが期待される。
【００４８】
＊＊＊実施の形態１の変形例＊＊＊
コード解析装置１１は、プログラム構造と振舞いとの両方を解析する必要はなくプログラム構造と振舞いとの片方を解析して出力してもよい。
コード解析装置１１は、プログラム構造と振舞いとを解析してプログラム構造と振舞いとを示す要素群をすべて出力する必要はなく部分的な要素群を出力してもよい。
【００４９】
メトリクス解析装置１２は、全体要素群１８をすべて入力する必要はなく部分的な要素群を入力してもよい。
【００５０】
重要度算出装置１３は、関連値ｂを外部から入力してもよい。
重要度算出装置１３は、関連値ｂを１又は０ではなく、０以上１以下の値で記憶してもよい。
【００５１】
実施の形態２．
＜重み値２０の変更＞
実施の形態１のプログラム分析装置１００において、重要度算出装置１３が、ユーザが変更した重み値２０を入力し、要素抽出処理１０２と表示処理１０３とを繰り返すようにしてもよい。すなわち、メトリクスの重み値ｗを変えて与えることにより、重要度Ｓｅを変更する手段を持たせてもよい。
【００５２】
重要度算出装置１３がメトリクスの重み値を入力して重要度を変更する手段を持つので、コード解析装置１１とメトリクス解析装置１２を再度実行することなく、処理時間が減少し、プログラムの概要把握に要する時間的コストが削減できる。
【００５３】
＜閾値θの変更＞
また、実施の形態１のプログラム分析装置１００において、要素抽出装置１４が、ユーザが変更した閾値θを入力し、要素抽出処理１０２と表示処理１０３とを繰り返すようにしてもよい。
【００５４】
要素抽出装置１４が閾値θを入力して変更する手段を持つので、コード解析装置１１、メトリクス解析装置１２、及び、重要度算出装置１３を再度実行することなく、処理時間が減少し、プログラムの概要把握に要する時間的コストが削減できる。
【００５５】
実施の形態３．
実施の形態３では、実施の形態１とは異なるプログラム分析装置としてのプログラム分析装置１００のハードウェア構成の説明を行う。
【００５６】
＊＊＊ハードウェア構成の説明＊＊＊
図７に示すプログラム分析装置１００のコード解析装置１１、メトリクス解析装置１２、重要度算出装置１３、要素抽出装置１４、及び、出力装置１５は、それぞれ、個別のコンピュータであり、各装置がネットワークで接続されている場合を示している。
プログラム分析装置１００は、ソースコード１６、ログ１７、全体要素群１８、メトリクス１９、重み値２０、要素重要度２１，抽出要素群２２をネットワークを経由したオンラインデータとし取り扱うことができる。
コード解析装置１１、メトリクス解析装置１２、重要度算出装置１３、要素抽出装置１４、及び、出力装置１５は、それぞれ、以下のハードウェアを有する。
１．ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）等のプロセッサ
２．ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等のメモリ
３．ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、フラッシュメモリ、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）等の補助記憶装置
４．データを受信するレシーバー及びデータを送信するトランスミッターを含む通信インターフェース
【００５７】
また、コード解析装置１１、メトリクス解析装置１２、重要度算出装置１３、要素抽出装置１４、及び、出力装置１５は、それぞれ、オペレーティングシステム、ネットワークドライバ及びストレージドライバ等を有しており、コード解析装置１１、メトリクス解析装置１２、重要度算出装置１３、要素抽出装置１４、及び、出力装置１５が扱う情報、データ、信号値及び変数値を入出力し、情報、データ、信号値及び変数値をメモリ、補助記憶装置、プロセッサ内のレジスタ及びキャッシュメモリの少なくともいずれかに記憶する。
また、コード解析装置１１、メトリクス解析装置１２、重要度算出装置１３、要素抽出装置１４、出力装置１５、オペレーティングシステム６０７、ネットワークドライバ６０８及びストレージドライバ６０９の機能を実現するプログラムは、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ＤＶＤ等の可搬記憶媒体に記憶され、ＣＰＵにより実行される。
【００５８】
図示しないが、コード解析装置１１、メトリクス解析装置１２、重要度算出装置１３、要素抽出装置１４、及び、出力装置１５のうち２つ以上の装置が一つのコンピュータに実装されてもよい。
【００５９】
＊＊＊実施の形態の組み合わせ＊＊＊
前述した実施の形態のうち、２つ以上を組み合わせて実施しても構わない。
あるいは、これらの実施の形態のうち、１つを部分的に実施しても構わない。
あるいは、これらの実施の形態のうち、２つ以上を部分的に組み合わせて実施しても構わない。
【符号の説明】
【００６０】
１１  コード解析装置、１２  メトリクス解析装置、１３  重要度算出装置、１４  要素抽出装置、１５  出力装置、１６  ソースコード、１７  ログ、１８  全体要素群、１９  メトリクス、２０  重み値、２１  要素重要度、２２  抽出要素群、１００  プログラム分析装置、１０１  全体抽出処理、１０２  要素抽出処理、１０３  表示処理、２０１  メトリクス算出処理、２０２  重要度設定処理、２０３  メトリクス統合処理、２０４  重要度算出処理、２０５  要素選定処理、６０７  オペレーティングシステム、６０８  ネットワークドライバ、６０９  トレージドライバ、９０１  プロセッサ、９０２  メモリ、９０３  補助記憶装置、９０４  通信インターフェース、ｅ  要素、ｍ  メトリクス、ｘ  統合メトリクス、ｗ  重み値、θ  閾値。
【図１】
2019160008.tif 000007
【図２】
2019160008.tif 000008
【図３】
2019160008.tif 000009
【図４】
2019160008.tif 000010
【図５】
2019160008.tif 000011
【図６】
2019160008.tif 000012
【図７】
2019160008.tif 000013