google-code-prettify

2009-08-07

ソフトウェアの設計とは、ドキュメントを書くことではない

ソフトウェアの設計の目的は、当たり前だが、よい設計をすることが目的である。
決して良いドキュメントを作ることではないし、良いドキュメントを作ることが目的となってはいけない。

良い設計をするためには、様々なドキュメントを作成する必要がある場合もある。
シーケンス図、ステートチャート、関数仕様書、などなど。
しかしこれらは、良い設計を行うために必要となった場合に作成するものだ。
「設計時には、○○図と○○図を作成すること」
などとルール化を行うのは、以下の理由から弊害がある。
  • 不要なドキュメントまで作成してしまう可能性がある。
  • ルールに明記したドキュメントを作ればOKという思考停止に陥り、本当に必要な設計が行われない可能性がある。

また、設計が終わるまで一切コードを書いてはいけない、というのもよくある誤解である。

設計図を書くのも、(擬似)コードを書くのも、いわばシミュレーションを行っているようなものだ。それぞれのシミュレーション方法によって、検証できる範囲が異なる。
コードを書く方が容易に検証できる事を、無理に設計図で検証を行おうとするのは時間の無駄である。

---
注意:
ドキュメントによっては、設計内容を後で他人(数ヶ月後の自分を含む)に伝えるためにつくられるものもあるので、設計時に不要=作成不要、ではない。
ただその目的のドキュメントなら、実装の後に作成しても遅くはない。
どうせ、設計は変わる可能性があるのだから。

2 件のコメント:

Ryo さんのコメント...

ドキュメントに関しては、角谷さんの連載の4回目がとてもいいです。

桜井が書いていることと、本質的に同じだけどね。

http://gihyo.jp/dev/serial/01/agile/0004

コミットログはロゼッタストーンドキュメント:-)

sakurai さんのコメント...

サンキュー。読んでみます。