Hi Prof,
Have done this before, but not as it should have been done.
But to answer your question, yes, if you are going to rewrite an application, do it the right way from the get-go. Rather do it the way you suggested, doing things in a UML manner, optimising, then coding.
I would also suggest breaking up the application into different tiers, i.e. a Data access layer, Business logic layer, and a presentation layer. When we do something like that here where I work (we are in the process of rewriting many old Java apps to .NET C# and ASP.NET), we even re-do the database as well, or else there is no point to do it. Now, I don't know if you can do that, but I highly recommend it. Once, when we had to rewrite an app at a previous place I worked, we used the same D.B structure as the old system, which resulted in a number of headaches for us developers, considering the way the application was written. We had to code around about 10 or so tables that we weren't even using, but had F.K.'s etc that linked to tables we were using (O.K. I here you all say "JUST REMOVE the tables", but 1.) there was not time and 2.) The system architect was too lazy to figure it out).
Hope this can help,
The Question is the Answer, and the Answer is the Question!