Understanding and Improving Object-Oriented Software Through Static Software Analysis