大規模ソフトウェアの効率的な理解(その2)
ソフトウェアの規模を大体下記のような感じでわたしはとらえている。
規模 行数
小規模 10万行以内
中規模 10万〜100万行程度
大規模 100万行以上
ソフトウェアを構成する行数でおおざっぱにくくっている。あるいは開発に関与する人数によっても同様にくくれる。
規模 人数
小規模 10人以内
中規模 10人〜100人程度
大規模 100人以上
ここで見ているのはあくまでも量での視点で,質的な複雑さとか難しさは一切見ていない。いずれにせよ規模の観点からいうとLinuxカーネル(あるいは定番のOSS)というソフトウェアは大規模なソフトウェアである。そして大規模ソフトウェアを開発するのにはそれなりの難しさというか小規模なソフトウェアを開発するのとちょっと違ったテクニックを必要とする。そのようなテクニックとか開発のプロセスとかは現場で経験して徐々に身につけていく種類のものでソフトウェア工学の教科書にもあんまり載っていなかったりする。ある意味でこれは各社のソフトウェア開発の現場が持っているノウハウなわけだけれどそれ自体はシリコンバレーあたりでは明文化されてはいないがある種の共通の認識みたいなものがあったりする。その明文化されていない開発プロセスをOSSという題材を利用して明らかにしたいなあと思っているのである。
かつて、わたしはモジラの解剖というウェブのページを持っていたのだが(今は残念ながらないが、ウェブのアーカイブに残骸が残っている。文字化けするときは、Microsoft Internet Exploreの場合:表示>エンコード>日本語(シフトJIS)Mozilla Firefoxの場合:表示>文字エンコーディング>日本語(Shift_JIS))、モジラを題材に大規模ソフトウェアの理解のプロセスを記そうとした。大規模ソフトウェアの開発にはある種の定番があるのでそれを記してみたい。
注:ひらさんとの議論はどちらかというとコードリーディングという大規模ソフトウェアの理解の一部分としてわたしはとらえている。




コメント