Open Classes and Aspect-Oriented Software Reuse or Weaving-based Software Reuse or Load time-based Software Reuse or Aspect-Oriented Software Composition?

いつものとおり、タイトルの英語が怪しいけど・・・

Open Class と階層拡張
http://www.ncfreak.com/asato/doc/openclass.html

というドキュメントを書いていて気づいた or AspectJ を使い始めていたころから気づいていたことだけど、Open Class (or AspectJ の用語でいえば、Inter-type declaration) は、ソフトウェア再利用性を向上させるのだろうか?


僕の現時点での感想*1は、恐らく YES。でも、色々と問題点もある気がする。感想的には、Open Class (既存のクラスを外から拡張 or 変更する) だけ では、問題点 or 不十分である気がする。どんな問題点かは、具体的にまだわからないけど、そんな気がする。

ちょっとばかし疑問:

  • Open class == Aspect-Orientation?
  • Extensibility == Reusability?

リソース:

  • H. Ossher and P. Tarr. Multi-Dimensional Separation of Concerns and The Hyperspace Approach. Proceedings of the Symposium on Software Architectures and Component Technology: The State of the Art in Software Development. (2000)

http://www.research.ibm.com/hyperspace/Papers/index.htm

  • Peri Tarr, Harold Ossher, William Harrison, Stanley M. Sutton, Jr. N Degrees of Separation: Multi-Dimensional Separation of Concerns. ICSE 1999. (1999)

http://citeseer.nj.nec.com/tarr99degrees.html

  • Todd Millstein, Mark Reay, and Craig Chambers, Relaxed MultiJava: Balancing Extensibility and Modular Typechecking, the 18th Annual ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications. (2003)

http://www.cs.washington.edu/research/projects/cecil/www/pubs/oopsla03.html

  • Alexandre Bergel, Stephane Ducasse and Roel Wuyts. Classboxes: A Minimal Module Model Supporting Local Rebinding. In Proceedings of the Joint Modular Languages Conference 2003. (2003)

http://www.iam.unibe.ch/~ducasse/WebPages/Publications.html

  • Matthias Zenger. Evolving Software with Extensible Modules. First International Workshop on Unanticipated Software Evolution. (2002)

http://lampwww.epfl.ch/~zenger/research.html

http://staff.aist.go.jp/y-ichisugi/ja/mj/

*1:単なる感想っすよ。僕がこういったところで何よ? みたいな感想っすよ。僕の考えが正しいとかの主張もまったくないっすよ