システムのアーキテクチャを形式化するとき、アーキテクチャがテーブルにもたらすものの背後にある価値を理解するだけでなく、それがどうあるべきかを理解し、認識することも重要です。
ソフトウェアまたはテクニカルアーキテクチャの主な目標は、システムアーキテクチャを推進する品質属性によって実現される非機能要件を特定することです。
非機能要件について:
非機能要件は、特定の動作ではなく、システムの動作を判断するために使用できる基準を指定する要件です。特定の動作や機能を定義する機能要件とは対照的です。機能要件の実装計画は、システム設計で詳しく説明されています。非機能要件を実装するための計画は、システムアーキテクチャで詳しく説明されています。
概して、機能要件はシステムの動作を定義し、非機能要件はシステムの動作を定義します。...非機能要件は、しばしばシステムの「品質属性」と呼ばれます。非機能要件の他の用語は、「品質」、「品質目標」、「サービス品質要件」、「制約」、および「非動作要件」です。
もちろん、グリーンフィールドプロジェクトでは、アーキテクチャ的に重要な要件を特定することは理にかなっていますが、既存のソフトウェアを使用する場合は、できる限り規律を守ることが最善です。ソフトウェアアーキテクチャが既存のシステムの影響を受けないようにする必要があります。
信頼できるソフトウェアアーキテクチャは、本当に3つのものである必要があります。
宣言的
これはドキュメンテーションの一部であり、「何ではない」と宣言しますが、どのようにすべきかを宣言します。これは、システムのさまざまなアーキテクチャビューを使用して行います。必要なコンポーネントとそれらの相互作用を定義し、オプションで各コンポーネントにドリルダウンして、システムの設計方法を宣言するより詳細なビューを作成します。
これは重要な違いです。システム設計は、システムアーキテクチャによって制約される必要があります。これらは実際には別個のものですが、関連するものです。
根拠
ソフトウェアアーキテクチャの根拠は、行われたアーキテクチャの決定に正当性と権限を与えるものです。おそらく、バッチジョブをトリガーするためにMQでPub / Subイベントリスナーを使用することを決定し、それを図にしたのでしょうか?
なぜこの決定が下されたのですか?理由のセクションで理由を説明し、説明を非機能要件、品質属性目標、または建築的に重要な要件にリンクします。(たとえば、ジョブは非同期で繰り返し可能である必要があり、品質属性としての保守性により、バッチジョブに障害が発生した場合にMQメッセージを介してジョブを再開できるようになります。 ..)
リスク
アーキテクチャのあり方を宣言し、それを根拠で証明したので、システムの現在の状態に関するリスクを特定できます。
(たとえば、サーバー側の検証がクライアント側のJavascriptコードで複製されています。これはDRY原則に違反しており、保守性の品質属性に反します。この領域のパフォーマンスに関する非機能要件は定義されていません。現在のシステムの動作に対する根拠はありません)
リスクは、現在の状態が現在アーキテクチャから逸脱している場所を示すこともできます。これらのリスクは、プロジェクトプランを通じて、またはこれをバックログに追加することにより、開発チームがすぐに対処できます。