Behavioral programming

David Harel, Assaf Marron, Gera Weiss

Research output: Contribution to journalReview articlepeer-review

117 Scopus citations


Behavioral programming is a novel, language-independent paradigm for programming reactive systems, centered on natural and incremental specification of behavior, and implemented in the visual formalism of live sequence charts (LSC), and in the BPJ Java package. To facilitate full behavioral modularity via the independent coding of separate facets of behavior, all scenarios run simultaneously, and all are consulted at every decision point during execution. Naturally, composing behaviors that were programmed without direct consideration of mutual dependencies raises questions about conflicting requirements, under-specification, and synchronization. When all b-threads are at a synchronization point, an event is chosen, that is requested by at least one b-thread and is not blocked by any b-thread. The selected event is then triggered by resuming all the b-threads that either requested it or are waiting for it.

Original languageEnglish
Pages (from-to)90-100
Number of pages11
JournalCommunications of the ACM
Issue number7
StatePublished - 1 Jul 2012

ASJC Scopus subject areas

  • Computer Science (all)


Dive into the research topics of 'Behavioral programming'. Together they form a unique fingerprint.

Cite this