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.

If restructuring is applied to programs, it is a program transformation in the classical sense, but it could also be applied at higher levels of abstraction, such as designs or architectures.

Program migrations going from one dialect to another, or one language to another can also be considered as restructurings.

A very related term is refactoring. This is also a behaviour preserving program transformation, but it is a special case of restructuring, in the sense that it is always used in the context of object-oriented programming, and typically at the level of programs (i.e., source code). Restructuring is more general, in that it can be applied to any kind of software artifact, in any language, at any level of abstraction.