I did a talk at Geekup Nottingham last night on Brownfield Refactoring. It's a little controversial if you're a developer as essentially I asked questions like Do you need to refactor this at all? Can the decline of the product just be carefully managed so that newer projects can grow? These aren't questions we normally like to think about as developers as our passion is to make everything as good as it can be. However a project must be financially viable and you must not risk the functionality for the sake of code excellence.