『ソフトウェアアーキテクチャの基礎』

Mark Richards / Neal Ford による、ソフトウェアアーキテクチャを「工芸」から「工学」へ近づけることを目指した教科書。クラスタ内でも飛び抜けて詳細に読み込まれた一冊で、本書を起点に software-architecture-characteristicsarchitecture-styles-comparison を派生させている。

中心的な主張

  • アーキテクチャは「システムの構造」「アーキテクチャ特性(-ility)」「アーキテクチャ決定」「設計指針」の4要素からなる。
  • 第一法則: ソフトウェアアーキテクチャはトレードオフが全てだ。
  • 第二法則: 「どうやって」よりも「なぜ」のほうが大切。
  • アーキテクチャは未知の未知を抱えるため必然的に iterative になり、アジャイル と相性が良い。BDUF(先読みしすぎた設計)は失敗する。

アーキテクトの役割

  • アーキテクチャ決定を下し、継続的に分析し統制する。技術の「幅」(詳しくはないが知っているもの)を重視。
  • アンチパターン: 専門性の陳腐化を招く「氷漬け原始人」、コア所有権を握ってボトルネックになる「ボトルネックの罠」、現場無視の「象牙の塔のアーキテクト」。

モジュール性とコンポーネント

アーキテクチャ決定とソフトスキル

  • ADR(Architecture Decision Record)でタイトル/ステータス/コンテキスト/決定/影響を残す。資産防御・グラウンドホッグデー・メール駆動などのアンチパターンを避ける。
  • 交渉・図解・チーム形成(エラスティックリーダーシップ)まで扱う。

関連: book-ddia / _moc-book-notes