I have retreaded the front-end of line-by-line I/O to full-screen on mainframes. I've transitioned from green-phosphor only displays to 8 color (16, if you count light and dark versions of each color). I've rewritten DOS programs to use Windows API calls and, well,...windows. I've replaced mainframe and distributed front-ends with web pages. I've redone websites to replace, revise, and add new options per changes to the business needs. Finally, I generally think that few front-ends are ever truly finished. Apps, especially good ones, evolve over time. Any really good app - and its UI - offers the potential to refine existing features, accept the addition of new features, or retire aspects the business has outgrown. Changes to the model layer almost always demand reflection in the user interface.
So, with that having been said, what sagely wisdom have I distilled?
Be sure your use-cases are accurate AND enforce flexible transitions.
Use ANY opportunity to evolve the UI as an "excuse" to fix other stuff - refactor, refactor, refactor.
Involve your users early and often - they know WAY more about their workflows than you do.
Not all that originally sagely coming from me, right? Pretty much what most us have been taught for the last thirty years by various masters of our craft. I will say that it has the virtue for me of having been stamped on my hide by live experience - I am NOT conjecturing - I know.