{'fraction_non_alphanumeric': 0.014884979702300407, 'fraction_numerical': 0.0006765899864682003, 'mean_word_length': 5.430434782608696, '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}}
Models for Composing Heterogeneous Software Architectures

A persistent problem in software engineering is the problem of software composition. The emergence of software architectures and architectural styles has focused attention on a new set of abstractions with which we can create and compose software systems. We examine the problem of providing a model for the composition of different architectural styles within software systems, i.e. the problem of composing heterogeneous architectures. We describe a model of pure styles that is based on a uniform representation. We provide a disciplined approach for analyzing some key aspects of architectural composition, and show the conditions under which systems will fail to be composed. INTRODUCTION A persistent problem in computer science is how to put software systems together out of smaller subsystems, the problem of software composition. There are many levels of granularity at which this problem can be tackled. For example, some of the earliest software engineers dealt with systems at the machine language or assembly language level of granularity. Succeeding engineers addressed the composition problem at a coarser level of granularity using higher level programming languages. The emergence of software architectures and architectural styles ([8]) has introduced a still coarser level of granularity (and higher level of abstraction) at which we can reason about the creation and composition of software systems.