change based software evolution