{'fraction_non_alphanumeric': 0.015748031496062992, 'fraction_numerical': 0.0, 'mean_word_length': 5.254098360655738, '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}}
Object-oriented software evolution and re-engineering

Minimisation of dependencies between the parts of a software system is by far the most successful software engineering principle to cope with change and evolution. This principle is the foundation of, amongst others, encapsulation, modularity, high cohesion and loose coupling. It enables reasoning about different system parts separately as well as making changes to certain parts of a system without interfering with the other parts. Details that are of no importance to other parts of the system are hidden behind interfaces. As these other parts only rely on the information they get from these interfaces, they are not affected when the structures and implementations behind the interfaces are changed.