{'fraction_non_alphanumeric': 0.016965127238454288, 'fraction_numerical': 0.0, 'mean_word_length': 5.515337423312883, '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}}
Feature-driven program understanding using concept analysis of execution traces

The first task of a programmer who wants to understand how a certain feature is implemented is to localize the implementation of the feature in the code. If the implementations of a set of related features are to be understood, a programmer is interested in their commonalities and variabilities. For large and badly documented programs, localizing features in code and identifying the commonalities and variabilities of components and features can be difficult and time-consuming. It is useful to derive this information automatically. The feature-component correspondence describes which components are needed to implement a set of features and what are the respective commonalities and variabilities of those features and components. This paper describes a new technique to derive the feature-component correspondence utilizing dynamic information and concept analysis. The method is simple to apply, cost-effective, largely language-independent, and can yield results quickly.