Analysing Program Evolution