{'fraction_non_alphanumeric': 0.037142857142857144, 'fraction_numerical': 0.0038095238095238095, 'mean_word_length': 5.527950310559007, '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}}
Collaboration-based evolvable software implementations: Java and Hyper/J vs. C++-templates composition

Collaboration-based design is a methodology for de-coupling application aspects in the object-oriented world. Because collaborations are relatively orthogonal to each other, a collaboration can be implemented independently and reused in different context without any major change. Mixins and mixin layers are techniques to transform in a fairly straightforward manner the collaboration-based designs to the implementations. Subject-oriented programming (SOP) [3] and multi-dimensional separation of concerns (MDSOC) [6] are similar approaches to software development. The concepts of subject in SOP and concern in MDSOC cover the collaboration concept. Hyper/J[5] is a very useful tool for composing independently developed application aspects. This paper presents an attempt to implement layered design in Java and Hyper/J. In addition, it also compares this method with another method of composing mixin layers constructed by C++ templates [4].