設計
要求を満たすソフトウェアの構造や振る舞いを、実装前に決める活動
設計アーキテクチャ
「設計」の技術書を見る (132 冊) →設計とは
ソフトウェアにおける設計とは、要求を満たすためにシステムの構造・モジュール分割・データの流れ・振る舞いを、実装に着手する前に決める活動だ。何をどう作るかの見取り図を描く工程であり、設計の良し悪しがその後の開発速度・保守性・拡張性を大きく左右する。
設計のレベル
設計は粒度によって段階に分かれる。
| レベル | 決めること |
|---|---|
| アーキテクチャ設計 | システム全体の構成、技術選定 |
| 詳細設計 | モジュールやクラスの責務、インターフェース |
| データ設計 | テーブル構造、データの整合性 |
上位の設計ミスほど後からの修正コストが大きいため、最初に全体像を固めることが重要になる。
良い設計の原則
良い設計は「変更に強い」ことを目指す。責務を一つに絞る単一責任、関連の薄い部分を切り離す疎結合、内部実装を隠す情報隠蔽といった原則は、いずれも「変更の影響範囲を局所化する」という同じ目的に向かっている。要求は必ず変わるという前提に立つと、これらの原則の価値が見えてくる。
過剰設計という落とし穴
将来を見越して柔軟性を盛り込みすぎると、使われない抽象化が複雑さだけを増やす過剰設計に陥る。必要になるまで作り込まない (YAGNI) 姿勢と、シンプルさを優先する判断が、現実には堅牢な設計につながることが多い。設計は「正解を一度で当てる」よりも、変更しやすく保ち続ける営みだと捉えたい。
理解を深めるには関連書籍が参考になる。
この記事は役に立ちましたか?