システムの施工って?

システムの設計と施工を分離する」というエントリがあった。タイトルだけで頭が痛くなりそうなエントリである。

工学的な設計文書と呼べるのはソースコードだけ

ソフトウェア・システムの開発において、建設における施工に相当するフェーズは通常存在しない。建設において設計と施工とが分離できるのは、あるレベル以上の技術を持つ者であれば誰が作っても同じ物が作れる設計文書が存在するからである。だが、ソフトウェア・システムの開発においては、通常そのような文書はソースコードだけである。「工学的な設計基準を本当に満足しているソフトウェア・ドキュメントというものは、ソースコード・リスティングだけ」というのが、通常のソフトウェア・システムの開発である。

仕様記述言語を使い、工学的な設計基準を本当に満足しているソフトウェア・ドキュメントを別途記述することは可能だが、通常のソフトウェア・システムの開発においては行われない。なぜならば、仕様記述言語で工学的な設計基準を本当に満足しているソフトウェア・ドキュメントを記述するのは、プログラミング言語ソースコードを書くのと大差ない手間がかかるからである。仕様記述言語を理解できる技術者は、プログラミング言語を理解できる技術者よりはるかに少なく、人材の確保が難しいという問題もある。また、ほとんどの技術者ですら理解できない仕様記述言語で記述されたドキュメントを読んでも、普通の人には仕様が妥当か全く評価できない。こうした理由で、人命にかかわるようなシステムの開発などの一部の例外を除いて、仕様記述言語は使われていない。

「設計と施工を分離する」のであれば、あるレベル以上の技術を持つ者であれば誰が作っても同じ物が作れる、工学的な設計基準を本当に満足している設計文書を書かなければならない。だが、それを満たす設計文書は、通常ソースコードだけである。