FreeMindを利用してプログラム解析

今日は仕事で、Oracle Developer 6iなる前時代の遺物的開発環境で作成されたアプリをメンテナンスする必要が発生し、悪戦苦闘しておりました。

基本的にはForm BuilderというGUI設計ツールで画面を作成し、そこにPL/SQLの処理コードを埋め込んでアプリが作られています。こう聞くと、なんだVisual Basicなどと同じじゃないかと思われるかもしれませんが、なにしろまだ開発環境がこなれていないころのツールのようで、使い勝手が恐ろしく悪いです。

UIはフォーム・キャンバス・ブロックなどというよくわからない階層に分かれていますし、コードもトリガーといういかにもOracleを無理やり拡張しましたという感じの名前で、UIの各所にちりばめて埋め込まれています。

最悪なのはツリー形式のナビゲーションツールからしかプログラムを見ることができず、ソースの全体を見渡すことができないことです。

こういう状態でろくなドキュメントもなく、何とかプログラムを理解しなければならない状況に追い込まれたわけですが、あちこち拾い読みしていてもなかなか頭に入りません。

そこで、プログラム構造を整理するのにFreeMindを使ってみました。上で書いたUIのフォーム・キャンバス・ブロックや、埋め込まれているトリガーのコードを階層付けてFreeMindに書き込んでいきます。主要なコードは関数名のノードを作って、そのノートにそのまま埋め込んでみました。さらにコードの呼び出し関係に応じて矢印を付けてみます。

こうしてマップを育てながら、自分が理解したことや気がついたことを色を変えてコメントとして書き込んでいくうちに、やっとプログラムの全体像が見えてきました。

少し時間はかかりましたが、頭の中だけでは処理しきれないプログラムを理解するためにはなかなかよい方法だと思いました。