Pipe-Filter
構成要素
pipe:入出力のデータストリーム
filter:データの変換
例

引用:https://ja.wikipedia.org/wiki/ソフトウェアアーキテクチャ
特徴
・システムの処理をフィルターの重ね合わせと考える
・各フィルターは独立した単位=再利用が可能
・システムの保守と機能的拡張が容易
・並列実行を表しやすい
欠点
・バッチ処理的システムに陥りやすい
・インタラクティブなシステムには向かない
・フィルター間で共通する処理に冗長性が生まれる
Client-Server
構成要素
Client:サービスを利用
Server:サービスを提供
例

引用:https://ja.wikipedia.org/wiki/ソフトウェアアーキテクチャ
ClientとServerでのやり取り方法
要求・応答
Clientがサービスを要求してSerberがサービスを提供する
コールバック
Clientは、Serverの準備ができたら呼び出してもらう
特徴
欠点
Peer-to-Peer(P2P)
構成要素
コンポーネント
→コンポーネントはServerとクライアントの役割を両方備える
→全てのコンポーネントが他のコンポーネントに要求を出せる
例

引用:https://ja.wikipedia.org/wiki/ソフトウェアアーキテクチャ
特徴
・拡張性が高い(特に規模的な)
・高い処理能力のシステムを実現しやすい
・耐障害性が非常に高い
欠点
Peer間での信頼が必要
Publish-Subscribe(発行者-読者)
構成要素
例
特徴
・システムの拡張が容易:コンポーネントの“着脱”が他に影響しない
・再利用性に優れている
・データ通信が難しい:共有メモリが必要
・妥当性検証が難しい:通知する側は受信側の事情を知らない
欠点
Repository
構成要素
・中央データ
・コンポーネント
→データの格納、取得、更新を行う
例
コンポーネント間のやり取り方法
データベース型
データベースはServerの役割を果たす
コンポーネントは能動的に動作する
黒板型
中央データの状態に応じてコンポーネントが動作する
• データを取得し、処理し、戻す(例、Wikipedia)
• コンポーネントはデータに対して受動的に動作する
特徴
高い公開性: 広く利用できる
– 中央管理がしやすい:品質、セキュリティー
– 広く利用しやすいデータ構造を維持するのが難しい
欠点
Layering
構成要素
例
通信方法
層間でプロトコルを決める
特徴
利点
・抽象度での整理がしやすい:複雑な問題を階層に分割する
・拡張が容易:依存関係が前後の層に限られる
欠点
・階層構造に整理するのは難しい
・パフォーマンス:層ごとに通信することが負荷や遅延になる