{'fraction_non_alphanumeric': 0.01454234388366125, 'fraction_numerical': 0.0, 'mean_word_length': 5.8023255813953485, '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}}
New software components with an autonomous changing mechanism

The paper presents software components, which are called "active components", with a mechanism for automatically and dynamically changing their codes. To create new programs, users must frequently modify software components because conventional components are fixed in libraries and user requirements are continuously changing. The active components can modify themselves into source codes that meet new requirements and that correspond to the characteristics of their existing libraries. The new mechanism provides two kinds of changes by: i) decomposing the functions of active components based on program slicing, and ii) partially exchanging their functions with modification histories in the libraries based on labeled graph matching for program dependence graphs. With this mechanism, the active components do not require many user modifications to create new programs, and not all components need to be prepared in the libraries whose characteristics are not specified. The paper also demonstrates the effects of this mechanism by describing experimental results obtained with the active components.