Tomoki Ota's Blog

article icon

アーキテクチャ特性

作成日 

アーキテクチャ特性

ドメイン機能には直接関連しない、ソフトウェアが満たさなければならない全てのこと。非機能要件(ネガティブなニュアンスなのであまり好まない)。

アーキテクチャ特性は以下3つの基準を満たす。

  • ドメインに依存しない、設計に関する考慮事項を明らかにするもの(明示的)
  • 設計の構造的な側面に影響を与えるもの(暗黙的)
  • アプリケーションの成功に不可欠か重要なもの

アーキテクチャの運用特性

  • 可用性
  • 継続性
  • パフォーマンス
  • 回復性
  • 信頼性、安全性
  • 堅牢性
  • スケーラビリティ

アーキテクチャの構造特性

  • 構成容易性
  • 拡張性
  • インストール性
  • 活用性・再利用性
  • ローカライゼーション
  • メンテナンス容易性
  • 可搬性
  • アップグレード容易性

アーキテクチャの横断的特性

  • アクセシビリティ
  • 長期保存性
  • 認証
  • 認可
  • 合法性
  • プライバシー
  • セキュリティ
  • サポート容易性
  • ユーザビリティ・達成容易性

アーキテクチャ特性のリストが完全になることはない。

イタリア性

ある会社のイタリア支社で障害が発生し、それがトラウマとなったため、イタリア性 (可用性、回復性、レジリエンス)のアーキテクチャ特性を持つこととなる。

ISOが公開している不完全な分類のリスト

少なくとも最悪ではないアーキテクチャ

トレードオフであるため、決して最善のアーキテクチャを狙ってはいけない。 少なくとも最悪ではないアーキテクチャを狙う。 アーキテクチャ特性が多すぎると、扱いにくい設計となり、うまく機能することはほとんどない。

アーキテクチャ特性とドメインの関心事

全てのアーキテクチャ特性をサポートする汎用アーキテクチャを設計するのはアンチパターンである。

ヴァーサ号

史上最高の船を求めいていたスウェーデン王ダスタフ2世によって建造された軍艦。甲板が2つあり、輸送船と砲艦の2つを兼ね備えていた。大砲の大きさも2倍あったが、極端な重量艦のため沈没した。(現在はストックホルムの博物館に展示されている)

アーキテクチャ特性の定め方

主なステークホルダーに最終的なリストから最も重要な上位3つの特性を順序をつけずに選んでもらう。

優先順位をつけるのはだめ。← 優先順位に対してステークホルダー全員が同意することは滅多にない。

ロスト・イン・トランスレーション問題

アーキテクトはスケーラビリティ、相互運用世、障害性、可用性などについて語るのに対して、 ドメインのステークホルダーは合併や買収、ユーザの満足度などについて語り、会話が噛み合わないことを ロスト・イン・トランスレーション 問題という。

ドメインの関心事とアーキテクチャ特性の翻訳表

ドメインの関心事アーキテクチャ特性
合併・買収相互運用性、スケーラビリティ、適応性、拡張性
市場投入までの時間アジリティ、テスト容易性、デプロイ容易性
ユーザ満足度パフォーマンス、可用性、耐障害性、テスト容易性、デプロイ容易性、アイジリティ、セキュリティ
競争優位性アジリティ、テスト容易性、デプロイ容易性、スケーラビリティ、可用性、耐障害性
時間と予算シンプルさ、フィリビリティ

アーキテクチャ特性の抽出

要件文書からアーキテクチャ特性を判断する。

Architectural Katas

Architectural Katasとは、Ted Newardによって考案されたドメインを対象とした記述からアーキテクチャ特性を導く練習サイト。

Nealによってhttps://nealford.com/katas/ で追加コンテキストセクションを加え、さらなる練習サイトへと更新された。

参考文献

  1. ソフトウェアアーキテクチャの基礎
この記事をシェアするx icon
アイコン画像
Tomoki Ota

フルスタックエンジニア。Goが好き。趣味はカメラと旅行です📷