{'fraction_non_alphanumeric': 0.01926691729323308, 'fraction_numerical': 0.0, 'mean_word_length': 6.168350168350169, '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}}
Program transformations and their semi-automatic composition: a pragmatic approach to invasive middleware application engineering

Program generation has a long tradition in the development of distributed, middleware-based applications. During the last decade, aspect-oriented programming and model-driven architectures have been established as engineering techniques that further improve the development process. Altogether, generation, the separation of concerns, and domain-specific abstract modelling have added flexibility to middleware application engineering. Yet, the requirements of ambitious, invasive concerns cannot be fulfilled. This thesis presents the LLTS transformation system and a pragmatic approach for the semi-automatic composition of imperative transformations. Our contributions foster a transformation-based integration of concerns that exhaust the existing mechanisms for middleware extension, pure generators, and additive aspect weaving. Our approach enables detailed transformations of existing code and the composition of unwittingly interfering concerns. In the first part, this thesis proposes software transformation as a vehicle to integrate ambitious concerns into existing programs. For this purpose, the LLTS transformation system provides a strong, imperative language, that allows lowlevel manipulations without losing the ability of abstraction. Its multi-model capabilities enable the correlation of artefacts from separate sources of information and support the modularised construction of middleware-related concerns. In the second part, this thesis addresses the composition of concerns as a composition of transformations. Independent transformations are processed in isolation and are composed a posteriori. The approach detects interference based on built-in and user-defined conflict criteria. The author of a composite can resolve conflicts with declarative correction rules and by means of metaprogramming. The presented solution benefits from the flexibility of the LLTS base system and advocates an evolutionary process of incremental refinement for composite transformations.