Studying software evolution of large object-oriented software systems using an ETGM algorithm