Software refactoring can be seen as the object-oriented equivalent of [[ReStructuring][restructuring]]. It can be considered as a specific kind of [[SoftwareEvolution][software evolution]]. We can distinguish between two kinds of refactoring: - *[[ProgramRefactoring][Program refactoring]]* deals with the refactoring of source code (i.e., programs). It is a specific kind of [[ProgramTransformation][program transformation]] that preserves the external behaviour of the program. - *[[ModelRefactoring][Model refactoring]]* deals with the refactoring of models (e.g. design models). In a certain sense, [[ModelRefactoring][Model refactoring]] encompasses [[ProgramRefactoring][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. ----- CategoryTransformation | CategorySoftwareEvolution | Contributors: Main.TomMens -- Main.TomMens - 04 Oct 2004