アスペクト指向勉強会 - 実践編 (第12回)

Theme Relationship View で Shared Requirement に関連する Theme が Aspect かどうかを識別し、Crosscutting View を作成する。
Aspect かどうか見分ける基準 (手順?) は以下の4つ。

  1. Split the requirement if possible
  2. Dominance means association
  3. Base triggers aspect
  4. Is the Aspect Crosscutting Enough?

これが、いざやってみるとなかなか難しい。
http://homepage2.nifty.com/glad/work/hatena/20060909/relationship-view1.png
この例だと、ログをとるが Aspect と識別されて、以下のような Crosscutting View*1 が作成される。
http://homepage2.nifty.com/glad/work/hatena/20060909/crosscutting-view1.png

ところが...
http://homepage2.nifty.com/glad/work/hatena/20060909/relationship-view2.png
この例の場合、いろいろ問題点があがった。

  • 「ベットする」は「ゲームを開始する」から起動されるの?
  • 起動と見なすと、循環してしまうんじゃない?
  • ゲームのフローじゃない?
    ↓アクティビティ図*2で描くとこんな感じ。

http://homepage2.nifty.com/glad/work/hatena/20060909/activity-diagram.png

その他にも、

  • テーマがつながっていないのは、要件リストにもれがあるのでは?
  • Aspect と識別されずに保留されたものは、そのままで設計に進んでいいか?
  • Theme の粒度が小さすぎるのでは?

といろいろな問題点が出てきてしまった。

じゃあ、どうしようか? という話になって、それでももう少し先に進んでみたいという意見と、要件や Theme、手法の見直しをした方がよいのでは? という意見が出た。
その結果、次回は2チームに分かれて作業することに。さて、どうなることやら...

*1:表記法は勉強会オリジナル

*2:ステートチャート図じゃないの? というのは内緒 ^^;