{'fraction_non_alphanumeric': 0.03442959917780062, 'fraction_numerical': 0.003083247687564234, 'mean_word_length': 5.220447284345048, '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}}
Awareness and Control in Adaptable Transition Systems

The CoDa approach. Self-adaptive systems are advocated as a solution to the problem of mastering the complexity of modern software systems and the continuous evolution of the environment where they operate. Self-adaptation is considered a fundamental feature of autonomic systems, one that can specialise to several other self-* properties, like self-configuration and self-optimisation. Should the analysis favour a black-box perspective, a software system is called “self-adaptive” if it can modify its behaviour in response to a change in its context. On the contrary, white-box adaptation focuses on how adaptation is realised in terms of architectural and linguistic mechanisms and usually promotes a clear separation of adaptation and application logics. Our own approach [2, 5] characterizes adaptivity on the basis of a precisely identified collection of control data (CoDa), deemed to be interpreted as those data whose manipulation triggers an adaptation. This view is agnostic with respect to the form of interaction with the environment, the level of context-awareness, the use of reflection for self-awareness. In fact, our definition applies equally well to most of the existing approaches for designing adaptive systems. Overall, it provides a satisfactory answer to the question “what is adaptation conceptually?”. But “what is adaptation formally?” and “which is the right way to reason about adaptation, formally?”. We are aware of only a few works (e.g. [8]) that address the foundational aspects of adaptive systems, including their semantics and the use of formal reasoning methods, and often only generic analysis techniques are applied. An example of the possibilities of such technique is our approach [4] to adaptive self-assembly strategies using Maude (and following precisely both [8] and [2]), where we applied standard simulation and statistical model checking.