{'fraction_non_alphanumeric': 0.02030456852791878, 'fraction_numerical': 0.0, 'mean_word_length': 5.626050420168068, '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}}
ADAPTIVENESS OF SOFTWARE SYSTEMS USING REFLECTION

This paper deals with basic principles of metaprogramming and reflection with connection to aspect-oriented programming (AOP). Metaprogramming is about writing programs that represents and manipulate other programs or themselves, i.e. metaprograms are programs about programs. The impact of metaprogramming is obvious in traditional development processes, by sorting existing programs as transformational processes with inputs and outputs. Open implementation and metalevel architectures are related to their reflective properties. Reflection is an entity’s integral ability to represent, operate on and otherwise deal with itself in the same way that it represents, operates on, and deal with its primary subject matter. Structural reflection represents the ability of a program to access a representation of its structure, as it is defined in the programming language. Behavioural reflection represents the ability of a program to access a dynamic representation of itself, that is to say, of the operational execution of the program as it is defined by the programming language implementation (processor). AOP allows development of required application using principle of separation of concerns. Reflection and AOP share many similarities in concepts, possibilities and applied techniques. There are several solutions to provide a reflective system among which belong following approaches: MetaclassTalk, Geppetto Reflex and Iguana/J. The former two are systems based on Smalltalk Squeak; the latter two are based on Java.