I am part of a new team attempting to develop a new Java software system out of a legacy code base (also written in Java) that's rotten to the core. For company political reasons we can't ditch the old Java code and start from fresh. A rewrite would be tantamount to an admission that the system they spent 2 years developing is complete rubbish. This would lead to head rolling at the top of the team (i.e. Development managers, project managers, Architects etc...). A very strong sense of self preservation has therefore kicked in at the top of the team meaning that any ideas which hint at a rewrite are dismissed out of hand.
This has lead to ask the following question:
What would you say are the key processes, tools and software development techniques, a team would need to implement in order to successfully re-engineer/refactor a very rotten legacy code base into a good stable system?
This must surely be possible. Are there any good books/websites on the matter?
Thanks