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