2010年3月11日木曜日

プロジェクト試論(アフォリズムによる)19

システム設計書には二つの意味がある。一つはあるべき姿の記述。もう一つは「現にそうなってしまった」事実の反映。つまりソフトウェアの設計とは、設計時においては未来の記述であり、メンテナンスにおいては過去の記述なのである。

したがってソフトウェアの設計を、ハードウェアの設計のアナロジーで捉えることは誤りである。ソフトウェアの設計はもっと柔軟で、後の変更がきく。そして実装時に創造力を発揮する余地が大きい。

実際、ソフトウェアの開発においては、常に設計よりも実装のほうが優れている。いや、むしろ設計どおりでは動かないはずのものが、実装された段階で動き出すのだ。

ここから導かれる教訓が二つある。

完璧なソフトウェア設計はありえない。(デマルコはここで誤りを犯している)

ソフトウェアの設計は実装とその結果を常に反映し続けるべきものである。

厳密に言えば、実装は終わっても設計に終わりはないのだ。コード=設計とすれば実装は完了する。しかし、コードの持つ意味は、時間とともに変化しうるから。

常識的には受け入れがたいことだが、これは真実である。

0 件のコメント: