Characterizing Modules from Structure Evolution Perspective
英語あってるのか不明。
意図は、モジュール構造の進化の視点から、モジュールの種類を特徴づけよう、ということ。
ここでいうモジュールは、クラスとかアスペクトとか、ソフトウェアを構成する基本的な単位。
個々のモジュールは、変化 or 進化していく。ソフトウェアの要求に対応していく過程で、あるクラスは、新しいメソッドが追加されるかもしれないし、あるいは、新しい継承階層の一部になるかもしれない。または、リファクタリングを通して、特定のデザインパターンが適用された状態になるかもしれない。
しかし、すべてのモジュールが、同じ進化の過程を同じ可能性で通るわけではない。
たとえば、XxxUtils とかいう static なメソッドを集めたクラスが、Observer のロールを将来的に行うようになるとは考えがたい。
つまり、あるモジュールがどのような進化の過程を通るのかには、ある種の特徴があると考えられる。または、進化の過程自体が繰り返し起こるパターンになるかもしれない、と考えることもできる。
もちろん、実践的な視点からの疑問は「なぜ、そのようにしてモジュールを特徴付ける必要があるのか?」 ということ。
この疑問への回答は、まだ考え中。
関連文献
Joseph (Yossi) Gil and Itay Maman.
Micro Patterns in Java Code.
OOPSLA'05.
Danny Dig and Ralph Johnson.
The Role of Refactorings in API Evolution.
ICSM'05.
最近のソフトウェア進化研究の概要を知りたいなら、たとえば:
Tudor Gîrba
Modeling History to Understand Software Evolution.
Ph.D. thesis, University of Berne, November 2005.
http://www.iam.unibe.ch/~scg/cgi-bin/oobib.cgi?query=Girb05d&abstract=yes
T. Mens, M. Wermelinger, S. Ducasse, S. Demeyer, R. Hirschfeld and M. Jazayeri.
Challenges in Software Evolution.
8th International Worshop on Principles of Software Evolution.
http://w3.umh.ac.be/~infofs/preprints/index.php?page=author_info&ID=5