アスペクト指向勉強会(第8回)

※以下の記述には勘違いが含まれているかも知れません。

基本情報

  • Day/Time: 2005/10/30 Man. 10:00 - 13:45
  • Place: 920 Training - Room @ OGIS-RI
  • Person: 7(Taka, Miya, Tsuji, Itoh, Goh, Yone, Aka)

内容

  • a) Designing Crosscutting Themes pp.177
  • b) Changes to the UML pp.178
    • b1) Crosscutting Behavior pp.178
    • b2) Control Flow Restrictions on Triggers pp.179
    • b3) Templete Operation Parameters pp.180
    • b4) Listing the Templates for a Theme pp.181
    • b5) Referencing Template Structure and Behavior pp.183
  • c) Track-Enegry Theme pp.185
  • d) P2P Communication Theme pp.190
  • e) Summary pp.197

Designing Crosscutting Themes

ここからはシステム横断的なテーマ(Aspect)*1の設計の話です。
横断的な振る舞いをUMLのtemplete表記を拡張したもので表現します。
テンプレートの対象になるのは、class、operation、attributeです。
UMLのtemplateではattributeの型を対象にしたパラメータですが、operationもパラメータになります。

Changes to the UML

templeteの拡張についての話。

Crosscutting Behavior
_do_*()
ポイントカットに対する実際の振る舞い*2をシーケンス図で表現するために、_do_foo()*3というメソッドを追加します。
Control Flow Restrictions on Triggers
control flow
ApectJのポイントカット記述(cflow)のこと?。joinpointを選択し、アクションを呼び出すかどうかを制限するもの。

Fig5-15では、op1()の制御フローとして、op1()から呼び出されたop2()に制限して、befor()とafter()のアクションがあることを表現している。

Templete Operation Parameters
Parameter Usage
op() パラメータなし
op(..) パラメータあり
op(.., Type, ..) パタメータにType情報を持っていること
Listing the Templates for a Theme
template class
templete operationまたはtemplate attributeを持ったクラスのこと。
template operation
ThemeをCompositeする時に置き換えられる(決定する)操作のこと。
template attribute
ThemeをCompositeする時に置き換えられる(決定する)属性のこと。

Crosscutting Themeは、UMLのパラメタライズドパッケージとして、template parameterにtemplate operationなどを使って表現します(Fig5-16)。

Referencing Template Structure and Behavior

template class(テンプレート構造/振る舞い)に対する参照ルール

  • ルール1:テンプレートクラスに対して外部参照してはならない
  • ルール2:テンプレートクラスのメソッド呼び出ししてはならない

テンプレートクラスのパラメタライズされない固定的なメソッドを呼び出しても構わないのでは?という意見が出たが、ここではそういうメソッドがある場合にはクラスを分割することになるようだ・・・。
Fooクラスを、FooとテンプレートクラスTFooに分割する(次回に分かるかな?)。

Track-Enegry Theme

省略。

P2P Communication Theme

FooクラスをTFooクラスに分割する条件
templete operationである操作とそうでない操作が含まれるクラスが存在した時には必ず分割するそうです。TFooのTはTempateの意味?。

Summary

Themeをbaseまはたaspect(Crosscutting)に識別しました。
baseテーマは通常通りにUMLで設計します。aspectテーマはTemplateを拡張して表現します。Crosscuttingな振る舞いについてもシーケンス図で表現できます。

次回

  • 第9回 2005/10/20 10:00〜 Chap6 "Theme Composition" pp.199 - pp.223
  • 第10回 2005/10/27 10:00〜 Chap6 "Theme Composition" pp.223 - 244

*1:baseでない方のTheme

*2:Crosscutting Behaviorのこと。AspectJでのAdviceと同様?

*3:対象のメソッド名に_do_を付与したもの。foo()がトリガーを与えるメソッド