netail.net
自作フリーソフトや,ゲームに関する雑記を公開してます.
日記はソフトウェア工学の論文ネタが中心です.
最近のお知らせ (古いものはこちら)
2006-11-02 [長年日記] ▲
_ [論文] アスペクトを使ってアーキテクチャのプロトタイピング ▲
Ingolf H. Krueger, Reena Mathew, Michael Meisinger: Efficient Exploration of Service-Oriented Architectures using Aspects.
Proceedings of ICSE 2006, pp.62-71.
あまり詳しくは読みきってないけど,アイディアが面白かった論文.
目的は複数のアーキテクチャ候補の比較評価.シーケンス図やロールモデル,コンポーネントのマッピングを記述して,それらに基づいてアスペクト(AspectJ ソース)を生成し,プログラムとして実行することで性能の試算などを行おうというもの.
アーキテクチャごとに,コンポーネントがどう接続されるか,どう相互作用するかという部分をシーケンス図やロールモデルで記述する. 登場する個々のエンティティは,比較的単純にクラスとしてマッピングすることができる(と思う).
シーケンス図に書かれたメッセージ列は,「C1.A の実行が終わったあとに C2.B を実行する」というように解釈すれば,機械的にafter(): execution(C1.A) { C2.B; }
のようなアドバイスに変換できる.
また,ロールドメインモデルで,「Manager は Broadcaster にアクセスする必要がある」と書いてあったらインタータイプ宣言を使って Manager に Broadcast 型の変数と setter/getter を作成することができる.
クラスとアスペクトを一通り生成したら,あとは weaver に任せてコンパイルを通し,実行して評価するだけ.従来だと,シーケンス図に登場する各クラスに相互のメソッド呼び出し用のコードを適切な順序に並べて埋め込んでいくとかいった手間のかかっていた部分が,ほとんど weaver 任せになっている.
生成されたコードはえらいことになる気がするけれど,保守するわけではないので問題なし.
アスペクトだけでコードを書くと「アスペクトが全部の処理を接続して,クラスはデータ構造を宣言するだけになる」というのは想像したことはあったけれど,そういうコードを生成してプロトタイピング的に使ってしまおう,という考え方にはすごく感心してしまった.