{'fraction_non_alphanumeric': 0.02321981424148607, 'fraction_numerical': 0.0030959752321981426, 'mean_word_length': 5.8052631578947365, '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}}
Exogenous coordination of concurrent software components with JavaBIP

A strong separation of concerns is necessary in order to make the design of domain‐specific functional components independent from cross‐cutting concerns, such as concurrent access to the shared resources of the execution platform. Native coordination mechanisms, such as locks and monitors, allow developers to address these issues. However, such solutions are not modular; they are complex to design, debug, and maintain. We present the JavaBIP framework that allows developers to think on a higher level of abstraction and clearly separate the functional and coordination aspects of the system behavior. It implements the principles of the Behavior, Interaction, and Priority (BIP) component framework rooted in rigorous operational semantics. It allows the coordination of existing concurrent software components in an exogenous manner, relying exclusively on annotations, component APIs, and external specification files. We introduce the annotation and specification syntax of JavaBIP and illustrate its use on realistic examples, present the architecture of our implementation, which is modular and easily extensible, and provide and discuss performance evaluation results. Copyright © 2017 John Wiley & Sons, Ltd.