(57)【要約】  特定観点に依存するモジュールを基点としたモジュール呼出関係を活用して、ソースコード内から該観点に関連するモジュールを自動で抽出してプログラム図を作成する、プログラム図作成装置、プログラム図作成方法、及びプログラム図作成プログラムを提供する。  プログラム図作成装置のデータ解析部は、モジュール呼出関係図作成部を用いて抽出したモジュールに対して、ユーザが入力した観点に関連するモジュールか否かの判定を行う。この際、予め分かっている該観点関連のモジュールが判定対象のモジュールに対して呼出元にあるか、または呼出先にあるかに応じて観点判定処理を変える。この際、観点関連判定ノイズ除去閾値データを用いて観点非関連モジュールであるが観点関連モジュールと判定されそうになっているノイズモジュールを除去する。判定結果はモジュール別観点関連判定データに格納し、該判定結果に応じて、プログラム図作成制御部はプログラム図を作成する。
2015145538.tif 000002
【特許請求の範囲】
【請求項１】
可視化対象のソースコードを取得するソースコード取得部と、
該ソースコード、または該ソースコードが属するプロジェクトに関係するソースコード、および開発保守データに記述されているキーワードを取得するキーワード取得部と、
モジュールの観点を纏めた観点表と、
該キーワード取得部が、該観点表を参考にしつつ、取得したキーワードを格納するキーワードＤＢと、
モジュールの観点関連判定を行う際に使用する観点関連判定ノイズ除去閾値データと、
モジュールの観点関連判定結果を記載するモジュール別観点関連判定データと、
前記ソースコードからモジュールの呼出関係図を作成するモジュール呼出関係図作成部と、
前記モジュール呼出関係図に抽出した各モジュールに関して、観点依存モジュールを基点としたモジュール呼出関係を利用して、観点関連判定を行い、判定結果を前記モジュール別観点関連判定データに格納するデータ解析部と、
前記データ解析部は、前記モジュール呼出関係図に抽出した前記モジュールに関して、観点関連判定ノイズ除去項目の値と、前記観点関連判定ノイズ除去閾値データから取得した閾値またはユーザが入力した閾値とを比較して、前記モジュールの観点関連判定処理を修正し、
前記モジュール別観点関連判定データに記述されたモジュールの観点関連判定結果に基づき、前記ソースコードから抽出したモジュールの可視化判定を行う可視化判定部と、
モジュール可視化判定結果に基づきプログラム図を作成する描画指示部と、
を備えることを特徴とするプログラム図作成装置。
【請求項２】
請求項１に記載するプログラム図作成装置において、
前記データ解析部が、呼出先一段目に観点関連モジュールが存在する判定対象モジュールに対し、観点関連と判定することを特徴としたプログラム図作成装置。
【請求項３】
請求項１に記載するプログラム図作成装置において、
前記データ解析部が、呼出元一段目に観点関連モジュールが存在する判定対象モジュールに対し、観点非関連のパスが呼出元側に存在しなければ観点関連と、または観点非関連のパスが呼出元側に存在すれば、観点関連判定ノイズ除去項目の値と前記観点関連判定ノイズ除去閾値データから取得した閾値またはユーザが入力した閾値とを比較し、観点関連判定ノイズ除去項目の値が、前記観点関連判定ノイズ除去閾値データから取得した閾値またはユーザが入力した閾値より大きい場合に観点非関連と、または小さい場合に観点関連と判定することを特徴としたプログラム図作成装置。
【請求項４】
請求項２に記載するプログラム図作成装置において、
前記データ解析部が、呼出先複数段目に観点関連モジュールが存在するモジュールに対し、観点関連と判定することを特徴としたプログラム図作成装置。
【請求項５】
前記データ解析部は、前記判定対象モジュールの呼出元側のモジュールを最上位の呼出元のモジュールまで辿って、そのパス上の全てのモジュールを前記モジュール別観点関連判定データに従って観点非関連と判定した場合に、観点非関連のパスと判定することを特徴とする請求項３に記載するプログラム図作成装置。
【請求項６】
請求項３または請求項５に記載するプログラム図作成装置において、
前記データ解析部が、観点関連判定ノイズ除去項目として、呼出元側観点非関連パスの数、呼出元側全パスに対する観点非関連パスの比率、または観点依存モジュールからの呼出段数を利用し、観点関連判定ノイズ除去項目の値が、前記観点関連判定ノイズ除去閾値データから取得した閾値またはユーザが入力した閾値より大きい場合に観点非関連、または小さい場合に観点関連と判定することを特徴としたプログラム図作成装置。
【請求項７】
可視化対象のソースコードを取得し            、
該ソースコード、または該ソースコードが属するプロジェクトに関係するソースコード、および開発保守データに記述されているキーワードを取得し、
モジュールの観点を纏めた観点表と、該観点表を参考にしつつ、取得したキーワードを格納するキーワードＤＢと、及びモジュールの観点関連判定を行う際に使用する観点関連判定ノイズ除去閾値データとを予め作成し、
モジュールの観点関連判定結果を記録するモジュール別観点関連判定データ記憶領域を設定し、
前記ソースコードからモジュールの呼出関係図を作成し、
前記モジュール呼出関係図に抽出した各モジュールに関して、観点依存モジュールを基点としたモジュール呼出関係を利用して、観点関連判定を行い、判定結果を前記モジュール別観点関連判定データに格納し、
前記モジュール呼出関係図に抽出した前記モジュールに関して、観点関連判定ノイズ除去項目の値と、前記観点関連判定ノイズ除去閾値データから取得した閾値またはユーザが入力した閾値とを比較して、前記モジュールの観点関連判定処理を修正し、
前記モジュール別観点関連判定データに記述されたモジュールの観点関連判定結果に基づき、前記ソースコードから抽出したモジュールの可視化判定を行い、
前記モジュール可視化判定結果に基づきプログラム図を作成することを特徴とするプログラム図作成方法。
【請求項８】
コンピュータを、
可視化対象のソースコードを取得するソースコード取得手段と、
該ソースコード、または該ソースコードが属するプロジェクトに関係するソースコード、および開発保守データに記述されているキーワードを取得するキーワード取得手段と、
モジュールの観点を纏めた観点表記憶手段と、
該キーワード取得部が、該観点表を参考にしつつ、取得したキーワードを格納するキーワードＤＢと、
モジュールの観点関連判定を行う際に使用する観点関連判定ノイズ除去閾値データ記憶手段と、
モジュールの観点関連判定結果を記載するモジュール別観点関連判定データ記憶手段と、
前記ソースコードからモジュールの呼出関係図を作成するモジュール呼出関係図作成手段と、
前記モジュール呼出関係図に抽出した各モジュールに関して、観点依存モジュールを基点としたモジュール呼出関係を利用して、観点関連判定を行い、判定結果を前記モジュール別観点関連判定データに格納するデータ解析手段と、
前記データ解析手段は、前記モジュール呼出関係図に抽出した前記モジュールに関して、観点関連判定ノイズ除去項目の値と、前記観点関連判定ノイズ除去閾値データから取得した閾値またはユーザが入力した閾値とを比較して、前記モジュールの観点関連判定処理を修正し、
前記モジュール別観点関連判定データに記述されたモジュールの観点関連判定結果に基づき、前記ソースコードから抽出したモジュールの可視化判定を行う可視化判定手段と、
モジュール可視化判定結果に基づきプログラム図を作成する描画指示手段と、
して機能させるためのプログラム図作成プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、可視化対象であるソースコード内のモジュールを自動で複数選択するプログラム図作成装置、プログラム図作成方法、及びプログラム図作成プログラムに関する。
【背景技術】
【０００２】
プログラムを理解する方法として、例えばフローチャート図といったプログラム図を生成・利用して処理の流れを追う方法がある。しかし、複雑なプログラムを対象として生成したプログラム図は、プログラム全体に渡って詳細に出力され、注目する必要のないモジュールが含まれてしまう為、プログラム全体の概要を把握したい場合や特定の箇所に着目して調査したい場合に時間が掛かるという問題があった。そこで従来、例えば特許文献１では、可視化するモジュールを開発者やユーザ等が予め手動で選択しておき、選択したモジュールのみを可視化する事で、プログラム理解に特化したプログラム図を生成する方法が提案されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平５−２５７６６６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、特許文献１の方法では、開発者やユーザ等が予め、特定観点に関連するモジュールをソースコード内からキーワード検索等を頼りに選択しておく必要があり、この選択作業に工数を要する上、選択精度が低かった。
【課題を解決するための手段】
【０００５】
上記課題を解決するために本発明では、プログラム図作成装置を、可視化対象のソースコードを取得するソースコード取得部と、該ソースコード、または該ソースコードが属するプロジェクトに関係するソースコード、および開発保守データに記述されているキーワードを取得するキーワード取得部と、モジュールの観点を纏めた観点表と、該キーワード取得部が、該観点表を参考にしつつ、取得したキーワードを格納するキーワードＤＢと、モジュールの観点関連判定を行う際に使用する観点関連判定ノイズ除去閾値データと、モジュールの観点関連判定結果を記載するモジュール別観点関連判定データと、前記ソースコードからモジュールの呼出関係図を作成するモジュール呼出関係図作成部と、前記モジュール呼出関係図に抽出した各モジュールに関して、観点依存モジュールを基点としたモジュール呼出関係を利用して、観点関連判定を行い、判定結果を前記モジュール別観点関連判定データに格納するデータ解析部と、前記データ解析部は、前記モジュール呼出関係図に抽出した前記モジュールに関して、観点関連判定ノイズ除去項目の値と、前記観点関連判定ノイズ除去閾値データから取得した閾値またはユーザが入力した閾値とを比較して、前記モジュールの観点関連判定処理を修正し、前記モジュール別観点関連判定データに記述されたモジュールの観点関連判定結果に基づき、前記ソースコードから抽出したモジュールの可視化判定を行う可視化判定部と、モジュール可視化判定結果に基づきプログラム図を作成する描画指示部とを備えて構成した。【０００６】
また、上記課題を解決するために本発明では、前記プログラム図作成装置において、前記データ解析部が、呼出元一段目に観点関連モジュールが存在する判定対象モジュールに対し、観点非関連のパスが呼出元側に存在しなければ観点関連と、または観点非関連のパスが呼出元側に存在すれば、観点関連判定ノイズ除去項目の値と前記観点関連判定ノイズ除去閾値データから取得した閾値またはユーザが入力した閾値とを比較し、観点関連判定ノイズ除去項目の値が、前記観点関連判定ノイズ除去閾値データから取得した閾値またはユーザが入力した閾値より大きい場合に観点非関連と、または小さい場合に観点関連と判定することを特徴とする。【０００７】
また、上記課題を解決するために本発明では、プログラム図作成方法において、可視化対象のソースコードを取得し、該ソースコード、または該ソースコードが属するプロジェクトに関係するソースコード、および開発保守データに記述されているキーワードを取得し、モジュールの観点を纏めた観点表と、該観点表を参考にしつつ、取得したキーワードを格納するキーワードＤＢと、及びモジュールの観点関連判定を行う際に使用する観点関連判定ノイズ除去閾値データとを予め作成し、モジュールの観点関連判定結果を記録するモジュール別観点関連判定データ記憶領域を設定し、前記ソースコードからモジュールの呼出関係図を作成し、前記モジュール呼出関係図に抽出した各モジュールに関して、観点依存モジュールを基点としたモジュール呼出関係を利用して、観点関連判定を行い、判定結果を前記モジュール別観点関連判定データに格納し、前記モジュール呼出関係図に抽出した前記モジュールに関して、観点関連判定ノイズ除去項目の値と、前記観点関連判定ノイズ除去閾値データから取得した閾値またはユーザが入力した閾値とを比較して、前記モジュールの観点関連判定処理を修正し、前記モジュール別観点関連判定データに記述されたモジュールの観点関連判定結果に基づき、前記ソースコードから抽出したモジュールの可視化判定を行い、前記モジュール可視化判定結果に基づきプログラム図を作成するようにした。
【発明の効果】
【０００８】
本発明によれば、ソースコード内の可視化するモジュールを予め開発者やユーザ等が選択していない場合でも、可視化するモジュールを精度良く自動で選択してプログラム図を構築・表示する事で、可視化工数を削減出来る。
【図面の簡単な説明】
【０００９】
【図１】本発明の実施例１に係るプログラム図作成装置１００のハードウェア及びシステム構成の一例を示す図である。
【図２】本発明の実施例１に係るプログラム図作成装置１００、情報装置Ａ１１０、及び情報装置Ｂ１２０の機能ブロックの一例を示す図である。
【図３】実施例における観点表の一例を示す図である。
【図４】実施例における観点関連判定ノイズ除去閾値データの一例を示す図である。
【図５】実施例におけるモジュール別観点関連判定データの一例を示す図である。
【図６】プログラム図作成装置１００でソースコードＡ３０７を可視化する際の一例であるフローチャートを示す。
【図７】ステップＳ６０４で作成したモジュール呼出関係図に関わる全モジュールに対してステップＳ６０５で行う「モジュールが観点関連か観点非関連かの判定処理」のフローチャートの一例を示す図である。
【図８】実施例におけるモジュール呼出関係の一例を示す図である。
【図９】実施例において、観点に関するキーワードに関する記述部を持つモジュールを観点関連モジュールとしてハッチ掛けたモジュール呼出関係の一例を示す図である。
【図１０】実施例において、観点関連モジュールを直接的または間接的に呼び出しているモジュールを観点関連モジュールとしてハッチ掛けたモジュール呼出関係の一例を示す図である。
【図１１】実施例において、観点関連モジュールから直接的または間接的に呼び出されているモジュールの内ノイズを除いたものを観点関連モジュールとしてハッチ掛けたモジュール呼出関係の一例を示す図である。
【図１２】モジュール呼出構造の説明図である。
【図１３】観点関連判定ノイズ除去閾値変更に応じて可視化図が変化する一例を示す図である。
【発明を実施するための形態】
【００１０】
以下、本発明によるプログラム図作成装置、プログラム図作成方法、及びプログラム図作成プログラムに関する一実施形態を、図面を用いて詳細に説明する。
【実施例１】
【００１１】
本実施例１では、複数のモジュールを含む可視化対象ソースコードに対して、特定の観点に関連するモジュールのみで構成されたプログラム図を生成する装置、およびその方法の一例を記す。特定の観点として本実施例ではマイコンを取り上げるが、観点は左記に限定される事はない。【００１２】
図１は、本発明の実施例１に係るプログラム図作成装置１００のハードウェア及びシステム構成の一例を示す図である。プログラム図作成装置１００のハードウェアとして、中央処理装置１０１、キーボードやマウス等の入力装置１０２、二次記憶装置１０３、主記憶装置１０４、ディスプレイ等の表示装置１０５、及び通信装置１０７を有する。尚、各装置は、バス１０６によって接続され、各装置間で相互にデータの送受信が可能である。また、プログラム図作成装置１００の他に、情報処理装置やネットワークストレージといったデータを保存する事が可能な情報装置Ａ１１０と情報装置Ｂ１２０があり、これらの間が、例えば、インターネット等の通信ネットワーク１３０により接続されている。【００１３】
図２は、本発明の実施例１に係るプログラム図作成装置１００、情報装置Ａ１１０、及び情報装置Ｂ１２０の機能ブロックの一例を示す図である。演算部２００は、中央処理装置１０１、および主記憶装置１０４により構成され、記憶部３００に記憶されるプログラム図作成プログラム３０１を主記憶装置１０４にローディングして、中央処理装置１０１で実行することにより、ソースコード取得部２０１、キーワード取得部２０２、データ解析部２０３、可視化判定部２０４、描画指示部２０５、プログラム図作成制御部２０６、モジュール呼出関係図作成部２０７の各機能を実現する。
記憶部３００は、二次記憶装置１０３、および主記憶装置１０４により構成され、プログラム図作成プログラム３０１、観点表３０２、観点関連判定ノイズ除去閾値データ３０３、モジュール別観点関連判定データ３０４、及びキーワードＤＢ３０５の各データを記憶する。【００１４】
尚、本実施例においては、プログラム図作成装置１００の機能ブロックの全てが中央処理装置１０１によって実行または操作されるソフトウェアプログラムやデータであるものとして説明するが、一部または全ては、ハードウェアとして実現されても良い。また、本来は、これらの機能ブロックに加え、各機能ブロックの起動や管理等を行うOS(Operating System)や制御プログラム等が存在するが、本実施例では、これらの機能ブロックの連携動作を適宜説明することとし、OSや制御プログラムがここで適宜説明された連携動作に必要となる機能ブロックの起動や動作管理を行う事は自明であるので、これらのOSや制御プログラムについては説明及び記載を省略する。【００１５】
情報装置Ａ１１０は、プロジェクトＡに関するソースコード群３０６、及びソースコードＡ３０７を有する。ソースコードＡ３０７は、モジュールという単位の部分的プログラムで構成されている。情報装置Ｂ１２０は、プロジェクトＢに関するソースコード群３０８、及びソースコードＢ３０９を有する。ソースコードＢ３０９は、モジュールという単位の部分的プログラムで構成されている。尚、プロジェクトＡに関するソースコード群３０６、ソースコードＡ３０７、プロジェクトＢに関するソースコード群３０８、及びソースコードＢ３０９は必ずしも上述の記憶場所にある必要はなく、プログラム図作成装置１００、情報装置Ａ１１０、及び情報装置Ｂ１２０のいずれに格納されていても良い。【００１６】
図３に、観点表３０２の一例を示す。観点表３０２には、可視化するモジュールの観点に関するデータを格納する。本実施例では、カテゴリ３１２と、カテゴリに関係するキーワード３２２という分類形式で、データを整理している。
例えば、マイコンというカテゴリには、SHやARMというキーワード等が含まれ、バイトオーダというカテゴリには、LITTLE_ENDIANやBIG_ENDIANというキーワードが含まれる。これらカテゴリ３１２やキーワード３２２は、キーワード取得部２０２がソースコードやソースコードに関する開発・保守データ等で設定されているマクロやキーワード情報を取得し、キーワードＤＢ３０５へ格納する際に利用する。予めこのような表を作っておく事で、分類が容易となる。【００１７】
図４に、観点関連判定ノイズ除去閾値データ３０３の一例を示す。観点関連判定ノイズ除去閾値データ３０３には、モジュールの観点関連判定時(判定対象モジュールが指定された観点に関連しているかどうかを判定する場合)に、本当は観点非関連モジュールなのに観点関連モジュールと判定されそうになっているモジュール（ノイズ）を除去する目的で使用する閾値が格納される。
本実施例では、これらの判定項目３１３として、呼出元側観点非関連パスの数、呼出元側全パスに対する観点非関連パスの比率（％）、及び観点依存モジュールからの呼出段数を挙げている。また、本実施例では、ユーザが指定する、モジュールの観点を指すカテゴリやキーワード３２３として、SH、マイコン、及びLITTLE_ENDIAN等を挙げており、それぞれ閾値３３３を図の通り設定している。【００１８】
尚、観点関連モジュールとは、下記の三種類のタイプのモジュールを指す。
(1) 一点目は、上述した観点に関するキーワードが、コメントやマクロ等の形で直接記述されているモジュールである。このタイプのモジュールは、観点関連モジュールであり、「観点依存モジュール」ともいう事が出来る。
(2) 二点目は、観点依存モジュールを、直接的または間接的な形で呼出先に持つモジュールである。このタイプのモジュールは、観点依存モジュールを使用するという点で、観点関連モジュールという事が出来る。
(3) 三点目は、観点依存モジュールを、直接的または間接的な形で呼出元に持つモジュールである。このタイプのモジュールは、観点依存モジュールから使用されるという点で、観点関連モジュールという事が出来る。ただし、三点目のタイプは、汎用的に利用されるモジュールも含まれる可能性がある為、こういったモジュールは取り除く必要がある。【００１９】
尚、観点関連判定ノイズ除去項目３１３として、本例では、「呼出元側観点非関連パスの数」、「呼出元側全パスに対する観点非関連パスの比率（％）」、及び「観点依存モジュールからの呼出段数」の三つを挙げている。
(1) 「呼出元側観点非関連パスの数」は、判定対象モジュールから呼出元側の最も頭(最上位)のモジュールまで辿った時に、そのパス上に存在する全てのモジュールが非関連であるパスの数である。一般的に、観点と非関連なモジュールから利用されればされる程、判定対象モジュールが観点非関連である可能性が高くなる。【００２０】
(2) 「呼出元側全パスに対する観点非関連パスの比率（％）」は、判定対象モジュールから呼出元側の最も頭(最上位)のモジュールまで辿った時に存在する全てのパスに対する、呼出元側観点非関連パス数の比率である。先と同じく、一般的に、観点と非関連なモジュールから利用されればされる程、判定対象モジュールが観点非関連である可能性が高くなる。
(3) 「観点依存モジュールからの呼出段数」は、判定対象モジュールと、該モジュールから最も近い観点依存モジュールの間の呼出段数である。一般的に、観点関連のモジュール同士は近い呼出関係となる為、観点依存モジュールから離れれば離れる程、判定対象モジュールが観点非関連である可能性が高くなる。【００２１】
図５に、モジュール別観点関連判定データ３０４の一例を示す。モジュール別観点関連判定データ３０４には、プログラムの各モジュールに対して判明した観点関連判定結果が格納される。本実施例では、モジュールの観点３１４を意味するキーワードやカテゴリである、SHやマイコンに関して、可視化対象ソースコード内のモジュール３２４である、モジュールＡ、モジュールＢ、及びモジュールＣの観点関連判定結果３３４を記載している。また、判定は今回のものかという項目３４４で、記載された判定結果は直近の判定によるものか、という情報を保持する。【００２２】
図６に、プログラム図作成装置１００でソースコードＡ３０７を可視化する際の一例であるフローチャートを示す。プログラム図作成制御部２０６が、プログラム図作成を開始する。本実施例１ではプログラム図としてプログラム内のモジュールを全て可視化せず、マイコンに関連するモジュール(観点関連モジュール)のみで構成されたプログラム図を作成する例を示す。【００２３】
ステップＳ６０１において、入力装置１０２を用いて、例えばソースコード群３０６の中から可視化するソースコードをユーザが指定する。本実施例では可視化ソースコードとしてソースコードＡ３０７を指定したものとする。ユーザが可視化対象ソースコードを指定すると、ソースコード取得部２０１が、通信装置１０７を介し、情報装置Ａ１１０に記憶されるプロジェクトＡに関するソースコード群３０６の中から、可視化対象であるソースコードＡ３０７を取得する。
もし、ソースコード群３０６のデータ量が巨大で、ソースコードＡ３０７の検索に時間が掛かりそうな場合には、ユーザ指示により、予め、使いそうなファイルを、例えばプログラム図作成装置１００の記憶部３００といった高速な検索が可能となる場所へ移動またはコピーしておく事も考えられる。【００２４】
ステップＳ６０２において、キーワード取得部２０２が、ステップＳ６０１でユーザが指定した可視化対象ソースコードＡ３０７が属するプロジェクトＡに関するソースコード群３０６で設定されているマクロやキーワード情報を取得し、キーワードＤＢ３０５に格納する。この際、観点表３０２によるキーワードの分類を参考にして、キーワードＤＢ３０５へ格納していく事も考えられる。このようにする事で、例えば、キーワードであるSHと、それを含むカテゴリであるマイコンといったように、キーワードの上位概念まで含めて纏める事が出来る。
尚、本実施例では、キーワード取得部２０２が取得するキーワードとして、ソースコード内に記述されるマクロやキーワードを挙げているが、左記に限定される事は無く、例えば、変数名、関数名等様々なものの利用が考えられる。更に、キーワードを取得する対象として、可視化対象ソースコードＡ３０７が属するプロジェクトＡに関するソースコード群３０６に限定されず、様々なソースコードやそれに関する開発・保守データを利用可能である。【００２５】
ステップＳ６０３において、入力装置１０２を用いて、キーワードＤＢ３０５に格納されている観点（キーワード/カテゴリ）を、ユーザが指定する。この際、カテゴリを利用する事で、一つのキーワードだけでなく、関係のある複数のキーワードを纏めて、モジュール選択に活用出来る。
本実施例では、観点としてカテゴリであるマイコンをユーザが指定したものとする。また、入力装置１０２を用いて、観点関連判定ノイズ除去項目３１３を、ユーザが指定する。本実施例では、観点関連判定ノイズ除去項目３１３として、観点関連判定ノイズ除去閾値データ３０３で挙げている項目、「呼出元側観点非関連パスの数」、「呼出元側全パスに対する観点非関連パスの比率（％）」、「及び観点依存モジュールからの呼出段数」を想定しており、ここでは、「呼出元側観点非関連パスの数」をユーザが観点関連判定ノイズ除去項目３１３として指定したものとする。尚、無論、観点関連判定ノイズ除去項目として左記で挙げた項目に限定される事はなく、また、ノイズ除去項目として一つのみの選択に限定される事は無く、複数の項目を同時に利用する事も可能である。また、観点関連判定ノイズ除去項目３１３は、必ずしもユーザが入力する必要はなく、使用率が高い項目を優先的に自動的に選択するといったように、様々な選択方法が考えられる。【００２６】
ステップＳ６０４において、モジュール呼出関係図作成部２０７が、ステップＳ６０１でユーザが指定した可視化対象ソースコードＡ３０７内で定義しているモジュール、またはソースコードＡ３０７内で呼び出しているモジュールに関する呼出関係図を作成する。この際、ソースコードＡ３０７に関わるモジュールから直接呼び出しているモジュールや、ソースコードＡ３０７に関わるモジュールを直接呼出しているモジュールだけを考慮するのでは無く、ソースコードＡ３０７に関わるモジュールから間接的に呼び出されているモジュールや、ソースコードＡ３０７に関わるモジュールを間接的に呼び出しているモジュールも含む。この際、ソースコードのコンパイル時に指定するコンパイラオプションや#pragma等の内容も考慮する事が考えられる。【００２７】
ステップＳ６０５において、データ解析部２０３が、ステップＳ６０４で作成したモジュール呼出関係図に含まれる全モジュールに対して、観点関連のモジュールか、または観点非関連のモジュールかの判定を行い、判定結果をモジュール別観点関連判定データ３０４へ格納する。尚、本処理内容は後に図７のフローチャートに詳述する。
ステップＳ６０６において、プログラム図作成制御部２０６が、ステップＳ６０１で取得したソースコードＡ３０７に含まれる未だ可視化判定していないモジュールの内、一つのモジュールを可視化判定対象モジュールとして取得する。【００２８】
ステップＳ６０７において、可視化判定部２０４が、モジュール別観点関連判定データ３０４から前記可視化判定対象モジュールの観点関連判定データを取得し、該モジュールが観点関連なものか否かを判定する。判定が真であれば、ステップＳ６０８へ進む。判定が偽であれば、ステップＳ６０９へ進む。
ステップＳ６０８において、描画指示部２０５が、該モジュールを表示する。
ステップＳ６０９において、描画指示部２０５が、該モジュールを非表示にする。【００２９】
ステップＳ６１０において、プログラム図作成制御部２０６が、ステップＳ６０１で取得したソースコードＡ３０７に未だ可視化判定していないモジュールがあるか否かを判定する。可視化判定していないモジュールがある場合は、ステップＳ６０６へ進む。可視化判定していないモジュールが無い場合は、プログラム図作成制御部２０６が、プログラム図作成を終了する。【００３０】
図７に、ステップＳ６０４で作成したモジュール呼出関係図に関わる全モジュールに対してステップＳ６０５で行う「モジュールが観点関連か観点非関連かの判定処理」の詳細な方法を示す。本実施例では、ステップＳ６０４で作成したモジュール呼出関係図が図８に示す例である場合を想定して説明する。モジュール呼出関係図に含まれるモジュールは、モジュールＡからモジュールＯまで、１５モジュール存在する。【００３１】
ステップＳ７０１において、データ解析部２０３が、ステップＳ６０４で作成したモジュール呼出関係図に関わる全モジュールの名前をモジュール別観点関連判定データ３０４へ記載し、判定は今回のものかという項目３４４に×を入れる。その後、ステップＳ６０４で作成したモジュール呼出関係図に関わる全モジュールの中から観点依存モジュールを抽出する。この際、本実施例ではソースコードＡ３０７が属するプロジェクトＡに関するソースコード群３０６の全ソースコードを活用するものとし、ステップＳ６０３でユーザが指定した観点として、もしキーワードが指定されていれば、該キーワードの記述があるモジュールを、また、もしカテゴリが指定されていれば、観点表３０２に記載された、単数または複数のカテゴリ内キーワードのうち一つでもキーワード記述があるモジュールを、観点関連モジュールとして抽出し、モジュール別観点関連判定データ３０４に観点関連なモジュールとして記載する。【００３２】
本実施例では、マイコンというカテゴリがユーザより指定された場合を想定する。観点表３０２には、マイコンというカテゴリ３１２に、SHとARMという二つのキーワード３２２が記載されている為、これらのキーワード記述がある観点依存モジュールを観点関連モジュールとして抽出する。これにより、図８で示すモジュール呼出関係図に含まれるモジュールの内、図９で示すように、モジュールＣ、モジュールＦ、モジュールＬ、及びモジュールＮが観点関連モジュールと判定されたものとする。尚、勿論、観点依存モジュールを抽出する本処理で活用するソースコード群は、可視化対象ソースコードＡ３０７が属するプロジェクトＡに関するソースコード群３０６に限らず、別のプロジェクトのソースコード、例えばプロジェクトＢに関するソースコード群３０８が活用可能ならば、適宜活用出来る。【００３３】
ステップＳ７０２において、データ解析部２０３が、ステップＳ６０４で作成したモジュール呼出関係図に関わるモジュールの内、観点関連判定結果がモジュール別観点関連判定データ３０４に記載されていない全モジュール、または観点関連判定結果が非関連とモジュール別観点関連判定データ３０４に記載された全モジュールの中より、新たに判定対象モジュールを選択して、該判定対象モジュールに対して呼出先側に観点関連モジュールを持つモジュールか否かを判定する。判定が真であれば、該モジュールは観点関連モジュールとして、モジュール別観点関連判定データ３０４に記載し、判定は今回のものかという項目に〇を入れる。続いて、ステップＳ７０７へ進む。判定が偽であれば、ステップＳ７０３へ進む。【００３４】
この際、前記判定対象モジュールに対して観点関連モジュールが必ずしも呼出先一段目のモジュールである必要はなく、呼出先複数段目のモジュールであっても良い。ここで、呼出段数の詳細を、図１２を用いて説明する。判定対象モジュールを直接呼び出しているモジュールは呼出元一段目のモジュールであり、呼出元一段目のモジュールを直接呼び出しているモジュールは呼出元二段目のモジュールである。また、判定対象モジュールから直接呼び出されるモジュールは呼出先一段目のモジュールであり、呼出先一段目のモジュールから直接呼び出されるモジュールは呼出先二段目のモジュールである。本ステップＳ７０２を行う事で、図１０で示すように、観点関連モジュールＣを呼び出しているモジュールＡが、また、観点関連モジュールＮを呼び出しているモジュールＤとモジュールＨが観点関連モジュールと判定される。【００３５】
ステップＳ７０３において、データ解析部２０３が、ステップＳ７０２の判定が真になったモジュールに対して、呼出元側モジュールは全て観点関連判定済みか否かを判定する。判定が真であれば、ステップＳ７０４へ進む。判定が偽であれば、該モジュールに対する観点関連判定を保留して、ステップＳ７０７へ進む。。【００３６】
ステップＳ７０４において、データ解析部２０３が、ステップＳ７０３の判定が真になったモジュールに対して、呼出元側一段目に観点関連のモジュールが存在するか否かを判定する。判定が真であれば、ステップＳ７０５へ進む。判定が偽であれば、該モジュールは観点非関連モジュールとして、モジュール別観点関連判定データ３０４に記載し、判定は今回のものかという項目３４４に〇を入れる。続いて、ステップＳ７０７へ進む。【００３７】
ステップＳ７０５において、データ解析部２０３が、ステップＳ７０４の判定が真になったモジュールに対し、呼出元側に観点非関連のパス(観点非関連のパスとは、最上位の呼出元のモジュールまで辿った全てのモジュールが観点非関連と判定済のパス)が存在するか否かを判定する。判定が真であれば、ステップＳ７０６へ進む。判定が偽であれば、該モジュールは観点関連のモジュールとして、モジュール別観点関連判定データ３０４に記載し、判定は今回のものかという項目に〇を入れる。続いて、ステップＳ７０７へ進む。【００３８】
ステップＳ７０６において、データ解析部２０３が、ステップＳ７０５の判定が真になったモジュールに対し、ステップＳ６０３でユーザが指定した観点関連判定ノイズ除去項目３１３の値が、観点関連判定ノイズ除去閾値データ３０３に記載されている閾値３３３以上か否かを判定する。判定が真であれば、該モジュールは観点非関連のモジュールとして、モジュール別観点関連判定データ３０４に記載し、判定は今回のものかという項目に〇を入れ、ステップＳ７０７へ進む。判定が偽であれば、該モジュールは観点関連のモジュールとして、モジュール別観点関連判定データ３０４に記載し、判定は今回のものかという項目に〇を入れ、ステップＳ７０７へ進む。
尚、本実施例では、ステップＳ６０３で、カテゴリとしてマイコンをユーザが指定し、また観点関連判定ノイズ除去項目３１３として「呼出元側観点非関連パスの数」をユーザが指定したものと想定している為、観点関連判定ノイズ除去閾値データ３０３から利用する閾値３３３は１となる。つまり、呼出元側に一本でも観点非関連パスが存在すれば、観点非関連と判定する。【００３９】
ステップＳ７０７において、データ解析部２０３が、ステップＳ６０４で作成したモジュール呼出関係図に関わるモジュールの内、観点関連判定結果がモジュール別観点関連判定データ３０４に記載されていないモジュールが存在するか否かを判定する。判定が真であれば、ステップＳ７０３で判定保留とした場合には、判定対象モジュール以外の他のモジュールを次の判定対象モジュールに選択して、ステップＳ７０２へ進む。ステップＳ７０２からステップＳ７０６のいずれかのステップで今回新規に観点関連判定が行われたモジュールが存在する場合には、該モジュールの判定は今回のものかという項目３４４に×を入れ、ステップＳ７０２へ進む。
前記判定が偽であれば、全てのモジュールの観点関連判定処理を終了して、ステップＳ６０６へ進む。【００４０】
ステップＳ７０２からステップＳ７０７の処理を行う事で、図１１で示す観点関連の判定が可能となる。例えば、観点関連モジュールＦのみから呼び出さされるモジュールＪは、観点関連モジュールと判定される。観点関連モジュールＦから呼び出されるモジュールＫは、モジュールＢ、モジュールＥ、モジュールＩという観点非関連のパスが一つ呼出元側に存在している為、観点非関連モジュールと判定される。観点関連モジュールＣや観点関連モジュールＤから呼び出されるモジュールＧは、モジュールＢ、モジュールＥという観点非関連のパスが一つ呼出元側に存在している為、観点非関連モジュールと判定される。観点関連モジュールＨから呼び出されるモジュールＯは、モジュールＢ、モジュールＥ、モジュールＩという観点非関連のパスが一つ呼出元側に存在している為、観点非関連モジュールと判定される。観点関連モジュールＣや観点関連モジュールＤから呼び出されるモジュールＩは、モジュールＢやモジュールＥという観点非関連のパスが一つ呼出元側に存在している為、観点非関連モジュールと判定される。【００４１】
本実施例の効果として、上述した特許文献１の可視化方法に存在した課題、すなわち開発者やユーザ等が予め特定観点に関連するモジュールをソースコード内からキーワード検索等を頼りに選択しておく必要があり、この選択作業に工数が掛かり、また選択精度が低かったという課題を解決し、ソースコード内の可視化する処理やモジュールを予め開発者やユーザ等が選択していない場合でも、モジュール間の呼出元や呼出先の呼出関係それぞれに応じたモジュール選択を行う事で、可視化モジュールを自動で抽出してプログラム図を構築・表示する事で、可視化工数を削減すると共に選択精度を向上出来る。【００４２】
本発明の方法を利用して作成するプログラム図は、観点関連判定ノイズ除去閾値を変更すれば、その表示モジュールが変わる。本プログラム図を利用する目的や意図に応じて、ノイズモジュールとしてどの程度まで含めるかの考え方は多様な為、観点関連判定ノイズ除去閾値データ３０３に記載された閾値３３３の代わりに、例えば、図１３で示すように、プログラム図作成装置１００のユーザは、表示装置１０５の画面上において、観点関連判定ノイズ除去閾値を設定するためのスライダーをマウスドラッグ等で左右に動かすことで、観点関連判定ノイズ除去閾値を決定できるようにする。
プログラム図作成制御部２０６は、前記決定された観点関連判定ノイズ除去閾値を使用して、可視化対象ソースコードからモジュール別観点関連判定データを作成する。
可視化判定部２０４は、モジュール別観点関連判定データ３０４のモジュール３２４毎の観点関連判定結果３３４を読み出して、描画指示部２０５が、観点関連モジュールを例えばコールグラフのノードとして表示し、ノード間のエッジはモジュール呼出関係図などを参照して表示する。以上のようにして、目的や意図に応じて、プログラム図を適宜作り替える事も考えられる。【００４３】
尚、本実施例では、モジュールの観点関連判定結果を、モジュールを表示するか否かで利用する事としたが、左記に限らず、モジュールを強調表示するか否かで利用する等、様々な利用法が考えられる。
【産業上の利用可能性】
【００４４】
ソースコード内の可視化するモジュールを予め開発者やユーザ等が選択していない場合でも、可視化するモジュールを精度良く自動で選択してプログラム図を構築・表示するプログラム図作成装置を構成できる。
【符号の説明】
【００４５】
１００  プログラム図作成装置
１０１  中央処理装置
１０２  入力装置
１０３  二次記憶装置
１０４  主記憶装置
１０５  表示装置
１０６  バス
１０７  通信装置
１１０  情報装置Ａ
１２０  情報装置Ｂ
１３０  通信ネットワーク
２００  演算部
２０１  ソースコード取得部
２０２  キーワード取得部
２０３  データ解析部
２０４  可視化判定部
２０５  描画指示部
２０６  プログラム図作成制御部
２０７  モジュール呼出関係図作成部
３００  記憶部
３０１  プログラム図作成プログラム
３０２  観点表
３０３  観点関連判定ノイズ除去閾値データ
３０４  モジュール別観点関連判定データ
３０５  キーワードＤＢ
３０６  プロジェクトＡに関するソースコード群
３０７  ソースコードＡ
３０８  プロジェクトＢに関するソースコード群
３０９  ソースコードＢ
２１１  キーワードＤＢ
３１２  観点表のカテゴリの欄
３１３  観点関連判定ノイズ除去閾値データの項目の欄
３１４  モジュール別観点関連判定データの観点の欄
３２２  観点表のキーワードの欄
３２３  観点関連判定ノイズ除去閾値データの観点の欄
３２４  モジュール別観点関連判定データのモジュールの欄
３３３  観点関連判定ノイズ除去閾値データの閾値の欄
３３４  モジュール別観点関連判定データの観点関連判定の欄
３４４  モジュール別観点関連判定データの判定は今回のものかの欄
【図１】
2015145538.tif 000003
【図２】
2015145538.tif 000004
【図３】
2015145538.tif 000005
【図４】
2015145538.tif 000006
【図５】
2015145538.tif 000007
【図６】
2015145538.tif 000008
【図７】
2015145538.tif 000009
【図８】
2015145538.tif 000010
【図９】
2015145538.tif 000011
【図１０】
2015145538.tif 000012
【図１１】
2015145538.tif 000013
【図１２】
2015145538.tif 000014
【図１３】
2015145538.tif 000015
【手続補正書】
【提出日】平成28年5月17日(2016.5.17)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
可視化対象のソースコードを取得するソースコード取得部と、
該ソースコード、または該ソースコードが属するプロジェクトに関係するソースコード、および開発保守データに記述されているキーワードを取得するキーワード取得部と、
モジュールの観点を纏めた観点表と、
該キーワード取得部が、該観点表を参考にしつつ、取得したキーワードを格納するキーワードＤＢと、
モジュールの観点関連判定を行う際に使用する観点関連判定ノイズ除去閾値データと、
モジュールの観点関連判定結果を記載するモジュール別観点関連判定データと、
前記ソースコードからモジュール呼出関係図を作成するモジュール呼出関係図作成部と、
前記モジュール呼出関係図に抽出した各モジュールに関して、観点依存モジュールを基点としたモジュール呼出関係を利用して、観点関連判定を行い、判定結果を前記モジュール別観点関連判定データに格納するデータ解析部と、
前記データ解析部は、前記モジュール呼出関係図に抽出した前記モジュールに関して、観点関連判定ノイズ除去項目の値と、前記観点関連判定ノイズ除去閾値データから取得した閾値またはユーザが入力した閾値とを比較して、前記モジュールの観点関連判定処理を修正し、
前記モジュール別観点関連判定データに記述されたモジュールの観点関連判定結果に基づき、前記ソースコードから抽出したモジュールの可視化判定を行う可視化判定部と、
前記モジュールの可視化判定の結果に基づきプログラム図を作成する描画指示部と、
を備えることを特徴とするプログラム図作成装置。
【請求項２】
請求項１に記載するプログラム図作成装置において、
前記データ解析部が、呼出先一段目に観点関連モジュールが存在する判定対象モジュールに対し、観点関連と判定することを特徴としたプログラム図作成装置。
【請求項３】
請求項１に記載するプログラム図作成装置において、
前記データ解析部が、呼出元一段目に観点関連モジュールが存在する判定対象モジュールに対し、観点非関連のパスが呼出元側に存在しなければ観点関連と、または観点非関連のパスが呼出元側に存在すれば、観点関連判定ノイズ除去項目の値と前記観点関連判定ノイズ除去閾値データから取得した閾値またはユーザが入力した閾値とを比較し、観点関連判定ノイズ除去項目の値が、前記観点関連判定ノイズ除去閾値データから取得した閾値またはユーザが入力した閾値より大きい場合に観点非関連と、または小さい場合に観点関連と判定することを特徴としたプログラム図作成装置。
【請求項４】
請求項２に記載するプログラム図作成装置において、
前記データ解析部が、呼出先複数段目に観点関連モジュールが存在するモジュールに対し、観点関連と判定することを特徴としたプログラム図作成装置。
【請求項５】
前記データ解析部は、前記判定対象モジュールの呼出元側のモジュールを最上位の呼出元のモジュールまで辿って、そのパス上の全てのモジュールを前記モジュール別観点関連判定データに従って観点非関連と判定した場合に、観点非関連のパスと判定することを特徴とする請求項３に記載するプログラム図作成装置。
【請求項６】
請求項３または請求項５に記載するプログラム図作成装置において、
前記データ解析部が、観点関連判定ノイズ除去項目として、呼出元側観点非関連パスの数、呼出元側全パスに対する観点非関連パスの比率、または観点依存モジュールからの呼出段数を利用し、観点関連判定ノイズ除去項目の値が、前記観点関連判定ノイズ除去閾値データから取得した閾値またはユーザが入力した閾値より大きい場合に観点非関連、または小さい場合に観点関連と判定することを特徴としたプログラム図作成装置。
【請求項７】
可視化対象のソースコードを取得し、
該ソースコード、または該ソースコードが属するプロジェクトに関係するソースコード、および開発保守データに記述されているキーワードを取得し、
モジュールの観点を纏めた観点表と、該観点表を参考にしつつ、取得したキーワードを格納するキーワードＤＢと、及びモジュールの観点関連判定を行う際に使用する観点関連判定ノイズ除去閾値データとを予め作成し、
モジュールの観点関連判定結果を記録するモジュール別観点関連判定データの記憶領域を設定し、
前記ソースコードからモジュール呼出関係図を作成し、
前記モジュール呼出関係図に抽出した各モジュールに関して、観点依存モジュールを基点としたモジュール呼出関係を利用して、観点関連判定を行い、判定結果を前記モジュール別観点関連判定データに格納し、
前記モジュール呼出関係図に抽出した前記モジュールに関して、観点関連判定ノイズ除去項目の値と、前記観点関連判定ノイズ除去閾値データから取得した閾値またはユーザが入力した閾値とを比較して、前記モジュールの観点関連判定処理を修正し、
前記モジュール別観点関連判定データに記述されたモジュールの観点関連判定結果に基づき、前記ソースコードから抽出したモジュールの可視化判定を行い、
前記モジュールの可視化判定の結果に基づきプログラム図を作成することを特徴とするプログラム図作成方法。
【請求項８】
コンピュータを、
可視化対象のソースコードを取得するソースコード取得手段と、
該ソースコード、または該ソースコードが属するプロジェクトに関係するソースコード、および開発保守データに記述されているキーワードを取得するキーワード取得手段と、
モジュールの観点を纏めた観点表を記憶する観点表記憶手段と、
該キーワード取得手段が、該観点表を参考にしつつ、取得したキーワードを格納するキーワードＤＢと、
モジュールの観点関連判定を行う際に使用する観点関連判定ノイズ除去閾値データの記憶手段と、
モジュールの観点関連判定結果を記載するモジュール別観点関連判定データの記憶手段と、
前記ソースコードからモジュール呼出関係図を作成するモジュール呼出関係図作成手段と、
前記モジュール呼出関係図に抽出した各モジュールに関して、観点依存モジュールを基点としたモジュール呼出関係を利用して、観点関連判定を行い、判定結果を前記モジュール別観点関連判定データに格納するデータ解析手段と、
前記データ解析手段は、前記モジュール呼出関係図に抽出した前記モジュールに関して、観点関連判定ノイズ除去項目の値と、前記観点関連判定ノイズ除去閾値データから取得した閾値またはユーザが入力した閾値とを比較して、前記モジュールの観点関連判定処理を修正し、
前記モジュール別観点関連判定データに記述されたモジュールの観点関連判定結果に基づき、前記ソースコードから抽出したモジュールの可視化判定を行う可視化判定手段と、
モジュール可視化判定結果に基づきプログラム図を作成する描画指示手段と、
して機能させるためのプログラム図作成プログラム。
【国際調査報告】
2015145538.tif 000016
2015145538.tif 000017
2015145538.tif 000018