Object-Oriented Design Knowledge by Mario Piattini