{'fraction_non_alphanumeric': 0.01780185758513932, 'fraction_numerical': 0.0, 'mean_word_length': 5.841269841269841, 'pattern_counts': {'":': 0, '<': 0, '<?xml version=': 0, '>': 0, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 1, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
Towards Mentoring Object-Oriented Evolutionary Development

Object-oriented software is increasingly developed using an evolutionary development process model. Therefore, capturing and understanding the evolution that the system’s logical design has gone through can provide valuable insights in support of consistently maintaining and evolving the system, without compromising the integrity and stability of its architecture. In this paper, we present a method for capturing and analyzing the design evolution of object-oriented software systems. This method relies on UMLDiff, a heuristic UML-structure differencing algorithm, which, given a sequence of UML class models corresponding to the logical design of a sequence of system code releases, produces a sequence of “change records” that describe the design-level structural changes between subsequent system releases. Various design evolution patterns are then analyzed to reveal the rationale underlying design decisions that may affect the software system. The recovered knowledge about the system’s logic design evolution enables the overall understanding of system design evolution and provides the basis for mentoring the developers on future maintainance activities. We report on one real world case study evaluating our approach.