大規模ソフトウェアの効率的な理解(その3)
規模の把握
大規模ソフトウェアの理解はいろいろな観点からのアプローチがある。ソースコード一式(通常tarballと呼ばれている)を入手し、適当なディレクトリに展開する事からはじまる。tarballではなく、CVSのようなソース管理システムから直接入手する場合もある。
tar.gzというような形式の場合、$ tar xvzf XXXX.tar.gz というようなコマンドで展開する。$ cd XXXX してざっとディレクトリをながめる。通常、READMEないしINSTALLなどのファイルがあるので最初にそれを良く読む。またDocsなどというドキュメントを置いておく場所があれば、その中になにがあるかをざっと見る。
いきなりソースコードを変更するのではなく、このようにディレクトリ構造を調べたり、規模の把握をしたり、おおまかな骨格を理解するようにする。ディレクトリ構造は当該ソフトウェアの物理的構造をあらわしている。ソースコードのディレクトリ、テスト、ドキュメント、各種ツールなどなどからなる木構造になっている。
大規模ソフトウェアの森に地図もなしにいきなり飛び込むと迷子になってしまうので、ソフトウェア構造の下調べとして、規模の把握やディレクトリ構造の調査、そしてドキュメント類から名前付け規約などを調査しよう。
ソースコードの分量を知るには
$ find -type f |egrep '\.([chp](xx|pp)*|cc|hh)$'|wc -l
でファイル数が表示できる。ソースコードの行数は
$ find -type f |egrep '\.([chp](xx|pp)*|cc|hh)$'|xargs wc -l
ファイル数が多いと最後のwcのあとに、さらに
$ find -type f |egrep '\.([chp](xx|pp)*|cc|hh)$'|xargs wc -l|grep total
とする。
自分がこれから格闘しようとしているソフトウェアの正確な規模もしらないで、どのようにしてそれに取り組むのか。tarballを展開して最初にやる作業はソフトウェアの規模の確認というのは王道だと思う。小規模なソフトウェアであればたいした準備もなく格闘できるかもしれないが大規模ソフトウェアであればやはりそれなりの心構えと準備が必要である。どのくらいの装備が必要かは自らの経験とソフトウェアの規模と複雑さによる。
プログラマが感じるソフトウェアの規模と複雑さは、その人の経験とスキルにかなり依存する。新人にとっては、1万行のソフトウェアでも十分大規模に感じるだろうが、ベテランプログラマであれば小規模に感じるだろう。いずれにせよ、規模を把握して心の準備をしよう。
大規模ソフトウェア探索の旅はそれから始まる。




コメント