Prefactoring is the application of 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.[1]
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.
These guidelines include: