Change Patterns or Evolution Patterns

リファクタリングとも関連するけど、調べたいことの候補に、Change Patterns あるいは Evolution Patterns ってのがある(僕が勝手に付けただけ。他にも同様のことがあるかもしれない)。具体的にいうと、プログラムに関する特定の要件や変更に対して、どのようなプログラムの構造の変化があるのかを、調べたい。どのようなプログラム(クラス)構造の時に、どのような要件が望まれると、どのようなプログラム(クラス)構造になりうるのか。


変更に対するクラス構造の変化(発展)には、多くの選択肢があると思う。ある変化に対して、どのような選択肢が生まれるのか。なぜ、どのような理由で、特定の選択肢を選ぶのか。


リファクタリングとの関係は、リファクタリングの以前の段階に対応する気がする。


重要なのは、文章としてのパターンじゃなくて、コードとしての抽象的なパターンっぽい記述が欲しいってこと。


パターンとして特定するのは難しそう&面倒(これは確実)だとは思うけど、うまくいけば、変更の波及なんかが特定できそうな気がする。でも、もしできたとしても、何が得られるんだろうか。少なくとも、ソフトウェアの発展に対する見地は得られる気がする。


変更、変更に対する選択肢、変更後のリファクタリング、そして、デザインパターンへ。

リソース:

  • Tom Mens, Jim Buckley, Matthias Zenger, Awais Rashid. Towards a Taxonomy of Software Evolution . Second International Workshop on Unanticipated Software Evolution. (2003)

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