values abstractly. Exploring the potential
establishment of a specialized interface, such as an
assertion interface, could be an intriguing avenue for
future research, allowing client code to formulate
assertions about objects with hidden states and
enhancing the assertion framework's capabilities and
flexibility.
6 CONCLUSIONS
This paper has introduced and explored the concept
of constructive assertions as a valuable technique for
enhancing code reliability and verification. By
leveraging abstraction functions and assertion-only
variables, we have demonstrated how constructive
assertions offer a concise and comprehensible
approach to specifying program behavior. The
assertion library of immutable collection classes
further underscores the potential of this approach.
While challenges such as proper cloning and
namespace pollution warrant consideration, the future
holds promise for refining and expanding the utility
of constructive assertions. As software development
continues to evolve, the judicious application of this
technique stands to contribute to more reusable,
maintainable, and reliable software systems.
REFERENCES
Borgida, A., Mylopoulos, J., & Reiter, R. (1993). '. . . and
nothing else changes': the frame problem in procedure
specifications. 15
th
International Conference on
Software Engineering (ICSE), IEEE, 303-314.
Bracha, G. (2016). The Dart Programming Language.
Addison-Wesley.
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. (2014). Ensuring that your Dart will hit the mark:
An introduction to Dart contracts. International
Conference on Information Reuse and Integration,
Redwood City, CA, August 13-15, IEEE, 369-377.
Cheon, Y. (2021). Toward more effective use of assertions
for mobile app development. International Conference
on Progress in Informatics and Computing, Shanghai,
China, December 17-19, IEEE, 319-323.
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. & Leavens, G. T. (2002). A simple and practical
approach to unit testing: The JML and JUnit way. In
16
th
European Conference on Object-Oriented
Programming (ECOOP), Malaga, Spain, June. Lecture
Notes in Computer Science, 2374, 231–255, Springer.
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.
Cheon, Y. & A. Perumandla (2007). Specifying and
checking method call sequences of Java programs.
Software Quality Journal, 15(7), 7-25, Springer.
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. (2023). Retrieved from https://flutter.dev.
Hoare, C. A. R. (1972). October. Proof of correctness of
data representations, Acta Informatica, 1(1), 271–281.
Jones, C. B. (1986). Systematic Software Development
Using VDM. Prentice Hall.
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.
Matuszek, D. (1976). The case for assert statement. ACM
SIGPLAN Notices, 36-37, August.
Object Management Group. (2023). Object Constraint
Language, version 2.4. Retrieved November 13, 2023,
from https://www.omg.org/spec/OCL/.
Rosenblum, D. S. (1995). A practical approach to
programming with assertions. IEEE Transactions on
Software Engineering, 21(1), 19-31, January.
Spivey, J. (1989). The Z Notation: A Reference Manual.
Prentice Hall.
Sitaraman, M., Weide, B. W., & Ogden, W. F. (1997). On
the practical need for abstraction relations to verify
abstract data type representations, IEEE Transactions
on Software Engineering, 23(3), 157-170, March.
Warmer, J. & Kleppe, A. (2003). The Object Constraint
Language: Getting Your Models Ready for MDA (2
nd
ed.). Addison-Wesley.
Watson, C., Tufano, M., Moran, K., Bavota, G., &
Poshyvanyk, D. (2020). On learning meaningful assert
statements for unit test cases. IEEE/ACM 42
nd
International Conference on Software Engineering
(ICSE), Seoul, Korea, 1398-1409.
Zammetti, F. (2019). Practical Flutter: Improve Your
Mobile Development with Google’s Latest Open-
Source SDK. Apress.