skip to main content
10.1145/1850771.1850794acmotherconferencesArticle/Chapter ViewAbstractPublication PagesjtresConference Proceedingsconference-collections
research-article

Exhaustive testing of safety critical Java

Published:19 August 2010Publication History

ABSTRACT

With traditional testing, the test case has no control over non-deterministic scheduling decisions, and thus errors dependent on scheduling are only found by pure chance. Java Path Finder (JPF) is a specialized Java virtual machine that can systematically explore execution paths for all possible schedulings, and thus catch these errors. Unfortunately, execution-based model checkers, including JPF, cannot be easily adapted to support real-time programs.

We propose a scheduling algorithm for JPF which allows testing of Safety Critical Java (SCJ) applications with periodic event handlers at SCJ levels 0 and 1 (without aperiodic event handlers). The algorithm requires that deadlines are not missed and that there is an execution time model that can give best- and worst-case execution time estimates for a given program path and specific program inputs.

Our implementation, named RSJ, allows to search for scheduling dependent memory access errors, certain invalid argument errors, priority ceiling emulation protocol violations, and failed assertions in application code in SCJ programs for levels 0 and 1. It uses the execution time model of the Java Optimized Processor (JOP). We test our tool with Collision Detector and PapaBench application benchmarks. We provide an SCJ version of the C PapaBench benchmark, which implements an autopilot that has flown real UAVs.

