Currently I'm reading a book about refactoring code (The Refactoring Workbook). For those of you who don't know, this basically means auditing your existing code, or code you've inherited, and attempting to improve upon it.

The author has a website at http://www.refactoring.com which may be work a peek. He seems to focus on java code so far but says that C# or C++ programmers with enough reading knowledge of java can relate.

I was wondering if any of you have experience with this topic? What steps do you generally take and is there any software you use to help you with this process?