Re-factoring is great when you are working with non-shipping/in use code, however, once deployed it can become a planning challenge. If you go find yourself putting something in to production because it works and the business needs it now, you need to plan for the re-factoring work that will come. Iterative re-factoring of code/architecture can be done side by side and is far easier to do while working with vertical use cases instead of the horizontal tiered approach when the platform is not changing or going through a major update.
Taking a use case from bottom to top seems to be the best method in practice for re-factoring/re-architecting. For example, if you need to re-factor a use case while the existing product is in FX 1.1 and the re-factored code will be as well, spin up the re-factored infrastructure from the Data/Business/Presentation tier. Most re-factoring exercises have to do with abstraction, encapsulation, normalization and separation of concerns and this is much easier to do by starting with the data tier. Following this approach will allow one to knock out each use case one by one (as long as it does not require a schema change in persistent storage that has dependencies with other use cases).
.02
This posting is provided "AS IS" with no warranties, and confers no rights.