システムアーキテクチャとソフトウェアアーキテクチャの主な違いは、システムアーキテクチャは、システムの構造と動作を記述する概念モデルであるということです。
これに対して、ソフトウェアアーキテクチャは、ソフトウェアの品質属性を最適化しながら、技術要件とビジネス要件を満たすためのソリューションを定義するハイレベルな構造です。
アーキテクチャは、システムの様々な側面を説明します。
システムアーキテクチャは、システム全体の構造と挙動を定義する。
一方、ソフトウェアアーキテクチャは、パフォーマンス、セキュリティなどの品質属性に焦点を当てながら、技術的およびビジネス的な期待を満たすためのソリューションを定義するものです。
簡単に言えば、ソフトウェア・アーキテクチャはシステム・アーキテクチャの一種である。
システムアーキテクチャとは
システムアーキテクチャとは、システムの構造と動作を記述した概念的なモデルです。
システムは一般に、複数のコンポーネントとサブシステムで構成される。
それらはすべて一緒に動作して、システム全体を実現する。
システムアーキテクチャ記述は、システム全体の構造と動作を説明する形式的な記述です。
さらに、システムアーキテクチャの記述を支援するのが、アーキテクチャ記述言語(ADL)です。
システムアーキテクチャには様々な種類があります。
そのうちのいくつかを紹介する。
ハードウェアアーキテクチャ- システムの物理的な構成要素とその関連性を記述する。
エンタープライズアーキテクチャ – 企業レベルのアプリケーションの分析、設計、計画、および実装を行うための手法を記述する。
様々な戦略を用いて、アプリケーションを成功裏に完成させるのに役立つ。
コラボレーションシステムアーキテクチャ – システムの構成要素間の相互接続を記述する。
例としては、インターネット、統合防空システム、インテリジェントグリッドなど。
ソフトウェア・アーキテクチャとは
ソフトウェアアーキテクチャは、パフォーマンス、セキュリティ、管理性などの品質属性を最適化しながら、技術要件と運用要件を満たすためのソリューションを定義する高レベルの構造です。
ソフトウェアアーキテクチャの設計に影響を与える品質属性は数多く存在する。
これらは、運用レベル、技術レベルにおいて、ソフトウェアの要件と期待を定義するものです。
パフォーマンス、フォールトトレランス、スケーラビリティ、信頼性などの属性を考慮することが重要です。
最終的には、ソフトウェアアーキテクチャを用いて開発された最終的なソフトウェア製品は、柔軟性、使いやすさ、保守性、再利用性を備えている必要がある。
なお、品質属性は特性とも呼ばれる。
ソフトウェアアーキテクチャには様々なパターンがあり、その一部を以下に示す。
ソフトウェアアーキテクチャパターン
サーバーレスアーキテクチャ
- サーバーとバックエンド管理の複雑さを管理するためにサードパーティのサービスに依存するアプリケーションソリューションについて説明します。
- デプロイのバグを修正する時間を短縮するのに役立つ
イベントドリブンアーキテクチャ
- イベントプロデューサーとイベントコンシューマをベースとする
- システムをいくつかの部分に分離することに重点を置く。
- 他のコンポーネントがイベントをトリガーすると、各パーツがトリガーする。
マイクロサービスアーキテクチャ
- 小規模で独立したモジュール式サービスの開発に重点を置く。
- 各サービスは、特定の問題を解決したり、ある種の機能を実行したりすることができます。
- すべてのサービスは、APIを介して相互に通信します。
システムアーキテクチャとソフトウェアアーキテクチャの関係
- ソフトウェアアーキテクチャは、システムアーキテクチャの一種です。
システムアーキテクチャとソフトウェアアーキテクチャの違い
定義
システムアーキテクチャは、システムの構造、動作、見方を定義した概念的なモデルです。
これに対し、ソフトウェアアーキテクチャは、ソフトウェアの上位構造や、そのような構造やシステムを作るための規律を指します。
したがって、これがシステム・アーキテクチャとソフトウェア・アーキテクチャの主な違いです。
主な内容
システムアーキテクチャとソフトウェアアーキテクチャのもう一つの違いは、システムアーキテクチャがシステム全体に焦点を当てるのに対し、ソフトウェアアーキテクチャは構成要素に焦点を当てることである。
例
さらに、システムアーキテクチャとソフトウェアアーキテクチャの違いをより明確に理解するために、例を挙げて説明します。
ある受注システムのシステムアーキテクチャは、Webフロントエンド、ビジネスレイヤーサービス、データベースから構成される。
一方、受注システムの構成要素は、Webフロントエンドであり、Responsive User Interface、Model view controller、Webサービスなどで構成される。
結論
システムアーキテクチャがシステムの構造と動作を記述した概念モデルであるのに対し、ソフトウェアアーキテクチャは、ソフトウェアの品質属性を最適化しながら、技術要件とビジネス要件を満たすためのソリューションを定義したハイレベルな構造です。
これがシステム・アーキテクチャとソフトウェア・アーキテクチャの主な違いです。