(57)【要約】      （修正有）【課題】プログラムの修正対象の影響範囲の調査漏れを効果的に防止し、影響範囲での修正作業を支援する信頼性の高いデグレード防止支援プログラムおよびデグレード防止支援方法を提供すること。【解決手段】デグレード防止支援プログラム１では、修正対象抽出処理部１１により修正前ソースコード９、修正後ソースコード１０を比較しこれらのソースコード間の相違行を抽出する処理を行い、基点フォルダ下のソースコードを解析して影響対象を検出する処理を行う。そして、影響対象が検出された場合には影響パターンを特定して、影響対象に対して、デグレードの発生を防止するための見直し情報を生成する処理を行う。基点フォルダ下のソースコードを解析して修正対象から線形的に影響対象を検出する処理を繰り返し実行し、１つの修正対象に関する影響範囲が特定する。【選択図】  図１
2007199800.tif 000002
【特許請求の範囲】
【請求項１】
修正されたプログラム内のソースコードを解析し、このソースコードの修正の影響範囲を特定することによりデグレートの発生を防止するデグレート防止支援プログラムにおいて、
ユーザの操作により指定された前記プログラムの修正前後のソースコードを比較して修正内容を含む修正対象を検出する修正検出手段と、
ユーザの操作により指定された前記修正後のソースコードの影響範囲を調査する基点となる基点フォルダに基づいて、前記修正対象から線形的に前記修正対象の影響を受ける影響内容を含む影響対象を検出する影響検出手段と、
前記修正対象および影響対象に基づいて、影響対象に対するデグレートの発生を防止するための見直し情報を生成する見直し生成手段とを備えたことを特徴とするデグレート防止支援プログラム。
【請求項２】
修正されたプログラム内のソースコードを解析し、このソースコードの修正の影響範囲を特定することによりデグレートの発生を防止するデグレート防止支援方法において、
ユーザの操作により指定された前記プログラムの修正前後のソースコードを比較して修正内容を含む修正対象を検出するステップと、
ユーザの操作により指定された前記修正後のソースコードの影響範囲を調査する基点となる基点フォルダに基づいて、前記修正対象から線形的に前記修正対象の影響を受ける影響内容を含む影響対象を検出するステップと、
前記修正対象および影響対象に基づいて、影響対象に対するデグレートの発生を防止するための見直し情報を生成するステップとを備えたことを特徴とするデグレート防止支援方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、修正されたプログラム内のソースコードを解析し、このソースコードの修正の影響範囲を特定することによりデグレートの発生を防止するデグレート防止支援プログラムおよびデグレート防止支援方法に関する。
【背景技術】
【０００２】
従来の技術においては、データの表示や統計、演算等の様々な機能を実現するためのデータ処理を行う情報システムにおいては、顧客に対して情報システムの製品を納品して設置し、顧客の要望通り、情報システムが稼動し始めたとしても、その稼動の開始後、その情報システムを構成するための内部のプログラムが永続的に不変であり続けるとは限らない。
【０００３】
ユーザのビジネス内容や用途、作業内容の変化に伴い、情報システムの機能を追加する要求、新しいバージョン等への仕様変更の要求等が発生し、それに応じてプログラムを修正することは多々発生することになり、また、動作上で不具合が見つかった場合にも同様にプログラムを修正する必要が発生する。
【０００４】
そのようなシステムの修正においては、プログラムの構成上、修正要求の直接の対象ではないが、その修正された機能やプログラムに関連して、その影響を受ける他の既存の機能のプログラムについても修正が必要になる場合があり、その修正を実施しない場合、その機能は従来通りの動作を行わなくなる所謂「デグレード」が発生する。
【０００５】
デグレードの発生は、システムを正常に稼動させるためにも回避しなければならない不具合であり、そのためには修正を実施したプログラムの、その修正により副次的に結果が変わる対象（影響範囲）として、他の機能やプログラムを調べる必要がある。
【０００６】
しかしながら、この影響範囲の調査は人的作業に拠るところが大きく、そのため「調査漏れ」といった人的ミスのリスクを伴う。それは言うまでも無く、調査漏れにより修正が行われなかった機能等でのデグレードの発生につながるため、工数をかけて影響範囲の調査漏れの防止を徹底する必要がある。システムの規模が大きくなれば調査する範囲も大きくなるためリスクも増大し、調査漏れを防止するための工数も増大する。つまるところ、影響範囲の調査においては、人員、時間といった限られたリソースで如何にして効果的に信頼性の高い調査結果を得られるかが課題となる。
【０００７】
このようなリスクの軽減、工数の削減を実現する手段に関しては、Java（サンマイクロシステムズ社の登録商標）言語のソースコードを解析し、その識別子（クラスのメンバ）を検索基点として指定することで、他のソースコードを含め、指定された識別子の影響範囲を特定する機能を有するコンピュータプログラム「SIMPLIA/JF
JSEARCH」（富士通株式会社の登録商標）が知られている。
【０００８】
また、既存の機能が従来通りに動作することを確認するリグレッションテスト（回帰テスト）がある。例えば、以下の特許文献１に記載された発明では、データパターンの検証時にタイミングの微妙なずれにより正解データパターンと異なっても本来検証ＯＫとなるべき正解データパターンと一致する場合には検証ＯＫとするものが提案されている。
【０００９】
以下の特許文献２に記載された発明では、レイアウトファイルを参照して旧データ形式出力データを変換し新データ形式新出力データと新データ形式給出力データを比較して比較結果を出力するものが提案されている。以下の特許文献３に記載された発明では、コマンドが識別されると、テストデータを入力して対象とするプログラムモジュールを動作させその期待値と共に実行結果を記憶するものが提案されている。
【００１０】
また、現行製品としてはJava（サンマイクロシステムズ社の登録商標）言語に特化したコンピュータプログラム「SIMPLIA/JF JudgePruefer」（富士通株式会社の登録商標）、「Jtest」（テクマトリックス株式会社の登録商標）が知られている。
【００１１】
【特許文献１】特開２００３−２４８５９７号公報
【特許文献２】特開平１１−２５９２８８号公報
【特許文献３】特開平５−０９４２９８号公報
【発明の開示】
【発明が解決しようとする課題】
【００１２】
このように、デグレードの発生を防止支援する手段は数多く知られているが、プログラム内の修正対象のソースコードの識別子を指定して、その影響範囲を特定する方法では、ソースコードの識別子を「指定する」という人的判断・動作が伴う以上、「指定漏れ」による影響範囲の調査漏れといった人的ミスのリスクは依然として残る。システム自体の改修においては、修正対象が多数存在する場合が多いため、そのリスクは増大し、その「指定する」という人的判断・動作の作業自体の工数も無視できない。
【００１３】
リグレッションテストを効果的に実施するためには、修正対象の影響範囲を特定する必要がある。システムの全ての機能をテスト対象とする場合は影響範囲を特定する必要は無いが、修正対象の影響が無くテストの必要が無い機能についてもテストを実施することになるため、その分だけ余分な工数ができてしまい増大することになる。
【００１４】
本発明は、以上の問題点を鑑みてなされたものであり、その目的は、プログラムの修正対象の影響範囲の調査漏れを効果的に防止し、影響範囲での修正作業を支援する信頼性の高いデグレード防止支援プログラムおよびデグレード防止支援方法を提供することにある。
【課題を解決するための手段】
【００１５】
上記目的を達成するために、請求項１に係る発明は、修正されたプログラム内のソースコードを解析し、このソースコードの修正の影響範囲を特定することによりデグレートの発生を防止するデグレート防止支援プログラムにおいて、
ユーザの操作により指定された前記プログラムの修正前後のソースコードを比較して修正内容を含む修正対象を検出する修正検出手段と、
ユーザの操作により指定された前記修正後のソースコードの影響範囲を調査する基点となる基点フォルダに基づいて、前記修正対象から線形的に前記修正対象の影響を受ける影響内容を含む影響対象を検出する影響検出手段と、
前記修正対象および影響対象に基づいて、影響対象に対するデグレートの発生を防止するための見直し情報を生成する見直し生成手段とを備えたことを特徴とする。
【００１６】
また、請求項２に係る発明は、修正されたプログラム内のソースコードを解析し、このソースコードの修正の影響範囲を特定することによりデグレートの発生を防止するデグレート防止支援方法において、
ユーザの操作により指定された前記プログラムの修正前後のソースコードを比較して修正内容を含む修正対象を検出するステップと、
ユーザの操作により指定された前記修正後のソースコードの影響範囲を調査する基点となる基点フォルダに基づいて、前記修正対象から線形的に前記修正対象の影響を受ける影響内容を含む影響対象を検出するステップと、
前記修正対象および影響対象に基づいて、影響対象に対するデグレートの発生を防止するための見直し情報を生成するステップとを備えたことを特徴とする。
【発明の効果】
【００１７】
以上、本発明にかかるデグレード防止支援プログラムおよびデグレード防止支援方法によれば、プログラムの修正対象の影響範囲の調査漏れを効果的に防止し、高い信頼性で影響範囲での修正作業を支援することが可能となる。
【００１８】
請求項１に係る発明によれば、修正検出手段がユーザの操作により指定されたプログラムの修正前後のソースコードを比較して修正対象を検出し、影響検出手段がユーザの操作により指定された基点フォルダに基づいて、修正対象から線形的に影響対象を検出し、見直し生成手段が修正対象および影響対象に基づいて見直し情報を生成するので、これらの検出された修正対象および影響対象を確認してプログラムの修正対象の影響範囲の調査漏れを効果的に防止することができる。また、見直し生成手段が生成した見直し情報を利用することにより、影響範囲でのデグレートの発生を防止するための修正作業を高い信頼性で支援することが可能となる。
【００１９】
また、請求項２に係る発明によれば、ユーザの操作により指定されたプログラムの修正前後のソースコードを比較して修正対象を検出し、ユーザの操作により指定された基点フォルダに基づいて、修正対象から線形的に影響対象を検出し、修正対象および影響対象に基づいて見直し情報を生成するので、これらの検出された修正対象および影響対象を確認してプログラムの修正対象の影響範囲の調査漏れを効果的に防止することができる。また、見直し情報を利用することにより、影響範囲でのデグレートの発生を防止するための修正作業を高い信頼性で支援することが可能となる。
【発明を実施するための最良の形態】
【００２０】
以下、本発明に係るデグレード防止支援プログラムを実施するための最良の実施の形態について説明する。図１は、本実施の形態におけるデグレード防止支援プログラムを示す全体構成図である。デグレード防止支援プログラム１は、ユーザが画面操作によって後述する作業フォルダ６上の修正前ソースコードと修正後ソースコードと基点フォルダを指定するための要求入力処理部２と、要求入力処理部２により指定された修正前ソースコードと修正後ソースコードと基点フォルダの読み込み等の処理を行う要求実行処理部３と、読み込み等の処理がされた修正前ソースコードと修正後ソースコードと基点フォルダ等を格納する比較対象ソースデータ４と、修正前ソースコードと修正後ソースコードと基点フォルダに基づいて影響範囲の調査のための処理を行うデータ処理部５とから構成されている。
【００２１】
要求実行処理部３は、要求入力処理部２により指定された修正前ソースコードと修正後ソースコードと基点フォルダに基づいて作業フォルダ６から該当する修正前ソースコードと修正後ソースコードと基点フォルダを読み出す比較対象ソース読込処理部７と、ユーザがデグレード防止支援プログラム１の機能を実行するコンピュータ等の操作手段を用いて設定したデータ処理部５の動作に関する動作設定情報を登録する処理を行うユーザ設定登録処理部１５と、このユーザ設定登録処理部１５により登録された動作設定情報を格納するユーザ設定格納部１６と、例えばコンピュータ等のシステム上に存在する他のプログラムとして外部からコンピュータ等に入力された外部プログラム１７内のリポジトリプログラム１９のソースコードと基点フォルダを読み出すリポジトリ連動処理部１８と、外部プログラム１７内等のソースコードの正当性や規約をチェックする規約チェックプログラム２１を用いて修正後ソースコード等に対して正当性や規約をチェックする処理を行う規約チェック連動処理部２０とを備えている。
【００２２】
ここで、リポジトリプログラム１９は、プログラム内のソースコードのバージョンの管理を行う機能を有しており、このリポジトリプログラム１９内にはバージョンが異なり比較対象となる複数のソースコードと、これらの複数のソースコードに関連してバージョンが異なることによる影響範囲を調査する基点となる基点フォルダが含まれている。
【００２３】
データ処理部５は、比較対象ソースデータ４に格納された修正前ソースコードと修正後ソースコードと基点フォルダ等に基づいてプログラムの修正の修正箇所・内容を含む修正対象を検出し抽出する処理を行う修正対象抽出処理部１１と、修正対象抽出処理部１１が検出した修正対象を解析して影響範囲を特定し影響対象を検出する処理を行う影響範囲解析処理部１２と、修正対象や影響対象等に基づいてこれらの修正対象や影響対象等のデータをデグレードの発生を防止するように見直して変更する見直し情報を生成してコンピュータ等のディスプレイ装置に表示する処理を行う解析結果出力処理部１３とを備えている。
【００２４】
修正対象抽出処理部１１は、比較対象ソースデータ４に格納された修正前後のソースコードを比較することで、修正後ソースコードの修正箇所・内容を特定し、これらの修正箇所・内容を含む修正対象を特定する変数や処理等の識別子を抽出する機能を有する。
【００２５】
影響範囲解析処理部１２は、修正対象抽出処理部１１により抽出された識別子から修正対象の種類及び修正内容を用いて基点フォルダ下に格納されるソースコードを解析し、その修正対象の内容に係る影響範囲を特定し、この影響範囲に含まれる影響対象を検出する機能を有する。
【００２６】
解析結果出力処理部１３は、修正対象や影響対象等に基づいてこれらの修正対象や影響対象等のデータをデグレードの発生を防止するように見直して修正する見直し情報を生成し、修正対象や影響対象、見直し情報等をユーザが容易に確認できるフォーマットに整形、または統計化、分布化する処理を行い、ディスプレイ装置に表示するために作業フォルダ６上に出力する機能を有する。また、ユーザが見直し情報等に基づいて指定した修正内容に従って、影響対象のデータを修正する処理を行う。
【００２７】
そして、修正対象抽出処理部１１、影響範囲解析処理部１２、解析結果出力処理部１３は、この修正が行われた影響対象の修正後のソースコードに対してデグレード防止支援プログラム１を適用して、上述と同様の修正対象、影響対象の検出、見直し情報の生成等の処理を行う。以降、影響対象においてデグレードの発生等が無くデータの修正が不要になるまで上記処理を繰り返して行っていくようになっている。
【００２８】
また、修正対象抽出処理部１１、影響範囲解析処理部１２、解析結果出力処理部１３は、ユーザ設定登録処理部１５により送信されたユーザ設定格納部１６内の動作設定情報に従って動作するようになっている。例えば、修正内容や影響内容のパターンを示す修正パターン、影響パターンを制限して設定された場合には、修正対象抽出処理部１１、影響範囲解析処理部１２がこの制限された修正パターン、影響パターンに該当する修正対象や影響対象のみを検出する。また、解析結果出力処理部１３が生成した見直し情報を動作設定情報で設定された所定の条件に従って修正、削除、所定の制限を行ってディスプレイ装置に表示出力する処理を行う。
【００２９】
作業フォルダ６には、修正等が行われたコンピュータ等のシステム上のプログラム内に含まれるこの修正を行う前の時点の修正前ソースコードや修正を行った後の時点の修正後ソースコードと、修正等が行われたプログラムに関連するプログラムやデータ等を格納し修正後ソースコードの影響範囲を調査する基点となる基点フォルダとが含まれている。また、解析結果出力処理部１３がディスプレイ装置に表示出力した解析結果出力データ１４を格納するようになっている。
【００３０】
また、デグレード防止支援プログラム１では、外部から入力された外部プログラム１７を連動することによって、デグレード防止支援プログラム１の機能が拡張されるようになっている。修正対象抽出処理部１１は、リポジトリプログラム連動処理部１８によりリポジトリプログラム１９内のバージョンが異なる複数のソースコードが比較対象ソースデータ４に格納された際に、上述と同様の機能を行うようになっている。この場合には、異なるバージョン間で修正された内容を修正対象として処理を行う。比較対照ソース読込処理部７により作業フォルダ６から読み出された修正後ソースコードと、リポジトリプログラム連動処理部１８によりリポジトリプログラム１９内から読み出された修正前ソースコードとを用いても上述と同様の機能を行うようになっている。
【００３１】
影響範囲解析処理部１２は、規約チェック連動処理部２０により規約チェックプログラム２１が入力された際に、修正対象の内容に係る影響範囲に含まれる影響対象を検出すると共に、この規約チェックプログラム２１を用いて修正後ソースコード等に対して正当性や規約をチェックし、規約に反するソースコードを影響対象として検出するようになっている。
【００３２】
図２は、修正前後のソースコードにおいて検出された修正対象とこの修正対象の影響が伝播した影響対象を示すコードリストを示す説明図である。これらの修正前後のソースコードは、Java（サンマイクロシステムズ社の登録商標）言語の記法に従っているが、以降、特に記載の無い限り、ソースコードの記述は同様の扱いとする。この金融取引の実績照会機能を実装する部位の簡単なサンプルコードを示す修正前ソースコード２０１では、図２に示すように、７３、７４行目で税引前元利金を示す変数balanceの値を出力用変数xに格納し、標準出力に出力する。次に、７６、７７行目で元金を示す変数principalとxから利息を計算して変数yに格納し、標準出力に出力する。次に、７９行目でyから税額を計算する処理を呼び出し、８３、８４行目で算出された税額を変数zに格納し、標準出力に出力する。以降、税引後元利金を出力する等の処理が続く処理が記述されている。
【００３３】
そして、ユーザから例えば仕様変更要求があり、税引前元利金の値の出力を１０００円単位で行うようプログラムを修正する作業が行われ、修正後ソースコード２０２では、図２に示すように、７３行目のみで修正がされ、税引前元利金の値の出力用変数xに関する演算処理を修正されている様子が示されている。
【００３４】
ここで、例えば、balanceの値が1,010,000、principalの値が1,000,000として動作検証が行われたとすると、プログラム修正前の修正前ソースコード２０１では、「残高」は1,010,000、「利息」は10,000、「税額」は2,000となり、プログラム修正後の修正後ソースコード２０２では、「残高」は1,010、「利息」は-998,990、「税額」は-199,798となることが分かる。プログラムの修正によって、仕様変更要求どおり、税引前元利金の値は１０００円単位で出力されるようになったが、この修正対象としての税引前元利金の影響を受けて、利息や税額の出力に不具合が生じている。これがデグレードであり、誤った利息や税額の出力を防止するために見直し等を行うことが必要となっている。
【００３５】
利息は税引前元利金の値の出力用変数xから計算されるため、xに関する演算処理の修正の影響を受けるが、その影響を吸収すべく単位変換等の対応を行わなかったためである。同様に、税額は利息の不具合の影響を受けたためである。７３行目の税引前元利金の値の出力に関するプログラム修正は、７６行目の利息の計算に影響し、８３行目の利息が受けた影響は税額の計算に影響し、税額が受けた影響は以降の処理に影響するというように、修正前ソースコード２０１の７３行目と修正後ソースコード２０２の７３行目における修正前後のソースコードの相違行での修正対象を基点として、プログラム修正の影響は階層的、線形的に伝播するため、プログラム量が増大すれば影響範囲は広範囲となり、デグレードの発生を防止するために、その影響範囲をしっかりと認識し対応を行うことが必要となっている。
【００３６】
図３は、修正前後のソースコード間における相違行を示すコードリストを示す説明図である。修正内容として、図３に示すように、修正前ソースコード３０１の７５、７６行目間と修正後ソースコード３０２の７６行目において新規の演算の追加がされ、修正前ソースコード３０１の７６行目と修正後ソースコード３０２の７８行目において既存の演算の変更がされ、修正前ソースコード３０１の７９行目と修正後ソースコード３０２の７９、８０行目間において既存の呼出の削除がされていることが示されている。
【００３７】
修正対象を示す識別子は、演算結果を格納する変数として修正後ソースコード３０２の７６行目のp、７８行目のyとなり、呼び出される処理として修正前ソースコード３０１の７９行目のdisplayTaxとなることが示されている。このように、修正前後のソースコード３０１、３０２を比較し、相違行を検出することで、変数、処理等の修正対象と修正内容を示す追加、変更、削除等の修正パターンが認識できることが示されている。
【００３８】
図４、図５、図６は、修正前後のソースコードを比較することで抽出された修正対象と修正対象の修正での処理内容によって９つに分類された修正パターンを示すコードリストを示す説明図である。修正内容４０１では新規の演算が追加されており、修正後ソースコード１３行目の修正対象の変数radの修正パターンは「演算追加」である。修正内容４０２では既存の演算が変更されており、修正後ソースコード２３行目の修正対象の変数areaの修正パターンは「演算変更」である。修正内容４０３では既存の演算が削除されており、修正前ソースコード３３行目の修正対象の変数cirの修正パターンは「演算削除」である。
【００３９】
修正内容４０４では新規の応答が追加されており、修正後ソースコード４３行目の修正対象の変数ansの修正パターンは「応答追加」である。修正内容４０５では既存の応答が変更されており、修正後ソースコード５３行目の修正対象の変数ansの修正パターンは「応答変更」である。修正内容４０６では既存の応答が削除されており、修正前ソースコード６３行目の修正対象の変数keyの修正パターンは「応答削除」である。
【００４０】
修正内容４０７では新規の呼出が追加されており、修正後ソースコード７３行目、８３行目、９３行目の修正対象の応答を返さない処理regist、応答を返し変数に格納される処理calc、応答を返し別の応答として返される処理calcの修正パターンは「呼出追加」である。修正内容４０８では既存の呼出が削除されており、修正前ソースコード１０３行目、１１３行目、１２３行目の修正対象の応答を返さない処理delete、応答を返し変数に格納される処理find、応答を返し別の応答として返される処理findの修正パターンは「呼出削除」である。修正内容４０９では既存の引数の変更されており、修正後ソースコード１３３行目、１４３行目、１５３行目の修正対象の応答を返さない処理regist、応答を返し変数に格納される処理calc、応答を返し別の応答として返される処理calcの修正パターンは「引数変更」である。
【００４１】
また、修正対象の影響の伝播には４つのパターンがあり、その内３つのパターンは修正パターン「演算変更」「応答変更」「引数変更」と同様である。例えば、上述の図２の修正後ソースコード２０２において、７３行目の税引前元利金の値の出力用変数xに関する演算処理の修正の影響を受ける７６行目の利息計算の演算処理は既存の演算の変更と見なすことができ、この影響対象の変数yの影響パターンは「演算変更」となる。７９行目の変数yの影響を受ける税額出力の呼出処理は既存の引数の変更と見なすことができ、影響対象の処理displayTaxの影響パターンは「引数変更」となる。修正対象の影響を受ける応答処理は既存の応答の変更と見なすことができ、影響対象は応答を受ける呼出元の変数、影響パターンは「応答変更」となる。これら３つの影響パターンは、修正パターンと同等であることから、影響対象は、修正対象と同様に、他に影響を及ぼすようになっている。
【００４２】
そして、残りの１つのパターンとは、他の影響は受けるが他に影響を及ぼさないパターンであり、影響対象は修正対象そのもの、影響パターンは「伝播停止」となっている。以上の図２、図３、図４で述べた、修正前後のソースコードの比較による修正対象の抽出、修正パターンの特定の方法、影響伝播のメカニズム、修正パターンと影響パターンの同等性を利用した影響範囲の特定の方法が本発明の特徴である。
【００４３】
図８、図９は、修正パターンを詳細化して判別するための表を示す説明図である。修正パターンは他に影響を及ぼす修正内容であり、図８、図９に示すように、修正パターンを特定する相違行の内容は２６種類あることが示されている。修正対象及び修正パターンは、修正前後のソースコード間の相違行における修正前のソースコードの内容及び修正後のソースコードの内容から特定できるようになっている。図８、図９では、ソースコードの内容の理解を助けるためのチェック欄を設けており、ソースコードの内容で処理内容が演算、応答、呼出である場合は該当する箇所に「○」、そうではない場合は「-」を表示している。また、修正前後で識別子変数、処理の名称に同一性が見られる場合は該当する箇所に「○」、見られない場合は「-」を表示している。また、演算処理と応答を返す呼出処理のコードを区別するため、演算処理のコードは「f.a.o.」（four arithmetic operations：四則演算）と表示している。
【００４４】
例えば、項番１では、修正前ソースコードのコード記述は無し、修正後ソースコードのコード記述は演算処理、識別子名の同一性は見られない修正内容を表しており、その場合の修正対象は修正後ソースの変数v、修正パターンは「演算追加」に特定されることが表示されている。また、項番１５は、修正前ソースコードのコード記述は応答を返さない呼出処理、修正後ソースコードのコード記述は応答を返さない呼出処理、識別子名の同一性は処理名に見られる修正内容を表しており、その場合の修正対象は修正後ソースコードの処理p、修正パターンは「引数変更」に特定されることを表している。また、項番２６は、修正前ソースコードのコード記述は呼出処理が直接指定された応答処理、修正後ソースコードのコード記述は呼出処理が直接指定された応答処理、識別子名の同一性は見られない修正内容を表しており、その場合の修正対象は修正前ソースコードの処理p1と修正後ソースコードの処理p2、修正パターンはそれぞれ「呼出削除」と「呼出追加」に特定されることを表している。
【００４５】
図１０、図１１、図１２、図１３は、影響パターンを詳細化して判別するための表を示す説明図である。修正対象を使用した処理が影響の伝播を引き起こしており、修正パターン毎にその種類は特定されるが、図１０、図１１、図１２、図１３に示すように、影響パターンを特定する修正パターンと影響伝播の組み合わせは４９種類あることが示されている。影響対象及び影響パターンは、この修正パターンと影響伝播の組み合わせから特定できるようになっている。図１０、図１１、図１２、図１３はその対応関係を表示している。
【００４６】
例えば、修正パターンが「演算追加」である修正対象の影響の伝播は項番１〜４で示すように４種類あり、これに該当する箇所を検索し、修正対象を使用した四則演算が行われている場合は、影響対象はその演算結果を格納する変数、影響パターンは「演算変更」に特定されることを表している（項番１）。また、上述の図２の修正後ソースコード２０２を例に取れば、７３行目の修正対象は変数xとなり、修正パターンは「演算変更」であり、影響対象は７６行目のこの変数xを使用した四則演算の結果を格納する変数yとなり、図１０の項番５に示すように、影響パターンは「演算変更」に特定される。更に影響の伝播を追跡すると、２次的影響対象は７９行目のこの変数yが引数に指定される処理displayTaxとなり、図１０の項番７に示すように、影響パターンは「引数変更」に特定され、３次的影響対象は８３行目のこの処理displayTax内で２次的影響対象の変数yの値である引数argを使用した四則演算の結果を格納する変数zとなり、図１３の項番４６に示すように、影響パターンは「演算変更」に特定される。
【００４７】
図１４、図１５は、修正・影響パターンと見直し情報との対応関係を詳細化して示した表を示す説明図である。見直し情報には、修正パターンと影響パターンの組み合わせから影響対象に注意を喚起し、ソースコードの妥当性や必要性を見直す契機となる内容の情報が含まれている。
【００４８】
例えば、図２の修正後ソースコード２０２では、７６行目の修正パターンは「演算変更」、影響パターンは「演算変更」であり、影響対象の変数yに対して、図１４の項番５に示すように、その演算の妥当性や影響元として修正対象の見直しを促すことを表している。ここでユーザがその見直しを行い、演算の妥当性や修正対象の見直しの情報を参照して変数principalの単位変換が必要であることに気付き、このことに基づいて対応を行えばデグレードの発生が防止できるようになっている。
【００４９】
また、７９行目の１次的影響対象の影響パターン「演算変更」、２次的影響対象の影響パターン「引数変更」から、２次的影響対象の処理displayTaxに対して、図１４の項番７に示すように、引数に修正対象の影響が伝播していることを喚起している。８３行目の２次的影響対象の影響パターン「引数変更」、３次的影響対象の影響パターン「演算変更」から、３次的影響対象の変数zに対して、図１５の項番２７に示すように、その演算の妥当性の見直しを促すことを表している。
【００５０】
図１６は、解析結果出力データ１４において修正対象等の影響範囲の画面レイアウトを示す説明図である。比較対象データ９０１ではユーザに指定された修正前ソースコード、修正後ソースコード、基点フォルダが表示されている。修正対象情報一覧９０２では修正対象に関する情報の一覧表示されている。影響対象情報一覧９０３では修正対象毎の影響対象情報が一覧表示されている。
【００５１】
続いて、本実施の形態におけるデグレード防止支援プログラム１の動作について、図７に示すフローチャートを用いて詳細に説明する。まず、ユーザがコンピュータ等の操作手段を用いてデグレード防止支援プログラム１を起動させ、要求入力処理部２により、修正等を行ったプログラム内の修正前ソースコード、修正後ソースコード、基点フォルダを処理対象として設定すると（ステップ５０１）、デグレード防止支援プログラム１は比較対象ソース読込処理部７によって作業フォルダ６上の修正前後の各プログラム等が格納されたソース格納部８から、修正前ソースコード、修正後ソースコード、基点フォルダを読み出し、比較対象ソースデータ４に格納する処理を行う。
【００５２】
またここで、リポジトリプログラム連動処理部１８により外部プログラム１７を連動し、リポジトリプログラム１９内のバージョンが異なる２つのソースコードと基点フォルダが比較対象ソースデータ４に格納された際には、これらのバージョンが異なる２つのソースコードを、例えば古いバージョンのソースコードを修正前ソースコード９、新しいバージョンのソースコードを修正後ソースコード１０として処理を行う。
【００５３】
次に、デグレード防止支援プログラム１は、修正対象抽出処理部１１により修正前ソースコード９、修正後ソースコード１０を比較しこれらのソースコード間の相違行を抽出する処理を行う（ステップ５０２）。比較対象ソースデータ４から修正前ソースコード９、修正後ソースコード１０を読み出し、これらのソースコード間の対応する各行を先頭部分から互いに比較し、内容が一致せず異なる行を相違行として抽出し、図示しないＲＡＭに格納する処理を行う。または、相違行にマーキングをする処理を行う。
【００５４】
次に、デグレード防止支援プログラム１は、ＲＡＭに格納した相違行のデータのうちソースコードの先頭部分側に位置する先頭部分の相違行を検索して解析の対象に設定し、フォーカスする処理を行う（ステップ５０３）。
【００５５】
次に、デグレード防止支援プログラム１は、先頭部分の相違行に対して解析を行い、修正対象等を特定する処理を行う（ステップ５０４）。修正前ソースコード９、修正後ソースコード１０間の相違行の修正内容を解析して修正対象を特定し、この修正対象を示す識別子に基づいて図８、図９に示す表を参照して、修正パターンを特定する処理を行う。
【００５６】
次に、デグレード防止支援プログラム１は、相違行においてこれらの特定した修正対象、修正パターンのデータをＲＡＭに格納する処理を行う（ステップ５０５）。
【００５７】
次に、デグレード防止支援プログラム１は、影響範囲解析処理部１２によりステップ５０１で指定された基点フォルダ下に格納されたソースコードを解析して修正対象の影響を受けた影響対象を検出する処理を行う（ステップ５０６）。ＲＡＭに格納された修正対象を示す識別子に基づいて、基点フォルダ下に格納された各ソースコードの文字列の検索等を行い、ソースコード内にこの識別子を用いて演算、応答、呼出等の処理が行われ、影響対象が含まれているか否かを検出する処理を行う。
【００５８】
この影響対象が含まれているか否かを検出する処理では、修正対象を示す識別子を基点（ルート）として、線形探索により、基点フォルダ下で階層的にソースコードの検索を行っていき、この識別子を用いて処理を行う影響対象（ノード、リーフ）を検出して、修正対象の影響範囲の階層構造（ツリー）データを作成する処理も同時に行われる。階層構造データ、即ちツリーのルートに修正対象の情報（識別子、行番号、修正パターン）を保持し、ツリーのノードやリーフに影響対象の情報（識別子、行番号、影響パターン、レベル、見直し内容）を保持して１つのツリー（１つの修正対象に関する影響範囲）を示す階層構造データを作成するようになっている。
【００５９】
また、ここでデグレード防止支援プログラム１は、規約チェック連動処理部２０により規約チェックプログラム２１が入力されている場合には、同時に規約チェックプログラム２１を用いて修正対象に対して正当性や規約のチェックを行い、チェックした結果、規約に反する修正対象を影響対象として検出する処理を行う。
【００６０】
次に、デグレード防止支援プログラム１は、各ソースコードの文字列の検索等を行った結果、影響対象が検出されたか否かを判定する処理を行う（ステップ５０７）。影響対象が検出されない場合には（ステップ５０７のＮＯ）、相違行を先頭部分から１つ順番毎に切り換えて、この切り替えた相違行を解析の対象に設定し、フォーカスする処理を行う。そして、このフォーカスした相違行のデータに対して、ステップ５０３以降の処理を反復して繰り返し実行する。
【００６１】
次に、デグレード防止支援プログラム１は、影響対象が検出された場合には（ステップ５０７のＹＥＳ）、影響対象の影響パターンを特定する処理を行う（ステップ５０８）。この検出された影響対象を解析しこの影響対象を示す識別子や、影響を及ぼした修正対象、修正パターン等のデータに基づいて、図１０、図１１、図１２、図１３に示す表を参照して、影響パターンを特定する処理を行う。
【００６２】
次に、デグレード防止支援プログラム１は、これらの特定した影響対象、影響パターンのデータをＲＡＭに格納する処理を行う（ステップ５０９）。
【００６３】
次に、デグレード防止支援プログラム１は、修正パターン、影響パターンに基づいて影響対象を見直す見直し内容を特定する処理を行う（ステップ５１０）。ＲＡＭに格納された修正対象、修正パターン、影響対象、影響パターン等のデータに基づいて、図１４、図１５に示す表を参照して、影響対象に対して、デグレードの発生を防止するように見直して修正するための見直し情報を生成する処理を行う。例えば、図１４、図１５に示す表を参照して、修正パターンが「演算追加」であり、影響パターンが「応答変更」である場合には、修正対象の影響を受けて誤った数値で処理を行うデグレードの発生を防止するために、影響対象を見直す見直し内容として影響元、追加変数の新規性、応答の妥当性、定義型等を見直す旨を指示する見直し情報を生成する。
【００６４】
次に、デグレード防止支援プログラム１は、この生成した見直し情報のデータをＲＡＭに格納する処理を行う（ステップ５０９）。
【００６５】
次に、デグレード防止支援プログラム１は、影響範囲解析処理部１２によりステップ５０１で指定された基点フォルダ下に格納されたソースコードを解析して、ステップ５０７で検出した影響対象についてステップ５０６以降の処理を繰り返して実行していき、この影響対象の副次的影響を受けた影響対象を更に繰り返して検出していく処理を行う。
【００６６】
以降、影響対象が検出されなくなるまで以上のステップ５０６〜５１１の処理を繰り返して実行することによって、１つの修正対象に関する影響範囲を特定する。このようにして、基点フォルダ下に格納されたソースコードを解析して修正対象から線形的に影響対象を検出する処理を行う。影響対象が検出されなくなるまで以上のステップ５０６〜５１１の処理を繰り返して実行し、１つの修正対象に関する影響範囲が特定した場合には、相違行を先頭部分から１つ順番毎に切り換えて、この切り替えた相違行を解析の対象に設定し、フォーカスする処理を行う。そして、このフォーカスした相違行のデータに対して、ステップ５０３以降の処理を反復して繰り返し実行する。
【００６７】
以上の処理を全て実行した結果、全ての相違行の修正対象に対して漏れなく影響範囲が特定された際には、影響範囲の解析結果は各修正対象を基点としたツリーの集合体（フォレスト）となり、ユーザの操作手段の操作に応じて、ＲＡＭに格納された修正対象や影響対象、見直し情報等のデータをユーザが容易に確認できるフォーマットに整形、または統計化、分布化する処理を行い、ディスプレイ装置に表示するために作業フォルダ６上に解析結果出力データ１４として出力する。そして、この解析結果出力データ１４をディスプレイ装置に画面表示する。
【００６８】
以上のように、本実施の形態におけるデグレード防止支援プログラム１では、修正対象抽出処理部１１により修正前ソースコード９、修正後ソースコード１０を比較しこれらのソースコード間の相違行を抽出する処理を行い、基点フォルダ下のソースコードを解析して影響対象を検出する処理を行う。そして、影響対象が検出された場合には影響パターンを特定して、影響対象に対して、デグレードの発生を防止するための見直し情報を生成する処理を行う。基点フォルダ下のソースコードを解析して修正対象から線形的に影響対象を検出する処理を繰り返し実行し、１つの修正対象に関する影響範囲が特定する。
【００６９】
このため、従来の技術では、影響範囲の特定にあたり、修正対象を人為的に判断・指定していたため、「指定漏れ」といった人為的ミスによる影響範囲の調査漏れのリスクがあったが、デグレード防止支援プログラム１では修正前後のソースコードを比較することにより、修正対象を機械的に判断・指定するため、工数をかけること無く、修正対象の影響範囲の調査漏れによるデグレードの発生を効果的に防止することができる。
【００７０】
また、修正パターンと影響パターンから全ての影響対象に対して、デグレードの発生を防止するための見直し情報を生成することによって、高い信頼性で影響対象の修正作業を効果的に支援し、影響対象への誤った対応によるデグレードの発生を防止支援することができる。
【００７１】
更に、外部から入力された外部プログラム１７に対しても、リポジトリ連動処理部１８によりバージョンの異なるソースコードを比較対象ソースデータ４に格納し、同様に以上の処理を行っていくため、例えば開発チーム内においてリポジトリプログラム１９上で共同利用されるソースコードを、コンピュータ等の作業フォルダ６上にコピーする作業を行うことなく、デグレード防止支援プログラム１でのデータ処理が可能となる。
【００７２】
（他の実施の形態）
上述の実施の形態において、外部プログラム１７は、外部からデグレード防止支援プログラム１を実行するコンピュータ等に入力されているが、ＣＤ−ＲＯＭ等の外部記録媒体により入力されるまたはＬＡＮまたはインターネット等のネットワークを介して、ネットワーク上に設置されたサーバ等から送受信を行って入力されていても良い。
【００７３】
また、上述の実施の形態において、ユーザがコンピュータ等の操作手段を用いて要求入力処理部２により、修正等を行ったプログラム内の修正前ソースコード、修正後ソースコード、基点フォルダを処理対象として設定するとデグレード防止支援プログラム１の動作が行われるが、これに限られず、プログラムの修正等が行われると自動的にデグレード防止支援プログラム１が動作し、プログラム内の全ての修正前ソースコード、修正後ソースコード、基点フォルダに対して処理を行うようにしても良い。
【図面の簡単な説明】
【００７４】
【図１】本実施の形態におけるデグレード防止支援プログラム１の全体構成を示す説明図である。
【図２】本実施の形態におけるデグレード防止支援プログラム１の修正対象の影響の伝播を示すコードリストである。
【図３】本実施の形態におけるデグレード防止支援プログラム１の修正前後のソースコードの相違行を示すコードリストである。
【図４】本実施の形態におけるデグレード防止支援プログラム１の修正パターンを示すコードリストである。
【図５】本実施の形態におけるデグレード防止支援プログラム１の修正パターンを示すコードリストである。
【図６】本実施の形態におけるデグレード防止支援プログラム１の修正パターンを示すコードリストである。
【図７】本実施の形態におけるデグレード防止支援プログラム１の動作を示すフローチャートである。
【図８】本実施の形態におけるデグレード防止支援プログラム１の修正パターンを判別する表を示す説明図である。
【図９】本実施の形態におけるデグレード防止支援プログラム１の修正パターンを判別する表を示す説明図である。
【図１０】本実施の形態におけるデグレード防止支援プログラム１の影響パターンを判別する表を示す説明図である。
【図１１】本実施の形態におけるデグレード防止支援プログラム１の影響パターンを判別する表を示す説明図である。
【図１２】本実施の形態におけるデグレード防止支援プログラム１の影響パターンを判別する表を示す説明図である。
【図１３】本実施の形態におけるデグレード防止支援プログラム１の影響パターンを判別する表を示す説明図である。
【図１４】本実施の形態におけるデグレード防止支援プログラム１の修正パターン、影響パターンと見直し情報との対応関係の表を示す説明図である。
【図１５】本実施の形態におけるデグレード防止支援プログラム１の修正パターン、影響パターンと見直し情報との対応関係の表を示す説明図である。
【図１６】本実施の形態におけるデグレード防止支援プログラム１の影響範囲を表示した画面レイアウトの説明図である。
【符号の説明】
【００７５】
１  デグレード防止支援プログラム
２  要求入力処理部
３  要求実行処理部
４  比較対象ソースデータ
５  データ処理部
６  作業フォルダ
７  比較対象ソース読込処理部
８  ソース格納部
９  修正前ソースコードデータ
１０  修正後ソースコードデータ
１１  修正対象抽出処理部
１２  影響範囲解析処理部
１３  解析結果出力処理部
１４  解析結果出力データ
１５  ユーザ設定登録処理部
１６  ユーザ設定格納部
１７  外部プログラム
１８  リポジトリプログラム連動処理部
１９  リポジトリプログラム
２０  規約チェックプログラム連動処理部
２１  規約チェックプログラム
９０１  比較対象データ
９０２  修正対象情報一覧
９０３  影響対象情報一覧
【図１】
2007199800.tif 000003
【図２】
2007199800.tif 000004
【図３】
2007199800.tif 000005
【図４】
2007199800.tif 000006
【図５】
2007199800.tif 000007
【図６】
2007199800.tif 000008
【図７】
2007199800.tif 000009
【図８】
2007199800.tif 000010
【図９】
2007199800.tif 000011
【図１０】
2007199800.tif 000012
【図１１】
2007199800.tif 000013
【図１２】
2007199800.tif 000014
【図１３】
2007199800.tif 000015
【図１４】
2007199800.tif 000016
【図１５】
2007199800.tif 000017
【図１６】
2007199800.tif 000018