# アーキテクチャ特性 Navigation: [[index]] | [[overview]] ## 定義 アーキテクチャ特性とは、ドメインの機能には直接関連しないがソフトウェアが満たさなければならないすべてのことであり、次の 3 つの基準をすべて満たすものだ。すなわち (1) ドメインに依らない、設計に関する考慮事項を明らかにするもの、(2) 設計の構造的な側面に影響を与えるもの、(3) アプリケーションの成功に不可欠か重要なもの、である。著者らはこの概念を「非機能要件」「品質特性」と呼ぶことを避け、前者が持つ否定的な印象、後者が持つ事後の品質評価という印象を避けるために「アーキテクチャ特性」という用語を採用した。アーキテクチャ特性は要件文書にほとんど現れない暗黙的なものと、要件文書に明記される明示的なものに分かれ、さらに運用特性・構造特性・横断的特性という大まかな 3 カテゴリーに分類できるが、標準化された完全なリストは存在しない。アーキテクチャ特性は相互に影響し合うため、アーキテクトの仕事は可能な限り多くの特性をサポートすることではなく、一握りの特性を選び取ることにある(ch.4 §導入部, §4.1)。 ## 未解決の問い - アーキテクチャ特性を「ドメインの関心事」からどう切り出すか(明示的/暗黙的の見分け方)は、第 5 章「アーキテクチャ特性をドメインの関心事から捉える」で詳述される予定(ch.4 導入部が p.67 §5.1 を予告)。 - 運用特性・構造特性・横断的特性という 3 分類の境界が曖昧な用語(相互運用性と互換性、可用性と信頼性など)を、どう客観的に切り分けるか。 - アーキテクチャ特性の計測・優先順位づけの具体的な手法は本章では扱われていない(第 6 章「アーキテクチャ特性の計測と統制」以降で扱われる見込み)。 - 循環的複雑度・主系列からの距離のような構造面の計測と、応答時間のような運用面の計測は、収集対象(コードの静的構造 対 実行時の振る舞い)も収集主体(開発者のビルド時 対 運用チームの監視基盤)も大きく異なる。両者を横断して一つの「アーキテクチャ特性計測」の枠組みとして統合する方法は、第4章・第6章を読む限りまだ体系化されていない(ch.6 §6.1; ch.4 §4.1)。 ## 未編纂の観察 - **[定義] 第4章のアーキテクチャ特性の定義(ドメインに依らない・設計の構造的側面に影響・アプリケーションの成功に不可欠という3基準)は特性の輪郭を示すが、それだけでは統制可能な状態にならない。** 第6章は、業界で使われるアーキテクチャ特性の多くが「形が定まっていない」「定義がさまざま」「複合的すぎる」という3つの問題を抱えると指摘し、これを解決するには特性を客観的に計測可能な定義へ落とし込む工程が別途必要になると説く。3基準による定義づけと、計測可能性への具体化は異なる工程として書き分けられている。(Source: [[@2022__OReillyJapan__ソフトウェアアーキテクチャの基礎 - Chapter 6 アーキテクチャ特性の計測と統制]], [[@2022__OReillyJapan__ソフトウェアアーキテクチャの基礎 - Chapter 4 アーキテクチャ特性]]) - **適応度関数(fitness function)は、アーキテクチャ特性の統制を設計時の議論から継続的検証へ移す装置である。** 第4章はアーキテクトの仕事を「一握りの特性を選び取ること」という設計時の判断として描くのに対し、第6章は『進化的アーキテクチャ』が提示した適応度関数の概念(あるアーキテクチャ特性の組み合わせについて客観的な整合性評価を行う何らかの仕組み)を導入し、選び取った特性への適合をメトリクス・監視・ユニットテスト・カオスエンジニアリングといった既存手法へ橋渡しして継続的ビルドの中で自動検証する。特性の選定(第4章)と特性の順守の自動化(第6章)は別の工程として提示されている。(Source: [[@2022__OReillyJapan__ソフトウェアアーキテクチャの基礎 - Chapter 6 アーキテクチャ特性の計測と統制]], [[@2022__OReillyJapan__ソフトウェアアーキテクチャの基礎 - Chapter 4 アーキテクチャ特性]]) - **アーキテクチャ特性の計測は性格の異なる複数の軸に分かれ、第4章の特性自体の3分類(運用特性・構造特性・横断的特性)とは別に、計測手法の3分類(運用面・構造面・プロセス面)が存在する。** 循環的複雑度や主系列からの距離のような構造的計測はコードの静的構造をビルド時に検証するのに対し、応答時間のような運用的計測は実行時の振る舞いを監視によって捉える。両者は計測対象・計測タイミングが異なり、内部コード品質を包括的に評価するメトリクスは第6章時点でも存在しないと明言される。(Source: [[@2022__OReillyJapan__ソフトウェアアーキテクチャの基礎 - Chapter 6 アーキテクチャ特性の計測と統制]], [[@2022__OReillyJapan__ソフトウェアアーキテクチャの基礎 - Chapter 4 アーキテクチャ特性]]) ## 関連 - 出典章: [[@2022__OReillyJapan__ソフトウェアアーキテクチャの基礎 - Chapter 4 アーキテクチャ特性]] / [[@2022__OReillyJapan__ソフトウェアアーキテクチャの基礎 - Chapter 6 アーキテクチャ特性の計測と統制]] ## 出典 - Mark Richards, Neal Ford 著, 島田浩二 訳, *ソフトウェアアーキテクチャの基礎*, オライリー・ジャパン, 2022, 第 4 章.