
ity with contract integrity is essential for safe and pre-
dictable object-oriented design.
7 CONCLUSION
We presented an annotation-based approach for in-
tegrating frame properties into Design by Contract
(DbC) in Dart, with a focus on runtime verification. A
key contribution of our approach is the use of an ab-
stract representation of object states, modeled as tu-
ples, to ensure that runtime checks do not introduce
unintended side effects. This abstraction maintains
a clean separation between program logic and state
management. Additionally, our method supports both
statically and dynamically typed languages, enabling
optional typing through a hybrid of compile-time and
runtime mechanisms. By adding frame conditions in
annotations, our approach can reduce code complex-
ity, enhance maintainability, and simplifyes the veri-
fication process.
As part of future work, we plan to evaluate our
technique on larger and more complex codebases to
better assess its effectiveness, scalability, and broader
impact on verification and validation, beyond just re-
ducing code size. We also intend to explore how well
the approach extends to key object-oriented features
such as inheritance, method overriding, and polymor-
phism to ensure its robustness in diverse design con-
texts. Finally, we aim to refine our prototype into a
practical and user-friendly tool to support developers
in writing safer, more maintainable code.
REFERENCES
Amusuo, P. C., Sharma, A., Rao, S. R., Vincent, A., and
Davis, J. C. (2022). Reflections on software failure
analysis. In ACM Joint European Software Engineer-
ing Conference and Symposium on the Foundations
of Software Engineering (ESEC/FSE), pages 1615–
1620, Singapore.
Borgida, A., Mylopoulos, J., and Reiter, R. (1995). On
the frame problem in procedure specifications. IEEE
Transactions on Software Engineering, 21(10):785–
798.
Bracha, G. (2016). The Dart Programming Language.
Addison-Wesley.
Chalin, P. (2014). Ensuring that your Dart will hit the
mark: An introduction to Dart contracts. In Interna-
tional Conference on Information Reuse and Integra-
tion, pages 369–377, San Francisco, CA.
Cheon, Y., Leavens, G. T., Sitaraman, M., and Edwards, S.
(2005). Model variables: Cleanly supporting abstrac-
tion in design by contract. Software: Practice and
Experience, 35(6):583–599.
Cheon, Y., Liu, B., and Rubio-Medrano, C. (2024). As-
serting frame properties. In International Conference
on Software Technologies (ICSOFT 2024), pages 145–
152, Dijon, France.
Darvas, A. and Leino, K. R. M. (2007). Practical reasoning
about invocations and implementations of pure meth-
ods. In International Conference on Fundamental Ap-
proaches to Software Engineering, pages 336–351.
Gazzola, L., Mariani, L., Pastore, F., and Pezze, M. (2017).
An exploratory study of field failures. In IEEE In-
ternational Symposium on Software Reliability Engi-
neering (ISSRE), pages 67–77.
Hahnle, R., Schmitt, P. H., and Beckert, B. (2007). Verifica-
tion of Object-oriented Software: The Key Approach.
Springer.
Hatcliff, J. and Dwyer, M. (2001). Using the Bandera tool
set to model-check properties of concurrent java soft-
ware. In CONCUR 2001–Concurrency Theory: In-
ternational Conference, pages 39–58, Aalborg, Den-
mark.
Kassios, I. T. (2006). Dynamic frames: Support for fram-
ing, dependencies and sharing without restrictions. In
FM 2006: Formal Methods: 14th International Sym-
posium on Formal Methods, pages 268–283, Hamil-
ton, Canada.
Leino, K. R. M. (1998). Data groups: Specifying the modi-
fication of extended state. In ACM SIGPLAN Confer-
ence on Object-Oriented Programming, Systems, Lan-
guages, and Applications, pages 144–153.
Leino, K. R. M. and Muller, P. (2006). A verification
methodology for model fields. In Programming Lan-
guages and Systems: 15th European Symposium on
Programming, pages 115–130, Vienna, Austria.
Leino, K. R. M. and Nelson, G. (2002). Data abstraction and
information hiding. ACM Transactions on Program-
ming Languages and Systems (TOPLAS), 24(5):491–
553.
Marche, C., Paulin-Mohring, C., and Urbain, X. (2004).
The Krakatoa tool for certification of Java/JavaCard
programs annotated in JML. Journal of Logic and Al-
gebraic Programming, 58(1-2):89–106.
Meyer, B. (1992). Applying ’design by contract’. IEEE
Computer, 25(10):40–51.
Meyer, B. (1997). Object-Oriented Software Construction.
Prentice Hall, Upper Saddle River, NJ, 2nd edition.
Mitchell, R. and McKim, J. (2001). Design by Contract, by
Example. Addison-Wesley, Boston, MA.
Ozkaya, M. (2019). Teaching design-by-contract for the
modeling and implementation of software systems.
In International Conference on Software Technologies
(ICSOFT), pages 499–507.
Ozkaya, M. and Kloukinas, C. (2014). Design-by-contract
for reusable components and realizable architectures.
In ACM SIGSOFT Symposium on Component-Based
Software Engineering (CBSE ’14), pages 129–138.
Enhancing Design-by-Contract with Frame Specifications
385