6 CONCLUSIONS
We have presented an approach for the verification of
atomicity preservation in model-to-code transforma-
tions based on separation logic using the tool Veri-
Fast. We applied this approach in the transformation
from the domain specific language SLCO to Java.
To obtain high efficiency, we replaced the origi-
nal strong atomicity requirement of SLCO with the
semantically relaxed notion of serializability. The
serializability was implemented by a fine-grained
deadlock-free ordered locking allowing true paral-
lelism with fine-grained granularity. We stated the
serializability in terms of ownership of shared vari-
ables expressed by means of lock invariants. Using
VeriFast we verified the non-interference in the Java
code.
ACKNOWLEDGEMENTS
This work was done with financial support from the
China Scholarship Council (CSC) and ARTEMIS
Joint Undertaking project EMC2 (grant agreement
621429).
REFERENCES
Abadi, M., Flanagan, C., and Freund, S. N. (2006). Types
for Safe Locking: Static Race Detection for Java.
ACM Transactions on Programming Languages and
Systems (TOPLAS), 28(2):207–255.
Authors of This Paper (2015). SLCOtoJava Model Trans-
formation and Verification. https://drive.google .com/-
drive/u/0/folders/0B2U1DbWZemiVRVlhbElPd0Z1
NVE.
Biswas, S., Huang, J., Sengupta, A., and Bond, M. D.
(2014). DoubleChecker: Efficient Sound and Precise
Atomicity Checking. In ACM SIGPLAN Notices, vol-
ume 49, pages 28–39. ACM.
Blech, J., Glesner, S., and Leitner, J. (2005). Formal Veri-
fication of Java Code Generation from UML Models.
In Fujaba Days, pages 49–56.
Bo
ˇ
sna
ˇ
cki, D., van den Brand, M., Huizing, C., Jacobs, B.,
Kuiper, R., Wijs, A., and Zhang, D. (2015). Verifi-
cation of Atomicity Preservation in Model-To-Code
Transformations. In FACS, LNCS. Springer (accepted
for publication).
Chaki, S., Clarke, E., Groce, A., Jha, S., and Veith, H.
(2003). Modular Verification of Software Compo-
nents in C. In ICSE, pages 385–395. IEEE.
Choi, J.-D., Lee, K., Loginov, A., O’Callahan, R., Sarkar,
V., and Sridharan, M. (2002). Efficient and Pre-
cise Datarace Detection for Multithreaded Object-
Oriented Programs. In ACM SIGPLAN Notices, vol-
ume 37, pages 258–269. ACM.
Engelen, L. (2012). From Napkin Sketches To Reliable Soft-
ware. PhD thesis, Eindhoven University of Technol-
ogy.
Engler, D. and Ashcraft, K. (2003). RacerX: Effective,
Static Detection of Race Conditions and Deadlocks.
In ACM SIGOPS Operating Systems Review, vol-
ume 37, pages 237–252. ACM.
Farzan, A. and Madhusudan, P. (2006). Causal Atomic-
ity. In CAV, volume 4144 of LNCS, pages 315–328.
Springer.
Flanagan, C. and Qadeer, S. (2003). A Type and Effect Sys-
tem for Atomicity. In ACM SIGPLAN Notices, vol-
ume 38, pages 338–349. ACM.
Jacobs, B., Smans, J., Philippaerts, P., Vogels, F., Pen-
ninckx, W., and Piessens, F. (2011). VeriFast: A
Powerful, Sound, Predictable, Fast Verifier for C and
Java. In NFM, volume 6617 of LNCS, pages 41–55.
Springer.
Jhala, R. and Majumdar, R. (2009). Software Model Check-
ing. ACM Computing Surveys, 41(4):21:1–21:54.
Kleppe, A., Warmer, J., and Bast, W. (2005). MDA Ex-
plained: The Model Driven Architecture(TM): Prac-
tice and Promise. Addison-Wesley Professional.
Kolovos, D., Rose, L., Garca-Dominguez, A., and Paige, R.
(2011). The Epsilon Book. Eclipse.
O’Hearn, P., Reynolds, J., and Yang, H. (2001). Local
Reasoning about Programs that Alter Data Structures.
In Computer Science Logic, 15th International Work-
shop, CSL 2001., volume 2142 of Lecture Notes in
Computer Science, pages 1–19.
Owicki, S. and Gries, D. (1976). Verifying Properties of
Parallel Programs: An Axiomatic Approach. Com-
mun. ACM, 19(5):279–285.
Rahim, L. and Whittle, J. (2013). A Survey of Approaches
for Verifying Model Transformations. Software &
Systems Modeling (available online).
Reynolds, J. C. (2002). Separation Logic: A Logic for
Shared Mutable Data Structures. In Logic in Com-
puter Science, 2002. Proceedings. 17th Annual IEEE
Symposium on, pages 55–74. IEEE.
Stenzel, K., Moebius, M., and Reif, W. (2011). Formal
Verification of QVT Transformations for Code Gen-
eration. In MODELS, volume 6981 of LNCS, pages
533–547. Springer.
Tuerk, T. (2009). A Formalisation of Smallfoot in HOL.
In TPHOLs, volume 5674 of LNCS, pages 469–484.
Springer.
Visser, W., Havelund, K., Brat, G., Park, S., and Lerda, F.
(2003). Model Checking Programs. Automated Soft-
ware Engineering, 10(2):203–232.
Wijs, A. J. (2013). Define, Verify, Refine: Correct Compo-
sition and Transformation of Concurrent System Se-
mantics. In FACS, volume 8348 of LNCS, pages 348–
368. Springer.
Wijs, A. J. and Engelen, L. J. P. (2013). Efficient Prop-
erty Preservation Checking of Model Refinements.
In TACAS, volume 7795 of LNCS, pages 565–579.
Springer.
Verification of Atomicity Preservation in Model-to-Code Transformations using Generic Java Code
587