設計の話

このエントリは下書き以前の構想レベルなので注意。

設計
設計とはプログラミングの大枠である。部品が揃っていれば設計レベルのソースコードがそのまま動作するはず。もし動かなければ処理系やフレームワークが腐っていないかどうか確認しておけ。
設計書
設計書は設計を解説するものであり、設計をそのまま表現するものではない。そもそも日常言語で設計そのものを書くと冗長かつ曖昧になるだけで役に立たない。
仕様
仕様とは要求仕様と外部(設計)仕様、内部(設計)仕様がある。三者は名前が似ているだけでほとんど別のものだ。
要求仕様
要求仕様とは「何がしたいか」である。その要求を満たしていれば解法はどんなものでも構わない。ソフトウェアで解決すれば運用経費が安く済むことが多いというだけ。アルバイトを雇った方が安いならそれでもOK。
外部仕様
外部仕様とは「何をするか」である。基本的に入力(引数だけとは限らない!)に対する出力(返値だけとは限らない!)によって定義される。インターフェースさえ適切ならば実装はどんなものでも構わない。サーチエンジンはやぶさ自然文検索の先駆けとして認めよう。
内部仕様
内部仕様とは「どうするか」である。日常言語で表現しようという方が間違い。