概要
プログラマーが影響範囲調査を行うことは多いですが、具体的にどういう作業をしているかいまいち自分でも分からなかったので考えてみました。
サーベイ
サーベイ1
変更の影響範囲を特定するための「標準調査プロセス」の提案
スライド: https://www.juse.or.jp/sqip/workshop/report/attachs/2014/20150227-6-1.pdf
論文: https://www.juse.or.jp/sqip/workshop/report/attachs/2014/sqip6-a.pdf
まとめると、以下を行うとうまく調査できるらしいです。
- 変更要求をちゃんと理解する。
- 調査目的を明確化する。
- ソースコード理解時に、関数を幅優先探索で探索する。
- ソースコード理解時に、構造図やPADを使って理解する。
- 資料は、構造図やPADで残す。
構造図は資料を見ると、関数呼び出しのツリー構造のようです。私も調査するときは無意識にこれを作っていました。PADは、こちらによるとフローチャート的なものらしいです。
サーベイ2
システム変更を安全かつスピーディに進めるための極意とは?~CRUD表で今すぐできるコスト削減
CRUD表。横軸がテーブルで、縦軸がAPIエンドポイントで、自動生成できたら良いですね。
影響範囲調査プロセス
サーベイを参考に、影響範囲調査プロセスを考えてみました。
- 調査目的の明確化
- ソースコード理解
- 資料化
サーベイにあった変更要求の理解は、影響範囲調査プロセスの外にある気がするので除外しました。変更不可能なプログラムでも挙動を知るためだけに調査する可能性があるからです。
調査目的の明確化は文字通りです。例えば、「XXXの機能追加を検討しているが、この機能追加の工数を見積もりたいので、XXXの影響範囲を調べる」「YYYというバグ修正を行ったが、デグレ検証項目を決める必要があるので、YYYの影響範囲を調べる」などです。
ソースコード理解は文字通りです。
資料化は、再利用したり、齟齬を減らしたり、調査の妥当性を客観的に検証するためのものです。
方法論
調査目的の明確化
フォーマットを作って埋めてもらえば解決すると思います。
ソースコード理解
サーベイにあるように、幅優先探索で関数呼び出しツリー構造を作るのが良いと思います。こちらもフォーマットで解決です。
資料化
学術論文の書き方に習って、目的、方法、結果、考察、結論を書いてもらえばよいと思います。
フォーマット
- 目的
- 方法 (同じ方法で調査できるように書く)
- 結果
- 関数呼び出しツリー
- 考察
- 結論