If you've ever inherited legacy software (and legacy software doesn't mean old software), or jointed a company with a large software system that's already seen some time in the field, here's a gem worth looking at: Object-Oriented Reengineering Patterns. Aimed at software professionals who are comfortable with design and development (what the authors call "Forward Engineering"), the book will introduce you to and clarify the terms and practices around "Reverse Engineering" and "Reengineering." It's accessible and full of useful insights into how to get your arms around systems quickly, and battle-tested techniques for making legacy software better.
I'm about 70 pages into the book, which is an accomplishment for most technical books which are best used for reference, but this work (at least, so far) is very readable front-to-back as a tutorial on how to take on a reengineering project, with a plausible case study woven into the pattern language of software reengineering.
Best of all, it's free in digital form, and if you prefer paper for reference works, links are available on the site to purchase the book from Amazon or have it printed-on-demand by Lulu. Definitely worth a look.