<プロジェクト名>
ソフトウェア・アーキテクチャー説明書
[ソフトウェア・アーキテクチャー説明書の「概論」にはソフトウェア・アーキテクチャー説明書全体の概要を記述します。その中にはソフトウェア・アーキテクチャー説明書の目的、範囲、定義、頭字語、略語、参考文献、概要の記述を含めます。]
[このセクションでは、現行システムでのソフトウェア・アーキテクチャー、およびその表現方法について取り上げます。「ユース・ケース・ビュー」、「論理ビュー」、「プロセス・ビュー」、「配置ビュー」、「実装ビュー」を必要に応じて利用し、各ビューに含まれるモデル要素についても解説します。]
[ここにはアーキテクチャーに重大な影響を与えるソフトウェアへの要求と目標を記述します。たとえば、安全性、セキュリティー、プライバシー、市販製品の利用、移植性、分散性、再利用などの項目が含まれます。設計と実装の戦略、開発ツール、チームの構成、スケジュール、既存コードなどのシステムの特別な制約もここに記載します。]
[ここにはユース・ケース・モデルのうちアーキテクチャー的に重要なユース・ケースやシナリオを記述します。ここで取り上げるユース・ケースやシナリオとしては、最終システムの中核機能を表すもの、アーキテクチャーの構成要素を横断的に網羅するもの、アーキテクチャーの脆弱な部分を強調するかうまく描写するものが挙げられます。]
[ここでは設計モデルの中でアーキテクチャー的に重要な箇所を説明します。たとえば、アーキテクチャーをどのようにサブシステムやパッケージへ具体化するか説明します。主要なパッケージについては、さらにクラスとクラス・ユーティリティーにまで具体化して説明します。アーキテクチャー的に重要なクラスとそれらの責務をここで紹介し、特に重要な関係、操作、属性についてもここで説明します。]
[ここでは、パッケージの階層とレイヤーの観点から、設計モデルの全体的な構成を記述します。]
[ここでは、主要な各パッケージについて、その名前、簡潔な説明、そこに含まれる主なクラスとパッケージすべてを示したダイアグラムについて説明します。
パッケージ内の重要な各クラスの名前と簡単な説明を記します。また、各クラスの主要な責務、操作、属性について、説明することがあれば記述します。]
[ここでは、ソフトウェアの仕組みを説明します。そのために、ユース・ケース (またはシナリオ) の実現をいくつか選択して、その機能にさまざまな設計モデル要素がどのように貢献するかを説明します。]
[ここではシステム全体を、(単独のスレッドとして制御される) 軽量級のプロセス多数と、(それらをグループとしてまとめた) 重量級のプロセスという構成として説明します。互いに通信したり相互作用するプロセス同士は同じグループにまとめて説明します。プロセス間の主要な通信方法 (メッセージ・パッシング、割り込み、ランデブーなど) についてもここで解説します。]
[ここでは、ソフトウェアが配置されて実行される、1 つ以上の物理的なネットワーク (ハードウェア) の構成について記述します。このビューは配置モデルに対応します。構成に関する最小限の説明として、ソフトウェアを実行する物理的なノード (コンピューター本体、CPU) とその相互接続 (バス、LAN、ポイントツーポイントなど) についてここで説明する必要があります。また、プロセス・ビューからのプロセスの物理ノードへの割り当てについてもここに記述します。]
[ここでは実装モデルの全体構造と、ソフトウェアの実装モデルにおけるレイヤーとサブシステムへの分解、アーキテクチャー上重要なコンポーネントについて説明します。]
[ここでは、各種のレイヤーとその内容、所定のレイヤーに何を含めるかを規定するルール、レイヤー間の境界を取り上げてそれについて定義します。レイヤー間の関係を示すコンポーネント図もここで説明します。]
[ここには、各レイヤーの名前とそこに含まれるサブシステムの列挙、コンポーネント図を記述します。]
[このシステムで使用する永続データ記憶領域に関する説明をここに記述します。永続データをほとんどまたは一切使用しない場合や、デザイン・モデルからデータ・モデルへの変換が解説不要なほどシンプルな場合はこの項は省略してかまいません。]
[ここでは、アーキテクチャーに影響を与えるソフトウェアのサイズの主な特徴と、ターゲット性能に関する制約事項について説明します。]
[ここでは、ソフトウェア・アーキテクチャーが、拡張性、信頼性、移植性など、システムが持つ (機能以外の) 全性能にどれだけ貢献するかについて説明します。この点に関して特筆すべき事項、たとえば安全性、セキュリティー、プライバシーなどに関する補足説明があれば、ここに記述しなければなりません。]