アーキテクチャパターンは、特定のコンテキスト内でソフトウェアアーキテクチャでよく発生する問題に対する、一般的で再利用可能な解決策です。 [1]アーキテクチャパターンは、コンピュータハードウェアのパフォーマンスの制限、高可用性、ビジネスリスクの最小化など、ソフトウェアエンジニアリングのさまざまな問題に対処します。一部のアーキテクチャパターンは、ソフトウェアフレームワーク内に実装されています。アーキテクチャパターンには、モノリシックと分散の2つの主要なカテゴリがあります。[2]
ソフトウェア業界における「パターン」という言葉の使用は、パターン語彙集を確立するという観点から実践を論じたクリストファー・アレキサンダーの『パターン言語』 (1977年)など、従来のアーキテクチャで表現されているのと同様の概念に影響を受けており、コンピュータサイエンスの実践者に独自の設計語彙集について熟考するよう促した。
ソフトウェアエンジニアリングの専門職の中でこの比喩が使われるようになったのは、現在では「Gang of Four」としてよく知られている、Erich Gamma、Richard Helm、Ralph Johnson、John Vlissidesによる『Design Patterns』(1994年)の出版後です。これは、パブリックインターネットの初期の頃と一致しており、複雑なソフトウェアシステムが「世界を飲み込む」[3]ことの始まりと、急速に広がるソフトウェア開発の世界を、柔軟性と適応性を保ちながら可能な限り深いレベルでコード化する必要性を示していました。
アーキテクチャ パターンはソフトウェア設計パターンに似ていますが、適用範囲が広くなります。
意味
アーキテクチャパターンはシステムのイメージを伝えますが、アーキテクチャではありません。アーキテクチャパターンは、ソフトウェアアーキテクチャのいくつかの重要な凝集要素を解決し、描写する概念です。無数の異なるアーキテクチャが同じパターンを実装し、関連する特性を共有する場合があります。パターンは、「厳密に記述され、一般的に利用可能」と定義されることがよくあります。[4] [5]
建築様式
ソフトウェア アーキテクチャ スタイルは、従来の建築アーキテクチャに倣った特定の構築方法であり、注目すべき特徴を備えています。
アーキテクチャスタイルは、構造組織のパターンの観点から見たシステムのファミリー、コンポーネントとコネクタの語彙、およびそれらを組み合わせる方法に関する制約を定義します。[6]
アーキテクチャスタイルとは、(1)特定の開発コンテキストに適用可能であり、(2)そのコンテキスト内の特定のシステムに固有のアーキテクチャ設計決定を制約し、(3)結果として得られる各システムに有益な品質を引き出す、アーキテクチャ設計決定の名前付きコレクションです。[1]
アーキテクチャパターンとアーキテクチャスタイルを同じものとして扱う人もいれば、[7]スタイルをパターンの特殊化として扱う人もいます。共通点は、パターンとスタイルはどちらも建築家が使用するイディオムであり、システムのクラスを記述するための 「共通言語」 [7]または「語彙」[6]を提供することです。
主な違いは、パターンは問題に対する解決策として見ることができるのに対し、スタイルはより一般的であり、外観に関して問題を解決する必要がないことです。
分析
ソフトウェアは、ソリューションを適用できる問題領域によって管理されます。以下の表は、ソフトウェアがさまざまな問題領域にわたってどのように考慮されるかを示しています。これらの問題領域はサブドメインによって定義され、対応するソフトウェア設計パターンとソリューション パターンで対処されます。サブドメインは、他のサブドメインの分析に組み込むことができます。たとえば、人工知能の問題の解決は、まずデータ アーキテクチャの問題としてアプローチされます。
例
アーキテクチャ パターンの例をいくつか示します。
- セルベースアーキテクチャ
- 黒板システム
- ブローカーパターン
- イベント駆動型アーキテクチャ
- サガパターン[2]
- モノリシックパターン[2]
- 分散パターン[2]
- モジュラーモノリス[2]
- 暗黙的な呼び出し
- レイヤー
- 六角形の建築
- マイクロサービス
- アクション–ドメイン–レスポンダー、
- エンティティコンポーネントシステム
- エンティティ制御境界
- 多層アーキテクチャ(多くの場合、3 層またはn層)
- オブジェクト指向プログラミング
- 裸の物体
- 運用データストア(ODS)
- ピアツーピア
- パイプとフィルターのアーキテクチャ
- サービス指向アーキテクチャ
- 宇宙ベースの建築
- 分散ハッシュテーブル
- パブリッシュ・サブスクライブパターン
- メッセージブローカー
- 階層型モデル - ビュー - コントローラ
参照
参考文献
- ^ ab Taylor, RN; Medvidović, N.; Dashofy, EM (2009). ソフトウェアアーキテクチャ: 基礎、理論、実践。Wiley. ISBN 9780470167748。
- ^ abcde ソフトウェアアーキテクチャの基礎:エンジニアリングアプローチ。オライリーメディア。2020年。ISBN 978-1492043454。
- ^ Andreessen, Marc (2011年8月20日). 「なぜソフトウェアが世界を席巻しているのか」.ウォール・ストリート・ジャーナル. 2020年4月25日閲覧。
- ^ Chang, Chih-Hung; Lu, Chih-Wei; Lin, Chih-Hao; Yang, Ming-Feng; Tsai, Ching-Fu (2008 年 6 月)。「パターンベースのソフトウェア フレームワークを適用してソフトウェア開発の品質を向上させる経験: 4. OS2F の設計と実装」。Journal of Software Engineering Studies、Vol. 2、No. 6。第 3 回台湾ソフトウェア工学会議 (TCSE07)。pp. 185–194。2011 年 9 月 22 日のオリジナルからアーカイブ。2012 年 5月 16 日に取得。
さらに、パターンは「厳密に記述され、一般的に利用可能なもの」として定義されることがよくあります。たとえば、階層化アーキテクチャは、対話するための全体的なスタイルを定義する場合、呼び出しと戻りのスタイルです。
- ^ 「アーキテクチャ パターン: 定義」。AAHN INFOTECH (INDIA) PVT. LTD. 2012-06-23 にオリジナルからアーカイブ。2012-05-16に取得。
アーキテクチャ パターンはシステムのイメージを伝えますが、それ自体はアーキテクチャではありません。アーキテクチャ パターンはむしろ、ソフトウェア アーキテクチャのいくつかの重要な凝集要素を解決し、描写する概念です。無数の異なるアーキテクチャが同じパターンを実装し、関連する特性を共有する場合があります。さらに、パターンは多くの場合、「厳密に記述され、一般的に利用可能なもの」として定義されます。
- ^ ab Shaw, M.; Garlan, D. (1996).ソフトウェアアーキテクチャ: 新たな分野の展望. Prentice Hall. ISBN 9780131829572。
- ^ ab 「第 3 章: アーキテクチャ パターンとスタイル」。Microsoftアプリケーション アーキテクチャ ガイド(第 2 版)。Microsoft Press。2009 年 10 月。ISBN 9780735627109。
文献
- Avgeriou、パリ; Zdun、Uwe (2005)。「アーキテクチャパターンの再考:パターン言語」(PDF)。第 10 回ヨーロッパプログラムパターン言語会議(EuroPlop 2005)、ドイツ、イルゼー、2005 年 7 月。UVK Verlagsgesellschaft。pp . 1–39。CiteSeerX 10.1.1.141.7444。ISBN 9783879408054。
- ブッシュマン F.ムニエ R.ローナート・H.サマーラッド P.スター M. (1996)。パターン指向のソフトウェア アーキテクチャ: パターンのシステム。ワイリー。ISBN 9781118725269。
- Bass L.、Clements P.、Kazman R. (2003)。『実践的ソフトウェアアーキテクチャ』Addison- Wesley。ISBN 9780321154958。
