{'fraction_non_alphanumeric': 0.0358148893360161, 'fraction_numerical': 0.004426559356136821, 'mean_word_length': 5.277777777777778, '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}}
A Metamodel for Aspect-Oriented Modeling

Aspect-oriented programming (AOP) is reaching maturity after almost a decade of research [9, 1, 7, 8, 10, 2]. The term AOP has been used in [6] to denote “the space of programmatic mechanisms for expressing crosscutting concerns”, including Kiczales et al. work as well as related work (adaptive programming, composition filters, subject-oriented programming and multi-dimensional separation of concerns). We use the term aspect-oriented modeling to denote the space of modeling elements for specifying crosscutting concerns at a higher level of abstraction. Aspect-oriented modeling (AOM) should be built upon a conceptual framework that we refer to as the aspect model [4]. We adopt a terminology for AOP based on the core concepts presented in [8] as the main representatives for modeling elements: component (base element), aspect (crosscutting element), join point, crosscutting, and weaving. It is quite natural to investigate UML’s suitability as a modeling language for supporting Aspect-Oriented Modeling. First, UML [3] is acquainted to be the industry-standard modeling language for specifying, visualizing, constructing, and documenting the artifacts of software systems for the software engineering community. Second, UML is a general purpose modeling language to be usable in a wide range of application domains. As such, it includes a rich set of modeling techniques for analysis and design as well as structural and behavioral modeling, organized into several complementary views, expressed as diagrams, to model a system. Third, UML is an extensible modeling language to facilitate domainspecific modeling. As such, there is a set of built-in extension mechanisms to extend or customize the UML for a specific domain or process. AOP represents a paradigm shift in terms of programming rationale and, consequently, in terms of high-level modeling. This way, any extension required on a modeling language to support aspects and crosscutting corresponds to the definition of a new language, with additional syntax, semantics and pragmatics; therefore, we are talking about not subsets of UML-related families of languages, but rather, supersets. In this context, using built-in extension mechanisms provided by the UML (such as stereotypes, tag values and constraints) to support AOM is rather a compromise solution to support the transition from pure OO models to OO models combined with aspect models (the paradigm shift), than