AOSDwUCを読んでいるわけですが、早速前書きに重要なことが書かれていますね。
この本に書かれている通り、横断的関心=Aspectではないこと、そして機能とAspectそれは分離されるべきなんだと思います。Aspectは、自分の意識の中ではテクノロジーを指し示す用語であって、要件を示すモノではない。要は Aspectは要件じゃないと思っています。(非機能を含む)要件は、ロギングだったり、セキュリティだったり、トランザクションだったり(ベタですね〜)するわけで、色々なところから呼ばれる共通機能ですよね。実際に実装をするとしたら、ユーティリティクラスだったり、基盤フレームワークに取り込まれるべき機能と言えるかもしれません。
AspectJとか無かった時代に、ServletFilterを使って、認証とかセキュリティなどの機能を作っていました。でも、その機能の本質的な部分は、ServletFilterのクラスには実装せずに、別クラスに定義していたりします。その理由は、ServletFilterからのみ呼ばれるとは限らないから。こうやってクラスを分離すると、実装するのに時間もコストも掛かるのだけれど、将来的にServletFilterではないところから、同じ機能が必要とされることがあるので、そうしているわけです。こうすると、機能がServletFilter(Aspectと読み替えても良いかも)から分離されて、再利用度が高まります。(そしてテストも楽になります。)
Aspectって流行っているけれど、Aspectは本そのものではなくて、Bookmark(しおり)何だよ、ということなのかもしれない。
さてと、ワイン飲みつつ、もうちょっと読んでみよ〜。
最近のコメント