{'fraction_non_alphanumeric': 0.016181229773462782, 'fraction_numerical': 0.0, 'mean_word_length': 5.376288659793815, '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}}
Modular object-oriented design of distributed protocols

The complexity of protocols supporting distributed applications leads to the use of modular techniques to design protocols. The object oriented programming paradigm provides a number of concepts to enable modularity and reuse. For example, languages such as Java and C++ have been extended with synchronization primitives to modularize code. The authors propose a framework with tools that complement such language extensions to enable compositional development of protocols. We advocate a two-staged design process. In the first stage, the designer develops code for a set of component protocols, each performing a specific subtask of the protocol. The second stage involves composing the subtasks to obtain the protocol for the entire problem. The composition is done with respect to a set of constraints that describe the interactions between the subtasks. We identify several composition patterns, each implementing a specific type of interaction. For each pattern, we describe the code required for its implementation and the transformations to embed this code into the component protocols. The toolset has been implemented using Java as the underlying development language.