Growing Object-Oriented Software, Guided by Tests