ソフトウェアシステムアーキテクチャ構築の原理におけるビューポイント

アーキテクチャとアーキテクチャ記述

アーキテクチャ記述(architecturaldescription,AD)とは、ステークホルダが理解でき、アーキテクチャがその関心事に合致していることを説明できる方法で、アーキテクチャを文書化した成果物のことである。


優れたアーキテクチャ記述とは、アーキテクチャの主要な側面を、しかるべきステークホルダに対して効果的に矛盾しないで伝えるものである。


複雑なシステムの機能的特徴と品質特性を、そのステークホルダに理解可能かつ価値あるような、単一の包括的モデルでとらえることはできない。


複雑なシステムは、相互に関係するビューのセットによってずっと効果的に記述されるが、それらは単一の詰め込み過ぎたモデルよりも、1つにまとまって機能的特徴と品質特性を示した上で、目標に合致するということを実際に見せる。


ビュー(view)とは、一人以上のステークホルダが抱いている1つまたはそれ以上の関心事に、アーキテクチャがどう対応するかを示す、アーキテクチャの1つ以上の構造的側面を表現したものである。


ビューポイント(viewpoint)とは、1つのタイプのビューを構築するためのパターンやテンプレートおよび慣例を集めたものである。ビューポイントは、それに反映される関心事を持つステークホルダと、ビューを構築するための指針や原理およびテンプレートモデルを定義する。


ビューポイント

f:id:Naotsugu:20200505184654p:plain

ビューポイント 定義
コンテクスト システムとその環境(システムが相互作用する人々、システム、外部エンティティ)の間にある関係と依存性および相互作用を記述する。コンテクストビューは、システムのステークホルダ多数の興味を引き、このビューの責務および組織との関わり方を、彼らに理解しやすくする上で重要な役割を果たす。
機能的 システムの実行時機能要素、その責務、インタフェースおよび主な相互作用を記述する。機能的ビューは、ほとんどのADの土台となり、たいていはステークホルダが読もうとする最初の記述である。情報構造、並行性構造、配置構造など他のシステム構造の形を決める。また、変更能力やセキュリティ能力、実行時パフォーマンスなどシステムの品質特性にも重大な影響を与える。
情報 アーキテクチャが情報を格納、操作、管理および配布する方法を記述する。事実上、どのコンピュータシステムでも究極の目的は、何らかの形で情報を操作することであり、このビューポイントは、性的データ構造と情報の流れに関する完全だが高レベルのビューを展開する。この分析の目的は、内容や構造、所有権、待ち時間、参照、データ移動にまつわる大きな疑問に答えることである。
並行性 システムの並行性構造を記述し、機能要素を並行性単位へマップして、並行して実行可能なシステム部分と、並行実行を調整および制御する方法を明白に識別する。これには、システムが使用するプロセスおよびスレッドの構造と、それらの働きの調整に使われるプロセス間通信メカニズムを示すモデルの作成が伴う。
開発 ソフトウェア開発プロセスをサポートするアーキテクチャを記述する。開発ビューは、システムの構築、テスト、保守、機能拡張に携わるステークホルダが関心を持つアーキテクチャ側面を述べる。
配置 システムが配置される環境と、その要素に対してシステムが持つ依存性を記述する。このビューでとらえるのは、システムが必要とするハードウェア環境(主に、処理ノード、ネットワーク相互接続、必要なディスク記憶装置設備)、各要素の技術的環境要求、ソフトウェア要素のそれを実行する実行時環境へのマッピングである。
運用 本番環境での実行時におけるシステムの運用、管理、サポート方法を記述する。ごく単純なシステムを除き、システムを導入、管理、運用することは、設計時に検討して計画しなければならない重要な課題である。運用ビューポイントの狙いは、システムのステークホルダが持つ運用上の関心事に対応する、システム全体としての戦略を見つけ、それに対処する解決策を識別することである。


コンテクストビューポイント

項目 説明
定義 システムとその環境(システムが相互作用する人々、システム、外部エンティティ)の間にある関係と依存性および相互作用を記述する
関心事 システムのスコープと責務、外部エンティティの識別と使用されるサービスおよびデータ、外部エンティティの性質と特徴、外部インタフェースの識別と責務、外部インタフェースの性質と特徴、他の外部相互依存性、システムが環境に与える影響、全体としての完全性と整合性および統一性
モデル コンテクストモデル、相互作用シナリオ
問題と落とし穴 欠けているまたは正しくない外部エンティティ、見逃している暗黙の依存性、いい加減または不適切なインタフェース記述、不適切な詳細レベル、スコープのずれ、暗黙または当然と考えられているコンテクストやスコープ、入り組み過ぎている相互作用、専門用語の使い過ぎ
ステークホルダ すべてのステークホルダだが、特に取得者、ユーザ、開発者
適用 すべてのシステム


機能的ビューポイント

