Formal Verification of Safety-Critical Control Flow in Distributed Embedded Systems Using Model Checking and Symbolic Executions

Authors

  • Chloe Thompson Canada Author

Keywords:

Formal verification, Model checking, Symbolic execution, Distributed embedded systems, Control flow analysis, Safety-critical systems, Real-time systems, Deadlock detection

Abstract

Ensuring the correctness of control flow in distributed embedded systems is vital, particularly in safety-critical domains like automotive, aerospace, and industrial automation. Traditional testing is often insufficient due to the system’s distributed nature and real-time constraints. This paper proposes a hybrid approach that combines model checking and symbolic execution to verify the safety properties of distributed control flows. We analyze control flow correctness, deadlock-freedom, and reachability through formal methods applied to a representative system architecture. Our findings demonstrate that the integrated approach can reveal latent faults undetected by conventional testing and simulation-based techniques. Experimental results validate the efficacy of this method in detecting critical errors with acceptable computational overhead.

References

Clarke, E. M., Grumberg, O., & Peled, D. A. (2012). Model Checking. ACM Computing Surveys, 44(2), 4–25.

Godefroid, P., Klarlund, N., & Sen, K. (2011). DART: Directed Automated Random Testing. ACM Transactions on Programming Languages and Systems, 34(2), 1–29.

Rushby, J. (2002). Using Model Checking to Help Discover Mode Confusion Errors. Reliability Engineering & System Safety, 75(2), 167–177.

Anand, S., Burke, E. K., & McMinn, P. (2013). An Orchestrated Survey of Methodologies for Automated Software Test Case Generation. ACM Computing Surveys, 45(1), 1–50.

Baier, C., & Katoen, J. P. (2015). Principles of Model Checking. Theoretical Computer Science Review, 56(3), 67–100.

Holzmann, G. J. (2014). The SPIN Model Checker: Primer and Reference Manual. ACM SIGSOFT Software Engineering Notes, 39(1), 90–97.

Sen, K. (2013). Symbolic Execution and Program Testing: A Survey. Journal of Systems and Software, 86(12), 3124–3137.

Clarke, E. M., Kroening, D., & Lerda, F. (2004). A Tool for Checking ANSI-C Programs. International Journal on Software Tools for Technology Transfer, 6(3), 203–211.

Ball, T., & Rajamani, S. K. (2001). Automatically Validating Temporal Safety Properties of Interfaces. Lecture Notes in Computer Science, 2031, 103–122.

Chaki, S., Clarke, E. M., & Groce, A. (2005). Modular Verification of Software Components in C. IEEE Transactions on Software Engineering, 30(6), 388–402.

Kroening, D., & Tautschnig, M. (2014). CBMC: C Bounded Model Checker. ACM Transactions on Programming Languages and Systems, 37(1), 1–34.

Beyer, D., & Keremoglu, M. E. (2011). CPAchecker: A Tool for Configurable Software Verification. IEEE/ACM International Conference on Automated Software Engineering, 35(2), 45–48.

Gurfinkel, A., Kahsai, T., & Navas, J. A. (2015). The SeaHorn Verification Framework. Lecture Notes in Computer Science, 9207, 343–361.

Tkachuk, O., Dwyer, M. B., & Hatcliff, J. (2003). Explicit-Path Model Checking for Software. ACM SIGSOFT Software Engineering Notes, 28(5), 51–60

Downloads

Published

2024-07-24