ユースケース:影響分析

影響分析とは、変更を行う(行った)箇所がソフトウェア全体にどのような影響を与えるかを明らかにし、変更の範囲やテストの範囲を特定する分析手法のことです。
例えば、何年にも渡ってメンテナンスされたレガシーなコードや、自身が担当していないコードを修正するような場合、影響分析を行うことで、変更のコストを削減しつつ、ソフトウェアの品質を維持することができます。
ここでは、Understandを用いた実践的な影響分析の方法をご紹介します。

課題

  • 変更がどの範囲まで影響するのか分からない
  • 修正すべき箇所が漏れていたことがある
  • テストすべき箇所が漏れていたことがある

原因

コードの可読性が低い
例:何年にも渡ってメンテナンスされたレガシーなコードである

コードを理解していない、目視による確認の限界
例:自身が担当していないコードの修正を行う必要が生じた

1.修正する関数の呼び出し関係を確認する

ポイント
  • 修正対象の関数Aが依存している関数を確認
  • 修正対象の関数Aから、別の修正対象の関数への到達経路があるか確認

Understandの利用

Understandでは、Callsグラフを用いて呼び出し関係を確認します。Callsグラフでは、関数の引数、定義しているファイル名を同時に確認できます。また、呼び出し/被呼び出し関係の両方を同時に表示する Butterflyグラフを利用することもできます。


【操作方法】
  1. エンティティフィルターにて、[表示]を”Functions”へ変更し、修正対象の関数を探します。
  2. 修正対象の関数を右クリックし、[グラフィカルビュー]-[Called By]を選択します。[Called By]がグレーアウトされている場合、修正対象の関数を呼び出している関数は存在しません。
 

2.修正する関数の被呼び出し関係を確認する

ポイント
  • 修正対象の関数Aが依存している関数を確認
  • 修正対象の関数Aから、別の修正対象の関数への到達経路があるか確認

Understandの利用

Understandでは、Called Byグラフを用いて被呼び出し関係を確認します。Called Byグラフでは、関数の引数、定義しているファイル名を同時に確認できます。また、呼び出し/被呼び出し関係の両方を同時に表示する Butterflyグラフを利用することもできます。


【操作方法】
  1. エンティティフィルターにて、[表示]を”Functions”へ変更し、修正対象の関数を探します。
  2. 修正対象の関数を右クリックし、[グラフィカルビュー]-[Called By]を選択します。[Called By]がグレーアウトされている場合、修正対象の関数を呼び出している関数は存在しません。
 

3.修正する関数の呼び出し関係と、関連するグローバル変数の参照関係を確認する

ポイント
  • 修正対象の関数Aが依存している関数・変数を確認
  • 関数Aが、ある変数を利用する経路があるか確認

Understandの利用

Understandの機能を拡張したプラグイン”Calls with Global Objects”を用いて、呼び出し関係と関連するグローバル変数の関係を確認します。


【操作方法】
  1. エンティティフィルターにて、[表示]を”Functions”へ変更し、修正対象の関数を探します。
  2. 修正対象の関数を右クリックし、[グラフィカルビュー]-[Calls with Global Objects]を選択します。
 

4.修正するグローバル変数の参照位置を確認する

ポイント
  • 変数の変更によって影響を受ける直接の関数を確認

Understandの利用

情報ブラウザーを用いて、任意のグローバル変数の参照位置の一覧を確認するとともに、Object Referencesグラフを用いて、変数の参照関係を確認します。なお、情報ブラウザー上では、グローバル変数の定義ファイルや型、参照、代入関係を確認できます。


【操作方法】
  1. エンティティフィルターやエンティティロケーター、エディター上などで、グローバル変数やPublic変数を選択します。情報ブラウザーに、選択した変数の定義ファイルや型、参照、代入関係が表示されます。
  2. Object Referencesグラフを表示させる場合は、対象のグローバル変数を右クリックし、[グラフィカルビュー]-[Object References]を選択します。
 

5.修正するグローバル変数を使用している関数と、その呼び出し関係を確認する

ポイント
  • 変数の変更によって影響を受ける、直接および間接的な関数を確認

Understandの利用

Object Refs with CalledByグラフを用いて、グローバル変数を参照、値を代入している直接および間接的な関数を確認します。

【操作方法】
  1. エンティティフィルターやエンティティロケーター、エディター上などで、修正対象の関数を探します。
  2. 修正対象の関数を右クリックし、[グラフィカルビュー]-[Object Refs with CalledBy]を選択します。

ソースコード解析ツール Understandに
関するお問い合わせ

  • テクマトリックス株式会社
    東京本社

    ソフトウェアエンジニアリング事業部

    03-4405-7853

メールでのお問い合わせ
scitools-info@techmatrix.co.jp

CONTACT

製品についてやテクマトリックスについてなど、
こちらよりお気軽にお問い合わせいただけます。