(57)【要約】【課題】ソフトウェア構造解析ツールによって正確な依存関係を特定できるようにすることを目的とする。【解決手段】分析支援装置１００は、複数の要素を含むソースコード５１の分析を支援する。分析支援装置１００のスクリプト取得部１２０は、ソースコード５１を、ソースコード５１に含まれる複数の要素のうちの互いに依存する要素を関連付けた形式に変換する変換規則８を記述したスクリプト５２を取得する。変換部１３０は、スクリプト５２に記述された変換規則８に従って、ソースコード５１を互いに依存する要素を関連付けた形式に変換する。【選択図】図１
2018128792.tif 000002
【特許請求の範囲】
【請求項１】
複数の要素を含むソースコードの分析を支援する分析支援装置において、
前記ソースコードを、前記ソースコードに含まれる前記複数の要素のうちの互いに依存する要素を関連付けた形式に変換する変換規則を記述したスクリプトを取得するスクリプト取得部と、
前記スクリプトに記述された前記変換規則に従って、前記ソースコードを変換する変換部と
を備えた分析支援装置。
【請求項２】
前記ソースコードは、テーブルの要素として前記複数の要素を含み、
前記スクリプト取得部は、
前記複数の要素を前記互いに依存する要素ごとに展開する規則を前記変換規則として記述した前記スクリプトを取得する請求項１に記載の分析支援装置。
【請求項３】
前記ソースコードは、前記テーブルに対する処理である関数を記述し、
前記スクリプト取得部は、
前記変換規則と前記変換規則を用いて変換する前記関数とを前記スクリプトから抽出し、
前記変換部は、
前記ソースコードに記述された前記関数を前記変換規則に従って変換し、前記複数の要素を前記互いに依存する要素ごとに展開する請求項２に記載の分析支援装置。
【請求項４】
前記変換部は、
前記互いに依存する要素ごとの処理を、一の関数に展開する請求項３に記載の分析支援装置。
【請求項５】
前記変換部は、
前記互いに依存する要素ごとの処理を、複数の関数の各関数に展開する請求項３に記載の分析支援装置。
【請求項６】
前記スクリプト取得部は、
前記複数の要素のうち変換しない要素を指定した前記スクリプトを取得する請求項１から５のいずれか１項に記載の分析支援装置。
【請求項７】
複数の要素を含むソースコードの分析を支援する分析支援装置の分析支援方法において、
スクリプト取得部が、前記ソースコードを、前記ソースコードに含まれる前記複数の要素のうちの互いに依存する要素を関連付けた形式に変換する変換規則を記述したスクリプトを取得し、
変換部が、前記スクリプトに記述された前記変換規則に従って、前記ソースコードを変換する分析支援方法。
【請求項８】
複数の要素を含むソースコードの分析を支援する分析支援装置の分析支援プログラムにおいて、
前記ソースコードを、前記ソースコードに含まれる前記複数の要素のうちの互いに依存する要素を関連付けた形式に変換する変換規則を記述したスクリプトを取得するスクリプト取得処理と、
前記スクリプトに記述された前記変換規則に従って、前記ソースコードを変換する変換処理と
をコンピュータである前記分析支援装置に実行させる分析支援プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェアの依存関係の分析を支援する分析支援装置、分析支援方法および分析支援プログラムに関する。
【背景技術】
【０００２】
ソフトウェア開発において、ソフトウェアの仕様変更のためにソースコードに変更を加えると、その変更を加えた箇所とは別の箇所に予期しない悪影響が及ぼされ、不具合が発生することがある。そのためソフトウェア開発者にとってソースコードの変更箇所の影響範囲を正確に認識することは非常に重要である。
【０００３】
しかし、近年のソフトウェア多機能化に伴い、ソースコードの規模と複雑さが増大しているため、人手で影響範囲を特定することは困難になってきている。そこで、この問題を解決するため、ソースコードを解析して、任意の箇所の影響範囲を特定することができるソフトウェア構造解析ツールが存在する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１５−０４３１４０号公報
【特許文献２】特開２００５−２５０５５５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ある処理に関連する関数のポインタおよび変数といった情報を配列に規則的に定義したものは一般的にテーブルと呼ばれ、その定義規則に従ってテーブルにアクセスすることで処理を簡素化するプログラミング技法が多くのプログラムで採用されている。
このようなプログラムでは、具体例として、テーブル上のある行に定義された関数ポインタが示す関数に、その関数ポインタと同じ行に定義された変数が引数として代入されるといった処理が行われる。この場合、これらの関数ポインタと変数はお互いに変更による影響を受ける。つまり、依存関係が成り立つ。このように、テーブルの処理方法に応じて、テーブルの行単位もしくは列単位で局所的に依存関係が生じる。
【０００６】
しかし、ソフトウェア構造解析ツールは参照情報から依存関係を解釈するため、ある処理がテーブルを参照して処理する場合、その処理方法に関わらず、当該処理とテーブル上の全ての要素間に依存関係があるという結果を示す。このように、正確な依存関係を特定できないことが課題となっている。
また、ソフトウェア構造解析ツールはソースコードの全ての依存関係をそのまま表示するため、使用者が興味のない要素の依存関係も表示され、解析結果が煩雑になり、確認し難いことも課題になっている。
【０００７】
本発明は、ソースコードを、ソフトウェア構造解析ツールが依存関係を正確に解釈できる記述形式のソースコードに変換することで、ソフトウェア構造解析ツールによって正確な依存関係を特定できるようにすることを目的とする。
【課題を解決するための手段】
【０００８】
本発明に係る分析支援装置は、複数の要素を含むソースコードの分析を支援する分析支援装置において、
前記ソースコードを、前記ソースコードに含まれる前記複数の要素のうちの互いに依存する要素を関連付けた形式に変換する変換規則を記述したスクリプトを取得するスクリプト取得部と、
前記スクリプトに記述された前記変換規則に従って、前記ソースコードを変換する変換部とを備えた。
【発明の効果】
【０００９】
本発明に係る分析支援装置では、スクリプト取得部が、ソースコードを、ソースコードに含まれる複数の要素のうちの互いに依存する要素を関連付けた形式に変換する変換規則を記述したスクリプトを取得する。変換部が、スクリプトに記述された変換規則に従って、ソースコードを変換する。よって、ソフトウェアの依存関係をより正確かつ簡単に特定することができるようになる。
【図面の簡単な説明】
【００１０】
【図１】実施の形態１に係る分析支援装置１００の構成図。
【図２】実施の形態１に係る分析支援装置１００の分析支援方法６１０および分析支援プログラム６２０の分析支援処理Ｓ１００を示すフローチャート。
【図３】実施の形態１に係るソースコード５１の一例を示す図。
【図４】実施の形態１に係るスクリプト５２の一例を示す図。
【図５】実施の形態１に係るスクリプト５２の別例であるスクリプト５２ａを示す図。
【図６】実施の形態１に係る変換後ソースコード５３の例を示す図。
【図７】実施の形態１に係る変換後ソースコード５３の別例を示す図。
【図８】実施の形態１の変形例に係る分析支援装置１００の構成図。
【発明を実施するための形態】
【００１１】
以下、本発明の実施の形態について、図を用いて説明する。なお、各図中、同一または相当する部分には、同一符号を付している。実施の形態の説明において、同一または相当する部分については、説明を適宜省略または簡略化する。
【００１２】
実施の形態１．
＊＊＊構成の説明＊＊＊
図１を用いて、本実施の形態に係る分析支援装置１００の構成について説明する。
図１に示すように、分析支援装置１００は、コンピュータである。
分析支援装置１００は、プロセッサ９１０、記憶装置９２０、入力インタフェース９３０、出力インタフェース９４０、および通信装置９５０といったハードウェアを備える。記憶装置９２０は、メモリ９２１と補助記憶装置９２２とを含む。
【００１３】
分析支援装置１００は、機能構成として、ソースコード取得部１１０と、スクリプト取得部１２０と、変換部１３０と、変換後コード出力部１４０と、記憶部１５０とを備える。記憶部１５０には、ソースコード５１と、スクリプト５２とが記憶される。
【００１４】
ソースコード取得部１１０と、スクリプト取得部１２０と、変換部１３０と、変換後コード出力部１４０との機能は、ソフトウェアで実現される。
記憶部１５０は、メモリ９２１により実現される。また、記憶部１５０は、補助記憶装置９２２のみ、あるいは、メモリ９２１および補助記憶装置９２２で実現されてもよい。記憶部１５０の実現方法は任意である。
【００１５】
プロセッサ９１０は、信号線を介して他のハードウェアと接続され、これら他のハードウェアを制御する。プロセッサ９１０は、演算処理を行うＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）である。プロセッサ９１０は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）あるいはＭＰＵ（Ｍｉｃｒｏ−Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）である。
【００１６】
補助記憶装置９２２は、具体的には、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、フラッシュメモリ、または、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）である。メモリ９２１は、具体的には、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）である。
【００１７】
入力インタフェース９３０は、マウス、キーボード、タッチパネルといった入力装置と接続されるポートである。入力インタフェース９３０は、具体的には、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）端子である。なお、入力インタフェース９３０は、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）と接続されるポートであってもよい。ソースコード５１およびスクリプト５２は、入力インタフェース９３０を介して分析支援装置１００に入力され、記憶部１５０に記憶される。
【００１８】
出力インタフェース９４０は、ディスプレイといった表示機器のケーブルが接続されるポートである。出力インタフェース９４０は、具体的には、ＵＳＢ端子またはＨＤＭＩ（登録商標）（Ｈｉｇｈ  Ｄｅｆｉｎｉｔｉｏｎ  Ｍｕｌｔｉｍｅｄｉａ  Ｉｎｔｅｒｆａｃｅ）端子である。ディスプレイは、具体的には、ＬＣＤ（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ）である。変換後コード出力部１４０は、変換後ソースコード５３を、出力インタフェース９４０を介して、ディスプレイといった出力機器に出力する。
【００１９】
通信装置９５０は、ネットワークを介して他の装置と通信を行う。ソースコード５１およびスクリプト５２は、通信装置９５０を介して、他の装置から受信してもよい。また、変換後コード出力部１４０は、通信装置９５０を介して、他の装置に送信されてもよい。通信装置９５０は、レシーバとトランスミッタとを有する。通信装置９５０は、具体的には、通信チップまたはＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）である。通信装置９５０は、データを通信する通信部である。レシーバは、データを受信する受信部である。トランスミッタは、データを送信する送信部である。
【００２０】
補助記憶装置９２２には、ソースコード取得部１１０と、スクリプト取得部１２０と、変換部１３０と、変換後コード出力部１４０との機能を実現するプログラムが記憶されている。ソースコード取得部１１０と、スクリプト取得部１２０と、変換部１３０と、変換後コード出力部１４０との機能を実現するプログラムを分析支援プログラム６２０ともいう。このプログラムは、メモリ９２１にロードされ、プロセッサ９１０に読み込まれ、プロセッサ９１０によって実行される。また、補助記憶装置９２２には、ＯＳが記憶されている。ＯＳの少なくとも一部がメモリ９２１にロードされる。プロセッサ９１０はＯＳを実行しながら、分析支援プログラム６２０を実行する。図１では、プロセッサ９１０がソースコード取得部１１０と、スクリプト取得部１２０と、変換部１３０と、変換後コード出力部１４０との機能を実現するプログラムを実行している状態を模式的に表している。
【００２１】
分析支援装置１００は、１つのプロセッサ９１０のみを備えていてもよいし、複数のプロセッサ９１０を備えていてもよい。複数のプロセッサ９１０がソースコード取得部１１０と、スクリプト取得部１２０と、変換部１３０と、変換後コード出力部１４０との機能を実現するプログラムを連携して実行してもよい。
【００２２】
ソースコード取得部１１０と、スクリプト取得部１２０と、変換部１３０と、変換後コード出力部１４０との処理の結果を示す情報、データ、信号値、および変数値は、分析支援装置１００の補助記憶装置９２２、メモリ９２１、または、プロセッサ９１０内のレジスタまたはキャッシュメモリに記憶される。
【００２３】
ソースコード取得部１１０と、スクリプト取得部１２０と、変換部１３０と、変換後コード出力部１４０との機能を実現するプログラムは、可搬記録媒体に記憶されてもよい。可搬記録媒体とは、具体的には、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ブルーレイ（登録商標）ディスク、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｃ）である。
なお、分析支援プログラムプロダクトとは、分析支援プログラム６２０が記録された記憶媒体および記憶装置である。分析支援プログラムプロダクトは、外観に関わらず、コンピュータ読み取り可能なプログラムをロードしているものを指す。
【００２４】
＊＊＊動作の説明＊＊＊
図２は、本実施の形態に係る分析支援装置１００の分析支援方法６１０および分析支援プログラム６２０の分析支援処理Ｓ１００を示すフローチャートである。分析支援プログラム６２０は、以下に示す各処理をコンピュータである分析支援装置１００に実行させる。
分析支援装置１００は、複数の要素を含むソースコード５１の分析を支援する。分析支援装置１００は、テーブルの要素の変換規則８を簡略的に記述したスクリプト５２を取得し、そのスクリプト５２をもとに、ソースコード５１のテーブル処理部分をソフトウェア構造解析ツールで正確に依存関係を解釈できる記述形式に変換する。ソースコード５１のテーブル処理部分をソフトウェア構造解析ツールで正確に依存関係を解釈できる記述形式とは、ソースコードに含まれる複数の要素のうちの互いに依存する要素を関連付けた形式である。分析支援装置１００は、依存関係分析支援装置ともいう。
【００２５】
分析支援処理Ｓ１００は、ソースコード取得処理Ｓ１１０と、スクリプト取得処理Ｓ１２０と、変換処理Ｓ１３０と、変換後コード出力処理Ｓ１４０とを有する。
【００２６】
＜ソースコード取得処理Ｓ１０＞
ステップＳ１１０において、ソースコード取得部１１０は、ソースコード取得処理Ｓ１０を実行する。ソースコード取得処理Ｓ１０において、ソースコード取得部１１０は、記憶部１５０からソースコード５１を取得し、ソースコード５１からソースコード５１のデータをソースコードデータ５として読み取る。ソースコード取得部１１０は、ソースコード読取部ともいう。
【００２７】
図３を用いて、本実施の形態に係るソースコード５１の一例について説明する。
ソースコード５１は、テーブル１２に対する処理である関数１３を記述する。具体的には、図３に示すように、ソースコード５１は、テーブル１２である定義テーブルに対する処理である関数１３、すなわちｍａｉｎ関数を記述している。
ソースコード５１は、テーブル１２の要素１１として複数の要素５１１を含む。具体的には、テーブル１２である定義テーブルの要素１１として、条件１、関数１、引数１、条件２、関数２、引数２、・・・といった複数の要素５１１を含む。実際には、定義テーブルに設定される関数１および関数２の各々は、関数１および関数２の各々を示す関数ポインタである。具体的には、定義テーブルには条件、関数および引数が複数定義されており、ｆｏｒｅａｃｈ文で定義テーブルから一行ずつ「テーブル定義」として取り出される。そのテーブル定義に含まれる条件が満たされた時に、テーブル定義に含まれる関数が呼び出され、その関数にテーブル定義に含まれる引数が代入される。
【００２８】
具体例としては、ｍａｉｎ関数では、テーブル定義に含まれる条件１が満たされた時に、テーブル定義に含まれる関数１が呼び出され、その関数１にテーブル定義に含まれる引数１が代入される。
以上のように、ソースコード５１のｍａｉｎ関数では、定義テーブルのある行に定義された条件１が満たされると、関数ポインタが示す関数１に、その関数１と同じ行に定義された変数が引数１として代入されるといった処理が行われる。この場合、これらの条件１と関数１と変数１とはお互いに変更による影響を受ける。つまり、条件１と関数１と変数１とは依存関係が成り立つ。条件１と関数１と変数１とは、互いに依存する要素１４である。このように、テーブルの処理方法に応じて、テーブルの行単位もしくは列単位で局所的に依存関係が生じる。
【００２９】
＜スクリプト取得処理Ｓ２０＞
ステップＳ１２０において、スクリプト取得部１２０は、スクリプト取得処理Ｓ２０を実行する。スクリプト取得処理Ｓ２０において、スクリプト取得部１２０は、ソースコード５１を、ソースコード５１に含まれる複数の要素５１１のうちの互いに依存する要素１４を関連付けた形式に変換する変換規則８を記述したスクリプト５２を取得する。スクリプト５２は、複数の要素５１１を互いに依存する要素１４ごとに展開する規則を変換規則８として記述している。また、スクリプト５２は、変換規則８と変換規則８を用いて変換する関数７とを含む。図３の例では、変換する関数７は、ｍａｉｎ関数である。
具体的には、スクリプト取得部１２０は、記憶部１５０からスクリプト５２を取得する。スクリプト５２は予め利用者により生成され、入力インタフェース９３０を介して記憶部１５０に記憶されている。スクリプト取得部１２０は、変換規則８と、変換規則８を用いて変換する関数７であるｍａｉｎ関数とをスクリプト５２から抽出する。つまり、スクリプト取得部１２０は、スクリプト５２から、変換する関数７と変換規則８を読み取るスクリプト読取部ともいう。
【００３０】
図４を用いて、本実施の形態に係るスクリプト５２の一例について説明する。
一行目の「ＳＣＲＩＰＴ  ｍａｉｎ（）」ではｍａｉｎ関数を変換する関数７として変換することを指定している。二行目の「ＴＡＢＬＥ  “定義テーブル”」では「定義テーブル」という名前のテーブル１２を扱うことを指定している。一行目で指定された関数は、二行目で指定されたテーブルの行ごとの処理単位で展開されることになる。三行目以降は「定義テーブル」の展開後の関数の雛形および形式を指定している。ここで使われている「＄ＣＯＬ［０］」は一行目で指定されたテーブルの一列目をこの位置に挿入することを意味する。
なお、図４の例では、Ｃ言語の構文にあわせて書いているが、抽象化した書式を使うことで多言語に対応できる。
【００３１】
次に、図５を用いて、本実施の形態に係るスクリプト５２の別例であるスクリプト５２ａについて説明する。
スクリプト取得部１２０は、複数の要素５１１のうち変換しない要素９を指定したスクリプト５２ａを取得してもよい。
図５に示すスクリプト５２ａは、図４で示したスクリプト５２に、不要な行を指定する条件を追加したものの例である。スクリプト５２ａにおいて、２行目の「ＥＸＣＬＵＤＥ  ＣＯＬ［ｎ］＝Ｘ」のように、変換しない要素９を指定することで、分析支援装置１００は、ｎ列目の要素がＸになる時に、展開しないように指定することができる。
【００３２】
このように、分析支援装置１００は、テーブルの要素の処理の内、不要なものを展開ないようにできる。このとき、分析支援装置１００は、不要なものの条件をスクリプトで指定することができる。
この条件はユーザインタフェースから指定できるものとする。具体例としては、分析支援装置１００は、このスクリプト５２ａにおいて不要なものの条件を、ユーザから入力機器および入力インタフェース９３０を介して取得する条件取得部を備えていてもよい。
【００３３】
＜変換処理Ｓ３０＞
ステップＳ１３０において、変換部１３０は、変換処理Ｓ３０を実行する。変換処理Ｓ３０において、変換部１３０は、スクリプト５２に記述された変換規則８に従って、ソースコード５１を変換する。変換部１３０は、ソースコード５１に記述された変換する関数７を変換規則８に従って変換し、複数の要素５１１を互いに依存する要素１４ごとに展開する。
具体的には、変換部１３０は、ソースコードデータ５から変換する関数７を検索する。変換部１３０は、ソースコード５１において見つかった関数１３を変換規則８に従って変換し、変換後ソースコードデータ１０を生成する。
【００３４】
＜変換後コード出力処理Ｓ４０＞
ステップＳ１４０において、変換後コード出力部１４０は、変換後コード出力処理Ｓ４０を実行する。変換後コード出力処理Ｓ４０において、変換後コード出力部１４０は、変換後ソースコードデータ１０を元に変換後ソースコード５３を生成する。変換後コード出力部１４０は、出力インタフェース９４０を介して、生成した変換後ソースコード５３をディスプレイといった出力機器に出力する。
【００３５】
次に、図６および図７を用いて、本実施の形態に係る変換後ソースコード５３の例について説明する。
変換部１３０は、互いに依存する要素１４ごとの処理を、複数の関数の各関数に展開する。あるいは、変換部１３０は、互いに依存する要素１４ごとの処理を、一の関数に展開してもよい。
【００３６】
図６は、ソースコード５１について、互いに依存する要素１４ごとの処理を、複数の関数１７の各関数１８に展開した変換後ソースコード５３の例である。
図６において、ｍａｉｎ＿テーブル処理１行目関数とｍａｉｎ＿テーブル処理２行目関数とが複数の関数１７の例である。ソースコード５１は、互いに依存する要素１４ごとの処理が、複数の関数１７の各関数１８において展開されている。すなわち、条件１、関数１および引数１の処理が、ｍａｉｎ＿テーブル処理１行目関数において展開され、条件２、関数２および引数２の処理が、ｍａｉｎ＿テーブル処理２行目関数において展開されている。
以上のように、図６では、定義テーブルの各行に対する処理が一つ一つの関数に展開される。
【００３７】
図７は、ソースコード５１について、互いに依存する要素１４ごとの処理を、一の関数１９に展開した変換後ソースコード５３の例である。
図７において、ｍａｉｎ関数が一の関数１９の例である。ソースコード５１は、互いに依存する要素１４ごとの処理が、一の関数１９に展開されている。すなわち、条件１、関数１および引数１の処理と、条件２、関数２および引数２の処理とが、一のｍａｉｎ関数において展開されている。
図６では、テーブル定義１列ごとの関数の展開方法を示したが、図７のように一つの関数に定義テーブルの各行に対する処理を展開してもよい。
【００３８】
＊＊＊他の構成＊＊＊
本実施の形態では、ソースコード取得部１１０と、スクリプト取得部１２０と、変換部１３０と、変換後コード出力部１４０との機能がソフトウェアで実現される。しかし、変形例として、ソースコード取得部１１０と、スクリプト取得部１２０と、変換部１３０と、変換後コード出力部１４０との機能がハードウェアで実現されてもよい。
【００３９】
図８を用いて、本実施の形態の変形例に係る分析支援装置１００の構成について説明する。
図８に示すように、分析支援装置１００は、処理回路９０９、入力インタフェース９３０、出力インタフェース９４０、および通信装置９５０といったハードウェアを備える。
【００４０】
処理回路９０９は、上述したソースコード取得部１１０と、スクリプト取得部１２０と、変換部１３０と、変換後コード出力部１４０との機能および記憶部１５０を実現する専用の電子回路である。処理回路９０９は、具体的には、単一回路、複合回路、プログラム化したプロセッサ、並列プログラム化したプロセッサ、ロジックＩＣ、ＧＡ、ＡＳＩＣ、または、ＦＰＧＡである。ＧＡは、Ｇａｔｅ  Ａｒｒａｙの略語である。ＡＳＩＣは、Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔの略語である。ＦＰＧＡは、Ｆｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙの略語である。
【００４１】
ソースコード取得部１１０と、スクリプト取得部１２０と、変換部１３０と、変換後コード出力部１４０との機能は、１つの処理回路９０９で実現されてもよいし、複数の処理回路９０９に分散して実現されてもよい。
【００４２】
別の変形例として、分析支援装置１００の機能がソフトウェアとハードウェアとの組合せで実現されてもよい。すなわち、分析支援装置１００の一部の機能が専用のハードウェアで実現され、残りの機能がソフトウェアで実現されてもよい。
【００４３】
分析支援装置１００のプロセッサ９１０、記憶装置９２０、および、処理回路９０９を、総称して「プロセッシングサーキットリ」という。つまり、分析支援装置１００の構成が図１および図８のいずれに示した構成であっても、ソースコード取得部１１０と、スクリプト取得部１２０と、変換部１３０と、変換後コード出力部１４０との機能および記憶部１５０は、プロセッシングサーキットリにより実現される。
【００４４】
「部」を「工程」または「手順」または「処理」に読み替えてもよい。また、「部」の機能をファームウェアで実現してもよい。
【００４５】
＊＊＊本実施の形態の効果の説明＊＊＊
本実施の形態に係る分析支援装置１００では、ソースコードを、ソフトウェア構造解析ツールが依存関係を正確に解釈できる記述形式のソースコードに変換する。よって、本実施の形態に係る分析支援装置１００によれば、ソフトウェアの依存関係をより正確かつ簡単に特定することができるようになる。
【００４６】
また、本実施の形態に係る分析支援装置１００によれば、ソフトウェア流用開発時にテーブル上のある要素を変更する場合、その要素の変更が影響を及ぼす範囲を適切に特定することができる。よって、本実施の形態に係る分析支援装置１００によれば、ソフトウェアのデグレーション発生の防止による品質向上と再試験範囲を限定することによる試験工数の削減とを見込める。
【００４７】
また、本実施の形態に係る分析支援装置１００では、スクリプト形式でテーブルの要素の処理方法を簡略的に記述し、その情報をもとに、ソースコードのテーブル処理部分をソフトウェア構造解析ツールで正確に依存関係を解釈できる記述形式に変換する。よって、この変換後のソースコードをソフトウェア構造解析ツールで解析することで正確な依存関係を特定することができる。
【００４８】
また、本実施の形態に係る分析支援装置１００では、依存関係の分析に不要な要素を省くことをスクリプトで指定することができる。よって、本実施の形態に係る分析支援装置１００によれば、解析結果を単純にすることができる。
【００４９】
本実施の形態では、ソースコード取得部１１０と、スクリプト取得部１２０と、変換部１３０と、変換後コード出力部１４０との各々が独立した機能ブロックとして分析支援装置１００を構成している。しかし、上述した実施の形態のような構成でなくてもよく、分析支援装置１００の構成は任意である。分析支援装置１００の機能ブロックは、上述した実施の形態で説明した機能を実現することができれば、任意である。これらの機能ブロックを、他のどのような組み合わせ、あるいは任意のブロック構成で、分析支援装置を構成しても構わない。
また、分析支援装置は、１つの装置でなく、複数の装置から構成された分析支援システムでもよい。
【００５０】
実施の形態１について説明したが、この実施の形態のうち、複数の部分を組み合わせて実施しても構わない。あるいは、この実施の形態のうち、１つの部分を実施しても構わない。その他、この実施の形態を、全体としてあるいは部分的に、どのように組み合わせて実施しても構わない。
なお、上述した実施の形態は、本質的に好ましい例示であって、本発明、その適用物および用途の範囲を制限することを意図するものではなく、必要に応じて種々の変更が可能である。
【符号の説明】
【００５１】
５  ソースコードデータ、７  変換する関数、８  変換規則、９  変換しない要素、１０  変換後ソースコードデータ、１１  要素、１２  テーブル、１３，１８  関数、１４  互いに依存する要素、１７  複数の関数、１９  一の関数、５１  ソースコード、５１１  複数の要素、５２，５２ａ  スクリプト、５３  変換後ソースコード、１００  分析支援装置、１１０  ソースコード取得部、１２０  スクリプト取得部、１３０  変換部、１４０  変換後コード出力部、１５０  記憶部、６１０  分析支援方法、６２０  分析支援プログラム、９０９  処理回路、９１０  プロセッサ、９２０  記憶装置、９２１  メモリ、９２２  補助記憶装置、９３０  入力インタフェース、９４０  出力インタフェース、９５０  通信装置、Ｓ１０  ソースコード取得処理、Ｓ２０  スクリプト取得処理、Ｓ３０  変換処理、Ｓ４０  変換後コード出力処理、Ｓ１００  分析支援処理。
【図１】
2018128792.tif 000003
【図２】
2018128792.tif 000004
【図３】
2018128792.tif 000005
【図４】
2018128792.tif 000006
【図５】
2018128792.tif 000007
【図６】
2018128792.tif 000008
【図７】
2018128792.tif 000009
【図８】
2018128792.tif 000010