methaneのブログ

このブログに乗せているサンプルコードはすべてNYSLです。

ソフトウェア開発をビル建設に例えるな

「現在のソフトウェアは規模が増大しています。建築で言えば、今までは一軒家の建築だったから腕の良い大工さんの能力でやっていけたけど、高層ビルは腕の良い大工さんが居るだけでは建てられませんよね。だから工学的な手法が必要なのです。」

えっと、理系の人間が、理系の人間に対して行う説明じゃないね。「A=>BだからA'=>B'である」と言いたかったら、AとBの関係がA'とB'の関係と同一であることをまず証明しないと。

ソフトウェア開発において、「建築」に相当する作業は、ビルド。英語ではどっちもbuild。どっちも、すでにちゃんとした設計書がある状況で、それを実際のモノにする作業。
「一軒家の建て方と高層ビルの建て方が違う」は、「小さいプログラムと大きいソフトウェアのビルド方法は違う」に相当する。小さいときはコンパイラを直接起動したらいいし、ちょっと大きくなったらmakefileを書けばいいし、もっと大きくなったらAutotools使うかAnt使うかMSBuildつかうかSCons使うかしたら良い。

逆に、プログラミング(=大まかな設計〜コーディング〜テスト)に相当するのは、建物の設計。
高層ビルの設計は、設計規模に比例した人数を集めても実現できない。高層ビルの設計ができる能力のある人と設備が必要で、期間も一軒家とは比べものにならないくらい長くとらないと行けない。もちろん、基本構造を設計する人とフロアの設計をする人は分業できるから、分業できる範囲で人数を増やすのは良いこと。一軒家と違って分業が前提だから、構造設計は構造設計の専門家が担当して、フロアの設計はやっぱりその専門家が担当すると良い。

冒頭のたとえ話は、自称ソフトウェア工学屋という詐欺師が、理系の理論的思考能力を持たない管理者をだますためのたとえ話でしかない。