【アーキテクチャパターン】POSA Vol.1のPresentation-Abstraction-Control
Presentation-Abstraction-Controlアーキテクチャパターン(PAC)は,協調するエージェントの階層と言う形で,対話型ソフトウェアシステムのための構造を定義する.このエージェントはその1つずつがアプリケーション機能の特定の一面を実現する責務を負っており,3つの部分から構成される.3つの部分とは,Presentationコンポーネント,Abstractionコンポーネント,Controlコンポーネントである.これらのコンポーネントへ分割することにより,エージェントの機能中核部分や他のエージェントとの通信から,人間とコンピュータの対話機能が分離される.
前提
エージェントを利用する対話型システムの開発
課題
協調するエージェントから構成されるアーキテクチャでは,各エージェントが特別なタスクを専門的に行うよう定義される. このエージェントの協働によりシステム全体の機能を提供する. このアーキテクチャでは水平分割と垂直分割が行われる.
フォースを見てみる.
- エージェントが自身の状態とデータを保持している
- 対話型エージェントのそれぞれが,独自のインターフェースを提供する
- 時間経過により,システムが拡張される.
解決策
対話型アプリケーションをPACエージェントからなる木構造化する.
- トップレベルに一つのエージェント
- 中間レベルに複数のエージェント
- ボトムレベルにはそれよりも数の多いエージェント
とする. 各エージェントそれぞれアプリ機能の一部を分担する. 各エージェントは3つの下記コンポーネントを持つ.
- Presentation
- エージェントの振る舞いを可視化
- Abstraction
- エージェントが実現するデータモデルを管理
- Control
- PresentationとAbstractionの接続
- エージェントが他のPACエージェントと通信する機能の提供
各エージェントは,木構造の自分より上位のエージェント全てに依存する.
例
この政治選挙システム例では,
- トップレベルエージェント
- data repository
- 中間レベルエージェント
- view coordinator
- ボトムレベルエージェント
- spreadsheet
- pie chart
- bar chart
- seat distribution
ユーザはspreadsheetに対してデータ入力し,pie chartやbar chartなどがビューの役割を果たす. view coordinatorは3つのビューエージェントを管理する. spreadsheetはトップレベルエージェントと直接のリンクを持つ.
静的側面
トップレベルエージェント
システムの機能中核となる部分を提供する. その他のPACエージェントは,このエージェントに依存し,このエージェントを操作するもの.
複数の責務を持つことが多い.
- Presentation
- システム共通のUIを提供する
- Abstraction
- グローバルモデルを維持管理する
- Control
- 下位のエージェントに対して,トップレベルエージェントが提供するサービスを利用できるようにする.
- PACエージェントの階層を調整する
- ユーザとシステムの相互作用についての情報を維持管理する
ボトムレベルエージェント
自己完結的な意味的概念を表現する システムのユーザはその概念に対してアクションを行う.
- Presentation
- 意味的概念に対する1つのビューを提供する
- Abstraction
- エージェント固有のデータを管理する
- Control
- AbstractionとPresentationの一貫性を維持する
中間レベルエージェント
自分よりも下位に位置するエージェントの組み合わせや,そのようなエージェント間の関係を表現する.
動的側面
シナリオ1
新しいビューを開く.
- ユーザがViewCoordinatorに対してBarchartを開くようリクエストを送ると,そのインスタンスが生成される
- ボトムレベルエージェントがトップレベルエージェントからデータを取得する際には,中間レベルエージェントが仲介する.
シナリオ2
新しいデータの入力.
実装
- アプリケーションのモデルを定義する。
- PAC階層を組織的に作成するための汎用戦略を定義する。
- トップレベルエージェントを設計する。
- ボトムレベルエージェントを設計する。
- システムサービスを行うボトムレベルエージェントを特定する。
- 下位に位置するPACエージェントから構成される中間レベルエージェントを設計する。
- 下位に位置するPACエージェントを調整する役割を持つ中間レベルエージェントを設計する。
- 中核機能とヒューマン-コンピュータ相互作用を分離する。
- 外部インタフェースを提供する。
- 階層をリンクする。
バリエーション
以下の2つのPACのバリエーションでは,マルチタスクの実現というフォースを解決している.
- アクティブオブジェクトとしてのPACエージェント
- プロセスとしてのPACエージェント
適用例
- ネットワークトラフィック管理
- モービルロボット
結論
PACパターンの利点
- 関心の分離
- 意味的概念をエージェントで分けられる
- 変更と拡張の支援
- マルチタスクの支援
PACパターンの欠点
- システムの複雑度の増大
- 複雑なControlコンポーネント
- 効率性
- 適用可能性