ソフトウェアアーキテクチャvsシステムアーキテクチャvsクラス図?


11

私は次の用語についてかなり混乱しています。

ソフトウェアアーキテクチャ

ソフトウェアアプリケーションアーキテクチャは、パフォーマンス、セキュリティ、管理性などの一般的な品質属性を最適化しながら、すべての技術的および運用上の要件を満たす構造化ソリューションを定義するプロセスです。さまざまな要因に基づいた一連の決定が含まれ、これらの決定はそれぞれ、アプリケーションの品質、パフォーマンス、保守性、および全体的な成功に大きな影響を与える可能性があります。(マイクロソフト

システムアーキテクチャー

システムアーキテクチャは、システムの構造、動作、およびその他のビューを定義する概念モデルです。1アーキテクチャ記述は、システムの構造と動作に関する推論をサポートする方法で編成された、システムの正式な記述と表現です(wiki

クラス図

ソフトウェアエンジニアリングでは、Unified Modeling Language(UML)のクラス図は、システムのクラス、その属性、操作(またはメソッド)、およびオブジェクト間の関係を示すことにより、システムの構造を記述する静的構造図の一種です。(wiki

これらの説明を読んだ場合、これらはすべてアプリケーションの異なるモジュール間の相互作用を説明しています。しかし、これらの違いは何ですか?
これらの用語を比較するために私が考え/試みたもの

  • クラス図はシステムアーキテクチャの形式ではありません。上記の説明(structure, behavior, and more views of a system)は、アーキテクチャに実装の詳細が存在しないことを意味するのに対し、クラス図は実装を記述し、おそらくアーキテクチャではなく設計の方向にありますか?
  • ソフトウェアアーキテクチャはアプリケーション自体に焦点を合わせているのに対して、システムアーキテクチャは外部対話(データベースなど)も含むアーキテクチャだと思いますか?

1
おそらく、クラス図はソフトウェアアーキテクチャアクティビティの出力であり、建物の設計図が建物の建築家の出力であるのと同じように
...-FrustratedWithFormsDesigner

回答:


7

システムアーキテクチャでは、システムのコンポーネントについて説明します。たとえば、次のもので構成される注文入力システムがあるとします。

Webフロントエンド、ビジネスレイヤーサービス、およびデータストア。

したがって、これを示す高レベルの図が必要です。

ソフトウェアアプリケーションアーキテクチャは、特定のコンポーネントのアーキテクチャを記述します。たとえば、注文入力システムのコンポーネントの1つはWebフロントエンドです。アプリケーションアーキテクチャは、そのコンポーネントのさまざまなレイヤーと相互作用を示します。レスポンシブUI、モデルビューコントローラー、Webサービスコールアウト、ロギングの実行方法など。各コンポーネントが構築され、より大きなシステムの一部であるそのコンポーネント内のレイヤーのアイデアを提供します。

通常、そのコンポーネントがどのように構築されるかを示すより詳細な図が作成されます。

最後に、クラス図はソフトウェアアプリケーションアーキテクチャの詳細を説明します。たとえば、ロギングインターフェースのコントラクトはどのようなものですか?Viewがコントローラーとどのように対話するかなど。これらは、システムの特定のコンポーネントのソフトウェアアプリケーションアーキテクチャをさらに詳しく説明します。

特定のコンポーネントが大きく複雑な場合、これらの多くが存在するはずです。


2

追加のポイント:

  • システムは最も広い用語であり、通常は最高レベルであり、詳細度は最も低くなります。
  • システムの一部はソフトウェアとして分類される場合があります。
  • ソフトウェアの一部は、クラス図を使用して説明できます。

最後になりましたが、アーキテクチャは、すべてを再構築せずに後で戻るのが難しいか不可能な、一度限りの選択肢です。設計とは一線を画すアーキテクチャの最良の定義は、「変更するには本当に高価なものすべて」です。そのため、アーキテクチャでは通常、プログラミング言語、オペレーティングシステム、リレーショナルデータベースのブランドなど、ソリューションの種類に縛られるものを選択できます。そのため、アーキテクチャとして分類されるものは、システム自体と、アスペクトに関する柔軟性の程度にも依存します。


0

クラス図は、2つの用語の残りの部分とはまったく異なります。クラス図は、クラスが他のクラスに提供するものと、相互作用を示します。ただし、「システムアーキテクチャ」および「ソフトウェアアーキテクチャ」という用語は混乱を招き、さらに明確にする必要があります。

「システム」とは、ソフトウェアコンポーネントだけでなく、ハードウェアコンポーネントなどの他のコンポーネントも指すことを理解することが重要です。システムにソフトウェアシステムのみが含まれている場合、両方の用語に違いはありません。ただし、システムに他の非ソフトウェアコンポーネントが含まれている場合、ソフトウェアアーキテクチャはシステムのシステムアーキテクチャとは大幅に異なります。


システムアーキテクチャにもGUIモジュールのようなものを含める必要がありますか?@Tushar
キングボーミー

はい、ソフトウェアコンポーネントである必要はありません。@RickBeeloo
Tushar

しかし、ユーザー入力を受け入れてユーザーに何かを表示するには、ソフトウェアのクラスが必要ですか?それで、同様にソフトウェアコンポーネントである必要がありますか?
キングボーミー

はい、いいえ。ソフトウェアシステムのすべての消費者が人間であるわけではありません:)
Tushar
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.