References

  1. Java Path Finder. http://babelfish.arc.nasa.gov/trac/jpf/, 2010.Google ScholarGoogle Scholar
  2. Paparazzi: The free autopilot. http://paparazzi.enac.fr/, 2010.Google ScholarGoogle Scholar
  3. Walter Binder, Martin Schoeberl, Philippe Moret, and Alex Villazon. Cross-profiling for Java processors. Soft. Pract. Exp., 39/18, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. Greg Bollella, James Gosling, Benjamin Brosgol, Peter Dibble, Steve Furr, and Mark Turnbull. The Real-Time Specification for Java. Addison-Wesley, 2000. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. Chandrasekhar Boyapati, Alexandru Salcianu, William Beebee, Jr., and Martin Rinard. Ownership types for safe region-based memory management in real-time java. SIGPLAN Not., 38(5), 2003. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. S. R. Chidamber and C. F. Kemerer. A metrics suite for object oriented design. IEEE Trans. Soft. Eng., 20(6), 1994. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. EUROCAE ED-12B software considerations in airborne systems and equipment certification, 1992.Google ScholarGoogle Scholar
  8. Patrice Godefroid. Model checking for programming languages usingVeriSoft. In Proceedings of the 24th ACM SIGPLAN-SIGACT symposium on Principles of programming languages (POPL), 1997. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. Trevor Harmon. Interactive Worst-case Execution Time Analysis of Hard Real-time Systems. PhD thesis, University of California, Irvine, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. Thomas Henties, James Hunt, Doug Locke, Kelvin Nilsen, Martin Schoeberl, and Jan Vitek. Java for safety-critical applications. In Certification of Safety-Critical Software Controlled Systems (SafeCert), 2009.Google ScholarGoogle Scholar
  11. Ranjit Jhala and Rupak Majumdar. Software model checking. ACM Comput. Surv., 41(4), 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. Tomas Kalibera, Jeff Hagelberg, Filip Pizlo, Ales Plsek, Ben Titzer, and Jan Vitek. CDx: A family of real-time Java benchmarks. In Proceedings of the International Workshop on Java Technologies for Real-time and Embedded Systems (JTRES), 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. Tomas Kalibera, Pavel Parizek, Ghaith Haddad, Gary T. Leavens, and Jan Vitek. Challenge benchmarks for verification of real-time programs. In Proceedings of the 4th ACM SIGPLAN workshop on Programming languages meets program verification (PLPV), 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. Kim Guldstrand Larsen, Paul Pettersson, and Wang Yi. Uppaal in a nutshell. STTT, 1(1--2), 1997.Google ScholarGoogle Scholar
  15. Gary Lindstrom, Peter C. Mehlitz, and Willem Visser. Model checking real time Java using Java PathFinder. In Proceedings of Automated Technology for Verification and Analysis, Third International Symposium (ATVA), 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. Madanlal Musuvathi, David Y. W. Park, Andy Chou, Dawson R. Engler, and David L. Dill. CMC: a pragmatic approach to model checking real code. SIGOPS Oper. Syst. Rev., 36(SI), 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. Madanlal Musuvathi and Shaz Qadeer. Iterative context bounding for systematic testing of multithreaded programs. SIGPLAN Not., 42(6), 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. Fadia Nemer, Hugues Cassé, Pascal Sainrat, Jean Paul Bahsoun, and Marianne De Michiel. Papabench: a free real-time benchmark. In Proceedings of 6th International Workshop on Worst-Case Execution Time Analysis (WCET), 2006.Google ScholarGoogle Scholar
  19. Pavel Parizek, Tomas Kalibera, and Jan Vitek. Model checking real-time Java. Technical Report 1, Dept. of Distributed and Dependable System, Charles University, http://d3s.mff.cuni.cz/publications/rtJavaChecking.pdf, 2010.Google ScholarGoogle Scholar
  20. Software considerations in airborne systems and equipment certification, 1992.Google ScholarGoogle Scholar
  21. Martin Schoeberl. A time predictable instruction cache for a Java processor. In Proceedings of the International Workshop on Java Technologies for Real-Time and Embedded Systems (JTRES), 2004.Google ScholarGoogle ScholarCross RefCross Ref
  22. Martin Schoeberl. Evaluation of a Java processor. In Tagungsband Austrochip 2005, Vienna, Austria, 2005.Google ScholarGoogle Scholar
  23. Martin Schoeberl. Application experiences with a real-time Java processor. In Proceedings of the 17th IFAC World Congress, 2008.Google ScholarGoogle ScholarCross RefCross Ref
  24. Martin Schoeberl. A Java processor architecture for embedded real-time systems. J. Sys. Arch., 54/1--2, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. Martin Schoeberl, Thomas B. Preusser, and Sascha Uhrig. The embedded Java benchmark suite JemBench. In Proceedings of the International Workshop on Java Technologies for Real-time and Embedded Systems (JTRES), 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  26. Martin Schoeberl, Wolfgang Puffitsch, Rasmus Ulslev Pedersen, and Benedikt Huber. Worst-case execution time analysis for a Java processor. Soft. Pract. Exp., 40/6, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  27. D. D. Spinellis. ckjm - A Tool for Calculating Chidamber and Kemerer Java Metrics. http://gromit.iiar.pwr.wroc.pl/p_inf/ckjm/, 2009.Google ScholarGoogle Scholar
  28. Stavros Tripakis and Costas Courcoubetis. Extending Promela and Spin for real time. In Proceedings of the Second International Workshop on Tools and Algorithms for Construction and Analysis of Systems(TACAS), 1996. Google ScholarGoogle ScholarDigital LibraryDigital Library
  29. Willem Visser, Klaus Havelund, Guillaume P. Brat, Seungjoon Park, and Flavio Lerda. Model checking programs. Autom. Softw. Eng., 10(2), 2003. Google ScholarGoogle ScholarDigital LibraryDigital Library
  30. Sergio Yovine. Kronos: A verification tool for real-time systems. STTT, 1(1--2):123--133, 1997.Google ScholarGoogle Scholar
  31. Tian Zhao, James Noble, and Jan Vitek. Scoped types for real-time java. In Proceedings of the 25th IEEE International Real-Time Systems Symposium (RTSS), 2004. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Exhaustive testing of safety critical Java

          Recommendations

          Comments

          Login options

          Check if you have access through your login credentials or your institution to get full access on this article.

          Sign in
          • Published in

            cover image ACM Other conferences
            JTRES '10: Proceedings of the 8th International Workshop on Java Technologies for Real-Time and Embedded Systems
            August 2010
            183 pages
            ISBN:9781450301220
            DOI:10.1145/1850771

            Copyright © 2010 ACM

            Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

            Publisher

            Association for Computing Machinery

            New York, NY, United States

            Publication History

            • Published: 19 August 2010

            Permissions

            Request permissions about this article.

            Request Permissions

            Check for updates

            Qualifiers

            • research-article

            Acceptance Rates

            Overall Acceptance Rate50of70submissions,71%

          PDF Format

          View or Download as a PDF file.

          PDF

          eReader

          View online with eReader.

          eReader