項目 説明
定義 システム実行時の機能要素、その責務、インタフェースおよび主な相互作用を記述する
関心事 機能的能力、外部インタフェース、内部構造および機能的設計理念
モデル 機能的構造モデル
問題と落とし穴 定義がお粗末なインタフェース、十分に理解されていない責務、機能要素としてモデル化されたインフラストラクチャ、内容を詰め込みすぎたビュー、要素定義の無い図、複数のステークホルダのニーズの折り合いを付ける難しさ、不適切なレベルの詳細、「神の要素」、過剰な依存性
ステークホルダ すべてのステークホルダ
適用 すべてのシステム


情報ビューポイント

項目 説明
定義 システムが情報を格納、操作、管理および配布する方法を記述する
関心事 情報の構造と内容、情報の目的と用途、情報所有権、エンタープライズ所有情報、識別子とのマッピング、情報セマンティクスの揮発性、情報ストレージモデル、情報フロー、情報の整合性、情報の品質、タイムリー性と待ち時間及び寿命、アーカイブと情報保存
モデル 静的情報構造モデル、情報フローモデル、情報ライフサイクルモデル、情報所有権モデル、情報品質分析、メタデータモデル、ボリューム分析モデル
問題と落とし穴 表現の矛盾、避けられない複数の更新者、キーマッチングの欠陥、インタフェースの複雑さ、過負荷の中央データベース、整合性のない分散データベース、低い情報品質、過剰な情報待ち時間、不適切なボリューム分析
ステークホルダ 主に、ユーザ、取得者、開発者、テスタおよび保守管理者だが、ほとんどのステークホルダがある程度興味を持つ
適用 ありふれた情報管理以上のニーズを持つすべてのシステム


並行性ビューポイント

項目 説明
定義 システムの並行性構造を記述し、機能要素を並行性単位にマッピングして、並行して実行できるシステム部分と、その調整および制御方法を明白に特定する
関心事 タスク構造、機能要素のタスクへのマッピング、プロセス間通信、状態管理、同期化と完全性、サポートするスケーラビリティ、スタートアップとシャットダウン、タスク障害、再入可能性
モデル システムレベル並行性モデルと状態モデル
問題と落とし穴 誤った並行性のモデリング、並行性の誤ったモデリング、過剰な複雑さ、リソースの競合、デッドロック、競合状態
ステークホルダ コミュニケータ、開発者、テスタおよびいくつかの管理責任者
適用 並行実行スレッドが多数あるすべての情報システム


開発ビューポイント

項目 説明
定義 ソフトウェア開発のプロセスをサポートするアーキテクチャを記述する
関心事 モジュール構成、共通処理、設計の標準化、テストの標準化、インストゥルメンテーション、コードライン構成
モデル モジュール構造モデル、共通設計モデル、コードラインモデル
問題と落とし穴 詳細過ぎる、過剰なアーキテクチャ記述、一様でない焦点、開発者への注目の欠如、正確性不足、指定した環境に関する問題
ステークホルダ 制作エンジニア、ソフトウェアの開発者とテスタ
適用 作成に多大なソフトウェア開発を伴うすべてのシステム


配置ビューポイント

項目 説明
定義 システムが配置される環境と、システムがその要素に対して持つ依存性を記述する
関心事 必要となる実行時プラットフォーム、必要となるハードウェアまたはホストの仕様と量、サードパーティソフトウェア要求、テクノロジーの互換性、ネットワーク要求、必要なネットワーク容量、物理的制約
モデル 実行時プラットフォームモデル、ネットワークモデル、テクノロジー依存性モデル、モデル間関係
問題と落とし穴 不明瞭または不正確な依存性、実証されていないテクノロジー、適切でないまたは欠けているサービスレベルの同意、専門知識の欠如、配置環境検討の遅れ、サイト間複雑性の無視、不適切なヘッドルーム提供、災害回復環境を指定しないこと
ステークホルダ システム管理責任者、開発者、テスタ、コミュニケータ、評価者
適用 複雑または不案内な配置環境を持つシステム


運用ビューポイント

項目 説明
定義 本番環境での稼動時、システムがどう運用、管理およびサポートされるかを記述する
関心事 インストールとアップグレード、機能の移行、データの移行、運用の監視と制御、警告、構成管理、パフォーマンス監視、サポート、バックアップとリストア、サードパーティ環境での運用
モデル インストールモデル、移行モデル、構成管理モデル、管理モデル、サポートモデル
問題と落とし穴 運用スタッフとの取り決め不足、バックアウト計画の欠如、移行計画の欠如、不十分な移行期間、足りない管理ツール、本番環境の制約、本番環境への統合不足、不十分なバックアップモデル、不適切な警告
ステークホルダ システム管理責任者、制作エンジニア、開発者、テスタ、コミュニケータ、評価者
適用 複雑または重要な運用環境に配置されたすべてのシステム