コード解析にDFDを使う?
最近すっかり、ブログすっかりご無沙汰しておりました。なんと、6月入って初ネタとは... いかんっすね。
さて、今日のお話はリバースモデリングネタです。
このブログでは、リバースのお話するのは初めてですが、実は前から、コードを読んでアーキテクチャ解析をするところに非常に興味を持っています。(...というか、ぶっちゃけお仕事も)
2011年6月17日(金)に、派生開発カンファレンス2011というイベントがありました。この講演プログラムの2番目に、
「完全無知権プロジェクトにおける、変更要求仕様書の作成手法」
といった発表があったのです。
ここで言う”無知見”とは、派生開発元のプログラムについて知見がなく、開発ドキュメントもないような場合(例えば、外注で開発したソフトを扱う場合など)を指しています。つまり、派生開発する際のベースは、コードから読み解くしかないような場合です。
この発表では、コードを読み解く際の調査資料として、階層化DFDとAFD(*)、それとシーケンス図を用いるというものでした。
この方法では、コードから、最初に階層化DFDを作ります。
...ん?? ここで疑問が...
コードを読んで、DFDは描けるのか? コード上のオブジェクト間の関連性は、DFDになるのか??
発表資料をよく見ると、コードからデータフローを読み解き、変更要求仕様の階層化記述に使われています。
どうやら、コード上の構造を表すのではなく、コードを理解した結果の”機能”をDFDで表現したもののようです。
なんとなく、納得です。
DFDを使ったリバース方法については、XDDPの生みの親、システムクリエイツの清水さんが編み出したようです。
とっても気になる方法なので、今後も追跡してみたいと思いました。
(*) AFD:アーキテクチャ・フロー・ダイアグラム(?)
下記の本にて登場するモデル図のようです。私も、このモデル図については確認取れていません。
リアルタイム・システムの構造化分析 ~リアルタイム・システムの仕様書作成手法~
Derek J.Haltley (著), Imtiaz A.Pirbhai (著), 立田 種宏 (翻訳)