Re Structuring

Program-Transformation.Org: The Program Transformation Wiki
The ReverseAndReengineeringTaxonomy defines restructuring as a transformation from one form of representation to another at the same relative level of abstraction. The new representation is meant to preserve the semantics and external behavior of the original.

ProgramTransformation in the classical sense, but it could also be applied at higher levels of abstraction, such as designs or architectures.

ProgramMigrations going from one dialect to another, or one language to another also belong in this category.

Is ProgramRefactoring (or should we call it ReFactoring) a synonym for ReStructuring? --EelcoVisser
MartinFowler defines a refactoring as:
  • a change made to the internal structure of software to make it easier to understand and cheaper to modify without changing its observable behavior
He then continues to define the verb to refactor as
  • to restructure software by applying a series of refactorings without changing its observable behavior.

So from the definition ReFactoring looks like a special case of ReStructuring.

Furthermore, I associate refactorings with:

  • many small changes applied repeatedly
  • a catalog of widely discussed changes
  • explicit unit tests applied before and after each minimal change
  • interactive, perhaps tool-supported, but not automated.