Prefactoring is the application of past experience to the creation of new software systems. Its relationship to its namesake refactoring is that lessons learned from refactoring are part of that experience.
Experience is captured in guidelines that can be applied to a development process. The guidelines have come from a number of sources, including Jerry Weinberg, Norm Kerth, and Scott Ambler .