{'fraction_non_alphanumeric': 0.015665796344647518, 'fraction_numerical': 0.0, 'mean_word_length': 5.7251461988304095, '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}}
A Framework for Instability Analysis

As software evolves, maintenance practices require a process of accommodating changing requirements while minimizing the cost of implementing those changes. Over time, incompatabilities between design assumptions and the operational environment become more pronounced, requiring some regions of the implementation to require frequent or repeated modification. These regions are considered to be “unstable”, and would benefit from targeted restructuring efforts as a means of realigning these assumptions and the environment. An analysis of these regions that results in the identification and classification of these instabilities can be used to prioritize and direct structural maintenance efforts. In this paper, we present a framework for performing such an analysis that does not require sophisticated change management data, can be performed at the single-line level of granularity, and can be performed on any historical set of artifacts for which a static dependence graph can be constructed. We also describe our work-to-date in validating the underlying assumptions and performing instability analyses.