(57)【要約】      （修正有）【課題】プログラムのソースコード内に含まれるモジュールについて、特定の観点に関連するものを自動的に選択して、当該プログラムを可視化する。【解決手段】情報処理装置１００のデータ解析部２０２は、モジュール呼出関係図作成部２１２を用いて抽出したモジュールに対して、モジュール呼出関係と共通データ利用関係を活用して、ユーザが入力した観点に対する関連度を算出する。この際、基点となる観点依存モジュールの観点関連度と、作用判定表２１６、モジュール間パスの観点関連度ウェイトデータ２１７に記載された観点関連度ウェイトを乗算等することで算出する。算出した観点関連度は、観点関連判定ノイズ補正閾値データ２１４に記載された観点関連度補正値を用いて補正する。最終的に得られるモジュール観点関連度はモジュール別観点関連判定データ２１５に格納し、該観点関連度に応じて、プログラム図作成制御部２０５はプログラム図を作成する。【選択図】図２
2015230582.tif 000002
【特許請求の範囲】
【請求項１】
プログラムを当該プログラムのソースコードに含まれるモジュール単位で可視化するためのプログラム可視化装置であって、
可視化対象の前記ソースコードを取得するためのソースコード取得部と、
前記ソースコード自体、または該ソースコードに関連する他のソースコード又はデータに記述されているワードデータを取得するためのワードデータ取得部と、
前記モジュールを可視化するに際して注目すべき観点情報と、各観点情報について設定されている観点関連度閾値とを対応付けて格納している観点情報記憶部と、
該ワードデータ取得部が、前記観点情報記憶部に格納されている観点情報に基づいて、前記ソースコードから取得した前記ワードデータをキーワードとして格納するキーワード記憶部と、
各前記モジュールについて設定した観点関連度を格納するモジュール別観点関連判定データ記憶部と、
各前記モジュールの観点関連度を算出するために利用する項目と観点関連度に関する重み付け係数である観点関連度ウェイトデータとを対応付けて格納する作用判定表と、
各前記モジュールの観点関連度を算出するために利用するモジュール間呼出パスと各モジュール間呼出パスに関して設定されている前記観点関連度ウェイトデータとを対応付けて格納するモジュール間パスの観点関連度ウェイトデータ記憶部と、
前記ソースコードに含まれるモジュール相互の呼出関係を示すモジュール呼出関係を抽出するためのモジュール呼出関係抽出部と、
抽出した各前記モジュールに関して、前記観点情報記憶部に格納されている前記観点情報に対応するキーワードにより抽出されたモジュールである観点依存モジュールを基点とした前記モジュール相互間の呼出関係に関する観点関連度ウェイトまたは前記作用判定表に記録されている共通データ利用関係に関する観点関連度ウェイトを考慮して観点関連度の算出を行い、当該算出結果を前記モジュール別観点関連判定データ記憶部に格納するためのデータ解析部と、
前記ソースコード内からモジュールを抽出するためのモジュール抽出部と、
前記モジュール別観点関連判定データ記憶部に格納された各前記モジュールの観点関連度と、前記観点情報記憶部に格納されている、対応するキーワードに設定されている観点関連度とを比較することにより、前記ソースコードから抽出した前記モジュールを可視化するか否かの判定を行う可視化判定部と、
前記可視化判定部が可視化すると判定した前記モジュールを所定の書式で出力する表示出力部と、
を備えることを特徴とするプログラム可視化装置。
【請求項２】
各前記モジュールについて設定された前記観点関連度を、当該モジュールを可視化するか否かの基準を補正するための判定項目、判定条件、前記観点情報、判定閾値、及び観点関連度補正値を対応付けて観点関連判定補正情報として格納する観点関連判定補正情報記憶部と、
前記観点関連度を算出したモジュールに関して、前記算出した観点関連度の値と、該観点関連判定補正情報記憶部から取得した閾値またはユーザ指定の閾値とを比較して対応する観点関連度補正値を取得し、該観点関連度補正値を用いて前記観点関連度を補正し、補正結果を前記モジュール別観点関連判定情報記憶部に格納する観点関連度補正部と、
を備えることを特徴とする請求項１に記載のプログラム可視化装置。
【請求項３】
前記観点関連度補正部が、前記観点関連モジュールを呼出先または呼出元に有するモジュールに対し、前記観点関連判定補正項目の値と前記観点関連判定補正情報記憶部から取得した閾値またはユーザ指定の閾値とを比較し、前記観点関連判定補正項目の値が、前記観点関連判定補正情報記憶部から取得した閾値またはユーザ指定の閾値より大きい場合に
前記観点関連度の補正を行い、前記観点関連判定補正項目の値が、前記いずれかの閾値より小さい場合に前記観点関連度の補正を行わないことを特徴とする、請求項１に記載のプログラム可視化装置。
【請求項４】
前記観点関連度補正部が、観点関連判定補正項目として、各前記観点依存モジュールを基準とした呼出元側モジュールへの観点非関連パスの数、呼出元側モジュールへの全パスに対する前記観点非関連パスの比率、または前記観点依存モジュールからの呼出段数を利用し、前記観点関連判定補正項目の値が、該観点関連判定補正情報記憶部から取得した閾値またはユーザ指定の閾値より大きい場合に前記観点関連度の補正を行い、前記観点関連判定補正項目の値が、前記いずれかの閾値より小さい場合に前記観点関連度の補正を行わないことを特徴とする、請求項３に記載のプログラム可視化装置。
【請求項５】
前記データ解析部が、前記観点依存モジュールの呼出先または呼出元に観点関連モジュールが１つ存在する前記モジュールに対し、該観点関連モジュールへ到達する迄に存在する全ての呼出パスに設定されている前記観点関連度重み付け係数と該観点関連モジュールについて算出された前記観点関連度とを乗算することで、前記観点関連度を算出することを特徴とする、請求項１に記載のプログラム可視化装置。
【請求項６】
前記データ解析部が、呼出先または呼出元に観点関連モジュールが複数存在するモジュールに対し、それぞれの観点関連モジュールを基に算出した観点関連度を全て加算することで、観点関連度を算出することを特徴とする、請求項５に記載のプログラム可視化装置。
【請求項７】
前記データ解析部が、複数の前記モジュールが共通のデータを利用しているかを判定し、該判定結果に応じた観点関連度重み付け係数を用いて各前記モジュールの観点関連度を算出することを特徴とする、請求項１に記載のプログラム可視化装置。
【請求項８】
前記データ解析部が、複数の前記モジュールが共通のデータを利用しているかを判定する際に、各前記モジュールの呼出関係と関係のない共通データ利用判定項目、または各前記モジュールの呼出関係と関係のある前記共通データ利用判定項目を利用し、各前記モジュールの呼出関係と関係のある前記共通データ利用判定項目を利用する場合に前記モジュール間の呼出パスに対して観点関連度ウェイトを設定することを特徴とする、請求項７に記載のプログラム可視化装置。
【請求項９】
前記データ解析部が、複数の前記モジュールが共通のデータを利用しているかの判定項目として、複数の前記モジュールが共通のグローバル変数へ代入しているか、共通のファイルまたはＤＢへ書き込みしているか、変数を参照渡しで受け取り該変数へ代入しているか、または戻り値を変数で受け取り利用しているかとの判定基準を利用し、いずれかの判定基準が満たされた場合、それぞれの項目に応じた観点関連度ウェイトを用いて各前記モジュールの観点関連度を算出することを特徴とする、請求項６に記載のプログラム可視化装置。
【請求項１０】
前記データ解析部が、複数の前記モジュールが共通のデータを利用しているかを判定する際に、前記モジュール相互間の呼出関係と関係のない共通データ利用判定項目を利用した後に、前記モジュール相互間の呼出関係と関係のある前記共通データ利用判定項目を利用することを特徴とする、請求項１に記載のプログラム可視化装置。
【請求項１１】
プログラムを当該プログラムのソースコードに含まれるモジュール単位で可視化するためのプログラム可視化方法であって、
プロセッサとメモリとを備えたコンピュータが、
可視化対象の前記ソースコードを取得し、
前記ソースコード自体、または該ソースコードに関連する他のソースコード又はデータに記述されているワードデータを取得し、
前記モジュールを可視化するに際して注目すべき観点情報と、各観点情報について設定されている観点関連度閾値とを対応付けて格納し、
該ワードデータ取得部が、前記格納されている観点情報に基づいて、前記ソースコードから取得した前記ワードデータをキーワードとして格納し、
各前記モジュールについて設定した観点関連度を格納し、
各前記モジュールの観点関連度を算出するために利用する項目と観点関連度に関する重み付け係数である観点関連度ウェイトとを対応付けて格納し、
各前記モジュールの観点関連度を算出するために利用するモジュール間呼出パスと各モジュール間呼出パスに関して設定されている前記観点関連度ウェイトデータとを対応付けて格納し、
前記ソースコードに含まれるモジュール相互の呼出関係を示すモジュール呼出関係を抽出し、
抽出した各前記モジュールに関して、前記格納されている前記観点情報に対応するキーワードにより抽出されたモジュールである観点依存モジュールを基点とした前記モジュール相互間の呼出関係に関する観点関連度ウェイトデータまたは前記作用判定表に記録されている共通データ利用関係に関する観点関連度ウェイトデータを考慮して観点関連度の算出を行い、当該算出結果を格納し、
前記ソースコード内からモジュールを抽出し、
前記格納された各前記モジュールの観点関連度と、前記格納されている、対応するキーワードに設定されている観点関連度とを比較することにより、前記ソースコードから抽出した前記モジュールを可視化するか否かの判定を行い、
可視化すると判定した前記モジュールを所定の書式で出力する
ことを特徴とするプログラム可視化方法。
【請求項１２】
プログラムを当該プログラムのソースコードに含まれるモジュール単位で可視化するためのプログラム可視化プログラムであって、
プロセッサとメモリとを備えたコンピュータに、
可視化対象の前記ソースコードを取得し、
前記ソースコード自体、または該ソースコードに関連する他のソースコード又はデータに記述されているワードデータを取得し、
前記モジュールを可視化するに際して注目すべき観点情報と、各観点情報について設定されている観点関連度閾値とを対応付けて格納し、
前記格納されている観点情報に基づいて、前記ソースコードから取得した前記ワードデータをキーワードとして格納し、
各前記モジュールについて設定した観点関連度を格納し、
各前記モジュールの観点関連度を算出するために利用する項目と観点関連度に関する重み付け係数である観点関連度ウェイトデータとを対応付けて格納し、
各前記モジュールの観点関連度を算出するために利用するモジュール間呼出パスと各モジュール間呼出パスに関して設定されている前記観点関連度ウェイトデータとを対応付けて格納し、
前記ソースコードに含まれるモジュール相互の呼出関係を示すモジュール呼出関係を抽出し、
抽出した各前記モジュールに関して、前記格納されている前記観点情報に対応するキーワードにより抽出されたモジュールである観点依存モジュールを基点とした前記モジュール相互間の呼出関係に関する観点関連度ウェイトデータまたは前記作用判定表に記録されている共通データ利用関係に関する観点関連度ウェイトデータを考慮して観点関連度の算出を行い、当該算出結果を格納し、
前記ソースコード内からモジュールを抽出し、
前記格納された各前記モジュールの観点関連度と、前記格納されている、対応するキーワードに設定されている観点関連度とを比較することにより、前記ソースコードから抽出した前記モジュールを可視化するか否かの判定を行い、
可視化すると判定した前記モジュールを所定の書式で出力する
工程を実行させることを特徴とするプログラム可視化プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラム可視化装置、プログラム可視化方法、及びプログラム可視化プログラムに関する。
【背景技術】
【０００２】
プログラムは、長期にわたって使用される間に、仕様変更、障害対応等により、改修が必要となる。このようなプログラムの改修は、リファクタリングと呼ばれる。リファクタリングにあたっては、改修担当者の負担を軽減し、改修に伴う作業ミスを減らすといった目的のため、プログラム内に含まれるモジュールを自動で選択して可視化等で利用したいというニーズがある。このニーズに対し、例えば、前記のリファクタリングの観点では、対象プログラムに含まれるモジュール毎の複雑度を算出して、該複雑度が高いモジュールを選択するという方法が知られている。特許文献１では、さらにリファクタリング時の効果を高めるために、モジュール呼出階層の減衰係数と、呼出階層毎のデータやモジュールの利用数を用いて、モジュール毎にプログラム全体を考慮した複雑度を算出して、値が高いモジュールを選択する方法が提案されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】国際公開第ＷＯ０９／０１１０５６号
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、特許文献１を始めとする従来の方法では、リファクタリング観点でのモジュールを自動で選択できるが、その他の観点でモジュールを自動選択することはできなかった。そのため、リファクタリング観点以外の観点でプログラムを可視化する場合には、人手で対象モジュールを選択する必要があり、その選択作業に工数を要していた。
【０００５】
本発明は、プログラムのソースコード内に含まれるモジュールについて、特定の観点に関連するものを自動的に選択して、当該プログラムを表す図を構築し、表示することにより当該プログラムを可視化することができるプログラム可視化装置、プログラム可視化方法、及びプログラム可視化プログラムを提供することを一つの目的としている。
【課題を解決するための手段】
【０００６】
上記のおよび他の課題を解決するために、本発明の一態様は、プログラムを当該プログラムのソースコードに含まれるモジュール単位で可視化するためのプログラム可視化装置であって、可視化対象の前記ソースコードを取得するためのソースコード取得部と、前記ソースコード自体、または該ソースコードに関連する他のソースコード又はデータに記述されているワードデータを取得するためのワードデータ取得部と、前記モジュールを可視化するに際して注目すべき観点情報と、各観点情報について設定されている観点関連度閾値とを対応付けて格納している観点情報記憶部と、該ワードデータ取得部が、前記観点情報記憶部に格納されている観点情報に基づいて、前記ソースコードから取得した前記ワードデータをキーワードとして格納するキーワード記憶部と、各前記モジュールについて設定した観点関連度を格納するモジュール別観点関連判定データ記憶部と、各前記モジュールの観点関連度を算出するために利用する項目と観点関連度に関する重み付け係数である観点関連度ウェイトデータとを対応付けて格納する作用判定表と、各前記モジュールの観点関連度を算出するために利用するモジュール間呼出パスと各モジュール間呼出パスに関
して設定されている前記観点関連度ウェイトデータとを対応付けて格納するモジュール間パスの観点関連度ウェイトデータ記憶部と、前記ソースコードに含まれるモジュール相互の呼出関係を示すモジュール呼出関係を抽出するためのモジュール呼出関係抽出部と、抽出した各前記モジュールに関して、前記観点情報記憶部に格納されている前記観点情報に対応するキーワードにより抽出されたモジュールである観点依存モジュールを基点とした前記モジュール相互間の呼出関係に関する観点関連度ウェイトまたは前記作用判定表に記録されている共通データ利用関係に関する観点関連度ウェイトを考慮して観点関連度の算出を行い、当該算出結果を前記モジュール別観点関連判定データ記憶部に格納するためのデータ解析部と、前記ソースコード内からモジュールを抽出するためのモジュール抽出部と、前記モジュール別観点関連判定データ記憶部に格納された各前記モジュールの観点関連度と、前記観点情報記憶部に格納されている、対応するキーワードに設定されている観点関連度とを比較することにより、前記ソースコードから抽出した前記モジュールを可視化するか否かの判定を行う可視化判定部と、前記可視化判定部が可視化すると判定した前記モジュールを所定の書式で出力する表示出力部とを備える。
【発明の効果】
【０００７】
本発明の一態様によれば、プログラムのソースコード内に含まれるモジュールについて、特定の観点に関連するものを自動的に選択して、当該プログラムを表す図を構築し、表示することにより当該プログラムを可視化することができる。
【図面の簡単な説明】
【０００８】
【図１】図１は、本発明の一実施形態に係るプログラム可視化装置１００を備える情報処理システム１のハードウェア構成の一例図である。
【図２】図２は、図１のプログラム可視化装置１００のソフトウェア構成の一例図である。
【図３】図３は、本実施形態における観点表２１３の一例図である。
【図４】図４は、本実施形態における観点関連判定ノイズ補正閾値データテーブル２１４の一例図である。
【図５】図５は、本実施形態におけるモジュール別観点関連判定データテーブル２１５の一例図である。
【図６】図６は、本実施形態における作用判定表２１６の一例図である。
【図７】図７は、本実施形態におけるモジュール間パスの観点関連度ウェイトデータテーブル２１７の一例図である。
【図８】図８は、本実施形態におけるプログラム図作成フローチャートの一例図である。
【図９】図９は、本実施形態におけるモジュール観点関連度算出フローチャートの一例図である。
【図１０】図１０は、本実施形態における、互いに呼出関係にはないが、観点依存モジュールと作用関係にあるモジュールの抽出フローチャートの一例図である。
【図１１】図１１は、本実施形態における、モジュール間パスの観点関連度ウェイト設定フローチャートの一例図である。
【図１２】図１２は、本実施形態における、モジュール相互間の呼出関係を利用した、モジュールの観点関連度算出フローチャートの一例図である。
【図１３】図１３は、本実施形態における、モジュールの観点関連度補正フローチャートの一例図である。
【図１４】図１４は、モジュール呼出構造の一例を示す説明図である。
【図１５】図１５は、観点関連度変更に応じて可視化されたプログラム図が変化する状態を示す一例図である。
【発明を実施するための形態】
【０００９】
以下、本発明の一実施形態によるプログラム可視化装置、プログラム可視化方法、及びプログラム可視化プログラムについて、図面を用いて詳細に説明する。
【００１０】
本実施形態では、複数のモジュールを含む可視化対象ソースコードに対して、特定の観点に関連するモジュールのみで構成されたプログラム図を生成することにより可視化する方法の一例を説明する。特定の観点としてここでは「マイコン」を取り上げるが、観点は左記に限定されることはない。
【００１１】
まず、本実施形態による情報処理装置１００を含む情報処理システム１について、図１を参照して説明する。図１は、本実施形態に係る情報処理システム１に含まれる情報処理装置１００のハードウェア及びシステム構成の一例を示す図である。情報処理システム１は、本実施形態における主要な機能が実装されている情報処理装置１００と、他の情報処理装置、ネットワークストレージといった、データを保存することが可能な情報装置Ａ（１１０）と、情報装置Ｂ（１２０）とを含み、これらの間が、例えば、インターネット等の通信ネットワーク１３０により接続されることによって構成されている。本実施形態の情報処理システム１では、情報装置Ａ、情報装置Ｂにおいて情報処理システム１の機能を実現するためのデータ処理が実行され、情報処理装置１００に実装されている本実施形態のプログラム可視化機能によって、情報装置Ａ，Ｂに実装されているプログラムの改修時等に必要な可視化処理が実行される。
【００１２】
情報処理装置１００は、ハードウェアとして、ＣＰＵ（Central Processing Unit）、
ＭＰＵ（MicroProcessing Unit）等のプロセッサ１０１、キーボード、マウス等のデータ入力デバイスを含む入力装置１０２、ハードディスクドライブ（HDD）、半導体ドライブ
（SSD）等の記憶デバイスを含む二次記憶装置１０３、ＲＯＭ（Read Only Memory）、Ｒ
ＡＭ（Random Access Memory）等の記憶デバイスを含む主記憶装置１０４、ディスプレイ等の表示装置１０５、及びプロセッサ１０１が通信ネットワーク１３０と通信するための機能が実装された、ネットワークインタフェースカード（ＮＩＣ）等を含む通信装置１０７を有する。なお、各装置はバス１０６によって接続され、各装置間で相互にデータの送受信が可能である。また、
【００１３】
次に、情報処理装置１００、情報装置Ａ（１１０）、及び情報装置Ｂ（１２０）のソフトウェア構成について説明する。図２は、本実施形態に係る情報処理装置１００、情報装置Ａ（１１０）、及び情報装置Ｂ（１２０）の機能ブロックの一例を示す図である。なお、本実施形態においては、情報処理装置１００の機能ブロックの全てがプロセッサ１０１によって実行または操作されるソフトウェアプログラム、データであるものとして説明するが、前記機能ブロックの一部または全ては、ハードウェアとして実現されてもよい。また、本来は、図２に例示している機能ブロックに加え、各機能ブロックの起動、管理等を行うオペレーティングシステム（ＯＳ）、制御プログラム等が存在するが、本実施形態では、これらの機能ブロックの連携動作を適宜説明することとし、ＯＳ、制御プログラムがここで適宜説明された連携動作に必要となる機能ブロックの起動、動作管理を行うことは自明であるので、これらのＯＳ、制御プログラムについては説明及び記載を省略する。
【００１４】
図２に示すように、本実施形態に係る情報処理装置１００は、機能ブロックとして、処理対象ソースコードを取得するためのソースコード取得部２００、ソースコード解析のキーワードを取得するためのキーワード取得部２０１(ワードデータ記憶部)、ソースコードを解析するためのデータ解析部２０２、ソースコードに含まれるモジュール単位で可視化するか否かを判定するための可視化判定部２０３、プログラム図の描画を実行するための描画指示部２０４、可視化処理結果であるプログラム図作成の全体処理を管理するためのプログラム図作成制御部２０５、ソースコード解析のキーワードを格納しているキーワードデータベース（ＤＢ）２１１、ソースコードに含まれる全モジュールの呼出関係を示す
図を作成するためのモジュール呼出関係図作成部２１２、モジュール可視化の観点を含む観点表２１３（観点情報記憶部）、各モジュールの可視化観点との関連度を判定するためのデータを含む観点関連判定ノイズ補正閾値データテーブル２１４（観点関連判定補正情報記憶部）、モジュール別観点関連判定データテーブル２１５（モジュール別観点関連判定データ記憶部）、作用判定表２１６、及びモジュール間パスの観点関連度ウェイトデータテーブル２１７（モジュール間パスの観点関連度ウェイトデータ記憶部）を有する。また、情報装置Ａ（１１０）は、情報処理システム１によって実行されるプロジェクトＡ（図中では「PJA」と略称する。）に関するソースコード群２０６、及びソースコードＡ（
２０７）を有する。ソースコードＡ（２０７）は、モジュールという単位の部分的プログラムで構成されている。また、情報装置Ｂ（１２０）は、同じく情報処理システム１によって実行されるプロジェクトＢ（図中では「PJB」と略称する。）に関するソースコード
群２０８、及びソースコードＢ（２０９）を有する。ソースコードＢ２０９は、ソースコードＡ（２０７）と同様に、モジュールという単位の部分的プログラムで構成されている。なお、プロジェクトＡに関するソースコード群２０６、及びソースコードＡ（２０７）、プロジェクトＢに関するソースコード群２０８、及びソースコードＢ（２０９）は必ずしも上述の場所に配置される必要はなく、情報処理装置１００、情報装置Ａ（１１０）、及び情報装置Ｂ（１２０）のいずれに格納されていてもよい。なお、上記の各機能ブロック及びデータ群については、情報処理装置１００等のデータ処理内容に関連して以下に順次説明する。
【００１５】
ここで、本実施形態の情報処理装置１００での可視化処理に使用されるデータ類について説明する。まず、観点表２１３について説明する。図３に、観点表２１３の一構成例を示す。この観点表２１３は、システム管理者等が、情報処理装置１００の運用開始前にあらかじめ適宜の記憶領域内に設定して格納しておく。観点表２１３には、処理対象プログラムにおいて可視化するモジュールの観点を示すワードデータと、その観点に関連するモジュールを選択する際に用いる観点関連度の閾値とが格納される。図３の例では、観点を示すワードとして、カテゴリと、カテゴリに関係するキーワードとを採用してデータを整理している。例えば、マイコンというカテゴリには、SH（SuperH（登録商標））、ARM（
登録商標）等のマイコンカテゴリーに属する下位のキーワード等が含まれる。また、バイトオーダというカテゴリには、バイトデータの並び順種別を示すLITTLE_ENDIAN（リトル
エンディアン）、BIG_ENDIAN（ビッグエンディアン）等のキーワードが含まれる。これらのカテゴリ及びキーワードは、情報処理装置１００の機能ブロックであるキーワード取得部２０１が、ソースコード、あるいはソースコードに関する開発・保守データ等で設定されているマクロ、キーワード情報等を取得し、キーワードＤＢ２１１へ格納する際に利用する。観点関連度の閾値は、可視化処理の観点に関連するモジュールを選択する際に用いられる。観点関連度の算出に関しては後述するが、観点関連度はモジュール毎に算出される。このモジュール観点での関連度は観点表２１３記載の閾値と比較されて当該モジュールを可視化するか否かを判定するために利用される。なお、この観点に関連するモジュールの選択は、可視化するか否かを判定するために行うだけでなく、特定のモジュールを強調表示するなどの他の制御に利用することもできる。
【００１６】
次に、観点関連判定ノイズ補正閾値データテーブル２１４について説明する。図４に、観点関連判定ノイズ補正閾値データテーブル２１４の一構成例を示す。この観点関連判定ノイズ補正閾値データテーブル２１４は、システム管理者等が、情報処理装置１００の運用開始前にあらかじめ適宜の記憶領域内に設定して格納しておく。観点関連判定ノイズ補正閾値データテーブル２１４は、観点関連度０のモジュールであるべきにもかかわらず観点関連度が０より大きく算出されている、といったように、本来あるべき値よりも高く観点関連度が算出されているモジュールをノイズと判断してその観点関連度を補正する目的で使用する。観点関連判定ノイズ補正閾値データテーブル２１４には、ノイズ補正判定項目、条件、観点、閾値、及び観点関連度補正値の各項目が格納される。図４の例では、こ
れらの判定項目として、呼出元側観点非関連パスの数、呼出元側全パスに対する観点非関連パスの比率（％）、及び観点依存モジュールからの呼出段数を設定している。この判定項目には、各項目が前提とする条件を設定することも可能である。図４の例では、「呼出元側観点非関連パスの数」及び「呼出元側全パスに対する観点非関連パスの比率（％）」の項目に、「観点関連度ウェイトが０より大きなモジュール間パスを辿り、呼出先側で観点関連モジュールに辿りつけない、且つ呼出元側で観点関連モジュールに辿りつける」という状況下での項目であるという条件がついている。この判定項目と前提条件については、後に詳述する。この条件を満たしていない場合はその判定項目については偽、すなわちノイズ補正の対象でないと判定される。
【００１７】
また、図４の例では、ユーザが指定する、モジュールの観点を指すカテゴリ、キーワードとして、SH、マイコン、及びLITTLE_ENDIANを挙げており、それぞれ閾値を図の通りに
設定している。ここで、観点関連モジュールについて説明する。観点関連モジュールとは、以下の（１）〜（４）の四種類のタイプのモジュールを指すものとする。
（１）上述した観点に関するキーワードが、コメントやマクロ等の形で直接記述されているモジュール。このタイプのモジュールは、観点関連モジュールであり、観点依存モジュールともいうことができる。
（２）観点依存モジュールを、直接的または間接的な形で呼出先に持つモジュール。このタイプのモジュールは、観点依存モジュールを使用するという点で、観点関連モジュールということができる。ただし、本タイプは、観点依存モジュールを使用する必然性のないモジュールも含まれる可能性があるため、こういったモジュールは可視化対象から除く必要がある。
（３）観点依存モジュールを、直接的または間接的な形で呼出元に持つモジュール。このタイプのモジュールは、観点依存モジュールから使用されるという点で、観点関連モジュールということができる。ただし、本タイプには、汎用的に利用されるモジュールも含まれる可能性があり、そのようなモジュールは除く必要がある。
（４）観点関連モジュールが使用しているデータに対し代入を行うモジュール。データを介して互いに作用し合う関係であるため、観点関連モジュールであると言える。ただし、本タイプには共通のデータを参照しているだけの関係にあるモジュールも含まれる可能性があり、その場合には互いに作用し合わないモジュールとして除く必要がある。
【００１８】
本実施例では、簡単のために、観点関連度が０のモジュールを観点非関連モジュール、観点関連度が０より大きなモジュールを観点関連モジュールと判定するものとしている。これに限らず、観点関連度がある閾値未満のモジュールを観点非関連モジュールと判定し、観点関連度がある閾値以上のモジュールを観点関連モジュールと判定することも可能である。
【００１９】
また、図４の例では、観点関連判定ノイズ補正項目として、呼出元側観点非関連パスの数、呼出元側全パスに対する観点非関連パスの比率（％）、及び観点依存モジュールからの呼出段数の三つを挙げている。呼出元側観点非関連パスの数は、判定対象モジュールから呼出元側の最も先頭のモジュールまで辿った時に、そのパス上に存在する全てのモジュールが非関連モジュールであるパスの数である。一般的に、観点と非関連なモジュールから利用されればされる程、判定対象モジュールが観点非関連である可能性が高くなる。呼出元側全パスに対する観点非関連パスの比率（％）は、判定対象モジュールから呼出元側の最も先頭のモジュールまで辿った時に存在する全てのパスに対する、呼出元側観点非関連パス数の比率である。一般的に、観点と非関連なモジュールから利用されればされる程観点非関連パスの比率が高くなり、判定対象モジュールが観点非関連である可能性が高くなる。観点依存モジュールからの呼出段数は、判定対象モジュールと、該モジュールから最も近い観点依存モジュールとの間の呼出段数である。一般的に、観点関連のモジュール同士は近い呼出関係となるため、観点依存モジュールから離れれば離れる程、判定対象モ
ジュールが観点非関連である可能性が高くなる。本実施例では、観点関連判定ノイズ補正項目の判定が真になったときの観点関連補正値として０を使用し、当該モジュールを観点非関連モジュールとして扱うこととしている。
【００２０】
次に、モジュール別観点関連判定データテーブル２１５について説明する。図５に、モジュール別観点関連判定データテーブル２１５の一構成例を示す。モジュール別観点関連判定データテーブル２１５は、システム管理者等が、情報処理装置１００の運用開始前にあらかじめ適宜の記憶領域内に設定して格納しておく。モジュール別観点関連判定データテーブル２１５には、可視化対象のプログラムに含まれる各モジュールに対して算出した観点関連度が格納される。図５の例では、各モジュールについての観点を意味するキーワード、あるいはカテゴリである、SH、マイコン等に関して、可視化対象ソースコード内のモジュールである、モジュールＡ、モジュールＢ、及びモジュールＣまたはモジュールＤの観点関連度を記載している。観点関連度の値は０〜１の範囲の数値であり、観点非関連の場合には０であり、観点の関連が強くなるほど数値が大となる。
【００２１】
次に、作用判定表２１６について説明する。図６に、作用判定表２１６の一構成例を示す。作用判定表２１６は、システム管理者等が、情報処理装置１００の運用開始前にあらかじめ適宜の記憶領域内に設定して格納しておく。作用判定表２１６には、判定対象モジュールが、観点関連モジュールとデータの共通利用を通じて互いに作用し合うかを調べることで、モジュール同士に関連があるか否かを判定するための項目が格納される。これらの判定項目は、判定状況に応じて使い分けるものとし、モジュールの呼出関係がある時に限定される項目か否かによって分類されている。モジュールの呼出関係に限定される項目として、例えば、「変数を参照渡しで受け取り、該変数へ代入しているか」、及び「戻り値を変数で受け取り、利用しているか」の項目が挙げられる。また、モジュールの呼出関係に限定されない項目として、例えば、「観点関連モジュールが使用しているグローバル変数へ代入しているか」、「観点関連モジュールが使用しているファイルへ代入しているか」の項目が挙げられる。「戻り値を変数で受け取り、利用しているか」の項目に関しては、該戻り値を、例えば割込み処理等で使用するフラグとして活用可能な変数で受け取って利用している場合、エラー値チェックで利用している場合、等に限定することで、プログラム改修等担当者にとってより有意義な作用関係をより精度よく判定することができる。作用判定表２１６では、判定項目毎に観点別の観点関連度ウェイトデータ（以下単に「観点関連度ウェイト」）を記載している。該観点関連度ウェイトは、モジュールの観点関連度を算出する際、またはモジュール間の呼出パスの観点関連度ウェイトを設定する際に使用する値であり、これについては後述する。
【００２２】
次に、モジュール間パスの観点関連度ウェイトデータテーブル２１７について説明する。図７に、モジュール間パスの観点関連度ウェイトデータテーブル２１７の一例を示す。モジュール間パスの観点関連度ウェイトデータテーブル２１７は、システム管理者等が、情報処理装置１００の運用開始前にあらかじめ適宜の記憶領域内に設定して格納しておく。モジュール間パスの観点関連度ウェイトデータテーブル２１７には、プログラム可視化にあたっての観点毎に、モジュール間の呼出パスに設定された観点関連度ウェイトが記録される。モジュール間パスの観点関連度ウェイトデータテーブル２１７に記録される観点関連度ウェイトは、図６の作用判定表２１６に記載された観点関連度ウェイトを利用して設定するが、その処理内容については後述する。
【００２３】
次に、本実施形態の情報処理装置１００により、プログラムを可視化する処理について説明する。図８に、情報処理装置１００で、図２の情報装置Ａ（１１０）に実装されているソースコードＡ（２０７）を可視化する処理の処理フロー例を示している。
【００２４】
情報処理装置１００の入力装置１０２からの指示等により、プログラム図作成制御部２
０５は、プログラム図作成を開始する（Ｓ８００）。本実施形態では、プログラム図としてプログラム内のモジュールを全て可視化せず、「マイコン」に関連するモジュールのみで構成されたプログラム図を作成する例を示す。
【００２５】
まず、プログラム図作成制御部２０５は、入力装置１０２等を通じて、ソースコード群２０６の中から可視化するソースコードの指定を受け付ける。本実施形態では、可視化対象ソースコードとして、情報装置ＡのソースコードＡが指定されたものとする。可視化対象ソースコードが指定されると、ソースコード取得部２００が、通信装置１０７を介し、プロジェクトＡ（ＰＪＡ）に関するソースコード群２０６の中から、可視化対象であるソースコードＡを取得する（Ｓ８０１）。ソースコード群２０６のサイズが巨大で、ソースコードＡの検索に時間を要すると予想される場合には、ユーザ指示により、予め、使用が予想されるファイルを、例えば情報処理装置１００といった高速な検索が可能となる記憶領域へ移動またはコピーしておくことができる。
【００２６】
次いで、キーワード取得部２０１は、Ｓ８０１で取得した可視化対象ソースコードＡが属するプロジェクトＡに関するソースコード群２０６で設定されているマクロ、キーワード情報を取得し、キーワードＤＢ２１１に格納する（Ｓ８０２）。この際、観点表２１３によるキーワードの分類を参考にして、キーワードＤＢ２１１へ格納するようにしてもよい。このようにすることで、例えば、キーワードであるSHと、それを含むカテゴリであるマイコンといったように、キーワードの上位概念まで含めてまとめることができる。なお、本例では、キーワード取得部２０１が取得するキーワードとして、ソースコード内に記述されるマクロ、キーワードを挙げているが、左記に限定されることはなく、例えば、変数名、関数名等種々の記述内容利用することができる。さらに、キーワードを取得する対象として、可視化対象ソースコードＡが属するプロジェクトＡに関するソースコード群２０６に限定されず、可視化対象と関係のないソースコードＢ（２０９）が属するプロジェクトＢ（ＰＪＢ）に関するソースコード群２０８等、様々なソースコードやそれに関する開発・保守データを利用することも可能である。
【００２７】
次に、プログラム図作成制御部２０５は、入力装置１０２を介して、キーワードＤＢ２１１に格納されている観点（キーワード/カテゴリ）の指定を受け付ける。この際、カテ
ゴリの概念を利用することで、一つのキーワードだけでなく、関係のある複数のキーワードをまとめて、モジュール選択に活用することができる。本例では、観点としてカテゴリであるマイコンをユーザが指定したものとする。また、プログラム図作成制御部２０５は、入力装置１０２から、観点関連判定ノイズ補正項目の指定を受け付ける。本例では、観点関連判定ノイズ補正項目として、観点関連判定ノイズ補正閾値データテーブル２１４で挙げている項目である、呼出元側観点非関連パスの数、呼出元側全パスに対する観点非関連パスの比率（％）、及び観点依存モジュールからの呼出段数を想定している。ここでは、ユーザが、観点関連判定ノイズ補正項目として、呼出元側観点非関連パスの数を指定したものとする。なお、観点関連判定ノイズ補正項目として左記で挙げた項目に限定されることはなく、また、ノイズ除去項目として一つのみの選択に限定されることはなく、複数の項目を同時に利用することも可能である。また、観点関連判定ノイズ補正項目は、必ずしもユーザが入力する必要はなく、使用率が高い項目を優先的に自動で選択するといったように、様々な選択方法が考えられる。
【００２８】
次に、モジュール呼出関係図作成部２１２が、Ｓ８０１でユーザが指定した可視化対象ソースコードＡ内で定義しているモジュール、またはソースコードＡ内で呼び出しているモジュールに関する呼出関係図を作成する（Ｓ８０４）。この際、ソースコードＡに関わるモジュールから直接呼び出しているモジュール、及びソースコードＡに関わるモジュールを直接呼び出しているモジュールだけを考慮するのではなく、ソースコードＡに関わるモジュールから間接的に呼び出されているモジュール、ソースコードＡに関わるモジュー
ルを間接的に呼び出しているモジュールも含めて呼出関係図を作成する。この際、さらに、ソースコードのコンパイル時に指定するコンパイラオプション、#pragma等の内容も考
慮することも考えられる。
【００２９】
次に、データ解析部２０２が、Ｓ８０４で作成したモジュール呼出関係図に含まれる全モジュールについて、観点関連度の算出を行い、結果をモジュール別観点関連判定データテーブル２１５へ格納する（Ｓ８０５）。なお、本処理内容は後に詳述する。
【００３０】
次に、プログラム図作成制御部２０５が、Ｓ８０１で取得したソースコードＡに含まれる、未だ可視化判定していないモジュールの内、一つのモジュールを可視化判定対象モジュールとして取得する（Ｓ８０６）。次いで、可視化判定部２０３が、該モジュールを可視化するか否かを判定する（Ｓ８０７）。この際、モジュール別観点関連判定データテーブル２１５に格納されているモジュール毎の観点関連度と、観点表２１３に格納されている、Ｓ８０３でユーザが指定した観点の閾値とを比較し、前者の値が後者の値より大きいと判定した場合（Ｓ８０７，Ｙｅｓ）、次いで描画指示部２０４が、該モジュールを表示する（Ｓ８０８）。観点関連度の値が閾値より小さいと判定した場合（Ｓ８０７，Ｎｏ）、描画指示部２０４が、該モジュールを非表示にする（Ｓ８０９）。
【００３１】
次いで、プログラム図作成制御部２０５が、Ｓ８０１で取得したソースコードＡに未だ可視化判定していないモジュールがあるか否かを判定する（Ｓ８１０）。可視化判定していないモジュールがあると判定した場合（Ｓ８１０，Ｙｅｓ）、プログラム図作成制御部２０５はＳ８０６の処理へ戻る。可視化判定していないモジュールがないと判定した場合（Ｓ８１０，Ｎｏ）、プログラム図作成制御部２０５は、プログラム図作成処理を終了する（Ｓ８１１）。以上のプログラム図作成処理により、可視化対象プログラムにおける観点関連度に応じたモジュールを含むプログラム図を作成することができる。
【００３２】
次に、図８に例示したプログラム図作成処理におけるモジュールの観点関連度算出処理について説明する。図９に、モジュールの観点関連度算出処理（図８のＳ８０５）の処理フロー例を示す。Ｓ９００で処理を開始すると、まずデータ解析部２０２が、Ｓ８０４で作成したモジュール呼出関係図に関わる全モジュールの名称をモジュール別観点関連判定データテーブル２１５へ記録し、Ｓ８０４で作成したモジュール呼出関係図に関わる全モジュールの中から観点依存モジュールを抽出する（Ｓ９０１）。この際、本例ではソースコードＡが属するプロジェクトＡに関するソースコード群２０６の全ソースコードを活用するものとし、Ｓ８０３でユーザが指定した観点として、キーワードが指定されていた場合、該キーワードの記述を含むモジュールを、また、カテゴリが指定されていた場合、観点表２１３に記載された、一または複数のカテゴリ内キーワードのうちのいずれか一のキーワード記述があるモジュールを、観点依存モジュールとして抽出する。本例では、マイコンというカテゴリがユーザより指定された場合を想定する。観点表２１３には、マイコンというカテゴリに、SHとARMという二つのキーワードが記載されているため、これらの
キーワードのいずれかの記述があるモジュールを観点依存モジュールとして抽出する。Ｓ９０１で抽出する観点依存モジュールについては、モジュール別観点関連判定データテーブル２１５の観点関連度に１を記録する。ここで記載する観点関連度として、１以外の値を記録してもよい。また、観点依存モジュールを抽出する本処理で活用するソースコード群は、可視化対象ソースコードＡが属するプロジェクトＡに関するソースコード群２０６に限らず、別のプロジェクトのソースコード、例えばプロジェクトＢに関するソースコード群２０８が活用可能ならば、適宜活用して差し支えない。
【００３３】
次に、データ解析部２０２が、Ｓ９０１で抽出した観点依存モジュール（モジュール別観点関連判定データテーブル２１５に記録されている観点関連度が１である観点関連モジュール）を基点として、互いに呼出関係にあるか否かに限定されず、該モジュールと共通
のデータを介した作用関係にあるモジュールを観点関連モジュールとして抽出する（Ｓ９０２）。本処理内容は後に詳述する。
【００３４】
次いで、データ解析部２０２が、Ｓ８０４で作成したモジュール呼出関係図に関わる全モジュール間に存在する呼出パスの観点関連度ウェイトを設定する（Ｓ９０３）。本処理内容は後に詳述する。
【００３５】
次に、データ解析部２０２が、モジュールの呼出関係を利用してモジュールの観点関連度算出を行う（Ｓ９０４）。本処理内容は後に詳述する。
【００３６】
次いで、データ解析部２０２が、Ｓ９０４で算出したモジュール観点関連度の補正を行う（Ｓ９０５）。本処理内容は後に詳述する。以上の処理により、観点依存モジュール及びそれらと呼出関係にあるモジュールについて、可視化するか否かの判定指標となる観点関連度を算出することができる。
【００３７】
図１０に、互いに呼出関係にはないが、観点依存モジュールと共通のデータを介した作用関係にあるモジュールを観点関連モジュールとして抽出する際の一例であるフローチャートを示す。本フローは、図９に例示するモジュールの観点関連度算出処理におけるＳ９０２の処理を詳細化したものである。なお、図１０の例では観点依存モジュールを基点としてＳ９０２の処理を行うが、観点関連度がある閾値以上と判定されるモジュールを基点としてＳ９０２の処理を行うことも可能である。
【００３８】
図１０のＳ１０００で本処理が開始されると、まず、データ解析部２０２が、Ｓ９０１の処理を未だ行っていない観点依存モジュール（Ａ）を一つ選択する（Ｓ１００１）。該モジュールは、図１０の例では、モジュール別観点関連判定データテーブル２１５に記載されている、観点関連度１と判定されているモジュールである。
【００３９】
次に、データ解析部２０２が、互いに呼出関係にあるか否かに限定されず、モジュール（Ａ）と作用関係にあるモジュールを抽出する（Ｓ１００２）。Ｓ１００２で抽出したモジュールは、モジュール観点関連度を算出した後に、その値をモジュール別観点関連判定データテーブル２１５に記載する。なお、この際の判定項目として、作用判定表２１６に記載されている「呼出関係に限定されず」の状況で利用する項目を用いる。図１０の例では、左記の内、「観点関連モジュールが使用しているグローバル変数へ代入しているか」という項目を判定で用いている。本処理で抽出したモジュールの観点関連度は、作用関係にあるモジュールの観点関連度に、作用判定表２１６記載の観点関連度ウェイトを乗算した値を用いることとし、この算出値をモジュール別観点関連判定データテーブル２１５に記載する。図１０の例では、図６の例により、マイコン依存モジュールの観点関連度１に、観点関連度ウェイト０．８を乗算して得られる数値０．８が観点関連度となる。ここでは、マイコンというカテゴリがユーザによって指定された場合を想定しているが、判定項目は本例で使用したものに限定されることはなく、「観点関連モジュールが使用しているファイルへ書き込みしているか」等の他の項目を用いることもでき、または複数の判定項目を加味して用いることも可能である。
【００４０】
次に、データ解析部２０２が、図９のＳ９０１で抽出した観点依存モジュールの内、未だＳ９０１の処理を行っていないものがあるか否かを判定する（Ｓ１００３）。Ｓ９０１の処理を行っていないものがあると判定した場合（Ｓ１００３，Ｎｏ）、データ解析部２０２はＳ１００１に戻って未処理の観点依存モジュールを取得する。すべての観点依存モジュールについてＳ９０１の処理を行ったと判定した場合（Ｓ１００３，Ｙｅｓ）、データ解析部２０２は、本処理フローを抜けて図９のＳ９０２の処理へ進む。以上の処理フローにより、呼出関係に限定されず観点依存モジュールと作用関係にあるモジュールを抽出
することができる。
【００４１】
次に、図９に例示するモジュールの観点関連度算出処理フローにおけるモジュール間パスの観点関連度ウェイト設定処理について説明する。図１１に、モジュール同士の呼出関係、及び共通のデータを介した直接的または間接的な作用関係を利用して、図８のＳ８０４で作成したモジュール呼出関係図に関わる全モジュール間に存在する呼出パスの観点関連ウェイト設定を行う際のフローチャート例を示す。本フローは、図９のＳ９０３の処理を詳細化したものである。本処理フローでの判定項目としては、図６の作用判定表２１６に記載されている「呼出関係に限定」の状況で利用する項目を用いる。これらの項目を利用することで、呼出関係を利用した、モジュール間のデータを介する作用関係の度合いを示す指標である観点関連度ウェイトをモジュール間パスに設定し、後に行うモジュール毎の観点関連度算出で利用することができる。
【００４２】
Ｓ１１００で処理を開始すると、データ解析部２０２が、図８のＳ８０４で作成したモジュール呼出関係図に関わる全モジュールの内、Ｓ９０３の処理を未だ行っていないモジュール（Ｂ）を一つ選択する（Ｓ１１０１）。次いで、データ解析部２０２が、選択したモジュール（Ｂ）とその呼出先モジュール（Ｂ１）との間のモジュール間パスの観点関連度ウェイト設定を行う。なお、この際、図１１の例では、ウェイト設定で用いる項目として、図６の作用判定表２１６に記載されている「呼出関係に限定」の状況で利用する項目を利用している。本例では、「変数を参照渡しで受け取り、該変数へ代入しているか」という項目を利用するものとする。すなわち、データ解析部２０２は、モジュール（Ｂ）の呼出先モジュール（Ｂ１）は、（Ｂ）から変数を参照渡しで受け取り、該変数へ代入を行うモジュールであるか判定し、モジュール（Ｂ）から変数を参照渡しで受け取り、該変数へ代入を行うモジュールであると判定した場合（Ｓ１１０２，Ｙｅｓ）、モジュール（Ｂ）−（Ｂ１）間のパスの観点関連度ウェイトとして、図６の作用判定表２１６記載の観点関連度ウェイトを利用する。ここでは観点はマイコンであることから、図６より観点関連度ウェイトとして０．８をモジュール間パスの観点関連度ウェイトデータテーブル２１７へ記載する（Ｓ１１０３）。モジュール（Ｂ）から変数を参照渡しで受け取り、該変数へ代入を行うモジュールでないと判定した場合（Ｓ１１０２，Ｎｏ）、モジュール間パスの観点関連度ウェイトとしては、ウェイトとして０を利用するものとし、モジュール間パスの観点関連度ウェイトデータテーブル２１７へ記載する（Ｓ１１０４）。全ての呼出先モジュールの判定が終わると、データ解析部２０２はＳ１１０５の処理へ進む。なお、モジュール（Ｂ）から変数を参照渡しで受け取り、該変数へ代入を行うモジュールでないと判定した場合の観点関連度ウェイトは本例では０としたが、別の値を用いることも可能である。
【００４３】
次に、データ解析部２０２が、Ｓ１１０１で取得したモジュール（Ｂ）とその呼出元モジュール（Ｂ０）との間のモジュール間パスの観点関連度ウェイト設定を行う。なお、この際、ウェイト設定で用いる項目として、図６の作用判定表２１６に記載されている「呼出関係に限定」の状況で利用する項目を利用する。本例では、図６にある「戻り値を変数で受け取り、利用しているか」という項目を利用するものとする。戻り値を変数で受け取り、利用していると判定した場合（Ｓ１１０５，Ｙｅｓ）、データ解析部２０２は、該当モジュール間パスの観点関連度ウェイトとして、図６の作用判定表２１６記載の観点関連度ウェイトを利用する。すなわち、図６の例では、観点はマイコンであることから、モジュール間パスの観点関連度ウェイトデータ２１７へ、観点関連ウェイトとして０．５を記載する（Ｓ１１０６）。戻り値を変数で受け取り、利用していないと判定した場合（Ｓ１１０５，Ｎｏ）、データ解析部２０２は、該当モジュール間パスの観点関連度ウェイトとしては、本例では０を利用するものとし、モジュール間パスの観点関連度ウェイトデータテーブル２１７へ記載する（Ｓ１１０７）。
【００４４】
全ての呼出先モジュールの判定が終わると、データ解析部２０２はＳ１１０８へ進む。なお、Ｓ１１０２、Ｓ１１０５の判定処理で判定結果が偽であった場合の観点関連度ウェイトは、図１１の例では０と設定したが、別の値を用いることも可能である。また、Ｓ１１０３、Ｓ１１０４、Ｓ１１０６、Ｓ１１０７において、観点関連ウェイトをモジュール間パスの観点関連度ウェイトデータテーブル２１７に記載する際に、既に値が記載されていることも考えられる。その際は、既に記載されている値と今回の値のどちらか値の高い方を利用する、両者の値の平均値を設定する等の処理が考えられる。本例では、そのような場合、値の高い方を利用するものとしている。また、本例では、Ｓ１１０２、Ｓ１１０５のように、呼出先モジュールへのパスと呼出元モジュールへのパスの観点関連度設定を行っているが、必ずしも両方行う必要はない。
【００４５】
次に、データ解析部２０２が、図８のＳ８０４で作成したモジュール呼出関係図に関わる全モジュールの内、未だＳ９０３の処理を行っていないものがあるか否かを判定する（Ｓ１１０８）。未だＳ９０３の処理を行っていないものがあると判定した場合（Ｓ１１０８，Ｙｅｓ）、データ解析部２０２は、Ｓ１１０１の処理へ戻り、次のモジュール（Ｂ）を取得する。すべてのモジュールについてＳ９０３の処理を行ったと判定した場合（Ｓ１１０８，Ｎｏ）、データ解析部２０２は、本処理フローを抜けて、図９のＳ９０４へ進む。
【００４６】
次に、呼出関係を利用したモジュールの観点関連度算出処理について説明する。図１２に、図８のＳ８０４で作成したモジュール呼出関係図に関わる全モジュールに対して図９のＳ９０４で行うモジュール観点関連度算出処理の処理フロー例を示している。
【００４７】
Ｓ１２００で処理を開始すると、まず、データ解析部２０２が、モジュール別観点関連判定データテーブル２１５に記載されたモジュールの内、観点関連度の値が所定閾値以上であるモジュール（Ｃ）を全て取得する（Ｓ１２０１）。本例では、観点関連度の数値が１以上であるモジュール、つまり観点依存モジュールをすべて取得するものとする。
【００４８】
次いで、データ解析部２０２が、モジュール別観点関連判定データテーブル２１５に観点関連度が記載されていないモジュールの一つを、観点関連度を算出する対象のモジュールとして取得する（Ｓ１２０２）。
【００４９】
次いで、データ解析部２０２が、Ｓ１２０２で取得した対象モジュールから、モジュール間パスの観点関連度ウェイトデータテーブル２１７記載の観点関連度ウェイトの数値が０より大きなモジュール間パスを辿り、呼出先側または呼出元側方向でモジュール（Ｃ）に到達可能か否かを判定する（Ｓ１２０３）。今後、これらの到達可能なモジュール（Ｃ）を、全てまとめて「到達可能モジュール」と呼ぶこととする。呼出先側または呼出元側方向でモジュール（Ｃ）に到達可能であると判定した場合（Ｓ１２０３，Ｙｅｓ）、データ解析部２０２は、Ｓ１２０４へ進む。Ｓ１２０４では、データ解析部２０２が、対象モジュールの観点関連度を算出して、モジュール別観点関連判定データテーブル２１５へ記載する。この際の観点関連度の算出方法は複数考えられる。本例では、到達可能なモジュール（Ｃ）の観点関連度、及びそこまでに辿った呼出パス全ての観点関連度ウェイトを乗算する計算を、全ての到達可能モジュールに対して行い、それらの計算結果の和を取ったものを対象モジュールの観点関連度としている。
【００５０】
呼出先側または呼出元側方向でモジュール（Ｃ）に到達可能でないと判定した場合（Ｓ１２０３，Ｎｏ）、データ解析部２０２は、対象モジュールの観点関連度を０と設定して、モジュール別観点関連判定データテーブル２１５へ記載する。なお、関連度算出対象モジュールに対するモジュール（Ｃ）の呼出段数は、必ずしも呼出先一段目または呼出元一段目のモジュールである必要はなく、呼出先または呼出元から二段目以降のモジュールで
あってもよい。図１４に、この呼出段数の詳細を示している。図１４に示すように、対象モジュールを直接呼び出しているモジュールは呼出元一段目のモジュールと、呼出元一段目のモジュールを直接呼び出しているモジュールは呼出元二段目のモジュールと定義される。同様に、対象モジュールから直接呼び出されるモジュールは呼出先一段目のモジュールであり、呼出先一段目のモジュールから直接呼び出されるモジュールは呼出先二段目のモジュールである。
【００５１】
次いで、データ解析部２０２が、モジュール別観点関連判定データテーブル２１５に観点関連度が記載されていないモジュールがあるか否かを判定する（Ｓ１２０６）。モジュール別観点関連判定データテーブル２１５に観点関連度が記載されていないモジュールがあると判定した場合（Ｓ１２０６，Ｙｅｓ）、データ解析部２０２は、Ｓ１２０２にて次の関連度算出対象モジュールを取得する。モジュール別観点関連判定データテーブル２１５に観点関連度が記載されていないモジュールがないと判定した場合（Ｓ１２０６，Ｎｏ）、データ解析部２０２は図１２の処理フローを抜けて、図９のＳ９０５へ進む。
【００５２】
次に、モジュールの観点関連度の補正処理について説明する。図１３に、モジュール別観点関連判定データテーブル２１５に記載された全モジュールの観点関連度の補正処理の処理フロー例を示す。本処理フローは、図９のＳ９０５を詳細化したものである。
【００５３】
Ｓ１３００で処理を開始すると、データ解析部２０２が、図８のＳ８０４で作成したモジュール呼出関係図に関わる全モジュールの内、Ｓ１３０１で選択されたモジュールを把握するために作成しているリストに記録されていないモジュールを一つ選択する。その後、本処理で選択されたモジュールを前記リストへ追加する（Ｓ１３０１）。
【００５４】
次に、データ解析部２０２が、Ｓ１３０１で選択した対象モジュールに関して、モジュール別観点関連判定データテーブル２１５に記載された観点関連度の補正を行うか否かを判定する。具体的には、図１３に示すように、これら一連の補正処理は、Ｓ１３０２〜Ｓ１３０４までのフローで行う。本例で用いる補正を行うか否かの判定項目としては、観点関連判定ノイズ補正閾値データテーブル２１４に記載されている項目を使用する。本例では、呼出元側に存在する観点非関連のパス数の項目で判定するが、これ以外の判定項目を用いることも可能である。なお、観点関連判定ノイズ補正閾値データテーブル２１４によると、本判定項目には条件が指定してあり、Ｓ１３０１で選択した対象モジュールから、観点関連度ウェイトが０より大きなモジュール間パスを辿り、呼出先側で観点関連度が０より大きなモジュールに辿りつくことができない、且つ呼出元側で観点関連度が０より大きなモジュールに辿りつくことができる必要がある。これは、本例では観点非関連の定義を観点関連度が０であることとしているためである。観点非関連の定義をモジュールの観点関連度がある閾値以下のものとしている場合には、前記の条件は、呼出先側で観点関連度が該閾値より大きいモジュールに辿りつくことができない、且つ呼出元側で観点関連度が該閾値より大きなモジュールに辿りつくことができる、となる。データ解析部２０２は、前記条件が成立し、且つ呼出元側に観点非関連のパスが存在するか否かを判定する（Ｓ１３０２）。前記条件が成立し、且つ呼出元側に観点非関連のパスが存在すると判定した場合（Ｓ１３０２，Ｙｅｓ）、データ解析部２０２は、Ｓ１３０２へ進む。前記条件が成立しない、又は呼出元側に観点非関連のパスが存在しないと判定した場合（Ｓ１３０２，Ｎｏ）、データ解析部２０２は、観点関連度の補正を行わないものとし、Ｓ１３０５へ進む。
【００５５】
次に、データ解析部２０２が、Ｓ１３０２での判定が真とされたモジュールについて、図８のＳ８０３でユーザが指定した観点関連判定ノイズ補正項目の値が、観点関連判定ノイズ補正閾値データ２１４に記載されている閾値以上か否かを判定する（Ｓ１３０３）。観点関連判定ノイズ補正項目の値が、観点関連判定ノイズ補正閾値データ２１４に記載さ
れている閾値以上であると判定した場合（Ｓ１３０３，Ｙｅｓ）、データ解析部２０２は、処理対象となっているモジュールを観点関連度の補正対象として、Ｓ１３０４へ進む。観点関連判定ノイズ補正項目の値が、観点関連判定ノイズ補正閾値データ２１４に記載されている閾値未満であると判定した場合（Ｓ１３０３，Ｎｏ）、データ解析部２０２は、観点関連度の補正を行わないものとし、Ｓ１３０５へ進む。なお、本例では、図８のＳ８０３で、カテゴリとしてマイコンをユーザが指定し、また観点関連判定ノイズ補正項目として「呼出元側観点非関連パスの数」をユーザが指定したものと想定しているため、観点関連判定ノイズ補正閾値データテーブル２１４から利用する閾値は１となる。つまり、対象モジュールの呼出元側に一本でも観点非関連パスが存在すれば、観点関連度の補正対象となる。
【００５６】
次に、データ解析部２０２が、Ｓ１３０２、Ｓ１３０３で選択した対象モジュールに関して、モジュール別観点関連判定データテーブル２１５に記載された観点関連度の補正を行う。補正には、補正を行うか否かの判定時に使用した、観点関連判定ノイズ補正閾値データテーブル２１４記載の項目の観点関連度補正値を利用する。本例では、図８のＳ８０３で、カテゴリとしてマイコンをユーザが指定し、また観点関連判定ノイズ補正項目として呼出元側観点非関連パスの数をユーザが指定したものと想定しているため、補正値は０となる。データ解析部２０２は、モジュール別観点関連判定データテーブル２１５に記載された対象モジュールの観点関連度に補正値０を乗算した値を、対象モジュールの観点関連度とし、モジュール別観点関連判定データテーブル２１５へ記載する（Ｓ１３０４）。
【００５７】
次に、データ解析部２０２は、今回本処理で補正を行ったモジュールがあるか否かを判定する（Ｓ１３０５）。今回本処理で補正を行ったモジュールがあると判定した場合（Ｓ１３０５，Ｙｅｓ）、データ解析部１３０５は、対象モジュールリストをクリアしてＳ１３０１へ進む（Ｓ１３０６）。今回本処理で補正を行ったモジュールがないと判定した場合（Ｓ１３０５，Ｎｏ）、データ解析部１３０５は、Ｓ１３０７へ進む。
【００５８】
Ｓ１３０７において、データ解析部２０２は、図８のＳ８０４で作成したモジュール呼出関係図に関わる全モジュールの内、本Ｓ１３０１で選択されたモジュールを把握するために作成しているリストに記録されていないモジュールがあるか否かを判定する。当該リストに記録されていないモジュールがあると判定した場合（Ｓ１３０７，Ｙｅｓ）、データ解析部２０２はＳ１３０１へ進む。当該リストに記録されていないモジュールがないと判定した場合（Ｓ１３０７，Ｎｏ）、データ解析部２０２は、本処理フローを抜けて図９のＳ９０６から図８のＳ８０６へ進む。
【００５９】
以上説明したように、本実施形態の情報処理装置１００によれば、リファクタリング観点でのモジュールは自動で選択できるが、その他の観点でのモジュールは選択できず、そのため人の手で対象モジュールを選択する必要があり、モジュール選択に工数が掛かっていた、という課題を解決し、モジュールの呼出関係と共通データの利用関係とを用いて、ソースコード内に含まれる、特定の観点に関連するモジュールを自動で選択して、プログラム図を構築・表示することで、可視化工数を削減することができる。
【００６０】
図１５に、本実施形態の情報処理装置１００によって可視化されたプログラムの例を示している。図１５に例示するプログラム図１５００は、対象プログラムを構成するモジュールと、モジュール間のデータパスとを示している。本発明の可視化方法を利用して作成するプログラム図では、観点関連度の閾値、あるいは観点関連判定ノイズ補正閾値を変更することにより、その表示モジュールを変更することができる。本プログラム図を利用する目的、意図に応じて、観点関連度、ノイズモジュールをどの程度まで図に含めるかの考え方は異なる。したがって、例えば、観点表２１３に記載された観点関連度の閾値の代わりに、図１５で示すように、観点関連度閾値スライダ１５０１を調整してその値を閾値と
して利用することで、プログラム図利用の目的、意図に応じて、プログラム図を適宜作り替えることが可能である。なお、本実施例では、モジュールの観点関連度を、モジュールを表示するか否かで利用することとしたが、左記に限らず、モジュールを強調表示するか否かで利用する等、様々な利用法が考えられる。
【００６１】
なお、本発明は上記した実施形態に限定されるものではなく、様々な変形例が含まれる。例えば，上記した実施形態は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、実施形態の構成の一部を他の構成に置き換えることが可能であり、また、ある実施形態の構成に他の構成を加えることも可能である。
【符号の説明】
【００６２】
１００  情報処理装置
１０１  プロセッサ
１０２  入力装置
１０３  二次記憶装置
１０４  主記憶装置
１０５  表示装置
１０６  バス
１０７  通信装置
１１０  情報装置Ａ
１２０  情報装置Ｂ
１３０  通信ネットワーク
２００  ソースコード取得部
２０１  キーワード取得部
２０２  データ解析部
２０３  可視化判定部
２０４  描画指示部
２０５  プログラム図作成制御部
２０６  プロジェクトＡに関するソースコード群
２０７  ソースコードＡ
２０８  プロジェクトＢに関するソースコード群
２０９  ソースコードＢ
２１１  キーワードＤＢ
２１２  モジュール呼出関係図作成部
２１３  観点表
２１４  観点関連判定ノイズ補正閾値データテーブル
２１５  モジュール別観点関連判定データテーブル
２１６  作用判定表
２１７  モジュール間パスの観点関連度ウェイトデータテーブル
【図１】
2015230582.tif 000003
【図２】
2015230582.tif 000004
【図８】
2015230582.tif 000005
【図９】
2015230582.tif 000006
【図１０】
2015230582.tif 000007
【図１１】
2015230582.tif 000008
【図１２】
2015230582.tif 000009
【図１３】
2015230582.tif 000010
【図３】
2015230582.tif 000011
【図４】
2015230582.tif 000012
【図５】
2015230582.tif 000013
【図６】
2015230582.tif 000014
【図７】
2015230582.tif 000015
【図１４】
2015230582.tif 000016
【図１５】
2015230582.tif 000017