今日学んだこと:ソフトウェアアーキテクチャの基礎 第1章

2025年9月19日

概要

今日はソフトウェアアーキテクチャの基礎について学んだ。

1章 イントロダクション

ソフトウェアアーキテクチャを定義する4つの側面とは何か

  • アーキテクチャと設計の違いを理解し、アーキテクチャを機能させるために、開発チームとどう協働するかわかるということ。
  • ある程度の技術的な深さを維持しながらも、他の人には見えないソリューションや可能性を見出せるような広範な技術知識を持つこと。
  • さまざまなソリューションと技術の間にあるトレードオフを理解し、分析し、調整できること。
  • ビジネスドライバーの重要性を理解し、それがどのようにアーキテクチャの関心事に反映されるかを理解していること

アーキテクチャ決定と設計指針の違いを説明せよ

アーキテクトは、ビジネス要件を分析してアーキテクチャ特性(「イリティ(-ility)」)を抽出・定義し、問題領域に適したアーキテクチャパターンやスタイルを選択し、コンポーネント(システムの構成要素)を作ることに責任を持つ。これらの活動で作成された成果物は、開発チームに引き継がれる。そして、開発チームは、コンポーネントごとのクラス図やユーザーインターフェイスとなる画面を作成し、コードを開発・テストすることに責任を持つ。

ソフトウェアアーキテクトへの8つの期待を挙げよ

  • アーキテクチャ決定を下す
  • アーキテクチャを継続的に分析する
  • 最新のトレンドを把握し続ける
  • 決定の順守を徹底する
  • 多様なものに触れ、経験している
  • 事業ドメインの知識を持っている
  • 対人スキルを持っている
  • 政治を理解し、かじ取りする

ソフトウェアアーキテクチャの第一法則とは何か

  • ソフトウェアアーキテクトにきれいなスペクトルは存在しない。すべての決定は、多くの相反する要素を考慮しなければならない。