エンタープライズソフトウェアにおけるパターン
近年、エンタープライズシステム開発のためのパターンの記述において、小規模ながらも有用な成長が見られます。このページでは、これらのパターンの中で最も注目すべきカタログのリストと、それらの間の広範な相互関係についての考察をまとめています。
これらの著者を結びつける正式な組織はありませんが、私たちは強力な非公式なつながりを持っており、互いの作品を頻繁にレビューしています。より組織化されたグループを設立すべきかどうか、よく議論してきましたが、実際に何かを実現するほどのエネルギーを結集できていません。自分の作品を書くだけでも大変なのです!
パターンが何の役に立つのか、なぜ興味深いのかについては、人によって期待が異なります。この点に関する私の見解は、IEEE Softwareのコラムで説明しました。
ここにカタログをリストアップしているのは、少なくともある程度よく知っていて、安心して使えるものだからです。この分野のパターンカタログの完全なリストにするつもりはありません。
カタログ
これは、私が有用だと考えている主要なカタログのリストです。
エンタープライズアプリケーションアーキテクチャのパターン | 階層型アーキテクチャのコンテキストにおけるエンタープライズアプリケーションアーキテクチャに焦点を当てています。主要なセクションは、ドメインロジック、Webプレゼンテーション、データベースインタラクション、オフライン同時実行性(David Rice著)、および分散をカバーしています。データベースインタラクションは最大のセクションであり、オブジェクトリレーショナルマッピングの問題に関する多くのパターンが含まれています。 |
(Fowler著) | |
Core J2EE Patterns(コアJ2EEパターン) | Java J2EEプラットフォームのコンテキストにおけるエンタープライズアプリケーションアーキテクチャパターン。パターンはJ2EEプラットフォームに焦点を当てていますが、通常、他のエンタープライズアプリケーションプラットフォームにも(多少の変更を加えて)同様に適用できます。 |
(Alur、Crupi、Malks著) | |
Enterprise Integration Patterns(エンタープライズ統合パターン) | 非同期メッセージングによる統合は、異種のエンタープライズアプリケーションを統合する最も効果的な方法の1つであるという見方が強くなってきました。EIPはこのアプローチのためのパターンの基礎となるコレクションです。 |
(Hohpe、Woolf著) | |
Microsoft Enterprise Solution Patterns(マイクロソフトエンタープライズソリューションパターン) | マイクロソフトのエンタープライズソフトウェアパターンの最初のコレクション。セクションには、Webプレゼンテーション、デプロイメント、および分散システムに関するパターンが含まれています。 |
(Trowbridge、Mancini、Quick、Hohpe、Newkirk、Lavigne著) | |
Microsoft Data Patterns(マイクロソフトデータパターン) | データ移動に関するパターンのコレクション:レプリケーションと同期。 |
(Teale、Etx、Kiel、Zeitz著) | |
Microsoft Integration Patterns(マイクロソフト統合パターン) | マイクロソフトの統合パターンに関する見解。セクションでは、統合層の戦略、システム接続へのアプローチ、統合のトポロジについて説明しています。 |
(Trowbridge、Roxburgh、Hohpe、Manolescu、Nadhan著) | |
ドメイン駆動設計 | オブジェクト指向ドメインモデルの構築は、ドメインロジックを整理するための一般的なアプローチです。複雑なドメインで特にうまく機能します。欠点は、うまく実行するのが難しいことです。これらのパターンは、豊富なドメインモデルの構築と構造化について、また、人々が知っているモデリング原則を採用することを妨げる現実世界の障害を認識し、克服する方法について説明しています。 |
(Evans著) | |
Analysis Patterns(分析パターン) | 十分な数のドメインモデルを見ると、特定の種類の構造が繰り返し現れることがわかります。この本は、これらの共通点をパターンの形で捉えようとした私の試みです。多くの点で更新が必要ですが、基本的な考え方は依然として非常に健全です。この資料が役に立つと思ったら、私のウェブサイトに掲載した新しい補足資料も必ずご覧ください。 |
(Fowler著) | |
Data Model Patterns (データモデルパターン) | データモデルにおける一般的なパターン。これらは非常に概念的なアプローチから開発されているため、パターンはオブジェクトモデリングとデータモデリングの両方に役立ちます。 |
(Hay著) | |
Gang of Four(GoF、四人組) | 最初で最も使用されているパターンブック。これらは主にエンタープライズソフトウェア開発に特化していない基本的なパターンですが、エンタープライズパターンはこれらを広く参照しています。 |
(Gamma、Helm、Johnson、Vlissides著) | |
POSA(パターン指向ソフトウェアアーキテクチャ) | アーキテクチャパターンに関する研究で特に影響力があります。レイヤー(エンタープライズアプリケーションの場合)とパイプとフィルター(メッセージングの場合)は、多くのエンタープライズパターンの基礎となっています。 |
(Buschmann、Meunier、Rohnert、Sommerlad、Stal著) |
エンタープライズソフトウェアの側面
カタログは、エンタープライズソフトウェア開発のさまざまな側面を網羅しています。これらのさまざまな側面から始めて、カタログの別の見方を示します。
エンタープライズアプリケーションアーキテクチャ
エンタープライズアプリケーションとは、特定のクラスのソフトウェアシステムに私が付けた名前です。それは、多くの企業が運営しているデータ集約型のソフトウェアシステムです。これらのシステムは情報を処理および操作するため、情報システムという別の、おそらくより適切な名前があります。
EAAに関するほとんどの本は、エンタープライズアプリケーションを論理レイヤーに分割することから始まります。このレイヤリング構造は、レイヤー内およびレイヤー間の他の設計決定を促進します。そのため、パターンがレイヤーを通じて同様に編成される傾向があることは驚くべきことではありません。各著者は独自のレイヤリング構造を持っていますが、レイヤリング構造の間には認識できる類似点があります。
エンタープライズアーキテクチャとエンタープライズアプリケーションアーキテクチャという用語を混同する人が驚くほど多くいます。2番目のAという言葉は非常に重要です。EAAは単一のアプリケーションを構築することです。エンタープライズアーキテクチャはまったく異なるものです。
エンタープライズアプリケーションアーキテクチャのパターン |
EAAを技術に依存しない視点から見ています。 |
Core J2EE Patterns(コアJ2EEパターン) |
これはEAAに焦点を当てた最初の本であり、J2EEプラットフォームのコンテキストからEAAを見ています。 |
Microsoft Enterprise Solution Patterns(マイクロソフトエンタープライズソリューションパターン) |
.NETの観点からEAAを見ています。 |
エンタープライズ統合
エンタープライズアプリケーションはある程度独立したシステムですが、機能するためには連携する必要があります。個別に開発されたEAを結び付けることは、統合の作業です。多くの場合、統合を念頭に置いて設計されていないアプリケーション、ましてや使用している特定のアプリケーションを統合する必要があるか、使用していないテクノロジーを使用して統合することを期待しています。
Enterprise Integration Patterns(エンタープライズ統合パターン) |
メッセージングのためのパターン。著者は(そして私も)これを統合を行うための最も有望な方法と考えています。 |
Microsoft Integration Patterns(マイクロソフト統合パターン) |
マイクロソフトのテクノロジーを使用して統合を行うための戦略。 |
Microsoft Data Patterns(マイクロソフトデータパターン) |
データレプリケーションと同期のためのパターン。統合のための2つの貴重なテクニックです。 |
ドメインロジック
エンタープライズアプリケーションの最も重要でありながらしばしば忘れられている側面の1つは、ドメインロジックです。これらは、情報システムに取り込まれたり、情報システムによって表示されたりする際にデータに対して動作するビジネスルール、検証、および計算です。単純なデータベースファイリングシステムの場合、ドメインロジックはほとんど、またはまったくないことがよくあります。ただし、多くのシステムでは、非常に複雑なドメインロジックが存在することが多く、このロジックはビジネス状況の変化に伴って定期的に変更されます。
エンタープライズアプリケーションアーキテクチャのパターン |
1つのセクションでは、ドメインロジックを編成するための主要なパターンについて概説しています。 |
ドメイン駆動設計 |
ドメインモデルの使用について詳しく説明します。これは、最も洗練されたドメインロジックパターンであり、複雑なロジックに最も適しています。 |
Analysis Patterns(分析パターン) |
ドメインモデルの例を示すパターン。 |
Data Model Patterns (データモデルパターン) |
データモデリングのアプローチから、ドメインの例を示すより多くのパターン。 |