We can distinguish between two kinds of refactoring:
- Program refactoring deals with the refactoring of source code (i.e., programs). It is a specific kind of program transformation that preserves the external behaviour of the program.
- Model refactoring deals with the refactoring of models (e.g. design models). In a certain sense, Model refactoring encompasses Program refactoring, at least for those who take the view that a program is nothing but a special kind of (very detailed) model. ModelRefactoring is a special kind of ModelTransformation, namely a model transformation that preserves the behaviour of the model, however behaviour is defined.
-- TomMens - 04 Oct 2004