オブジェクト指向のこころ 第12章の練習問題の解答をまとめてみる。
基礎
Alexanderは,優れた設計を特徴づけるため,「活き活きした」という言葉を使用しています.ソフトウェアの場合,どういった用語を使用するのがよいでしょうか?
堅牢で柔軟なシステムと考えると良い.
(p.196)
優れた設計を行うには,何を念頭に置いておく必要があるでしょうか?
大きな全体のコンテキストを常に念頭に置く必要がある. 森をまず考え,次に木を考える.
Alexanderは,設計を行うための最善のアプローチには「複雑化」があると示唆しています.これはどういった意味でしょうか?
まず,最も簡潔な用語(概念レベル)によって問題を捉え,その後,機能を追加し,情報の追加によって設計を複雑化していくという意味.
Alexanderにとって,パターンは何の関係を定義するものなのでしょうか?
問題領域内にある実体間の関連を定義するもの. そしてこれら実体は他のパターンが存在するためのコンテキストを定義する.
Alexanderの設計手順を述べてください.
- 問題領域内に存在するパターンの洗い出し
- コンテキストをつくるパターンの発見
- コンテキスト内への着目
- 設計の洗練
- 実装
(p.199)
応用
Alexanderは,「既存の部品を追加していくことによって自然なものを作ることとは不可能である」と述べています.これはどういった意味なのでしょうか?
Alexanderは断片が組み合わされてできた建築物は活き活きとしていないと考えていた. それらは個性がなくなり,魅力に乏しいものとなる. ソフトウェアの言葉で言うと,それらは全く同じものとして定義されることになる. 部品が唯一無二のものにならなければ,特定状況下における利点は引き出せない.