Modeling history to understand software evolution