{'fraction_non_alphanumeric': 0.019674935842600515, 'fraction_numerical': 0.0, 'mean_word_length': 5.685714285714286, '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 Review of Research in Behavioral Programming

Behavioral programming is an approach for non-intrusive incremental software development. Introduced through scenario-based programming in the language of live sequence charts (LSC), it is now implemented also in Java and in the functional programming language Erlang. Behavioral programming calls for constructing systems from threads of behavior, each of which independently represents (a part of) an allowed, desired, or forbidden operating scenario of the final system. The collective execution of behavior threads is coordinated in a way that generates a combined sequence of events, which constitutes integrated system behavior. This approach allows for natural incremental development and maintenance where new modules are aligned with new requirements and are added with little or no changes to existing code. We review behavioral programming principles, the BPJ package for behavioral programming in Java, the PlayGo IDE for the LSC language, and some of the recent research in our group including model-checkerassisted development in Java, flow visualization and comprehension, and adaptive behavioral programs.