I'm afraid there is no quick way of executing such a major overhaul.
The only thing you can do is reiterate on the single functionalities in an
agile flow, but the time needed to complete the whole redesign will
probably be massive anyway.

Since your legacy application is "somewhat modular", you could start by
building a zf2 module each time you find yourself needing a single
functionality of it.
Nothing too fancy, just a basic test driven implementation that resembles
the original behaviour, but this time you refactor the original code
following SOLID principles and basic best practices.
Initially, you would want to try and limit the amount of design decisions
you have to make by using the simplest possible patterns for each module.
You need to repeat yourself "Keep it simple" each time you make a design
decision, even at the cost of sacrificing 1:1 functionality with the old
code.
Then, when the resources allow it, you can reiterate on those modules any
time you want one of them to be improved, applying each time more efforts
into the redesign, possibly even re-redesigning the modules themselves with
fancier patterns; at that point applying design decisions should be much
much easier and quicker because the foundations you'd have are meant to be
maintainable and improvable.
This way you can trigger a short release process for each module, giving
you appreciable results quickly enough and maybe buy you some more time
from your contractor.

That's at least how I would do it. ;)

Cheers,

Stefano Torresi

Reply via email to