Design for future: managed software evolution