Abstract
The cooperative software, such as OSEK/VDX multi-tasks software and SystemC multi-threaded software, has been widely applied in the embedded system field. However, due to the flexible scheduling and complex cooperations between tasks or threads, the reliability of developed software is really difficult to be ensured by testing technique. To overcome this problem, model checking technique as a potential solution has attracted great attention in software industry. Recently, many model checking based methods have already been proposed and successfully applied in the verification of cooperative software, but most of them focus on the non-deterministic scheduler based cooperative software such as SystemC. The verification of deterministic scheduler based cooperative software is still at preliminary stage. In this paper, we propose an approach to verify this type of cooperative software. In our work, in order to make the proposed approach more general, the famous OSEK/VDX multi-tasks application is chosen as our target system. Furthermore, as to make the proposed approach more scalable, the advanced SMT-based bounded model checking is applied to carry out verification. We have investigated the effectiveness of our approach based on a series of experiments. The experiment results indicate that our approach can efficiently verify the cooperative software with a deterministic scheduler.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Notes
- 1.
osek-bmc homepage: http://www.jaist.ac.jp/~s1220209/osek-bmc.htm.
- 2.
\(\mathtt {AUTOSTART}\): if the attribute \(\mathtt {AUTOSTART}\) of a task is set to be \(\mathtt {TRUE}\), the task starts from ready state in the initial state. Otherwise, the task starts from suspended state.
- 3.
\(\mathtt {SCHEDULE}\): if the attribute \(\mathtt {SCHEDULE}\) of a task is set to be \(\mathtt {FULL}\), the task can be preempted by higher priority tasks. Otherwise, the task will not leave running state until the API TerminateTask, ChainTask or Schedule is invoked, or waits for a synchronization event.
References
IEEE 1666: SystemC language Reference Manual (2005)
Clarke, E.M., Emerson, E.A., et al.: Model checking: algorithmic verification and debugging. Commun. ACM 152(11), 74–84 (2009)
Burns, A., Wellings, A.: Real-Time Systems and Programming Languages, 4th edn. Addison Wesley Longman, New York (2009)
Cimatti, A., Micheli, A., Narasamdya, I., Roveri, M.: Verifying SystemC: a software model checking approach. In: FMCAD, pp. 51–59 (2010)
Alessandro, A., Jacopo, M., Lorenzo, P.: Bounded model checking of software using SMT solvers instead of SAT solvers. Int. J. Softw. Tools Technol. Transf. (STTT) 11(1), 69–83 (2009)
Cimatti, A., Micheli, A., Narasamdya, I., Roveri, M.: Kratos Homepage (2010). https://es-static.fbk.eu/tools/kratos/
Armin, B., Clarke, E.M., Zhu, Y.: Bounded model checking. Adv. Comput. 58(11), 117–148 (2003)
Basili, V.R., Selby, R.W.: Comparing the effectiveness of software testing strategies. TSE 13, 1278–1296 (1987)
Behrmann, G., David, A., Larsen, K.G.: A tutorial on UPPAAL. In: Formal Methods for the Design of Real-Time Systems: 4th International School on Formal Methods for the Design of Computer Communication, and Software Systems, pp. 200–236 (2004)
Flanagan, C., Godefroid, P.: Dynamic partial-order reduction for model checking software. In: POPL, pp. 110–121 (2005)
Traulsen, C., Cornet, J., Moy, M., Maraninchi, F.: A SystemC/TLM semantics in Promela and its possible applications. In: Bošnački, D., Edelkamp, S. (eds.) SPIN 2007. LNCS, vol. 4595, pp. 204–222. Springer, Heidelberg (2007). doi:10.1007/978-3-540-73370-6_14
Cytron, R., Ferrante, J., Rosen, B.K., Wegman, M.N., Zadeck, F.K.: An efficient method of computing static single assignment form. In: POPL, pp. 25–35 (1989)
Beyer, D., Cimatti, A., Griggio, A., Keremoglu, M.E., Sebastiani, R.: Software model checking via large-block encoding. In: FMCAD, pp. 25–32 (2009)
Kroening, D., Sharygina, N.: Formal verification of SystemC by automatic hardware/software partitioning. In: MEMOCODE, pp. 101–110 (2005)
Tabakov, D., Kamhi, G., Vardi, M.Y., Singerman, E.: A temporal language for SystemC. In: FMCAD, pp. 1–9 (2008)
Kroening, D., Clarke, E., et al.: The CBMC Homepage (2004). http://www.cprover.org/cbmc/
Duan, Z.: Temporal Logic and Temporal Logic Programming. Science Press, Beijing (2005)
Duan, Z., Tian, C., Zhang, L.: A decision procedure for propositional projection temporal logic with infinite models. Acta Informatica 45(1), 43–78 (2008)
Duan, Z., Yang, X., Koutny, M.: Framed temporal logic programming. Sci. Comput. Program. 70(1), 31–61 (2008)
Clarke, E., Kroening, D., Lerda, F.: A tool for checking ANSI-C programs. In: Jensen, K., Podelski, A. (eds.) TACAS 2004. LNCS, vol. 2988, pp. 168–176. Springer, Heidelberg (2004). doi:10.1007/978-3-540-24730-2_15
Clarke, E.M., Kroening, D., Sharygina, N., Yorav, K.: SATABS: SATBased predicate abstraction for ANSI-C. In: TACAS, pp. 570–574 (2005)
Clarke, E.M., Grumberg, O., Long, D.E.: Model checking and abstraction. ACM Trans. Program. Lang. Syst. (TOPLAS) 16(5), 1512–1542 (1994)
Holzmann, G.J.: The Spin Model Checker: Primer and Reference Manual. Lucent Technologies Inc., Bell Laboratories, Boston (2003)
George, C.N., Scott, M., Shree, P.R., Westley, W.: CIL: intermediate language and tools for analysis and transformation of C programs. In: Proceedings of the 11th International Conference on Compiler Construction, pp. 213–228 (2002)
Zhang, H., Aoki, T., et al.: SMT-based bounded model checking for OSEK/VDX applications. In: 20th APSEC, pp. 307–314 (2013)
Zhang, H., Aoki, T., Chiba, Y.: A spin-based approach for checking OSEK/VDX applications. In: 3rd International Workshop FTSCS in ICFEM, pp. 239–255 (2014)
Cordeiro, L., Fischer, B.: Verifying multi-threaded software using SMT-based context-bounded model checking. In: ICSE 2011, vol. 3(9), pp. 331–340, May 2011
Waszniowski, L., Hanzlek, Z.: Formal verification of multitasking applications based on timed automata model. Real-Time Syst. 38(1), 39–65 (2008)
Lemieux, J.: Programming in the OSEK/VDX environment. CMP, Suite 200 Lawrence, KS 66046, USA (2001)
de Moura, L., Passmore, G.: Z3 Homepage. http://z3.codeplex.com/
Blanc, N., Kroening, D.: Race analysis for SystemC using model checking. In: ICCAD, pp. 356–363 (2008)
Blanc, N., Kroening, D., Sharygina, N.: Scoot: a tool for the analysis of SystemC models. In: Ramakrishnan, C.R., Rehof, J. (eds.) TACAS 2008. LNCS, vol. 4963, pp. 467–470. Springer, Heidelberg (2008). doi:10.1007/978-3-540-78800-3_36
Tian, C., Duan, Z., Zhang, N.: An efficient approach for abstraction-refinement in model checking. Theor. Comput. Sci. 461, 76–85 (2012)
Acknowledgements
This work is supported by the National Science Foundation of China (Grants No. 61602224 and No. 61272213) and the Fundamental Research Funds for the Central Universities (Grants No. lzujbky-2016-142 and No. lzujbky-2016-k07).
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2017 Springer International Publishing AG
About this paper
Cite this paper
Zhang, H., Lu, Y. (2017). SMT-based Bounded Model Checking for Cooperative Software with a Deterministic Scheduler. In: Liu, S., Duan, Z., Tian, C., Nagoya, F. (eds) Structured Object-Oriented Formal Language and Method. SOFL+MSVL 2016. Lecture Notes in Computer Science(), vol 10189. Springer, Cham. https://doi.org/10.1007/978-3-319-57708-1_11
Download citation
DOI: https://doi.org/10.1007/978-3-319-57708-1_11
Published:
Publisher Name: Springer, Cham
Print ISBN: 978-3-319-57707-4
Online ISBN: 978-3-319-57708-1
eBook Packages: Computer ScienceComputer Science (R0)