Selecting Bug-Prone Components To Study The Effectiveness Of Reengineering And Unit Testing