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.