{'fraction_non_alphanumeric': 0.019591141396933562, 'fraction_numerical': 0.0, 'mean_word_length': 5.184210526315789, '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}}
Recovering conceptual roles of data in a program

Tools that can bridge the gap between domain knowledge and specific program artifacts are valuable for maintenance work,. This paper describes a tool that can be used to identify conceptual roles associated with program variables and groups of related variables representing relationships in problem domain. The analysis performed by the tool has two levels. The lower-level program-centric analysis is independent of the problem domain. The program-centric analyzers extract syntactic and semantic information about program variables. The results are stored as an XML repository to enable their reuse by other tools. The higher-level analysis is knowledge-centric and customized to make effective use of domain knowledge. To allow our tool to be adaptable to different domains, we provide a customizable rule-based analysis mechanism. To illustrate our tool and the underlying approach, we present simple illustrative examples and a complete case study based on a real-world program. This tool is a part of SeeCORE, a knowledge-centric software engineering environment currently, being developed in our research laboratory.