Understanding And Simulating Software Evolution