「ソフトウェアアーキテクチャ」と「ソフトウェア設計」にはかなりの数の定義があり、どちらにも標準的な定義がないため、これに対する決定的な答えはありません。
それを考える良い方法は、「すべてのアーキテクチャはデザインですが、すべてのデザインがアーキテクチャであるわけではありません」[Software Architecture in Practice] という Len Bass、Paul Clements、および Rick Kazman の声明です。(アーキテクチャには他の活動が含まれる可能性があるため) これに完全に同意するかどうかはわかりませんが、アーキテクチャは設計の重要なサブセットを扱う設計活動であるという本質を捉えています。
私の少しばかげた定義 ( SEI 定義ページにあります) は、間違った場合にプロジェクトがキャンセルされる一連の決定であるというものです。
アーキテクチャ、設計、および実装を概念として分離する有用な試みは、数年前に Amnon Eden と Rick Kazman によって「アーキテクチャ、設計、実装」というタイトルの研究論文で行われました。 .edu/library/assets/ICSE03-1.pdf . 彼らの言葉は非常に抽象的ですが、単純に言えば、アーキテクチャは多くのコンテキストで使用でき、システム全体に適用されることを意図した設計であり、設計は多くのコンテキストで使用できるが特定の部分に適用される (誤った)設計です。システムの実装であり、実装はコンテキストに固有の設計であり、そのコンテキストに適用されます。
したがって、アーキテクチャ上の決定は、RPC ではなくメッセージングを介してシステムを統合するという決定になる可能性があります (したがって、これは多くの場所に適用できる一般原則であり、システム全体に適用することを目的としています)。設計上の決定は、マスターを使用することになります。システムの入力要求処理モジュール内の /slave スレッド構造 (どこでも使用できる一般原則ですが、この場合は 1 つのモジュールでのみ使用されます)。最後に、実装の決定は、要求ルーターからセキュリティの責任を移すことである可能性があります。 Request Manager モジュールの Request Handler へ (そのコンテキストで使用される、そのコンテキストにのみ関連する決定)。
これが役立つことを願っています!