software in a way that makes it more verification com-
patible: by carefully choosing a computational model
that is on one hand expressive and convenient, and on
the other hand amenable to formal verification tools,
one can often achieve improved scalability.
We have demonstrated these principles on three
idioms for concurrent programming — the request-
ing, waiting-for and blocking of events, which to-
gether make up the BP model. We recapitulated work
showing that, because of its strict synchronization
protocol, the BP model produces programs that may
be more amenable to compositional reasoning and re-
pair than less restricted concurrent models, and yet
that a behavioral program may be significantly more
succinct than an equivalent sequential program.
Our work focused on BP, which is but one
paradigm among many for discrete event reactive sys-
tems. As discussed earlier, a key ingredient in our
proposed approach is an appropriate mapping of pro-
gramming idioms to problems they can solve, and
their respective costs, verification-wise. In order to
fully harness this synergy in practice, extensive study
of additional idioms is required. For instance, it
would be interesting to compare results for BP with
other models for reactivity such as BIP (Basu et al.,
2006), Signal (Le Guernic et al., 1991) and Lus-
tre (Halbwachs et al., 1991).
In the longer run, we envision an extensive catalog
of idioms for programmers to choose form, according
to the problem at hand. Perhaps in the further away
future these decisions could even be performed by an
automated recommender system.
ACKNOWLEDGEMENTS
The work of all the authors was supported by an Israel
Science Foundation grant. The research of G. Weiss
was also supported by the Lynn and William Frankel
Center for CS at Ben-Gurion University, and by a
reintegration (IRG) grant under the European Com-
munity’s FP7 Programme.
REFERENCES
Alexandron, G., Armoni, M., Gordon, M., and Harel, D.
(2014). Scenario-Based Programming: Reducing the
Cognitive Load, Fostering Abstract Thinking. In Proc.
36th Int. Conf. on Software Engineering (ICSE), pages
311–320.
Alur, R., Brayton, R. K., Henzinger, T. A., Qadeer, S., and
Rajamani, S. K. (1997). Partial-Order Reduction in
Symbolic State Space Exploration. In Proc. 9th. Int.
Conf. on Computer Aided Verification (CAV), pages
340–351.
Arcuri, A. and Yao, X. (2008). A Novel Co-evolutionary
Approach to Automatic Software Bug Fixing. In Proc.
10th IEEE Congress on Evolutionary Computation
(CEC), pages 162–168.
Austin, T. (2001). Design for verification? IEEE Design &
Test of Computers, 18(4):80–80.
Basu, A., Bozga, M., and Sifakis, J. (2006). Modeling Het-
erogeneous Real-time Systems in BIP. In Proc. 4th
IEEE Int. Conf. on Software Engineering and Formal
Methods (SEFM), pages 3–12.
Betin-Can, A., Bultan, T., Lindvall, M., Lux, B., and Topp,
S. (2005). Application of Design for Verification with
Concurrency Controllers to Air Traffic Control Soft-
ware. In Proc. 20th. Int. Conf. on Automated Software
Engineering (ASE), pages 14–23.
Bryant, R. E. (1986). Graph-Based Algorithms for Boolean
Function Manipulation. IEEE Trans. on Computers,
100(8):677–691.
Burch, J., Clarke, E., McMillan, K., Dill, D., and Hwang,
L. (1990). Symbolic Model Checking: 10
20
States
and Beyond. In Proc. 5th IEEE Annual Symposium on
Logic in Computer Science (LICS), pages 428–439.
Clarke, E., Grumberg, O., Jha, S., Lu, Y., and Veith, H.
(2000). Counterexample-Guided Abstraction Refine-
ment. In Proc. 12th Int. Conf. on Computer Aided
Verification (CAV), pages 154–169.
Cobleigh, J., Avrunin, G., and Clarke, L. (2006). Breaking
Up is Hard to do: an Investigation of Decomposition
for Assume-Guarantee Reasoning. In Proc. Int. Symp.
on Software Testing and Analysis (ISSTA), pages 97–
108.
Damm, W. and Harel, D. (2001). LSCs: Breathing Life into
Message Sequence Charts. J. on Formal Methods in
System Design, 19(1):45–80.
De Moura, L. and Bjørner, N. (2011). Satisfiability Modulo
Theories: Introduction and Applications. Communi-
cations of the ACM, 54(9):69–77.
Flanagan, C., Freund, N. S., and Qadeer, S. (2002). Thread-
Modular Verification for Shared-Memory Programs.
In Proc. 11th. European Symp. on Programming Lan-
guages and Systems (ESOP), pages 262–277.
Ghilardi, S. and Ranise, S. (2012). MCMT: A Model
Checker Modulo Theories. In Proc. 5th Int. Joint
Conf. on Automated Reasoning (IJCAR), pages 22–29.
Gordon, M., Marron, A., and Meerbaum-Salant, O. (2012).
Spaghetti for the Main Course? Observations on
the Naturalness of Scenario-Based Programming. In
Proc. 17th Conf. on Innovation and Technology in
Computer Science Education (ITICSE), pages 198–
203.
Grumberg, O. and Long, D. (1994). Model Checking and
Modular Verification. ACM Trans. Program. Lang.
Syst., 16(3):843–871.
Halbwachs, N., Caspi, P., Raymond, P., and Pilaud, D.
(1991). The Synchronous Data-Flow Programming
Language LUSTRE. Proc. of the IEEE, 79(9):1305–
1320.
MODELSWARD2015-3rdInternationalConferenceonModel-DrivenEngineeringandSoftwareDevelopment
368