ソフトウェア工学原理主義者になるな

世間には「ソフトウエア工学」が学問として存在する。先に述べた原理や原則が存在しているはずだという前提に立ち,誰でも同じ答えが出るようにすることを目指すものである。こうした学問の成果として各種の規格やモデルが完成した。例えばプロジェクト管理手法の基本体系である「PMBOK」、ソフトウエア開発体制の成熟度を測るモデルである「CMM」などがある。

PMBOK」自体は、ソフトウェア工学とは独立したもののはずだし、「成果」というより「結果」と呼ぶべきだと思うが。

これらは,エンタープライズ系のソフトウエア開発における原理・原則を議論し尽くした上で確立したものである。

「原理・原則を議論し尽くした」とは、ほど遠い。CMMへの批判は少なくないし、何度か書いているが、ソフトウェア工学自体、「ソフトウェア職人気質」の29ページにおいて、裸の王様*1の服に喩えられているほどである。インチキ同然ではないかと暗に批判されているのである。

ソフトウエア開発においてリスクを分散するための手段の1つが、工程の分割である。ウオーターフォール・モデルの考え方は、ここから来ているといえよう。システムに関するリスクはシステム設計の工程で必ず解消することとし、そのリスクが解消されない限りは次の工程には移らないという考え方である。

工程を分割しただけではリスクは分散しない。例えば、ウォーターフォールでは、プロジェクト遅延のリスクは、各工程で時間をかけるほど増大していく。各工程でかける時間が不足していてもプロジェクト遅延のリスクは増大するが、ある程度以上時間をかけても工程毎の完成度がさほど向上しないため、時間をかけたことがプロジェクト全体の遅れとなるリスクばかりが高まってしまう。

「原理や原則が存在しているはずだ」と信じるのは自由である。だが、自分が原理・原則と思っているものが、真に原理・原則だと信じることはそれとは別の話である。自分が原理・原則と思っているものが、真に原理・原則だと信じるのは、ある種の「原理主義」である。それは、狂信、盲信に近い。テロを行った「イスラム原理主義者」ほどではないにせよ、「ソフトウェア工学原理主義者」も「デスマーチ」などの形で少なくない被害をもたらしている。

*1:原題:The Emperor's New Clothes