Aspects as Crosscutting Concerns or Aspects as Context

英語が怪しいけど、まあ、無視して、、、


アスペクトの普通の見方は、Crosscutting Concerns を含むモジュール単位、みたいな雰囲気だと思うけど、それよりも or それに加えて、Context (文脈)を表すのがアスペクト、と考えるのも有効的かもしれない。


Aspectual Polymorphism [1][2] に関連する見方だとは思うけど、or AspectJ みたいな、Caesar と比べると static な AOP 言語では、ちょっとうまく表現するのは難しいかもしれないけど、アスペクトを Context を表す、とみなしたとき、意外と適用範囲がわかりよいかもしれない。


最近書いた例では、そのような文脈に対応するのは、ゲームの難易度。ゲームの難易度によって、ゲームの実行内容が変化する。敵が強くなるかもしれないし、スコアが変動するかもしれないし、出てくるアイテムの出現頻度なんかにも影響するかもしれない。このような concern は、Crosscutting Concern の一つだと思うけど、文脈に対応するのが、ゲームの難易度にあたると思う。どのようなアスペクト(ゲームの難易度)がデプロイされているのかにしたがって、ゲームの内容が変化する。


他の例は? たとえば、曜日ごとに販売製品とか、割引率が変化するとか。この場合は、曜日が文脈(or アスペクト)になる。あるいは、時間帯によって割引率が変化するとか。この場合には、時間帯が文脈になる。プログラム実行期間に、どのようなアスペクトがデプロイされているかによって、実行内容に変化を生み出せる。


まとめると:

  • Crosscutting Concerns の種類の一つとして、Context がある? もしそうなら、他にどんな種類の Crosscutting Concern がある?
  • AOP 言語は、よりダイナミックであるべきか?
  • Aspectual Polymorphism は if 文を減らすか?
  • 普通の Polymorphism も if 文を減らす。では、次の概念を考えるときには、どうやったら if 文を減らせるのか、の視点で考えればよい?


リソース:

  • [1] M. Mezini and K.Ostermann. Conquering Aspects with Caesar. the 2nd International Conference on Aspect-Oriented Software Development. (2003)

http://www.st.informatik.tu-darmstadt.de/public/Publications.jsp

  • [2] M. Haupt, C. Bockisch, M. Mezini, K. Ostermann. Towards Aspect-Aware Execution Models. Technical Report TUD-ST-2003-01. (2003)

http://www.st.informatik.tu-darmstadt.de/public/Publications.jsp