and decisions translated from design that must be held
regardless of concrete representation choices, such as
data structures. The resulting assertions become not
only more understandable but also more maintainable
and reusable (Cheon, 2022; Cheon, 2024). Our
approach aligns with this strategy and facilitates the
translation of frame axioms and properties into
executable assertions, in addition to pre and
postconditions. The use of assertion-only immutable
collection classes to create abstract models should
equally apply to our approach (Cheon, 2023).
Moreover, the utilization of abstract models in our
approach allows for formulating the notion of
observable side effects at different abstraction levels.
7 CONCLUSION
Our work has shown the potential of frame axioms
and properties as practical tools for programmers. By
employing abstract models and executable assertions,
we provided a systematic and effective coding style
and technique for asserting frame properties, along
with pre and postconditions, in software
development. This approach not only enhances the
readability, maintainability, and reusability of
assertion code but also enables the formulation of
observable side effects at different abstraction levels.
While research into the runtime checking of frame
axioms remains relatively uncommon, our work
stands out by offering a straightforward and practical
solution for ensuring frame properties through
executable assertions. Further exploration and
refinement of our approach, especially through
annotation-based automation, could pave the way for
more robust and reliable software development
practices.
REFERENCES
Borgida, A., Mylopoulos, J., & Reiter, R. (1995). On the
frame problem in procedure specifications. IEEE
Transactions on Software Engineering, 21(10), 785-
798.
Casalnuovo, C., Devanbu, P., Oliveira, A., Filkov, V., &
Ray, B. (2015). Assert use in GitHub projects.
IEEE/ACM 37
th
International Conference on Software
Engineering (ICSE), Florence, Italy, 755-766.
Chalin, P., Kiniry, J. R., Leavens, G. T., & Poll, E. (2006).
Beyond assertions: Advanced specification and
verification with JML and ESC/Java2. Formal Methods
for Components and Objects: 4th International
Symposium, FMCO 2005, Amsterdam, The
Netherlands, November 1-4, 2005, Revised Lectures 4
(pp. 342-363). Springer Berlin Heidelberg.
Cheon, Y. (2022). Design assertions: executable assertions
for design constraints. 14
th
International Symposium on
Software Engineering Processes and Applications
(SEPA), July 4-7, Malaga, Spain. Published as ICCSA
2022 Workshops, Lecture Notes in Computer Science,
13381, 617-631, Springer.
Cheon, Y. (2024). Constructive assertion with abstract
models. 12
th
International Conference on Model-Based
Software and Systems Engineering (MODELSWARD
2024), Rome, Italy, February 21-23 (pp. 211-218).
Cheon, Y., Leavens, G. T., Sitaraman, M., & Edwards, S.
(2005). Model variables: cleanly supporting abstraction
in design by contract. Software: Practice and
Experience, 35(6), 583-599, Wiley.
Cheon, Y., Lozano, R., & Prabhu, R. S. (2023). A library-
based approach for writing design assertions.
IEEE/ACIS 21
st
International Conference on Software
Engineering Research, Management, and Applications
(SERA), Orlando, FL, USA, 22-27.
Counsell, S., Hall, T., Shippey, T., Bowes, T., Tahir, A., &
MacDonell, S. (2017). Assert use and defectiveness in
industrial code. IEEE International Symposium on
Software Reliability Engineering Workshops
(ISSREW), Toulouse, France, 20-23.
Flutter. (2024). Flutter – Build for any screen. Flutter.dev.
https://flutter.dev/.
Guttag, J. V., & Horning, J. J. (1993). Larch: Languages
and Tools for Formal Specification. Springer.
Hoare, C. A. R. (1972). October. Proof of correctness of
data representations, Acta Informatica, 1(1), 271–281.
Kochhar, P.S. & Lo, D. (2017). Revisiting assert use in
GitHub projects. 21
st
International Conference on
Evaluation and Assessment in Software Engineering
(EASE), June, 298-307.
Leavens, G.T., Cheon, Y., Clifton, C., Ruby, C., & Cok, D.
(2005). How the design of JML accommodates both
runtime assertion checking and formal verification.
Science of Computer Programming, 55(1-3), 185-208.
Leino, K. R. M. (1998, October). Data groups: Specifying
the modification of extended state. 13
th
ACM SIGPLAN
conference on Object-oriented programming, systems,
languages, and applications (pp. 144-153).
Leino, K. R. M., & Müller, P. (2007). Using the Spec#
language, methodology, and tools to write bug-free
programs. LASER Summer School on Software
Engineering (pp. 91-139). Berlin, Heidelberg: Springer
Berlin Heidelberg.
Matuszek, D. (1976). The case for assert statement. ACM
SIGPLAN Notices, 36-37, August.
Marché, C., Paulin-Mohring, C., & Urbain, X. (2004). The
Krakatoa tool for certification of Java/JavaCard
programs annotated in JML. The Journal of Logic and
Algebraic Programming, 58(1-2), 89-106.
Rosenblum, D. S. (1995). A practical approach to
programming with assertions. IEEE Transactions on
Software Engineering, 21(1), 19-31, January.
Yu, Z., Bai, C., Seinturier, L., & Monperrus, M. (2019).
Characterizing the usage, evolution and impact of java
annotations in practice. IEEE Transactions on Software
Engineering, 47(5), 969-986.