{'fraction_non_alphanumeric': 0.018404907975460124, 'fraction_numerical': 0.00245398773006135, 'mean_word_length': 5.0, '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': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
COMBINING STATIC AND DYNAMIC ANALYSES TO DETECT INTERACTION PATTERNS

We detect interaction patterns in legacy code combining static and dynamic analyses. The analyses do not depend on coding or naming conventions. We classified potential pattern instances according to the evidence our analyses provide. We discuss our approach with the Observer Pattern as an example. Our Java implementation analyzes Java programs. We evaluated our approach by self applying the tool looking for Observers in its code. In general, our tool detects all Observer Pattern instances actually contained in the code as candidates, i. e., we do not miss a single pattern instance. In the example, the candidates our tool considers Observers with high evidence include 80% of the actual Observer Pattern instances and no false positives.