{'fraction_non_alphanumeric': 0.01644736842105263, 'fraction_numerical': 0.0, 'mean_word_length': 5.296551724137931, '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}}
Simplicity: a key engineering concept for program understanding

One of the most significant problems for existing program comprehension methods is its scalability. We introduce a new technique to make the scalability possible. In particular, we advocate the concept of "simplicity" for program understanding. We first propose a simplified semantic network as domain knowledge representation; we then introduce a linear and domain-oriented program partitioning method which can partition a huge program into self-contained program modules so that the recovery of domain knowledge can be carried out within smaller program space. We also introduce a set of rules for recovering domain knowledge from C code followed by a theoretical analysis on these algorithms. A case study on programming style based program partitioning method is given. Finally, comparisons with other work are made and a conclusion is drawn.