(57)【要約】      （修正有）【課題】呼び出し関係にないが同時に修正すべき可能性が高い関数を検出する計算装置、および影響出力システムを提供する。【解決手段】計算装置は、ソースコードに記載される関数または変数である要素について、ソースコードの修正履歴に基づき同時に修正された要素の組み合わせが記録される同時修正関係情報が格納される記憶部１２２と、ユーザによる修正の対象となる要素である修正要素を特定する修正要素特定部と、修正要素を修正することにより影響を受ける要素を同時修正関係情報を用いて判定し出力する影響箇所解析判定部１１３とを備える。【選択図】図１
2018181020.tif 000002
【特許請求の範囲】
【請求項１】
ソースコードにそれぞれ記載される関数または変数である複数の要素について、前記ソースコードの修正履歴において同時に修正された前記要素の組み合わせが記録される同時修正関係情報が格納される記憶部と、
前記複数の要素のうち修正の対象となる修正要素を特定する修正要素特定部と、
前記複数の要素のうち前記修正要素を修正することにより影響を受ける被影響要素を前記同時修正関係情報を用いて判定し出力する影響箇所解析判定部とを備える計算装置。
【請求項２】
請求項１に記載の計算装置において、
前記記憶部には、前記ソースコードにおける前記要素の呼び出し関係が記録される呼び出し関係情報がさらに格納され、
前記影響箇所解析判定部は、前記同時修正関係情報および前記呼び出し関係情報を用いて前記被影響要素を判定する計算装置。
【請求項３】
請求項１に記載の計算装置において、
前記影響箇所解析判定部は、前記同時修正関係情報を用いて、同時に修正された回数が予め定められた回数以上である前記要素の組み合わせに基づき前記被影響要素を判定する計算装置。
【請求項４】
請求項１に記載の計算装置において、
前記影響箇所解析判定部は、前記同時修正関係情報を用いて、同時に修正された回数の総修正回数に対する比率が予め定められた比率以上である前記要素の組み合わせに基づき前記被影響要素を判定する計算装置。
【請求項５】
請求項１に記載の計算装置において、
前記影響箇所解析判定部は、前記同時修正関係情報を用いて、同時に修正された回数と予め定められた回数の閾値との関係、および修正された時期と予め定められた時期の閾値との関係の組み合わせに基づき前記被影響要素を判定する計算装置。
【請求項６】
請求項２に記載の計算装置において、
前記影響箇所解析判定部は、前記修正要素に対する呼び出し段数および同時修正段数に基づき前記被影響要素を判定する計算装置。
【請求項７】
請求項２に記載の計算装置において、
前記影響箇所解析判定部は、前記被影響要素について、前記修正要素との関連性を出力する計算装置。
【請求項８】
請求項１に記載の計算装置において、
前記修正要素を特定する情報が入力される入力部をさらに備え、
前記修正要素特定部は前記ソースコードの修正前後の差分または前記入力部への入力に基づき前記修正要素を特定する計算装置。
【請求項９】
請求項１に記載の計算装置において、
前記ソースコードの修正履歴に基づき前記同時修正関係情報を作成し、前記記憶部に格納する同時修正関係検出部をさらに備える計算装置。
【請求項１０】
請求項９に記載の計算装置およびサーバを備える影響出力システムにおいて、
前記計算装置は、
前記サーバから前記ソースコードの修正履歴を受信する計算装置通信部と、
前記影響箇所解析判定部の出力を表示部に表示させる表示制御部とをさらに備え、
前記サーバは、
前記ソースコードの修正履歴を格納するサーバ記憶部と、
前記計算装置に前記ソースコードの修正履歴を送信するサーバ通信部とを備える影響出力システム。
【請求項１１】
請求項１に記載の計算装置およびサーバを備える影響出力システムにおいて、
前記計算装置は、
前記サーバから前記同時修正関係情報を受信する計算装置通信部と、
前記影響箇所解析判定部の出力を表示部に表示させる表示制御部とをさらに備え、
前記サーバは、
前記ソースコードの修正履歴に基づき前記同時修正関係情報を作成する同時修正関係検出部と、
前記同時修正関係検出部が作成した前記同時修正関係情報を前記計算装置に送信するサーバ通信部とを備える影響出力システム。
【請求項１２】
請求項１に記載の計算装置およびクライアントを備える影響出力システムにおいて、
前記計算装置は、前記影響箇所解析判定部の出力を前記クライアントに送信する計算装置通信部をさらに備え、
前記クライアントは、
前記計算装置から前記影響箇所解析判定部の出力を受信するクライアント通信部と、
前記影響箇所解析判定部の出力を表示部に表示させる表示制御部とを備え、
前記クライアント通信部は、前記計算装置の前記修正要素特定部が前記修正要素を特定するために必要な情報を送信する影響出力システム。
【請求項１３】
ソースコードにそれぞれ記載される関数または変数である複数の要素について、前記ソースコードの修正履歴において同時に修正された前記要素の対応が記録される同時修正関係情報が格納される記憶部を備えるコンピュータに、
前記複数の要素のうち修正の対象となる修正要素を特定させることと、
前記複数の要素のうち前記修正要素を修正することにより影響を受ける被影響要素を前記同時修正関係情報を用いて判定させることと、を実現させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、計算装置、および影響出力システムに関する。
【背景技術】
【０００２】
ソフトウエアのある部分を修正した際に関連する他の箇所の修正を失念する修正漏れが問題となる。特許文献１には、修正されたプログラム内のソースコードを解析し、このソースコードの修正の影響範囲を特定することによりデグレートの発生を防止するデグレート防止支援プログラムにおいて、ユーザの操作により指定された前記プログラムの修正前後のソースコードを比較して修正内容を含む修正対象を検出する修正検出手段と、ユーザの操作により指定された前記修正後のソースコードの影響範囲を調査する基点となる基点フォルダに基づいて、前記修正対象から線形的に前記修正対象の影響を受ける影響内容を含む影響対象を検出する影響検出手段と、前記修正対象および影響対象に基づいて、影響対象に対するデグレートの発生を防止するための見直し情報を生成する見直し生成手段とを備える装置が開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００７−１９９８００号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
特許文献１に記載されている発明では、呼び出し関係にないが同時に修正すべき可能性が高い関数を検出することができない。
【課題を解決するための手段】
【０００５】
本発明の第１の態様による計算装置は、ソースコードにそれぞれ記載される関数または変数である複数の要素について、前記ソースコードの修正履歴において同時に修正された前記要素の組み合わせが記録される同時修正関係情報が格納される記憶部と、前記複数の要素のうち修正の対象となる修正要素を特定する修正要素特定部と、前記複数の要素のうち前記修正要素を修正することにより影響を受ける被影響要素を前記同時修正関係情報を用いて判定し出力する影響箇所解析判定部とを備える。
本発明の第２の態様によるプログラムは、ソースコードにそれぞれ記載される関数または変数である複数の要素について、前記ソースコードの修正履歴において同時に修正された前記要素の対応が記録される同時修正関係情報が格納される記憶部を備えるコンピュータに、前記複数の要素のうち修正の対象となる修正要素を特定させることと、前記複数の要素のうち前記修正要素を修正することにより影響を受ける被影響要素を前記同時修正関係情報を用いて判定させることと、を実現させる。
【発明の効果】
【０００６】
本発明によれば、呼び出し関係にないが同時に修正すべき可能性が高い関数を検出することができる。
【図面の簡単な説明】
【０００７】
【図１】影響出力システム１のシステム構成を示す図
【図２】構成管理データベースＤＢ２２１の構成を示す図
【図３】履歴情報２２５の一例を示す図
【図４】要素の相互関係の一例を示す図
【図５】関数定義の一例を示す図
【図６】呼び出し関係ＤＢ１２１の一例を示す図
【図７】同時修正関係ＤＢ１２２の一例を示す図
【図８】修正影響チェック画面９０１の一例を示す図
【図９】リスト出力欄９０５の表示の一例を示す図
【図１０】構成管理ＤＢ２２１へのソースコードの登録処理を示すフローチャート
【図１１】呼び出し関係ＤＢ１２１の作成処理を示すフローチャート
【図１２】同時修正関係ＤＢ１２２の作成処理を示すフローチャート
【図１３】解析開始ボタン９０４の押下により実行される処理を示すフローチャート
【図１４】図１３のステップＳ８０７の詳細を示すフローチャート
【図１５】変形例１における図１２のステップＳ８０８の詳細を示す図
【図１６】変形例２における図１２のステップＳ８０８の詳細を示す図
【図１７】変形例３において図１３のフローチャートの動作を一部変更するフローチャート
【図１８】変形例４における修正前影響チェック画面９５１の一例を示す図
【図１９】変形例５における同時修正関係ＤＢ１２２Ａの一例を示す図
【図２０】第２の実施の形態における影響出力システム１Ａのシステム構成を示す図
【図２１】第３の実施の形態における影響出力システム１Ｂのシステム構成を示す図
【図２２】第４の実施の形態における影響出力システム１Ｃのシステム構成を示す図
【発明を実施するための形態】
【０００８】
―第１の実施の形態―
以下、図１〜図１３を参照して、影響出力システムの第１の実施の形態を説明する。
【０００９】
（用語の定義）
本実施の形態では、後述する端末装置を操作する者を「ユーザ」と呼ぶ。また以下ではコンピュータに実行させる処理を記載した文書であってコンピュータのコンパイラやインタプリタにより解読され処理される文章を「ソースコード」と呼ぶ。ソースコードに記載される関数および変数を「要素」と呼ぶ。ソースコードに記載された要素に関する記載を変更すること、およびソースコードに要素に関する記載を追加することをソースコードの「修正」と呼ぶ。
【００１０】
（構成）
図１は、影響出力システム１のシステム構成を示す図である。影響出力システム１は、ユーザが操作する端末装置１００と、ネットワークを介して端末装置１００に接続されるサーバ２００とを備える。すなわち端末装置１００はサーバ２００との関係ではクライアントとみなすことができる。
【００１１】
端末装置１００は、端末処理部１１０と、端末記憶部１２０と、表示部１３０と、入力部１４０と、端末通信部１５０とを備える。端末処理部１１０はたとえばＣＰＵであり、不図示のＲＯＭに格納されるプログラムを不図示のＲＡＭに展開して実行することにより以下に説明する機能を発揮する。端末処理部１１０はその機能として、呼び出し関係検出部１１１、同時修正関係検出部１１２、影響箇所解析判定部１１３、入出力処理部１１４、および修正差分検出部１１５を備える。呼び出し関係検出部１１１はソースコードに含まれる関数および変数間の参照関係を既知の静的解析技術に基づいて検出し、後述する呼び出し関係データベース（以下、呼び出し関係ＤＢ）１２１を作成する。
【００１２】
同時修正関係検出部１１２は、サーバ２００から取得する複数のソースコード、すなわちソースコードの修正履歴に基づき、後述する同時修正関係データベース（以下、同時修正関係ＤＢ）１２２を作成する。影響箇所解析判定部１１３は、ある要素の変更が影響を与える他の要素を判定する。入出力処理部１１４は、不図示の入出力インタフェースを介して表示部１３０および入力部１４０と接続される。入出力処理部１１４は、表示部１３０への映像情報の出力および入力部１４０からの入力情報の受付を行う。修正差分検出部１１５は、ソースコードの差分を要素単位で検出する。すなわち追加された関数および変数や、修正された関数を検出する。
【００１３】
端末記憶部１２０は、ハードディスクドライブやフラッシュメモリなどの不揮発性のデータ記憶装置である。端末記憶部１２０には、呼び出し関係ＤＢ１２１、同時修正関係ＤＢ１２２、登録ソースコード１２３、および修正ソースコード１２４が格納される。前述のとおり、呼び出し関係ＤＢ１２１は呼び出し関係検出部１１１により生成され、同時修正関係ＤＢ１２２は同時修正関係検出部１１２により生成される。呼び出し関係ＤＢ１２１には、ソースコードを解析して得られる要素間の呼び出し関係、すなわち呼び出しの関係および被呼び出しの関係を示す情報が格納される。前述のとおり、呼び出し関係ＤＢ１２１は呼び出し関係検出部１１１により生成される。同時修正関係ＤＢ１２２には、同時に修正される要素を示す情報が格納される。
【００１４】
登録ソースコード１２３は、サーバ２００に登録されている最新の一式のソースコードであり、端末通信部１５０を介してサーバ２００から取得される。修正ソースコード１２４はユーザにより登録ソースコード１２３が修正されたソースコードである。すなわち端末処理部１１０は、まずサーバ２００から最新のソースコード一式を取得して登録ソースコード１２３として保存し、表示部１３０を介してこれをユーザに提供する。ユーザが入力部１４０を用いてソースコードに修正を加えると、端末処理部１１０は修正が加えられたソースコードを修正ソースコード１２４として端末記憶部１２０に保存する。
【００１５】
表示部１３０はたとえば液晶ディスプレイであり、端末処理部１１０の動作指令に基づき視覚情報をユーザに提供する。入力部１４０はたとえばキーボードやマウスであり、ユーザの入力を受け付けて端末処理部１１０に伝達する。端末通信部１５０は有線または無線による通信によりサーバ２００と通信する。
【００１６】
サーバ２００は、サーバ処理部２１０とサーバ記憶部２２０とを備える。サーバ処理部２１０はたとえばＣＰＵである。サーバ記憶部２２０は、ハードディスクドライブやフラッシュメモリなどの不揮発性のデータ記憶装置である。サーバ記憶部２２０には、構成管理データベース（以下、構成管理データベースＤＢ）２２１が格納される。構成管理ＤＢ２２１は、ソースコードの修正履歴である複数のリビジョンのソースコード、および履歴情報から構成される。構成管理ＤＢ２２１の詳細は後述する。
【００１７】
（構成管理ＤＢ）
図２はサーバ２００に備えられる構成管理ＤＢ２２１の構成を示す図である。構成管理ＤＢ２２１には複数のリビジョンのソースコード群２２３、および履歴情報２２５が格納される。各リビジョンのソースコード群は１以上のソースコードを含む。リビジョン番号は大きいほど作成日が新しいことを示しており、リビジョン８４が構成管理ＤＢ２２１に登録されている最新のソースコードである。
【００１８】
図３は、履歴情報２２５の一例を示す図である。履歴情報２２５は複数のレコードから構成され、各レコードはバージョン２２６、リビジョン２２７、日時２２８、修正ファイル２２９、担当者２３０、およびメッセージ２３１のフィールドから構成される。バージョン２２６のフィールドにはバージョン番号が格納される。ただしバージョン番号は所定の条件により付与され、バージョン番号が付与されないレコードもある。リビジョン２２７のフィールドには、ソースコードが構成管理ＤＢ２２１に登録されるたびに更新される番号が格納される。日時２２８のフィールドにはそのリビジョンが構成管理ＤＢ２２１に登録された日時が格納される。修正ファイル２２９のフィールドには、そのリビジョンにおいて直前のリビジョンから修正されたファイルの名称が格納される。担当者２３０のフィールドには、そのリビジョンを登録した担当者の氏名が格納される。メッセージ２３１のフィールドには、そのリビジョンに関するメッセージが格納される。ただしメッセージ２３１のフィールドは何も格納されなくてもよい。
【００１９】
履歴情報２２５は、サーバ処理部２１０により作成される。サーバ処理部２１０は、端末装置１００からソースコードを受信すると、新しいリビジョン番号を付与して構成管理ＤＢ２２１に保存するとともに履歴情報２２５の新しいレコードを生成する。このレコードには、付与した新しいリビジョン番号、ソースコードを受信した時刻、受信したソースコードの名称、ソースコードを送信した端末装置１００にあらかじめ紐づけられた担当者の氏名、受信したメッセージが格納される。ただしメッセージを受信しない場合はメッセージ２３１のフィールドには何も入力されない。
【００２０】
（要素の例）
図４は、要素である関数および変数の相互関係の一例を示す図である。図４では関数を「Ｆｕｎｃ」とアルファベット１文字の組み合わせで表し、変数は「Ｖａｌｕｅ」とアルファベット１文字の組み合わせで表している。また図４における一方向矢印は呼び出し／被呼び出し関係にあることを示しており、双方向矢印は同時修正関係にあることを示している。すなわち図４には、ＦｕｎｃＧはＦｕｎｃＡを呼び出し、ＦｕｎｃＡはＶａｌｕｅＡおよびＦｕｎｃＤを呼び出し、ＦｕｎｃＤはＦｕｎｃＨを呼び出すことが示されている。また図４には、ＦｕｎｃＢはＦｕｎｃＣを呼び出し、ＦｕｎｃＣはＦｕｎｃＥおよびＦｕｎｃＩを呼び出すことが示されている。さらに図４には、ＦｕｎｃＡとＦｕｎｃＣは同時修正関係にあり、ＦｕｎｃＤとＦｕｎｃＦは同時修正関係にあることが示されている。
【００２１】
さらに本実施の形態では、要素間の関係の遠近を「段」を用いて表現する。要素間の１つの呼び出し、被呼び出し、同時修正関係をそれぞれ１段とし、関係が遠くなるごとに段数を加算する。たとえば図４に示す例において、ＦｕｎｃＡを基準としたＦｕｎｃＦは、ＦｕｎｃＡがＦｕｎｃＤを呼び出し、ＦｕｎｃＤの同時修正関係にあるのがＦｕｎｃＦなので、要素間の関係を順に辿ると「呼び出し、同時修正」なので、「呼び出し１段、同時修正１段」となる。同じく図４に示す例において、ＦｕｎｃＢを基準としたＦｕｎｃＨは、要素間の関係を順に辿ると「呼び出し、同時修正、呼び出し、呼び出し」なので、「呼び出し３段、同時修正１段」となる。
【００２２】
図５は、ソースコードに記載されるＦｕｎｃＡおよびＦｕｎｃＨの定義の一例を示す図である。図３に示すようにＦｕｎｃＡの内部でＦｕｎｃＤが呼び出され、ＶａｌｕｅＡが引数として渡されている。このような関係にある場合に、ＦｕｎｃＡはＶａｌｕｅＡおよびＦｕｎｃＤを呼び出す関係にあり、ＶａｌｕｅＡおよびＦｕｎｃＤはＦｕｎｃＡに呼び出される、すなわち被呼び出しの関係にある。またＦｕｎｃＨは２つの引数をとり、この２つの引数を用いて演算を行い、演算結果を返す関数である。ＦｕｎｃＨは関数および変数を参照しないため、ＦｕｎｃＨはいずれの要素も呼び出さない。そのため図４ではＦｕｎｃＨを起点とする一方向矢印が延びていない。
【００２３】
（呼び出し関係ＤＢ）
図６は、呼び出し関係ＤＢ１２１の一例を示す図である。なお図６に示す例は図４に示した相互関係に対応している。呼び出し関係ＤＢ１２１は、要素テーブル４１０と呼出関係テーブル４２０とから構成される。要素テーブル４１０は複数のレコードから構成され、各レコードは要素ＩＤ４１１、ファイル４１２、関数・変数４１３、のフィールドを備える。要素ＩＤ４１１のフィールドには、要素を特定するＩＤが格納される。このＩＤはたとえば数字であり、他の要素と異なるものであれば桁数や数値の大小は問わない。ファイル４１２のフィールドには、要素が定義されているファイル名が格納される。関数/変数４１３のフィールドには、要素の名称が格納される。
【００２４】
呼出関係テーブル４２０は複数のレコードから構成され、各レコードは、修正元要素ＩＤ４２１、修正影響要素ＩＤ４２２、関係性４２３のフィールドを備える。修正元要素ＩＤ４２１のフィールドには、修正される要素の要素ＩＤが格納される。修正影響要素ＩＤ４２２のフィールドには、呼び出し関係や被呼び出し関係にあることから修正の影響を受ける要素の要素ＩＤが格納される。関係性４２３のフィールドには、呼び出しと被呼び出しのいずれの関係であるかが格納される。
【００２５】
（同時修正関係ＤＢ）
図７は、同時修正関係ＤＢ１２２の一例を示す図である。なお図７に示す例は図４に示した相互関係に対応している。同時修正関係ＤＢ１２２は、サーバ２００の構成管理ＤＢ２２１に登録されたリビジョンごとに修正された要素を示すデータベースであり、たとえば図７に示すように関数および変数である要素を行に配し、リビジョン番号を列に配した表形式で表される。図７において丸が記載されている欄の要素が修正されたことを示している。たとえば図７にはリビジョン０１ではＦｕｎｃＡとＦｕｎｃＣが修正されたことが示されており、換言するとリビジョン００とリビジョン０１との差分がＦｕｎｃＡおよびＦｕｎｃＣにあることを示している。
【００２６】
この同時修正関係ＤＢ１２２を用いることで、ソフトウェア上で処理が分かれており呼び出し関係に無いが、機能や動作に関係があって修正に影響がある要素を検出することができる。たとえば音声の早送りの機能の修正において、音声処理と表示部１３０に表示されるユーザインタフェースとが密接に関連するが、両者がソースコード上は呼び出し関係にない場合が考えられる。このような場合であっても、同時修正関係ＤＢ１２２を参照することで音声処理に関する要素を修正した際に、ユーザインタフェースに関する要素も影響を受けることがわかる。
【００２７】
（画面表示）
図８は、表示部１３０に表示される修正影響チェック画面９０１の一例を示す図である。修正影響チェック画面９０１は、修正前入力欄９０２と、修正後入力欄９０３と、解析開始ボタン９０４と、リスト出力欄９０５とを備える。ユーザはソースコードを修正した後に修正影響チェック画面９０１を呼び出し、修正した箇所が影響する範囲をチェックする。詳述すると、ユーザはまず入力部１４０への入力により修正影響チェック画面９０１を呼び出し、修正前のソースコードのディレクトリを修正前入力欄９０２に入力し、修正後のソースコードのディレクトリを修正後入力欄９０３に入力する。そしてユーザが解析開始ボタン９０４を押下すると、修正した要素が影響する要素のリストである影響出力リスト９００がリスト出力欄９０５に表示される。換言すると、影響出力リスト９００には修正した要素と、呼び出し関係、被呼び出し関係、および同時修正関係にある全ての要素が表示される。
【００２８】
図９は、リスト出力欄９０５に表示される影響出力リスト９００の一例を示す図である。影響出力リスト９００は修正された要素である修正要素を示す修正要素の欄１１０１と、修正が影響する要素である影響要素および修正された要素との関係を示す修正影響の欄１１０２と、修正が影響する要素に対して直前に影響する要素を示す直前関係の欄１１０３とを備える。この３つの欄のうち、ユーザは特に修正影響の欄１１０２に注目して修正漏れがないかを確認する。修正影響の欄１１０２において、修正が影響する要素と修正された要素との関係は、修正影響タイプ１１０４として格納される。修正影響タイプ１１０４には、修正された要素から影響を与える要素までのそれぞれの要素間の関係が順番に表される。たとえば図４に示す例では、ＦｕｎｃＡを修正した場合にＦｕｎｃＤを介してＦｕｎｃＦに影響する。詳述すると、ＦｕｎｃＡが呼び出すＦｕｎｃＤと同時修正関係にあるのがＦｕｎｃＦなので、ＦｕｎｃＦの修正影響タイプ１１０４は、その関係を順番に記載した「呼び出し、同時修正」となる。また図４の例においてＦｕｎｃＢが修正された場合は、その影響を受けるＦｕｎｃＨの修正影響タイプ１１０４は「呼び出し、同時修正関係、呼び出し、呼び出し」となる。
【００２９】
直前関係の欄１１０３に記載される要素は、修正した要素が１以上の要素を介して他の要素に影響する場合に有用な情報となる。たとえば前述の例のように、ＦｕｎｃＡを修正した場合にＦｕｎｃＤを介して影響を受けるＦｕｎｃＦは、ＦｕｎｃＦに直接に影響する要素であるＦｕｎｃＤが直前関係の欄１１０３に記載される。なお図４の例においてＦｕｎｃＡが直接影響するＦｕｎｃＧ、ＶａｌｕｅＡ、ＦｕｎｃＤ、およびＦｕｎｃＣについては、直前関係の欄１１０３に修正した要素そのものであるＦｕｎｃＡが格納される。
【００３０】
以上説明した影響出力リスト９００は、修正影響タイプ１１０４を有するので、修正した要素と影響する要素との関係をユーザに提示することができる。特に、呼び出し関係先の同時修正関係にある要素や同時修正関係先の呼び出し関係にある要素などの関係は見落としやすいため、これらを一度に提示できる影響出力リスト９００は有用である。
【００３１】
―フローチャート―
以上説明した機能を実現する端末装置１００の動作をフローチャートを用いて説明する。
【００３２】
（サーバへの登録処理）
図１０は、端末装置１００によるサーバ２００の構成管理ＤＢ２２１へのソースコードの登録処理を示すフローチャートである。端末装置１００の不図示のＣＰＵは、ユーザによる入力部１４０への入力操作に基づき図１０に動作が示されるプログラムを実行する。ただしＣＰＵはあらかじめ定められた条件、たとえば一定時間の経過などによりそのプログラムを実行してもよい。以下に説明する各ステップの実行主体は端末装置１００の不図示のＣＰＵである。
【００３３】
ステップＳ３０１では、ＣＰＵは修正差分検出部１１５を用いて登録ソースコード１２３と修正ソースコード１２４とを比較する。続くステップＳ３０２では、ＣＰＵは登録ソースコード１２３の要素と修正ソースコード１２４の要素とに差分があるか否かを判断する。いずれかの要素に差分がある、すなわち何らかの修正がされたと判断する場合はステップＳ３０３に進み、差分が存在しないと判断する場合は図１０に示すフローチャートを終了する。ステップＳ３０３では、端末通信部１５０を介して修正のあったソースコードをサーバ２００に送信し図１０に示すフローチャートを終了する。その際にユーザは、任意でメッセージを付加することができる。ここで付加したメッセージは、履歴情報２２５のメッセージ２３１として記録される。
【００３４】
（呼び出し関係ＤＢの作成処理）
図１１は、呼び出し関係検出部１１１による呼び出し関係ＤＢ１２１の作成処理を示すフローチャートである。呼び出し関係検出部１１１は、前述の修正影響チェック画面９０１が呼び出された際、修正ソースコード１２４が更新された際、または一定時間の経過により以下のフローチャートにより動作があらわされるプログラムを実行する。以下に説明する各ステップの実行主体は端末装置１００の不図示のＣＰＵである。
【００３５】
ステップＳ５０１では、ＣＰＵは処理対象とするソースコードを決定する。たとえばソースコード一式がＡ〜Ｄの４ファイルから構成される場合に、登録ソースコード１２３にはサーバ２００から取得した４ファイルがすべて格納され、修正ソースコード１２４にはそのうちユーザが修正したファイル、たとえばＡのみが格納される。この場合にＣＰＵは、修正ソースコード１２４に格納されるＡと登録ソースコード１２３に格納されるＢ〜Ｄを処理対象に決定する。
【００３６】
続くステップＳ５０２では、処理対象のソースコードからすべての要素、すなわちすべての関数および変数を抽出して列挙する。続くステップＳ５０３ではステップＳ５０２において抽出したそれぞれの要素を処理対象として以下のステップＳ５０４〜Ｓ５０５の処理を実行する。ステップＳ５０４ではＣＰＵは、処理対象の要素に関する呼び出し関係、および被呼び出し関係を計測する。続くステップＳ５０５では、ステップＳ５０４において得られた計測結果を呼び出し関係ＤＢ１２１に記録する。続くステップＳ５０６ではステップＳ５０２において列挙したすべての要素についてＳ５０４〜Ｓ５０５の処理が完了したか否かを判断する。ＣＰＵは、完了していないと判断する場合は次の要素を選択してステップＳ５０４の処理を実行し、完了したと判断する場合は図１１に示すフローチャートを終了する。
【００３７】
（同時修正関係ＤＢの作成処理）
図１２は、同時修正関係検出部１１２による同時修正関係ＤＢ１２２の作成処理を示すフローチャートである。同時修正関係検出部１１２は、前述の修正影響チェック画面９０１が呼び出された際、修正ソースコード１２４が更新された際、または一定時間の経過により以下のフローチャートにより動作があらわされるプログラムを実行する。以下に説明する各ステップの実行主体は端末装置１００の不図示のＣＰＵである。
【００３８】
ステップＳ７０１では、ＣＰＵはサーバ２００の構成管理ＤＢ２２１からリビジョン間の比較に必要な全てのソースコードを取得する。換言すると、ステップＳ７０１ではソースコードの修正履歴が取得される。サーバ２００の履歴情報２２５に含まれる修正ファイル２２９のフィールドには、直前のリビジョンから修正があったファイルの名称が記載されているので、ＣＰＵはこれを参照することにより取得すべきファイルを特定する。
【００３９】
続くステップＳ７０２では、最新リビジョンと１つ前のリビジョンを処理対象に選択する。たとえば図３に示す例ではリビジョン８４が最新なので、ここではリビジョン８４とリビジョン８３を処理対象に選択する。続くステップＳ７０３では、ＣＰＵは修正差分検出部１１５を用いて処理対象の２つのリビジョンにおいて修正された要素を抽出する。続くステップＳ７０４では、ステップＳ７０３において抽出した要素を同時修正関係ＤＢ１２２に登録する。続くステップＳ７０５では、ＣＰＵは全てのリビジョンを処理対象としたか否かを判断する。全てのリビジョンを処理対象としたと判断する場合は図１２に示すフローチャートを終了し、処理対象としていないリビジョンが存在すると判断する場合はステップＳ７０６に進む。ステップＳ７０６では、ＣＰＵは選択された２つのリビジョンのうち古い方のリビジョンと、さらに１つ前のリビジョンを処理対象に選択してステップＳ７０３に戻る。たとえばステップＳ７０６を実行する直前に選択されていたリビジョンがリビジョン８４とリビジョン８３であった場合に、ステップＳ７０６を実行することによりリビジョン８３とリビジョン８２が次の処理対象に選択される。
以上の処理により、全てのリビジョン間で修正された要素が抽出され、同時修正関係ＤＢ１２２に登録される。
【００４０】
（影響出力リストの表示処理）
図１３は、図８に示した解析開始ボタン９０４が押された際に実行される処理を示すフローチャートである。以下に説明する各ステップの実行主体は端末装置１００の不図示のＣＰＵである。
【００４１】
ＣＰＵはまずステップＳ８０１およびステップＳ８０２を実行する。ステップＳ８０１においてＣＰＵは、修正ソースコード１２４および登録ソースコード１２３を読み込む。続くステップＳ８０３において、ＣＰＵは修正差分検出部１１５を用いて修正された要素である修正要素を抽出するとともに、修正ソースコード１２４および登録ソースコード１２３に記載される要素を全て抽出する。たとえば登録ソースコード１２３がＡ１，Ｂ１，Ｃ１の３つのソースコードから構成され、そのうちＡ１のみが修正されてＡ２となった場合は修正ソースコード１２４はＡ２のみから構成される。この場合にステップＳ８０３において、修正要素の抽出はＡ１とＡ２の比較により行われ、全ての要素の抽出はＢ１，Ｃ１，Ａ２を用いて行われる。
【００４２】
なお本ステップにおいて抽出した修正要素および全要素の一覧は後に使用するので、ＣＰＵはこれらを不図示のＲＡＭに保存する。続くステップＳ８０４では、ＣＰＵはステップＳ８０３において抽出した修正要素から未解析の要素を解析対象要素として選択する。なおステップＳ８０４の初回の実行ではいずれの要素も解析されていないので、任意の要素を選択する。なおここで選択された要素がステップＳ８０６およびステップＳ８０７において解析対象となり、以下では解析対象要素と呼ぶ。ステップＳ８０１と同時に実行されるステップＳ８０２では、ＣＰＵは同時修正関係ＤＢ１２２を読み込む。
【００４３】
ステップＳ８０４の次に実行されるステップＳ８０６では、ＣＰＵは修正ソースコード１２４および登録ソースコード１２３を解析し、解析対象要素と呼び出し関係、および被呼び出し関係にある要素をリストアップする。ステップＳ８０４およびステップＳ８０２の実行が完了すると実行されるステップＳ８０７では、解析対象要素と同時修正関係にある要素をリストアップする。本ステップＳ８０７の詳細な動作は次の図１４を用いて説明する。ステップＳ８０６およびステップＳ８０７の実行が完了すると実行されるステップＳ８０８では、ステップＳ８０６およびステップＳ８０７において少なくとも１つの要素がリストアップされたか否かを判断する。ＣＰＵは、少なくとも１つの要素がリストアップされたと判断するとステップＳ８０９に進み、要素が１つもリストアップされていないと判断するとステップＳ８１０に進む。
【００４４】
ステップＳ８０９ではＣＰＵは、リストアップされた要素に未解析の要素が含まれるか否かを判断する。ＣＰＵは未解析の要素が含まれると判断する場合はステップＳ８１１に進み、未解析の要素が含まれないと判断する場合はステップＳ８１０に進む。ステップＳ８１０では、ＣＰＵはステップＳ８０３において抽出された修正要素を解析したか否かを判断する。全ての修正要素を解析したと判断する場合はステップＳ８１２に進み、解析していない修正要素が残っていると判断する場合はステップＳ８０４に戻る。ステップＳ８１１では、ＣＰＵはステップＳ８０６およびステップＳ８０７においてリストアップされた要素のうち、未解析のいずれかの要素を選択してステップＳ８０４の直後に戻る。ステップＳ８１０において肯定判定されると実行されるステップＳ８１２では、ＣＰＵは入出力処理部１１４を用いて、ステップＳ８０６およびステップＳ８０７においてリストアップされた全ての要素を、解析対象要素、および呼び出しや同時修正の関係とともに影響出力リスト９００として表示部１３０に出力する。たとえば図９に示した例は、ＦｕｎｃＡが解析対象要素とされた際にリストアップされた要素が示されており、修正影響タイプ１１０４のフィールドにその関数との関係が示されている。以上の処理により、修正影響チェック画面９０１において影響出力リスト９００がリスト出力欄９０５に表示される。
【００４５】
（詳細フローチャート）
図１４は図１３のステップＳ８０７の詳細を示すフローチャートである。なお図１３において説明したように、図１４に示すフローチャートの処理が開始される時点で解析対象要素が選択されている。
【００４６】
ステップＳ１２０１では、ＣＰＵは図１３のステップＳ８０３において抽出された全要素からいずれかの要素を比較対象として選択する。続くステップＳ１２０２では、ＣＰＵは同時修正関係ＤＢ１２２を参照し、解析対象要素と比較対象の要素の同時修正回数をカウントする。具体的には、同時修正関係ＤＢ１２２には図７において丸で示したようにリビジョンごとに修正された要素が示されているので、全リビジョンを対象として、解析対象要素および比較対象の要素の両方に丸が付されるリビジョンの数をカウントする。続くステップＳ１２０３では、ステップＳ１２０２におけるカウント回数が３回以上であるか否かを判断する。３回以上と判断する場合はステップＳ１２０４に進んでリストアップした後にステップＳ１２０５に進み、３回未満と判断する場合はそのままステップＳ１２０５に進む。
【００４７】
ステップＳ１２０５ではＣＰＵはステップＳ８０３において抽出された全要素が比較対象として選択されたか否かを判断し、全要素を選択したと判断する場合は図１４のフローチャートを終了し、選択していない要素があると判断する場合はステップＳ１２０６に進む。ステップＳ１２０６では、図１３のステップＳ８０３において抽出された全要素から、これまでにステップＳ１２０１および本ステップにおいて選択されていない要素を選択し、ステップＳ１２０２に戻る。以上の処理により解析対象要素と同時修正関係にある要素がリストアップされる。図４に例示した要素間の関係において双方向矢印で示した同時修正関係は、図１４の処理によってリストアップされたものを表している。なおステップＳ１２０３では閾値を「３」としたが他の値でもよい。
【００４８】
（動作例）
図４に例示する要素間の関係を有し、図１３のステップＳ８０３において差分として検出された要素がＦｕｎｃＡである場合に、図１３のステップＳ８０４以下において影響出力リスト９００がどのように出力されるか説明する。なお上述したフローチャートではステップＳ８１２において影響出力リスト９００が出力されるとしたが、本動作例では動作との対応を明確にするために影響出力リスト９００は適宜出力されることとする。
【００４９】
まずステップＳ８０４においてＦｕｎｃＡが選択されてステップＳ８０６およびステップＳ８０７が実行される。ステップＳ８０６では、呼び出し関係や被呼び出し関係にある「ＶａｌｕｅＡ」や「ＦｕｎｃＧ」、「ＦｕｎｃＤ」がリストアップされ、これに基づき図９に示す影響出力リスト９００の１行目から３行目まで作成される。すなわちこれらの修正影響タイプ１１０４がそれぞれ「呼び出し」、「被呼び出し」、「呼び出し」として出力される。これが呼び出し関係の１段目の影響範囲である。またステップＳ８０７ではＦｕｎｃＡと同時修正関係にある「ＦｕｎｃＣ」がリストアップされ、図９の４行目に修正影響タイプ１１０４が「同時修正」として出力される。これが、同時修正関係の１段目の影響範囲である。
【００５０】
ステップＳ８０６およびステップＳ８０７においてそれぞれリストアップがされているので、ステップＳ８０８は肯定判定され、リストアップされたいずれの要素も解析されていないのでステップＳ８０９も肯定判定される。そしてステップＳ８１１においてリストアップしたいずれかの要素、たとえばＦｕｎｃＤが解析対象要素に選択される。そして、呼び出し関係にあるＦｕｎｃＨがリストアップされ（Ｓ８０６）、および同時修正関係にあるＦｕｎｃＦがリストアップされる（Ｓ８０７）。このＦｕｎｃＨは、修正要素であるＦｕｎｃＡから直前関係の欄１１０３に記載されるＦｕｎｃＤを経由して、２段目の呼び出し関係となる。そのため図９に示す影響出力リスト９００において、修正影響タイプ１１０４には「呼び出し、呼び出し」と格納される。このように表示することで、ユーザは修正要素との関係を正確に把握することができる。
【００５１】
同様に図９に示す影響出力リスト９００の６行目のＦｕｎｃＦは、修正要素であるＦｕｎｃＡから直前関係の欄１１０３に記載されるＦｕｎｃＤを経由して呼び出し関係１段、同時修正関係１段の関係となる。そのため図９に示す影響出力リスト９００において、修正影響タイプ１１０４には「呼び出し、同時修正」と表示される。ステップＳ８０８〜Ｓ８０９では先ほどと同様に肯定判定されるので、未解析の要素がなくなるまで解析処理を繰り返す。
【００５２】
上述した第１の実施の形態によれば、次の作用効果が得られる。
（１）ソースコードにそれぞれ記載される関数または変数である複数の要素について、ソースコードの修正履歴、すなわちリビジョンごとの差分において同時に修正された要素の組み合わせが記録される同時修正関係ＤＢ１２２が格納される端末記憶部１２０と、複数の要素のうち修正の対象となる修正要素を特定する修正要素特定部（図１３のステップＳ８０３）と、複数の要素のうち修正要素を修正することにより影響を受ける被影響要素を同時修正関係ＤＢ１２２を用いて判定し出力する影響箇所解析判定部１１３とを備える。
そのため過去に同時に修正されていたことに基づいて、その一方が修正された場合に他方を出力するので、ソースコード上で呼び出し関係になくても、同時に修正すべき可能性が高い要素を検出することができる。たとえば表示に関する処理と機能に関する処理がソースコード上で呼び出し関係になくても、過去の同時修正関係を示す同時修正関係ＤＢ１２２を参照することで、機能や動作的に関係のある要素を検出して出力し、ユーザに注意を促すことができる。
【００５３】
（２）端末記憶部１２０には、ソースコードにおける要素の呼び出し関係が記録される呼び出し関係ＤＢ１２１が格納される。影響箇所解析判定部１１３は、同時修正関係ＤＢ１２２および呼び出し関係ＤＢ１２１を用いて被影響要素を判定する。そのため影響箇所解析判定部１１３は、同時修正関係にある要素だけでなく呼び出し関係にある要素、および同時修正関係と呼び出し関係の複合的な関係にある要素も影響出力リスト９００に出力することができる。すなわち、呼び出し関係と同時修正関係の片方だけずつに注目していては見落としてしまうような、修正の影響を受ける要素も出力することができる。
【００５４】
（３）影響箇所解析判定部１１３は、同時修正関係ＤＢ１２２を用いて、同時に修正された回数が予め定められた回数、たとえば３回以上である要素の組み合わせに基づき被影響要素を判定する。そのため影響箇所解析判定部１１３は、同時修正関係にあるか否かを簡易に判定することができる。
【００５５】
（４）影響箇所解析判定部１１３は、被影響要素について、修正要素との関連性を修正影響タイプ１１０４として出力する。そのため、修正要素と影響を受ける要素の関係の理解を促すことができる。
【００５６】
（５）端末装置１００は、修正要素を特定する情報が入力される入力部１４０を備える。修正要素特定部（図１３のステップＳ８０３）は修正前後のソースコードの差分に基づき修正要素を特定する。そのためユーザが調査対象の要素を逐一入力する必要がなく、調査対象の要素を漏れなく検出することができる。
【００５７】
（６）端末装置１００は、ソースコードの修正履歴に基づき同時修正関係ＤＢ１２２を作成し、端末記憶部１２０に格納する同時修正関係検出部１１２を備える。
【００５８】
（７）影響出力システム１は、端末装置１００およびサーバ２００を備える。端末装置１００は、サーバ２００からソースコードの修正履歴を受信する端末通信部１５０と、影響箇所解析判定部１１３が出力する影響出力リスト９００を表示部１３０に表示させる入出力処理部１１４を備える。サーバ２００は、ソースコードの修正履歴を格納するサーバ記憶部２２０と、端末装置１００にソースコードの修正履歴を送信するサーバ通信部２５０とを備える。
【００５９】
（８）端末装置１００の不図示のＲＯＭには以下のプログラムが格納される。すなわちそのプログラムは、ソースコードに記載される関数または変数である要素について、プログラムのソースコードの修正履歴に基づき同時に修正された要素の対応が記録される同時修正関係ＤＢ１２２が格納される端末記憶部１２０を備える端末装置１００に、修正することによる影響範囲の調査対象となる要素である修正要素を特定させること（図１３のステップＳ８０３）と、修正要素を修正することにより影響を受ける要素を同時修正関係情報を用いて判定させ（図１３のステップＳ８０７）、その判定の結果を出力させること（図１３のステップＳ８１２）を実現させる。
【００６０】
プログラムの動作を変形例１〜変形例３のように変更してもよい。
（変形例１）
図１５は、変形例１における図１３のステップＳ８０７の詳細を示す図である。換言すると、変形例１においてＣＰＵは図１４により動作が表されるプログラムに代えて、図１５により動作が表されるプログラムを実行する。図１５と図１４との違いは、図１４のステップＳ１２０３が図１５ではステップＳ１２０３Ａに置換されている。
【００６１】
ステップＳ１２０３Ａでは、ＣＰＵは解析対象要素の修正回数とステップＳ１２０２においてカウントした同時修正回数との比率が７５％以上であるか否かを判断する。７５％以上であると判断する場合はステップＳ１２０４に進み、７５％未満であると判断する場合はステップＳ１２０５に進む。
【００６２】
この変形例１によれば、次の作用効果が得られる。
（９）影響箇所解析判定部１１３は、同時修正関係ＤＢ１２２を用いて、同時に修正された回数の総修正回数に対する比率が予め定められた比率以上である要素の組み合わせに基づき影響を受ける要素を判定する。そのため修正の総回数が増えても閾値をその都度変更する必要がない。
【００６３】
（変形例２）
図１６は、変形例２における図１３のステップＳ８０７の詳細を示す図である。換言すると、変形例２においてＣＰＵは図１４により動作が表されるプログラムに代えて、図１６により動作が表されるプログラムを実行する。図１６と図１４との違いは、ステップＳ１２０３において否定判定された場合の処理である。
【００６４】
ステップＳ１２０３において否定判定されると実行されるステップＳ１２１１では、ＣＰＵはステップＳ１２０２におけるカウント回数が２であるか否かを判断する。カウント回数が２であると判断するとステップＳ１２１２に進み、カウント回数が２以外、すなわち１またはゼロと判断するとステップＳ１２０５に進む。ステップＳ１２１２では、ＣＰＵは同時修正が直近の２リビジョン以内であったか否かを判断し、２リビジョン以内であると判断する場合はステップＳ１２０４に進み、２リビジョン以内ではないと判断する場合はステップＳ１２０５に進む。
【００６５】
この変形例２によれば、次の作用効果が得られる。
（１０）影響箇所解析判定部１１３は、同時修正関係ＤＢ１２２を用いて、同時に修正された回数と予め定められた回数の閾値との関係、および修正された時期と予め定められた時期の閾値との関係の組み合わせに基づき影響を受ける要素を判定する。直近に修正があった箇所については、潜在的な不具合を含む可能性が高いことを考慮し、修正された時期を考慮した影響出力リスト９００を作成することができる。
【００６６】
（変形例３）
図１７は、変形例３において第１の実施の形態における図１３のフローチャートの動作を一部変更するものである。ステップＳ８０９まで、およびステップＳ８１０以降の処理は第１の実施の形態と同様なので、図１７への記載およびそれらの動作の説明を省略する。ステップＳ８０９において肯定判定されると実行されるステップＳ８５１では、解析対象要素と比較対象要素の呼び出し関係の段数と同時修正関係の段数を取得する。続くステップＳ８５２では、呼び出し関係が３段以内か否かを判断する。肯定判断する場合はステップＳ８５３に進み、否定判断をする場合はステップＳ８１０に進む。ステップＳ８５３では、同時修正関係が２段以内か否かを判断する。肯定判断する場合はステップＳ８１１に進み、否定判断をする場合はステップＳ８１０に進む。すなわち、呼び出し関係または同時修正関係が所定の段数以上の場合は、それ以上の解析を行わない。
【００６７】
この変形例３によれば、次の作用効果が得られる。
（１１）影響箇所解析判定部１１３は、修正要素に対する呼び出し段数および同時修正段数に基づき被影響要素を判定する。換言すると影響箇所解析判定部１１３は、呼び出し段数および同時修正段数が所定の段数以上になる場合は被影響要素の探索を中断する。そのため、解析対象が際限なく広がることを防止して処理時間を短縮することができる。また段数が多いほど修正対象要素との関連が薄いことが想定されるため、修正対象要素との関連が希薄な要素が影響出力リスト９００に記載されることを防止できる。
【００６８】
（変形例４）
上述した実施の形態では、ユーザがソースコードを修正した後にその修正の影響を出力した。しかしユーザによるソースコードの修正の有無にかかわらず、ある要素を修正した場合に影響を受ける要素を出力してもよい。この場合は、修正差分検出部１１５が修正ソースコード１２４と登録ソースコード１２３の差分を検出することにより解析対象の要素を特定する代わりに、ユーザから指定される要素を解析対象の要素としてもよい。すなわち第１の実施の形態では修正された要素を「修正要素」と呼んだが、本変形例では変更されることによる影響を調査する対象を「修正要素」と呼ぶ。
【００６９】
図１８は、修正前影響チェック画面９５１の一例を示す図である。修正前影響チェック画面９５１は、修正前入力欄９５２と、調査対象要素入力欄９５３と、解析開始ボタン９５４と、リスト出力欄９５５とを備える。ユーザは修正前影響チェック画面９５１を呼び出し、修正前のソースコードのディレクトリを修正前入力欄９５２に入力し、調査対象とする要素、たとえばこれから修正する予定の要素を調査対象要素入力欄９５３に入力する。この入力により修正要素が決定される。そしてユーザが解析開始ボタン９５４を押下すると、修正要素を修正した場合に影響する要素のリストがリスト出力欄９０５に表示される。この変形例４によれば、ユーザがソースコードを修正する前にその影響を調査することができる。
【００７０】
（変形例５）
同時修正関係検出部１１２は、同時修正関係ＤＢ１２２を利用しやすいように加工して保存してもよい。図１９は同時修正関係ＤＢ１２２を加工して得られた同時修正関係ＤＢ１２２Ａの一例を示す図である。同時修正関係ＤＢ１２２Ａは複数のレコードから構成され、各レコードは関数・変数６０３、修正回数６０４、同時修正回数６０５のフィールドを備える。関数・変数６０３のフィールドには、ソースコードに含まれる要素が格納される。関数・変数６０３のフィールドは図７に示す同時修正関係ＤＢ１２２の左端の列を転記することができる。修正回数６０４のフィールドには、関数・変数６０３のフィールドに格納される要素がこれまでに修正された回数が格納される。修正回数６０４のフィールドの値は、同時修正関係ＤＢ１２２において丸が記載された数をカウントすることにより得られる。同時修正回数６０５のフィールドには、それぞれの要素について、関数・変数６０３のフィールドに格納される要素と同時に修正された回数が格納される。同時修正回数６０５のフィールドの値は、図１４のステップＳ１２０２と同様に同時修正関係ＤＢ１２２を参照することで得られる。この変形例によれば、同時修正関係ＤＢ１２２Ａを用いることで同時修正関係にある要素のリストアップを容易に行うことができる。
【００７１】
（変形例６）
端末装置１００は表示部１３０および入力部１４０を備えなくてもよい。この場合は、端末装置１００に接続された表示装置に入出力処理部１１４が映像信号を出力し、端末装置１００に接続された入力装置から入出力処理部１１４に入力信号が入力される。
【００７２】
（変形例７）
同時修正関係ＤＢ１２２に保存される情報の形式は図８に示す形式に限定されない。すなわち図８に示されている情報が含まれていれば、どのような形態で格納されてもよい。
【００７３】
（変形例８）
同時修正関係検出部１１２は、構成管理ＤＢ２２１に格納されている全てのリビジョンのソースコードを処理対象としたが、特定の条件に該当するソースコードのみを処理対象としてもよい。たとえば、直近の１年間に生成されたリビジョンのみを処理対象としてもよいし、特定のバージョン以降のリビジョンのみを処理対象としてもよい。さらに、リビジョン間の比較ではなくバージョン番号が付されているリビジョンのみを処理対象としてもよい。また最新のソースコードを基準として影響を調査するだけではなく、過去の特定のリビジョンを基準として影響を調査して出力してもよい。たとえばリビジョン５０において修正された要素の影響を調査して出力するためには、呼び出し関係検出部１１１はリビジョン５０のソースコードを用いて呼び出し関係ＤＢ１２１を構築し、同時修正関係検出部１１２はリビジョン４９までのソースコードを用いて同時修正関係ＤＢ１２２を構築し、修正差分検出部１１５はリビジョン５０とリビジョン４９のソースコードの差分から修正要素を検出する。
【００７４】
（変形例９）
影響出力リスト９００の修正影響タイプ１１０４には、より具体的な関連性を格納してもよい。すなわち、修正要素と影響要素の間に介在する全ての要素も関係性とともに記載してもよい。たとえば、ＦｕｎｃＡを修正することによりＦｕｎｃＢは影響を受けるが、ＦｕｎｃＡと同時修正関係にあるのがＦｕｎｃＣであり、ＦｕｎｃＣと被呼び出し関係にあるのがＦｕｎｃＢなので、修正影響タイプ１１０４を「同時修正―ＦｕｎｃＣ−被呼び出し」と記載してもよい。
【００７５】
（変形例１０）
端末装置１００は呼び出し関係検出部１１１および呼び出し関係ＤＢ１２１を備えず、呼び出し関係を評価しなくてもよい。この場合は、影響出力リスト９００には同時修正関係の影響のみが記載される。
【００７６】
―第２の実施の形態―
図２０を参照して、影響出力システムの第２の実施の形態を説明する。以下の説明では、第１の実施の形態と同じ構成要素には同じ符号を付して相違点を主に説明する。特に説明しない点については、第１の実施の形態と同じである。本実施の形態では、主に、サーバに同時修正関係検出部が備えられる点で、第１の実施の形態と異なる。
【００７７】
（構成）
図２０は、第２の実施の形態における影響出力システム１Ａのシステム構成を示す図である。影響出力システム１Ａは、ユーザが操作する端末装置１００Ａと、ネットワークを介して端末装置１００Ａに接続されるサーバ２００Ａとを備える。端末装置１００Ａは、第１の実施の形態における端末装置１００の構成から同時修正関係検出部１１２を除いた構成を有する。端末装置１００Ａは、サーバ２００Ａから受信する同時修正関係ＤＢ２２２を同時修正関係ＤＢ１２２として端末記憶部１２０に記録する。サーバ２００Ａは、第１の実施の形態におけるサーバ２００Ａの構成に加えて、同時修正関係検出部２１２をさらに備え、サーバ記憶部２２０には同時修正関係検出部２１２が生成する同時修正関係ＤＢ２２２がさらに格納される。同時修正関係検出部２１２は、構成管理ＤＢ２２１を用いて同時修正関係ＤＢ２２２を生成する。
【００７８】
（動作）
端末装置１００Ａは、定期的に、または同時修正関係ＤＢ１２２を参照する前にサーバ２００Ａに同時修正関係ＤＢ２２２の送付を要求する。サーバ２００Ａの同時修正関係検出部２１２は、定期的に、または端末装置１００Ａからの要求を受けてから同時修正関係ＤＢ２２２を生成する。構成管理ＤＢ２２１の生成方法は第１の実施の形態における同時修正関係ＤＢ１２２と同様なので説明を省略する。サーバ通信部２５０は、端末装置１００Ａからの要求に基づき同時修正関係ＤＢ２２２を端末装置１００Ａに送信する。
【００７９】
上述した第２の実施の形態によれば、次の作用効果が得られる。
（１）端末装置１００Ａは、サーバ２００Ａから同時修正関係ＤＢ２２２を受信する端末通信部１５０と、影響箇所解析判定部１１３の出力を表示部１３０に表示させる入出力処理部１１４とを備える。サーバ２００Ａは、ソースコードの修正履歴に基づき同時修正関係ＤＢ２２２を作成する同時修正関係検出部２１２と、同時修正関係検出部２１２が作成した同時修正関係ＤＢ２２２を端末装置１００Ａに送信するサーバ通信部２５０とを備える。そのため、端末装置１００Ａの処理負荷を軽減できる。
【００８０】
―第３の実施の形態―
図２１を参照して、影響出力システムの第３の実施の形態を説明する。以下の説明では、第１の実施の形態と同じ構成要素には同じ符号を付して相違点を主に説明する。特に説明しない点については、第１の実施の形態と同じである。本実施の形態では、主に、端末装置だけで動作が完結する点で、第１の実施の形態と異なる。
【００８１】
（構成）
図２１は、第３の実施の形態における影響出力システム１Ｂのシステム構成を示す図である。影響出力システム１Ｂは、ユーザが操作する端末装置１００Ｂを備える。端末装置１００Ｂは、第１の実施の形態における端末装置１００の構成に加えて、端末記憶部１２０に構成管理ＤＢ１２５を備える。
【００８２】
（動作）
端末装置１００Ｂは、第１の実施の形態ではソースコードの登録処理をサーバに対して行っていたが、本実施の形態では端末記憶部１２０の構成管理ＤＢ１２５に対して行う。また構成管理ＤＢ１２５へ書き込む際に、端末処理部１１０は第１の実施の形態におけるサーバ処理部２１０と同様に履歴情報２２５を生成する。
【００８３】
上述した第３の実施の形態によれば、端末装置１００Ｂだけで処理を完結させることができる。
【００８４】
―第４の実施の形態―
図２２を参照して、影響出力システムの第４の実施の形態を説明する。以下の説明では、第１の実施の形態と同じ構成要素には同じ符号を付して相違点を主に説明する。特に説明しない点については、第１の実施の形態と同じである。本実施の形態では、主に、ほとんどの処理をサーバが実行する点で、第１の実施の形態と異なる。
【００８５】
（構成）
図２２は、第４の実施の形態における影響出力システム１Ｃのシステム構成を示す図である。影響出力システム１Ｃは、ユーザが操作する端末装置１００Ｃと、ネットワークを介して端末装置１００Ｃに接続されるサーバ２００Ｃとを備える。端末装置１００Ｃは、入出力処理部１１４と、表示部１３０と、入力部１４０と、端末通信部１５０とを備える。サーバ２００Ｃは、第１の実施の形態におけるサーバ２００の構成に加えて、呼び出し関係検出部２１１、同時修正関係検出部２１２、影響箇所解析判定部２１３、入出力処理部２１４および修正差分検出部２１５を備える。これらの動作は、第１の実施の形態において端末装置１００に備えられた同一名称の構成と同様である。またサーバ記憶部２２０には、呼び出し関係ＤＢ２２１、同時修正関係ＤＢ２２２、登録ソースコード２２３、および修正ソースコード２２４が格納される。
【００８６】
（動作）
本実施の形態では、ユーザの入力部１４０からの入力は逐一サーバ２００Ｃに送信され、サーバ２００Ｃにおいて処理された結果が映像信号として端末装置１００Ｃに送信されて表示部１３０に表示される。すなわち、図８に示した修正影響チェック画面９０１への入力など、影響箇所解析判定部１１３が解析対象とする要素を決定するために必要な情報も、端末通信部１５０を介してサーバ２００Ｃに送信される。そしてサーバ２００Ｃにおいて生成された影響出力リスト９００を端末通信部１５０がサーバ２００Ｃから受信し、入出力処理部１１４が表示部１３０に表示する。
【００８７】
上述した第３の実施の形態によれば、次の作用効果が得られる。
（１）サーバ２００Ｃは、影響箇所解析判定部２１３の出力を端末装置１００Ｃに送信するサーバ通信部２５０を備える。端末装置１００Ｃは、サーバ２００Ｃから影響箇所解析判定部２１３の出力を受信する端末通信部１５０と、影響箇所解析判定部２１３の出力を表示部１３０に表示させる入出力処理部１１４とを備える。端末通信部１５０は、サーバ２００Ｃの修正要素特定部（図１３のステップＳ８０３）が修正要素を特定するために必要な情報を送信する。そのため端末装置の処理を大幅に削減することができる。
【００８８】
プログラムは不図示のＲＯＭに格納されるとしたが、プログラムは端末記憶部１２０に格納されていてもよい。また、端末装置１００が不図示の入出力インタフェースを備え、必要なときに入出力インタフェースと端末装置１００が利用可能な媒体を介して、他の装置からプログラムが読み込まれてもよい。ここで媒体とは、例えば入出力インタフェースに着脱可能な記憶媒体、または通信媒体、すなわち有線、無線、光などのネットワーク、または当該ネットワークを伝搬する搬送波やディジタル信号、を指す。また、プログラムにより実現される機能の一部または全部がハードウエア回路やＦＰＧＡにより実現されてもよい。
上述した各実施の形態および変形例は、それぞれ組み合わせてもよい。
上記では、種々の実施の形態および変形例を説明したが、本発明はこれらの内容に限定されるものではない。本発明の技術的思想の範囲内で考えられるその他の態様も本発明の範囲内に含まれる。
【符号の説明】
【００８９】
１、１Ａ、１Ｂ、１Ｃ…影響出力システム
１００、１００Ａ、１００Ｂ、１００Ｃ…端末装置
１１０…端末処理部
１１１、２１１…関係検出部
１１２、２１２…同時修正関係検出部
１１３、２１３…影響箇所解析判定部
１１４、２１４…入出力処理部
１１５、２１５…修正差分検出部
１２０…端末記憶部
１２１…呼び出し関係データベース
１２２…同時修正関係データベース
１３０…表示部
１５０…端末通信部
２００、２００Ａ、２００Ｃ…サーバ
２１０…サーバ処理部
２２０…サーバ記憶部
２２１…構成管理データベース
２５０…サーバ通信部
９００…影響出力リスト
９５１…修正前影響チェック画面
１１０４…修正影響タイプ
【図１】
2018181020.tif 000003
【図２】
2018181020.tif 000004
【図３】
2018181020.tif 000005
【図４】
2018181020.tif 000006
【図５】
2018181020.tif 000007
【図６】
2018181020.tif 000008
【図７】
2018181020.tif 000009
【図８】
2018181020.tif 000010
【図９】
2018181020.tif 000011
【図１０】
2018181020.tif 000012
【図１１】
2018181020.tif 000013
【図１２】
2018181020.tif 000014
【図１３】
2018181020.tif 000015
【図１４】
2018181020.tif 000016
【図１５】
2018181020.tif 000017
【図１６】
2018181020.tif 000018
【図１７】
2018181020.tif 000019
【図１８】
2018181020.tif 000020
【図１９】
2018181020.tif 000021
【図２０】
2018181020.tif 000022
【図２１】
2018181020.tif 000023
【図２２】
2018181020.tif 000024