設計の難題
https://gyazo.com/1f586b996efb9bd370bde03eb4f607b5
from Code Complete 第2版 完全なプログラミングを目指して を参考
ソフトウェア設計にはさまざまな難題がある
やっかいな問題:タコマ海峡橋の例
タコマ橋の崩壊
破壊の原因は、横風によってつり橋が自励振動したためである。ただしこの原因は、無知によるものではなく、未知による。実際、振動現象が理解できないので、風洞模型実験がおこなわれている最中に事故が起こった。
無知による設計ミスではなく、その時点では知りようがない未知の原因によって崩壊した
「それを解決することによって、あるいはその一部を解決することによって、初めて明確に定義できるようになる問題である」をやっかいな問題と呼ぶ
設計はルーズなプロセス
設計は妥協と優先順位の産物
設計には制限がつきもの
設計は非決定論的である
3人に設計を任せると、それぞれ違う設計をする
設計はヒューリスティック(発見的)なプロセスである
非決定論的なので、試してみるやり方になる
設計は創発的である
進化的、イテレーションを繰り返して改善されるような性質
Design It!やレガシーコードからの脱却、進化的アーキテクチャ等でも同様のコンセプトが伺える