Growing Object-Orented Software, Guided by Tests