勘と経験と読経

略すとKKD。ソフトウェア開発やITプロジェクトマネジメントに関するあれこれ。

ソフトウェア設計を家の設計に例えると

メモ。InfoQで無料でダウンロードできる(会員登録は必要)「Domain Driven Design(ドメイン駆動設計) Quickly 日本語版」を読んでいたらこんな例えがあった。どこかで使いたい。

ソフトウエアの設計は家を構成するのに似ています。いわば全体的な展望を作る作業です。一方、コードの設計は詳細部についての作業であり、どの壁にどの絵画を掛けるのかを決めるような作業です。もちろんコードの設計はとても重要な作業ですが、ソフトウエアの設計のような基礎となる作業ではありません。ほとんどの場合、コードの設計上のミスは簡単に修正できますが、ソフトウエアの設計上の失敗を修正するには、多くのコストがかかります。絵画をもっと左側に掛けるのと、家の側面を取り壊して今までとは違うように改築するのはまったく違う作業です。
Domain Driven Design(ドメイン駆動設計) Quickly 日本語版

ソフトウェア開発は、専門家でない人がイメージするつくり方と実際の構築の仕方が異なるし、そこから様々な誤解を招きやすいものだと思っている。過去になんどか記事を書いたけれども、うまく説明する方法には工夫が必要である。