{'fraction_non_alphanumeric': 0.030288226673180263, 'fraction_numerical': 0.0009770395701025891, 'mean_word_length': 5.965986394557823, '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 Typology of Architectural Strategies for Interoperability

An increasing interest in researching the development, integration, composition, and evolution of large-scale, software-intensive systems (LSSIS) have been observed in the last years. These systems are presented in different domains as connected health, industry 4.0, military, smart cities, smart grids, and smart agriculture. These systems are realized through the cooperation among heterogeneous, independent, highly distributed, individual, and heterogeneous systems to achieve their business goals. For the success of these larger systems, their individual parts must interoperate among them allowing the execution of more complex functionalities. However, there are many concerns that software engineers must overcome during the composition of these systems, that can be related to (i) the misunderstanding of data formats, data semantic, procedures, contracts, standards, quality, and interfaces structures provided by individual systems; and (ii) the absence of high-level architectures to analyze, comprehend, and guide how interoperability can be addressed. The goal of this work is to present a typology of existing and proven strategies for achieving interoperability. Strategies were identified through a systematic search in scientific databases and patterns repositories. The selected strategies were categorized according to the level of interoperability they support, namely, technical, syntactic, semantic, and organizational. In each level, the strategies were divided by the type of solution their propose, i.e., technique, and architectural styles, patterns, and tactics. Moreover, statements explaining how each strategy address interoperability are given. Results of this work can be used by architects to identify and understand solutions for achieving interoperability requirements during the composition of larger systems. The resulting typology in this study is the first step to consolidate a patterns-language for interoperability in software architectures.