JP2007199800A - デグレート防止支援プログラムおよびデグレート防止支援方法 - Google Patents
デグレート防止支援プログラムおよびデグレート防止支援方法 Download PDFInfo
- Publication number
- JP2007199800A JP2007199800A JP2006014563A JP2006014563A JP2007199800A JP 2007199800 A JP2007199800 A JP 2007199800A JP 2006014563 A JP2006014563 A JP 2006014563A JP 2006014563 A JP2006014563 A JP 2006014563A JP 2007199800 A JP2007199800 A JP 2007199800A
- Authority
- JP
- Japan
- Prior art keywords
- correction
- influence
- target
- source code
- program
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
【課題】プログラムの修正対象の影響範囲の調査漏れを効果的に防止し、影響範囲での修正作業を支援する信頼性の高いデグレード防止支援プログラムおよびデグレード防止支援方法を提供すること。
【解決手段】デグレード防止支援プログラム1では、修正対象抽出処理部11により修正前ソースコード9、修正後ソースコード10を比較しこれらのソースコード間の相違行を抽出する処理を行い、基点フォルダ下のソースコードを解析して影響対象を検出する処理を行う。そして、影響対象が検出された場合には影響パターンを特定して、影響対象に対して、デグレードの発生を防止するための見直し情報を生成する処理を行う。基点フォルダ下のソースコードを解析して修正対象から線形的に影響対象を検出する処理を繰り返し実行し、1つの修正対象に関する影響範囲が特定する。
【選択図】 図1
【解決手段】デグレード防止支援プログラム1では、修正対象抽出処理部11により修正前ソースコード9、修正後ソースコード10を比較しこれらのソースコード間の相違行を抽出する処理を行い、基点フォルダ下のソースコードを解析して影響対象を検出する処理を行う。そして、影響対象が検出された場合には影響パターンを特定して、影響対象に対して、デグレードの発生を防止するための見直し情報を生成する処理を行う。基点フォルダ下のソースコードを解析して修正対象から線形的に影響対象を検出する処理を繰り返し実行し、1つの修正対象に関する影響範囲が特定する。
【選択図】 図1
Description
本発明は、修正されたプログラム内のソースコードを解析し、このソースコードの修正の影響範囲を特定することによりデグレートの発生を防止するデグレート防止支援プログラムおよびデグレート防止支援方法に関する。
従来の技術においては、データの表示や統計、演算等の様々な機能を実現するためのデータ処理を行う情報システムにおいては、顧客に対して情報システムの製品を納品して設置し、顧客の要望通り、情報システムが稼動し始めたとしても、その稼動の開始後、その情報システムを構成するための内部のプログラムが永続的に不変であり続けるとは限らない。
ユーザのビジネス内容や用途、作業内容の変化に伴い、情報システムの機能を追加する要求、新しいバージョン等への仕様変更の要求等が発生し、それに応じてプログラムを修正することは多々発生することになり、また、動作上で不具合が見つかった場合にも同様にプログラムを修正する必要が発生する。
そのようなシステムの修正においては、プログラムの構成上、修正要求の直接の対象ではないが、その修正された機能やプログラムに関連して、その影響を受ける他の既存の機能のプログラムについても修正が必要になる場合があり、その修正を実施しない場合、その機能は従来通りの動作を行わなくなる所謂「デグレード」が発生する。
デグレードの発生は、システムを正常に稼動させるためにも回避しなければならない不具合であり、そのためには修正を実施したプログラムの、その修正により副次的に結果が変わる対象(影響範囲)として、他の機能やプログラムを調べる必要がある。
しかしながら、この影響範囲の調査は人的作業に拠るところが大きく、そのため「調査漏れ」といった人的ミスのリスクを伴う。それは言うまでも無く、調査漏れにより修正が行われなかった機能等でのデグレードの発生につながるため、工数をかけて影響範囲の調査漏れの防止を徹底する必要がある。システムの規模が大きくなれば調査する範囲も大きくなるためリスクも増大し、調査漏れを防止するための工数も増大する。つまるところ、影響範囲の調査においては、人員、時間といった限られたリソースで如何にして効果的に信頼性の高い調査結果を得られるかが課題となる。
このようなリスクの軽減、工数の削減を実現する手段に関しては、Java(サンマイクロシステムズ社の登録商標)言語のソースコードを解析し、その識別子(クラスのメンバ)を検索基点として指定することで、他のソースコードを含め、指定された識別子の影響範囲を特定する機能を有するコンピュータプログラム「SIMPLIA/JF
JSEARCH」(富士通株式会社の登録商標)が知られている。
JSEARCH」(富士通株式会社の登録商標)が知られている。
また、既存の機能が従来通りに動作することを確認するリグレッションテスト(回帰テスト)がある。例えば、以下の特許文献1に記載された発明では、データパターンの検証時にタイミングの微妙なずれにより正解データパターンと異なっても本来検証OKとなるべき正解データパターンと一致する場合には検証OKとするものが提案されている。
以下の特許文献2に記載された発明では、レイアウトファイルを参照して旧データ形式出力データを変換し新データ形式新出力データと新データ形式給出力データを比較して比較結果を出力するものが提案されている。以下の特許文献3に記載された発明では、コマンドが識別されると、テストデータを入力して対象とするプログラムモジュールを動作させその期待値と共に実行結果を記憶するものが提案されている。
また、現行製品としてはJava(サンマイクロシステムズ社の登録商標)言語に特化したコンピュータプログラム「SIMPLIA/JF JudgePruefer」(富士通株式会社の登録商標)、「Jtest」(テクマトリックス株式会社の登録商標)が知られている。
このように、デグレードの発生を防止支援する手段は数多く知られているが、プログラム内の修正対象のソースコードの識別子を指定して、その影響範囲を特定する方法では、ソースコードの識別子を「指定する」という人的判断・動作が伴う以上、「指定漏れ」による影響範囲の調査漏れといった人的ミスのリスクは依然として残る。システム自体の改修においては、修正対象が多数存在する場合が多いため、そのリスクは増大し、その「指定する」という人的判断・動作の作業自体の工数も無視できない。
リグレッションテストを効果的に実施するためには、修正対象の影響範囲を特定する必要がある。システムの全ての機能をテスト対象とする場合は影響範囲を特定する必要は無いが、修正対象の影響が無くテストの必要が無い機能についてもテストを実施することになるため、その分だけ余分な工数ができてしまい増大することになる。
本発明は、以上の問題点を鑑みてなされたものであり、その目的は、プログラムの修正対象の影響範囲の調査漏れを効果的に防止し、影響範囲での修正作業を支援する信頼性の高いデグレード防止支援プログラムおよびデグレード防止支援方法を提供することにある。
上記目的を達成するために、請求項1に係る発明は、修正されたプログラム内のソースコードを解析し、このソースコードの修正の影響範囲を特定することによりデグレートの発生を防止するデグレート防止支援プログラムにおいて、
ユーザの操作により指定された前記プログラムの修正前後のソースコードを比較して修正内容を含む修正対象を検出する修正検出手段と、
ユーザの操作により指定された前記修正後のソースコードの影響範囲を調査する基点となる基点フォルダに基づいて、前記修正対象から線形的に前記修正対象の影響を受ける影響内容を含む影響対象を検出する影響検出手段と、
前記修正対象および影響対象に基づいて、影響対象に対するデグレートの発生を防止するための見直し情報を生成する見直し生成手段とを備えたことを特徴とする。
ユーザの操作により指定された前記プログラムの修正前後のソースコードを比較して修正内容を含む修正対象を検出する修正検出手段と、
ユーザの操作により指定された前記修正後のソースコードの影響範囲を調査する基点となる基点フォルダに基づいて、前記修正対象から線形的に前記修正対象の影響を受ける影響内容を含む影響対象を検出する影響検出手段と、
前記修正対象および影響対象に基づいて、影響対象に対するデグレートの発生を防止するための見直し情報を生成する見直し生成手段とを備えたことを特徴とする。
また、請求項2に係る発明は、修正されたプログラム内のソースコードを解析し、このソースコードの修正の影響範囲を特定することによりデグレートの発生を防止するデグレート防止支援方法において、
ユーザの操作により指定された前記プログラムの修正前後のソースコードを比較して修正内容を含む修正対象を検出するステップと、
ユーザの操作により指定された前記修正後のソースコードの影響範囲を調査する基点となる基点フォルダに基づいて、前記修正対象から線形的に前記修正対象の影響を受ける影響内容を含む影響対象を検出するステップと、
前記修正対象および影響対象に基づいて、影響対象に対するデグレートの発生を防止するための見直し情報を生成するステップとを備えたことを特徴とする。
ユーザの操作により指定された前記プログラムの修正前後のソースコードを比較して修正内容を含む修正対象を検出するステップと、
ユーザの操作により指定された前記修正後のソースコードの影響範囲を調査する基点となる基点フォルダに基づいて、前記修正対象から線形的に前記修正対象の影響を受ける影響内容を含む影響対象を検出するステップと、
前記修正対象および影響対象に基づいて、影響対象に対するデグレートの発生を防止するための見直し情報を生成するステップとを備えたことを特徴とする。
以上、本発明にかかるデグレード防止支援プログラムおよびデグレード防止支援方法によれば、プログラムの修正対象の影響範囲の調査漏れを効果的に防止し、高い信頼性で影響範囲での修正作業を支援することが可能となる。
請求項1に係る発明によれば、修正検出手段がユーザの操作により指定されたプログラムの修正前後のソースコードを比較して修正対象を検出し、影響検出手段がユーザの操作により指定された基点フォルダに基づいて、修正対象から線形的に影響対象を検出し、見直し生成手段が修正対象および影響対象に基づいて見直し情報を生成するので、これらの検出された修正対象および影響対象を確認してプログラムの修正対象の影響範囲の調査漏れを効果的に防止することができる。また、見直し生成手段が生成した見直し情報を利用することにより、影響範囲でのデグレートの発生を防止するための修正作業を高い信頼性で支援することが可能となる。
また、請求項2に係る発明によれば、ユーザの操作により指定されたプログラムの修正前後のソースコードを比較して修正対象を検出し、ユーザの操作により指定された基点フォルダに基づいて、修正対象から線形的に影響対象を検出し、修正対象および影響対象に基づいて見直し情報を生成するので、これらの検出された修正対象および影響対象を確認してプログラムの修正対象の影響範囲の調査漏れを効果的に防止することができる。また、見直し情報を利用することにより、影響範囲でのデグレートの発生を防止するための修正作業を高い信頼性で支援することが可能となる。
以下、本発明に係るデグレード防止支援プログラムを実施するための最良の実施の形態について説明する。図1は、本実施の形態におけるデグレード防止支援プログラムを示す全体構成図である。デグレード防止支援プログラム1は、ユーザが画面操作によって後述する作業フォルダ6上の修正前ソースコードと修正後ソースコードと基点フォルダを指定するための要求入力処理部2と、要求入力処理部2により指定された修正前ソースコードと修正後ソースコードと基点フォルダの読み込み等の処理を行う要求実行処理部3と、読み込み等の処理がされた修正前ソースコードと修正後ソースコードと基点フォルダ等を格納する比較対象ソースデータ4と、修正前ソースコードと修正後ソースコードと基点フォルダに基づいて影響範囲の調査のための処理を行うデータ処理部5とから構成されている。
要求実行処理部3は、要求入力処理部2により指定された修正前ソースコードと修正後ソースコードと基点フォルダに基づいて作業フォルダ6から該当する修正前ソースコードと修正後ソースコードと基点フォルダを読み出す比較対象ソース読込処理部7と、ユーザがデグレード防止支援プログラム1の機能を実行するコンピュータ等の操作手段を用いて設定したデータ処理部5の動作に関する動作設定情報を登録する処理を行うユーザ設定登録処理部15と、このユーザ設定登録処理部15により登録された動作設定情報を格納するユーザ設定格納部16と、例えばコンピュータ等のシステム上に存在する他のプログラムとして外部からコンピュータ等に入力された外部プログラム17内のリポジトリプログラム19のソースコードと基点フォルダを読み出すリポジトリ連動処理部18と、外部プログラム17内等のソースコードの正当性や規約をチェックする規約チェックプログラム21を用いて修正後ソースコード等に対して正当性や規約をチェックする処理を行う規約チェック連動処理部20とを備えている。
ここで、リポジトリプログラム19は、プログラム内のソースコードのバージョンの管理を行う機能を有しており、このリポジトリプログラム19内にはバージョンが異なり比較対象となる複数のソースコードと、これらの複数のソースコードに関連してバージョンが異なることによる影響範囲を調査する基点となる基点フォルダが含まれている。
データ処理部5は、比較対象ソースデータ4に格納された修正前ソースコードと修正後ソースコードと基点フォルダ等に基づいてプログラムの修正の修正箇所・内容を含む修正対象を検出し抽出する処理を行う修正対象抽出処理部11と、修正対象抽出処理部11が検出した修正対象を解析して影響範囲を特定し影響対象を検出する処理を行う影響範囲解析処理部12と、修正対象や影響対象等に基づいてこれらの修正対象や影響対象等のデータをデグレードの発生を防止するように見直して変更する見直し情報を生成してコンピュータ等のディスプレイ装置に表示する処理を行う解析結果出力処理部13とを備えている。
修正対象抽出処理部11は、比較対象ソースデータ4に格納された修正前後のソースコードを比較することで、修正後ソースコードの修正箇所・内容を特定し、これらの修正箇所・内容を含む修正対象を特定する変数や処理等の識別子を抽出する機能を有する。
影響範囲解析処理部12は、修正対象抽出処理部11により抽出された識別子から修正対象の種類及び修正内容を用いて基点フォルダ下に格納されるソースコードを解析し、その修正対象の内容に係る影響範囲を特定し、この影響範囲に含まれる影響対象を検出する機能を有する。
解析結果出力処理部13は、修正対象や影響対象等に基づいてこれらの修正対象や影響対象等のデータをデグレードの発生を防止するように見直して修正する見直し情報を生成し、修正対象や影響対象、見直し情報等をユーザが容易に確認できるフォーマットに整形、または統計化、分布化する処理を行い、ディスプレイ装置に表示するために作業フォルダ6上に出力する機能を有する。また、ユーザが見直し情報等に基づいて指定した修正内容に従って、影響対象のデータを修正する処理を行う。
そして、修正対象抽出処理部11、影響範囲解析処理部12、解析結果出力処理部13は、この修正が行われた影響対象の修正後のソースコードに対してデグレード防止支援プログラム1を適用して、上述と同様の修正対象、影響対象の検出、見直し情報の生成等の処理を行う。以降、影響対象においてデグレードの発生等が無くデータの修正が不要になるまで上記処理を繰り返して行っていくようになっている。
また、修正対象抽出処理部11、影響範囲解析処理部12、解析結果出力処理部13は、ユーザ設定登録処理部15により送信されたユーザ設定格納部16内の動作設定情報に従って動作するようになっている。例えば、修正内容や影響内容のパターンを示す修正パターン、影響パターンを制限して設定された場合には、修正対象抽出処理部11、影響範囲解析処理部12がこの制限された修正パターン、影響パターンに該当する修正対象や影響対象のみを検出する。また、解析結果出力処理部13が生成した見直し情報を動作設定情報で設定された所定の条件に従って修正、削除、所定の制限を行ってディスプレイ装置に表示出力する処理を行う。
作業フォルダ6には、修正等が行われたコンピュータ等のシステム上のプログラム内に含まれるこの修正を行う前の時点の修正前ソースコードや修正を行った後の時点の修正後ソースコードと、修正等が行われたプログラムに関連するプログラムやデータ等を格納し修正後ソースコードの影響範囲を調査する基点となる基点フォルダとが含まれている。また、解析結果出力処理部13がディスプレイ装置に表示出力した解析結果出力データ14を格納するようになっている。
また、デグレード防止支援プログラム1では、外部から入力された外部プログラム17を連動することによって、デグレード防止支援プログラム1の機能が拡張されるようになっている。修正対象抽出処理部11は、リポジトリプログラム連動処理部18によりリポジトリプログラム19内のバージョンが異なる複数のソースコードが比較対象ソースデータ4に格納された際に、上述と同様の機能を行うようになっている。この場合には、異なるバージョン間で修正された内容を修正対象として処理を行う。比較対照ソース読込処理部7により作業フォルダ6から読み出された修正後ソースコードと、リポジトリプログラム連動処理部18によりリポジトリプログラム19内から読み出された修正前ソースコードとを用いても上述と同様の機能を行うようになっている。
影響範囲解析処理部12は、規約チェック連動処理部20により規約チェックプログラム21が入力された際に、修正対象の内容に係る影響範囲に含まれる影響対象を検出すると共に、この規約チェックプログラム21を用いて修正後ソースコード等に対して正当性や規約をチェックし、規約に反するソースコードを影響対象として検出するようになっている。
図2は、修正前後のソースコードにおいて検出された修正対象とこの修正対象の影響が伝播した影響対象を示すコードリストを示す説明図である。これらの修正前後のソースコードは、Java(サンマイクロシステムズ社の登録商標)言語の記法に従っているが、以降、特に記載の無い限り、ソースコードの記述は同様の扱いとする。この金融取引の実績照会機能を実装する部位の簡単なサンプルコードを示す修正前ソースコード201では、図2に示すように、73、74行目で税引前元利金を示す変数balanceの値を出力用変数xに格納し、標準出力に出力する。次に、76、77行目で元金を示す変数principalとxから利息を計算して変数yに格納し、標準出力に出力する。次に、79行目でyから税額を計算する処理を呼び出し、83、84行目で算出された税額を変数zに格納し、標準出力に出力する。以降、税引後元利金を出力する等の処理が続く処理が記述されている。
そして、ユーザから例えば仕様変更要求があり、税引前元利金の値の出力を1000円単位で行うようプログラムを修正する作業が行われ、修正後ソースコード202では、図2に示すように、73行目のみで修正がされ、税引前元利金の値の出力用変数xに関する演算処理を修正されている様子が示されている。
ここで、例えば、balanceの値が1,010,000、principalの値が1,000,000として動作検証が行われたとすると、プログラム修正前の修正前ソースコード201では、「残高」は1,010,000、「利息」は10,000、「税額」は2,000となり、プログラム修正後の修正後ソースコード202では、「残高」は1,010、「利息」は-998,990、「税額」は-199,798となることが分かる。プログラムの修正によって、仕様変更要求どおり、税引前元利金の値は1000円単位で出力されるようになったが、この修正対象としての税引前元利金の影響を受けて、利息や税額の出力に不具合が生じている。これがデグレードであり、誤った利息や税額の出力を防止するために見直し等を行うことが必要となっている。
利息は税引前元利金の値の出力用変数xから計算されるため、xに関する演算処理の修正の影響を受けるが、その影響を吸収すべく単位変換等の対応を行わなかったためである。同様に、税額は利息の不具合の影響を受けたためである。73行目の税引前元利金の値の出力に関するプログラム修正は、76行目の利息の計算に影響し、83行目の利息が受けた影響は税額の計算に影響し、税額が受けた影響は以降の処理に影響するというように、修正前ソースコード201の73行目と修正後ソースコード202の73行目における修正前後のソースコードの相違行での修正対象を基点として、プログラム修正の影響は階層的、線形的に伝播するため、プログラム量が増大すれば影響範囲は広範囲となり、デグレードの発生を防止するために、その影響範囲をしっかりと認識し対応を行うことが必要となっている。
図3は、修正前後のソースコード間における相違行を示すコードリストを示す説明図である。修正内容として、図3に示すように、修正前ソースコード301の75、76行目間と修正後ソースコード302の76行目において新規の演算の追加がされ、修正前ソースコード301の76行目と修正後ソースコード302の78行目において既存の演算の変更がされ、修正前ソースコード301の79行目と修正後ソースコード302の79、80行目間において既存の呼出の削除がされていることが示されている。
修正対象を示す識別子は、演算結果を格納する変数として修正後ソースコード302の76行目のp、78行目のyとなり、呼び出される処理として修正前ソースコード301の79行目のdisplayTaxとなることが示されている。このように、修正前後のソースコード301、302を比較し、相違行を検出することで、変数、処理等の修正対象と修正内容を示す追加、変更、削除等の修正パターンが認識できることが示されている。
図4、図5、図6は、修正前後のソースコードを比較することで抽出された修正対象と修正対象の修正での処理内容によって9つに分類された修正パターンを示すコードリストを示す説明図である。修正内容401では新規の演算が追加されており、修正後ソースコード13行目の修正対象の変数radの修正パターンは「演算追加」である。修正内容402では既存の演算が変更されており、修正後ソースコード23行目の修正対象の変数areaの修正パターンは「演算変更」である。修正内容403では既存の演算が削除されており、修正前ソースコード33行目の修正対象の変数cirの修正パターンは「演算削除」である。
修正内容404では新規の応答が追加されており、修正後ソースコード43行目の修正対象の変数ansの修正パターンは「応答追加」である。修正内容405では既存の応答が変更されており、修正後ソースコード53行目の修正対象の変数ansの修正パターンは「応答変更」である。修正内容406では既存の応答が削除されており、修正前ソースコード63行目の修正対象の変数keyの修正パターンは「応答削除」である。
修正内容407では新規の呼出が追加されており、修正後ソースコード73行目、83行目、93行目の修正対象の応答を返さない処理regist、応答を返し変数に格納される処理calc、応答を返し別の応答として返される処理calcの修正パターンは「呼出追加」である。修正内容408では既存の呼出が削除されており、修正前ソースコード103行目、113行目、123行目の修正対象の応答を返さない処理delete、応答を返し変数に格納される処理find、応答を返し別の応答として返される処理findの修正パターンは「呼出削除」である。修正内容409では既存の引数の変更されており、修正後ソースコード133行目、143行目、153行目の修正対象の応答を返さない処理regist、応答を返し変数に格納される処理calc、応答を返し別の応答として返される処理calcの修正パターンは「引数変更」である。
また、修正対象の影響の伝播には4つのパターンがあり、その内3つのパターンは修正パターン「演算変更」「応答変更」「引数変更」と同様である。例えば、上述の図2の修正後ソースコード202において、73行目の税引前元利金の値の出力用変数xに関する演算処理の修正の影響を受ける76行目の利息計算の演算処理は既存の演算の変更と見なすことができ、この影響対象の変数yの影響パターンは「演算変更」となる。79行目の変数yの影響を受ける税額出力の呼出処理は既存の引数の変更と見なすことができ、影響対象の処理displayTaxの影響パターンは「引数変更」となる。修正対象の影響を受ける応答処理は既存の応答の変更と見なすことができ、影響対象は応答を受ける呼出元の変数、影響パターンは「応答変更」となる。これら3つの影響パターンは、修正パターンと同等であることから、影響対象は、修正対象と同様に、他に影響を及ぼすようになっている。
そして、残りの1つのパターンとは、他の影響は受けるが他に影響を及ぼさないパターンであり、影響対象は修正対象そのもの、影響パターンは「伝播停止」となっている。以上の図2、図3、図4で述べた、修正前後のソースコードの比較による修正対象の抽出、修正パターンの特定の方法、影響伝播のメカニズム、修正パターンと影響パターンの同等性を利用した影響範囲の特定の方法が本発明の特徴である。
図8、図9は、修正パターンを詳細化して判別するための表を示す説明図である。修正パターンは他に影響を及ぼす修正内容であり、図8、図9に示すように、修正パターンを特定する相違行の内容は26種類あることが示されている。修正対象及び修正パターンは、修正前後のソースコード間の相違行における修正前のソースコードの内容及び修正後のソースコードの内容から特定できるようになっている。図8、図9では、ソースコードの内容の理解を助けるためのチェック欄を設けており、ソースコードの内容で処理内容が演算、応答、呼出である場合は該当する箇所に「○」、そうではない場合は「-」を表示している。また、修正前後で識別子変数、処理の名称に同一性が見られる場合は該当する箇所に「○」、見られない場合は「-」を表示している。また、演算処理と応答を返す呼出処理のコードを区別するため、演算処理のコードは「f.a.o.」(four arithmetic operations:四則演算)と表示している。
例えば、項番1では、修正前ソースコードのコード記述は無し、修正後ソースコードのコード記述は演算処理、識別子名の同一性は見られない修正内容を表しており、その場合の修正対象は修正後ソースの変数v、修正パターンは「演算追加」に特定されることが表示されている。また、項番15は、修正前ソースコードのコード記述は応答を返さない呼出処理、修正後ソースコードのコード記述は応答を返さない呼出処理、識別子名の同一性は処理名に見られる修正内容を表しており、その場合の修正対象は修正後ソースコードの処理p、修正パターンは「引数変更」に特定されることを表している。また、項番26は、修正前ソースコードのコード記述は呼出処理が直接指定された応答処理、修正後ソースコードのコード記述は呼出処理が直接指定された応答処理、識別子名の同一性は見られない修正内容を表しており、その場合の修正対象は修正前ソースコードの処理p1と修正後ソースコードの処理p2、修正パターンはそれぞれ「呼出削除」と「呼出追加」に特定されることを表している。
図10、図11、図12、図13は、影響パターンを詳細化して判別するための表を示す説明図である。修正対象を使用した処理が影響の伝播を引き起こしており、修正パターン毎にその種類は特定されるが、図10、図11、図12、図13に示すように、影響パターンを特定する修正パターンと影響伝播の組み合わせは49種類あることが示されている。影響対象及び影響パターンは、この修正パターンと影響伝播の組み合わせから特定できるようになっている。図10、図11、図12、図13はその対応関係を表示している。
例えば、修正パターンが「演算追加」である修正対象の影響の伝播は項番1〜4で示すように4種類あり、これに該当する箇所を検索し、修正対象を使用した四則演算が行われている場合は、影響対象はその演算結果を格納する変数、影響パターンは「演算変更」に特定されることを表している(項番1)。また、上述の図2の修正後ソースコード202を例に取れば、73行目の修正対象は変数xとなり、修正パターンは「演算変更」であり、影響対象は76行目のこの変数xを使用した四則演算の結果を格納する変数yとなり、図10の項番5に示すように、影響パターンは「演算変更」に特定される。更に影響の伝播を追跡すると、2次的影響対象は79行目のこの変数yが引数に指定される処理displayTaxとなり、図10の項番7に示すように、影響パターンは「引数変更」に特定され、3次的影響対象は83行目のこの処理displayTax内で2次的影響対象の変数yの値である引数argを使用した四則演算の結果を格納する変数zとなり、図13の項番46に示すように、影響パターンは「演算変更」に特定される。
図14、図15は、修正・影響パターンと見直し情報との対応関係を詳細化して示した表を示す説明図である。見直し情報には、修正パターンと影響パターンの組み合わせから影響対象に注意を喚起し、ソースコードの妥当性や必要性を見直す契機となる内容の情報が含まれている。
例えば、図2の修正後ソースコード202では、76行目の修正パターンは「演算変更」、影響パターンは「演算変更」であり、影響対象の変数yに対して、図14の項番5に示すように、その演算の妥当性や影響元として修正対象の見直しを促すことを表している。ここでユーザがその見直しを行い、演算の妥当性や修正対象の見直しの情報を参照して変数principalの単位変換が必要であることに気付き、このことに基づいて対応を行えばデグレードの発生が防止できるようになっている。
また、79行目の1次的影響対象の影響パターン「演算変更」、2次的影響対象の影響パターン「引数変更」から、2次的影響対象の処理displayTaxに対して、図14の項番7に示すように、引数に修正対象の影響が伝播していることを喚起している。83行目の2次的影響対象の影響パターン「引数変更」、3次的影響対象の影響パターン「演算変更」から、3次的影響対象の変数zに対して、図15の項番27に示すように、その演算の妥当性の見直しを促すことを表している。
図16は、解析結果出力データ14において修正対象等の影響範囲の画面レイアウトを示す説明図である。比較対象データ901ではユーザに指定された修正前ソースコード、修正後ソースコード、基点フォルダが表示されている。修正対象情報一覧902では修正対象に関する情報の一覧表示されている。影響対象情報一覧903では修正対象毎の影響対象情報が一覧表示されている。
続いて、本実施の形態におけるデグレード防止支援プログラム1の動作について、図7に示すフローチャートを用いて詳細に説明する。まず、ユーザがコンピュータ等の操作手段を用いてデグレード防止支援プログラム1を起動させ、要求入力処理部2により、修正等を行ったプログラム内の修正前ソースコード、修正後ソースコード、基点フォルダを処理対象として設定すると(ステップ501)、デグレード防止支援プログラム1は比較対象ソース読込処理部7によって作業フォルダ6上の修正前後の各プログラム等が格納されたソース格納部8から、修正前ソースコード、修正後ソースコード、基点フォルダを読み出し、比較対象ソースデータ4に格納する処理を行う。
またここで、リポジトリプログラム連動処理部18により外部プログラム17を連動し、リポジトリプログラム19内のバージョンが異なる2つのソースコードと基点フォルダが比較対象ソースデータ4に格納された際には、これらのバージョンが異なる2つのソースコードを、例えば古いバージョンのソースコードを修正前ソースコード9、新しいバージョンのソースコードを修正後ソースコード10として処理を行う。
次に、デグレード防止支援プログラム1は、修正対象抽出処理部11により修正前ソースコード9、修正後ソースコード10を比較しこれらのソースコード間の相違行を抽出する処理を行う(ステップ502)。比較対象ソースデータ4から修正前ソースコード9、修正後ソースコード10を読み出し、これらのソースコード間の対応する各行を先頭部分から互いに比較し、内容が一致せず異なる行を相違行として抽出し、図示しないRAMに格納する処理を行う。または、相違行にマーキングをする処理を行う。
次に、デグレード防止支援プログラム1は、RAMに格納した相違行のデータのうちソースコードの先頭部分側に位置する先頭部分の相違行を検索して解析の対象に設定し、フォーカスする処理を行う(ステップ503)。
次に、デグレード防止支援プログラム1は、先頭部分の相違行に対して解析を行い、修正対象等を特定する処理を行う(ステップ504)。修正前ソースコード9、修正後ソースコード10間の相違行の修正内容を解析して修正対象を特定し、この修正対象を示す識別子に基づいて図8、図9に示す表を参照して、修正パターンを特定する処理を行う。
次に、デグレード防止支援プログラム1は、相違行においてこれらの特定した修正対象、修正パターンのデータをRAMに格納する処理を行う(ステップ505)。
次に、デグレード防止支援プログラム1は、影響範囲解析処理部12によりステップ501で指定された基点フォルダ下に格納されたソースコードを解析して修正対象の影響を受けた影響対象を検出する処理を行う(ステップ506)。RAMに格納された修正対象を示す識別子に基づいて、基点フォルダ下に格納された各ソースコードの文字列の検索等を行い、ソースコード内にこの識別子を用いて演算、応答、呼出等の処理が行われ、影響対象が含まれているか否かを検出する処理を行う。
この影響対象が含まれているか否かを検出する処理では、修正対象を示す識別子を基点(ルート)として、線形探索により、基点フォルダ下で階層的にソースコードの検索を行っていき、この識別子を用いて処理を行う影響対象(ノード、リーフ)を検出して、修正対象の影響範囲の階層構造(ツリー)データを作成する処理も同時に行われる。階層構造データ、即ちツリーのルートに修正対象の情報(識別子、行番号、修正パターン)を保持し、ツリーのノードやリーフに影響対象の情報(識別子、行番号、影響パターン、レベル、見直し内容)を保持して1つのツリー(1つの修正対象に関する影響範囲)を示す階層構造データを作成するようになっている。
また、ここでデグレード防止支援プログラム1は、規約チェック連動処理部20により規約チェックプログラム21が入力されている場合には、同時に規約チェックプログラム21を用いて修正対象に対して正当性や規約のチェックを行い、チェックした結果、規約に反する修正対象を影響対象として検出する処理を行う。
次に、デグレード防止支援プログラム1は、各ソースコードの文字列の検索等を行った結果、影響対象が検出されたか否かを判定する処理を行う(ステップ507)。影響対象が検出されない場合には(ステップ507のNO)、相違行を先頭部分から1つ順番毎に切り換えて、この切り替えた相違行を解析の対象に設定し、フォーカスする処理を行う。そして、このフォーカスした相違行のデータに対して、ステップ503以降の処理を反復して繰り返し実行する。
次に、デグレード防止支援プログラム1は、影響対象が検出された場合には(ステップ507のYES)、影響対象の影響パターンを特定する処理を行う(ステップ508)。この検出された影響対象を解析しこの影響対象を示す識別子や、影響を及ぼした修正対象、修正パターン等のデータに基づいて、図10、図11、図12、図13に示す表を参照して、影響パターンを特定する処理を行う。
次に、デグレード防止支援プログラム1は、これらの特定した影響対象、影響パターンのデータをRAMに格納する処理を行う(ステップ509)。
次に、デグレード防止支援プログラム1は、修正パターン、影響パターンに基づいて影響対象を見直す見直し内容を特定する処理を行う(ステップ510)。RAMに格納された修正対象、修正パターン、影響対象、影響パターン等のデータに基づいて、図14、図15に示す表を参照して、影響対象に対して、デグレードの発生を防止するように見直して修正するための見直し情報を生成する処理を行う。例えば、図14、図15に示す表を参照して、修正パターンが「演算追加」であり、影響パターンが「応答変更」である場合には、修正対象の影響を受けて誤った数値で処理を行うデグレードの発生を防止するために、影響対象を見直す見直し内容として影響元、追加変数の新規性、応答の妥当性、定義型等を見直す旨を指示する見直し情報を生成する。
次に、デグレード防止支援プログラム1は、この生成した見直し情報のデータをRAMに格納する処理を行う(ステップ509)。
次に、デグレード防止支援プログラム1は、影響範囲解析処理部12によりステップ501で指定された基点フォルダ下に格納されたソースコードを解析して、ステップ507で検出した影響対象についてステップ506以降の処理を繰り返して実行していき、この影響対象の副次的影響を受けた影響対象を更に繰り返して検出していく処理を行う。
以降、影響対象が検出されなくなるまで以上のステップ506〜511の処理を繰り返して実行することによって、1つの修正対象に関する影響範囲を特定する。このようにして、基点フォルダ下に格納されたソースコードを解析して修正対象から線形的に影響対象を検出する処理を行う。影響対象が検出されなくなるまで以上のステップ506〜511の処理を繰り返して実行し、1つの修正対象に関する影響範囲が特定した場合には、相違行を先頭部分から1つ順番毎に切り換えて、この切り替えた相違行を解析の対象に設定し、フォーカスする処理を行う。そして、このフォーカスした相違行のデータに対して、ステップ503以降の処理を反復して繰り返し実行する。
以上の処理を全て実行した結果、全ての相違行の修正対象に対して漏れなく影響範囲が特定された際には、影響範囲の解析結果は各修正対象を基点としたツリーの集合体(フォレスト)となり、ユーザの操作手段の操作に応じて、RAMに格納された修正対象や影響対象、見直し情報等のデータをユーザが容易に確認できるフォーマットに整形、または統計化、分布化する処理を行い、ディスプレイ装置に表示するために作業フォルダ6上に解析結果出力データ14として出力する。そして、この解析結果出力データ14をディスプレイ装置に画面表示する。
以上のように、本実施の形態におけるデグレード防止支援プログラム1では、修正対象抽出処理部11により修正前ソースコード9、修正後ソースコード10を比較しこれらのソースコード間の相違行を抽出する処理を行い、基点フォルダ下のソースコードを解析して影響対象を検出する処理を行う。そして、影響対象が検出された場合には影響パターンを特定して、影響対象に対して、デグレードの発生を防止するための見直し情報を生成する処理を行う。基点フォルダ下のソースコードを解析して修正対象から線形的に影響対象を検出する処理を繰り返し実行し、1つの修正対象に関する影響範囲が特定する。
このため、従来の技術では、影響範囲の特定にあたり、修正対象を人為的に判断・指定していたため、「指定漏れ」といった人為的ミスによる影響範囲の調査漏れのリスクがあったが、デグレード防止支援プログラム1では修正前後のソースコードを比較することにより、修正対象を機械的に判断・指定するため、工数をかけること無く、修正対象の影響範囲の調査漏れによるデグレードの発生を効果的に防止することができる。
また、修正パターンと影響パターンから全ての影響対象に対して、デグレードの発生を防止するための見直し情報を生成することによって、高い信頼性で影響対象の修正作業を効果的に支援し、影響対象への誤った対応によるデグレードの発生を防止支援することができる。
更に、外部から入力された外部プログラム17に対しても、リポジトリ連動処理部18によりバージョンの異なるソースコードを比較対象ソースデータ4に格納し、同様に以上の処理を行っていくため、例えば開発チーム内においてリポジトリプログラム19上で共同利用されるソースコードを、コンピュータ等の作業フォルダ6上にコピーする作業を行うことなく、デグレード防止支援プログラム1でのデータ処理が可能となる。
(他の実施の形態)
上述の実施の形態において、外部プログラム17は、外部からデグレード防止支援プログラム1を実行するコンピュータ等に入力されているが、CD−ROM等の外部記録媒体により入力されるまたはLANまたはインターネット等のネットワークを介して、ネットワーク上に設置されたサーバ等から送受信を行って入力されていても良い。
上述の実施の形態において、外部プログラム17は、外部からデグレード防止支援プログラム1を実行するコンピュータ等に入力されているが、CD−ROM等の外部記録媒体により入力されるまたはLANまたはインターネット等のネットワークを介して、ネットワーク上に設置されたサーバ等から送受信を行って入力されていても良い。
また、上述の実施の形態において、ユーザがコンピュータ等の操作手段を用いて要求入力処理部2により、修正等を行ったプログラム内の修正前ソースコード、修正後ソースコード、基点フォルダを処理対象として設定するとデグレード防止支援プログラム1の動作が行われるが、これに限られず、プログラムの修正等が行われると自動的にデグレード防止支援プログラム1が動作し、プログラム内の全ての修正前ソースコード、修正後ソースコード、基点フォルダに対して処理を行うようにしても良い。
1 デグレード防止支援プログラム
2 要求入力処理部
3 要求実行処理部
4 比較対象ソースデータ
5 データ処理部
6 作業フォルダ
7 比較対象ソース読込処理部
8 ソース格納部
9 修正前ソースコードデータ
10 修正後ソースコードデータ
11 修正対象抽出処理部
12 影響範囲解析処理部
13 解析結果出力処理部
14 解析結果出力データ
15 ユーザ設定登録処理部
16 ユーザ設定格納部
17 外部プログラム
18 リポジトリプログラム連動処理部
19 リポジトリプログラム
20 規約チェックプログラム連動処理部
21 規約チェックプログラム
901 比較対象データ
902 修正対象情報一覧
903 影響対象情報一覧
2 要求入力処理部
3 要求実行処理部
4 比較対象ソースデータ
5 データ処理部
6 作業フォルダ
7 比較対象ソース読込処理部
8 ソース格納部
9 修正前ソースコードデータ
10 修正後ソースコードデータ
11 修正対象抽出処理部
12 影響範囲解析処理部
13 解析結果出力処理部
14 解析結果出力データ
15 ユーザ設定登録処理部
16 ユーザ設定格納部
17 外部プログラム
18 リポジトリプログラム連動処理部
19 リポジトリプログラム
20 規約チェックプログラム連動処理部
21 規約チェックプログラム
901 比較対象データ
902 修正対象情報一覧
903 影響対象情報一覧
Claims (2)
- 修正されたプログラム内のソースコードを解析し、このソースコードの修正の影響範囲を特定することによりデグレートの発生を防止するデグレート防止支援プログラムにおいて、
ユーザの操作により指定された前記プログラムの修正前後のソースコードを比較して修正内容を含む修正対象を検出する修正検出手段と、
ユーザの操作により指定された前記修正後のソースコードの影響範囲を調査する基点となる基点フォルダに基づいて、前記修正対象から線形的に前記修正対象の影響を受ける影響内容を含む影響対象を検出する影響検出手段と、
前記修正対象および影響対象に基づいて、影響対象に対するデグレートの発生を防止するための見直し情報を生成する見直し生成手段とを備えたことを特徴とするデグレート防止支援プログラム。 - 修正されたプログラム内のソースコードを解析し、このソースコードの修正の影響範囲を特定することによりデグレートの発生を防止するデグレート防止支援方法において、
ユーザの操作により指定された前記プログラムの修正前後のソースコードを比較して修正内容を含む修正対象を検出するステップと、
ユーザの操作により指定された前記修正後のソースコードの影響範囲を調査する基点となる基点フォルダに基づいて、前記修正対象から線形的に前記修正対象の影響を受ける影響内容を含む影響対象を検出するステップと、
前記修正対象および影響対象に基づいて、影響対象に対するデグレートの発生を防止するための見直し情報を生成するステップとを備えたことを特徴とするデグレート防止支援方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006014563A JP2007199800A (ja) | 2006-01-24 | 2006-01-24 | デグレート防止支援プログラムおよびデグレート防止支援方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006014563A JP2007199800A (ja) | 2006-01-24 | 2006-01-24 | デグレート防止支援プログラムおよびデグレート防止支援方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2007199800A true JP2007199800A (ja) | 2007-08-09 |
Family
ID=38454400
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006014563A Pending JP2007199800A (ja) | 2006-01-24 | 2006-01-24 | デグレート防止支援プログラムおよびデグレート防止支援方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2007199800A (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2019153000A (ja) * | 2018-03-01 | 2019-09-12 | 富士通株式会社 | 特定プログラム、特定方法、及び情報処理装置 |
JPWO2021124464A1 (ja) * | 2019-12-17 | 2021-06-24 | ||
JP2021140433A (ja) * | 2020-03-04 | 2021-09-16 | 株式会社日立製作所 | 開発支援方法、開発支援装置及びプログラム |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS6432337A (en) * | 1987-07-29 | 1989-02-02 | Hitachi Ltd | Method for instructing influence of program change |
JPH07281883A (ja) * | 1994-04-06 | 1995-10-27 | Fujitsu Ltd | プログラム修正支援装置及び方法 |
JPH08292881A (ja) * | 1995-04-24 | 1996-11-05 | Nec Corp | プログラム影響範囲表示装置 |
-
2006
- 2006-01-24 JP JP2006014563A patent/JP2007199800A/ja active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS6432337A (en) * | 1987-07-29 | 1989-02-02 | Hitachi Ltd | Method for instructing influence of program change |
JPH07281883A (ja) * | 1994-04-06 | 1995-10-27 | Fujitsu Ltd | プログラム修正支援装置及び方法 |
JPH08292881A (ja) * | 1995-04-24 | 1996-11-05 | Nec Corp | プログラム影響範囲表示装置 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2019153000A (ja) * | 2018-03-01 | 2019-09-12 | 富士通株式会社 | 特定プログラム、特定方法、及び情報処理装置 |
JP6992599B2 (ja) | 2018-03-01 | 2022-01-13 | 富士通株式会社 | 特定プログラム、特定方法、及び情報処理装置 |
JPWO2021124464A1 (ja) * | 2019-12-17 | 2021-06-24 | ||
WO2021124464A1 (ja) * | 2019-12-17 | 2021-06-24 | 三菱電機株式会社 | 経路決定装置及び経路決定プログラム |
JP6991415B2 (ja) | 2019-12-17 | 2022-01-12 | 三菱電機株式会社 | 経路決定装置及び経路決定プログラム |
JP2021140433A (ja) * | 2020-03-04 | 2021-09-16 | 株式会社日立製作所 | 開発支援方法、開発支援装置及びプログラム |
JP7296904B2 (ja) | 2020-03-04 | 2023-06-23 | 株式会社日立製作所 | 開発支援方法、開発支援装置及びプログラム |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7788640B2 (en) | Using code analysis to generate documentation | |
KR101051600B1 (ko) | 아밥 소스코드의 코드 검사를 수행하는 코드검사 수행시스템 | |
JP2004139304A (ja) | ハイパーテキスト検査装置および方法並びにプログラム | |
US10261884B2 (en) | Method for correcting violation of source code and computer readable recording medium having program performing the same | |
JP5845888B2 (ja) | ソフトウェア修正装置、ソフトウェア修正システム、ソフトウェア修正方法、及び、ソフトウェア修正プログラム | |
Lee et al. | Automatic detection and update suggestion for outdated API names in documentation | |
Nguyen et al. | Generating and selecting resilient and maintainable locators for Web automated testing | |
KR101696694B1 (ko) | 역추적을 이용한 소스 코드 취약점 분석 방법 및 장치 | |
JP2008299723A (ja) | プログラム検証方法、プログラム検証装置 | |
Brisset et al. | Erratum: Leveraging flexible tree matching to repair broken locators in web automation scripts | |
JP5045517B2 (ja) | 設計書作成プログラム、該装置、及び該方法 | |
JP2007199800A (ja) | デグレート防止支援プログラムおよびデグレート防止支援方法 | |
Tan et al. | Detecting outdated code element references in software repository documentation | |
US20060161806A1 (en) | Method and system of configuring a software program | |
US20050086647A1 (en) | Apparatus for and method of creating computer program specifications, and computer program product | |
JP6451417B2 (ja) | デバッグ支援装置、デバッグ支援システム、デバッグ支援方法、および、デバッグ支援プログラム | |
JP6588988B2 (ja) | 業務プログラム生成支援システムおよび業務プログラム生成支援方法 | |
JP2008112363A (ja) | 文書処理装置および文書処理プログラム | |
US20120109900A1 (en) | Marketization analysis | |
CN111158973A (zh) | 一种web应用动态演化监测方法 | |
JP2008117066A (ja) | ソフトウェア開発支援方法、ソフトウェア開発支援装置、ソフトウェア開発支援プログラム、及び計算機システム | |
CN109582582A (zh) | 一种Web界面的自动化测试方法及系统 | |
JP5670156B2 (ja) | テスト結果照合システム、方法、及びプログラム | |
JP2016057715A (ja) | 図形式プログラム解析装置 | |
CN113886216B (zh) | 接口测试和工具配置方法、装置、电子设备和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20080627 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20100622 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20110412 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20110809 |