Aspects, Unplugability, Extension, and Dependency

ソフトウェア開発にアスペクトを導入しようとする場合、少なくともアンプラグ可能なアスペクトとそうでないアスペクトの二種類があると思う。


ロギングだけを考えてみても、単にログを取りたいからロギングアスペクトを導入してみる、という一時的なケース(したがって、アスペクトの存在はアプリケーションの動作には影響しない)と、ログと取ることが必然なケース(ログなしでアプリケーションを動作させることは、受け入れられない)の二種類があると思う。


前者の場合、ソフトウェアの拡張(アンプラグ可能)だと考えられるけど、後者の場合は、そうではない(アンプラグ不可能)。


つまり、アプリケーションの開発とアスペクトの開発を別々に行えるけど(バイトコードに weave できるので)、実際はアプリケーションはアスペクトに強く依存している、ということ。


なかなか当たり前な結論っぽいけど、そこそこ重要な気がする。


関連:

Colyer, A., A. Rashid, G. Blair.
On the Separation of Concerns in Program Families.
Technical Report Number: COMP-001-2004.

DL: http://www.comp.lancs.ac.uk/computing/aose/Publications.php
書いている途中に、何か頭にちらついてどこかで読んだことがある、書こうと口の中でごもごも言おうとしている言葉が既に言ったことがある、と思ったらこの論文だった(と思う)。