Abstract
Runtime verification as a field faces several challenges. One key challenge is how to keep the overheads associated with its application low. This is especially important in real-time critical embedded applications, where memory and CPU resources are limited. Another challenge is that of devising expressive and yet user-friendly specification languages that can attract software engineers. In this paper, we show that for many systems, in-place logging provides a satisfactory basis for postmortem "runtime" verification of logs, where the overhead is already included in system design. While this approach prevents on-line reaction to detected errors, possible with traditional runtime verification, it provides a powerful tool for test automation and debugging-in our case, analysis of spacecraft telemetry by ground operations teams at NASA's Jet Propulsion Laboratory (JPL). The second challenge is addressed in the presented work through a temporal pattern language, designed in collaboration with JPL test engineers. The pattern language allows for descriptions of relationships between data-rich events (records) common in logs, and is translated into a form of automata supporting data parameterized states. The automaton language is inspired by the rulebased language of the RULER runtime verification system. We present a case study illustrating the use of our LOGSCOPE tool by software test engineers for the 2011 Mars Science Laboratory mission.
References (29)
- H. Alavi, G. Avrunin, J. Corbett, L. Dillon, M. Dwyer, and C. Pasareanu. Specification pat- terns, SAnToS laboratory, Kansas State University. http://patterns.projects.cis.ksu.edu.
- C. Allan, P. Avgustinov, A. S. Christensen, L. Hendren, S. Kuzins, O. Lhoták, O. de Moor, D. Sereni, G. Sittamplan, and J. Tibble. Adding trace matching with free variables to AspectJ. In OOPSLA'05. ACM Press, 2005.
- J. H. Andrews and Y. Zhang. General test result checking with log file analysis. IEEE Transactions on Software Engineering, 29(7):634-648, 2003.
- D. Angluin. Learning regular sets from queries and counterexamples. Inf. Comput., 75(2):87-106, 1987.
- H. Barringer, A. Goldberg, K. Havelund, and K. Sen. Rule- based runtime verification. In Proc. of Fifth International VMCAI conference (VMCAI'04), volume 2937 of LNCS. Springer, January 2004.
- H. Barringer, D. Rydeheard, and K. Havelund. Rule systems for run-time monitoring: from Eagle to RuleR. In Proc. of the 7th International Workshop on Runtime Verification (RV'07), volume 4839 of LNCS, Vancouver, Canada, 2007. Springer.
- H. Barringer, D. Rydeheard, and K. Havelund. RuleR: A tutorial guide. Available at: http://www.cs.man.ac.uk/˜howard/LPA.html, 2008.
- H. Barringer, D. Rydeheard, and K. Havelund. Rule systems for run-time monitoring: from Eagle to RuleR. Journal of Logic and Computation, 2009.
- A. W. Biermann and J. A. Feldman. On the synthesis of finite-state machines from samples of their behaviour. IEEE Transactions on Computers, 21:592-597, 1972.
- F. Chang and J. Ren. Validating system properties exhibited in execution traces. In Automated Software Engineering, pages 517-520, 2007.
- F. Chen and G. Ros ¸u. MOP: An efficient and generic runtime verification framework. In Object-Oriented Programming, Systems, Languages and Applications (OOPSLA'07), 2007.
- A. Coen-Porisini, G. Denaro, C. Ghezzi, and M. Pezzè. Using symbolic execution for verifying safety-critical systems. In ESEC/FSE-9: Proc. 8th European Software Engineering Conference, pages 142-151. ACM Press, 2001.
- L. K. Dillon, G. Kutty, L. E. Moser, P. M. Melliar- Smith, and Y. S. Ramakrishna. A graphical interval logic for specifying concurrent systems. ACM Transactions on Software Engineering and Methodology, 3(2):131-165, April 1994.
- L. K. Dillon and Y. S. Ramakrishna. Generating oracles from your favorite temporal logic specifications. ACM SIGSOFT Software Engineering Notes archive, 21(6):106- 117, November 1996.
- D. Drusinsky. Modeling and Verification using UML Statecharts. Elsevier, 2006. ISBN-13: 978-0-7506-7949-7, 400 pages.
- S. Eckmann, G. Vigna, and R. A. Kemmerer. STATL definition. Reliable Software Group, Department of
- GraphViz. http://www.graphviz.org.
- K. Havelund. Runtime verification of C programs. In Proc. of the 1st TestCom/FATES conference, volume 5047 of LNCS, Tokyo, Japan, June 2008. Springer.
- K. Havelund and G. Ros ¸u. Efficient monitoring of safety properties. Software Tools for Technology Transfer, 6(2):158-173, 2004.
- M. Kim, S. Kannan, I. Lee, and O. Sokolsky. Java- MaC: a run-time assurance tool for Java. In Proc. of the 1st International Workshop on Runtime Verification (RV'01), volume 55(2) of ENTCS. Elsevier, 2001.
- D. Kortenkamp, T. Milam, R. Simmons, and J. L. Fern. Collecting and analyzing data from distributed control programs. In Workshop on Runtime Verification, pages 133- 151, 2001.
- R. Laddad. AspectJ in Action. Manning, 2003.
- R. Mateescu and D. Thivolle. A model checking language for concurrent value-passing systems. In The 15th international symposium on Formal Methods (FM 2008), volume 5014 of Lecture Notes in Computer Science. Springer, May 2008. Turku, Finland.
- A. Pnueli. The temporal logic of programs. In Proc. of the 18th IEEE Symposium on Foundations of Computer Science, pages 46-77, 1977.
- M. Smith and K. Havelund. Requirements capture with RCAT. In 16th IEEE International Requirements Engineering Conference (RE'08), IEEE Computer Society, Barcelona, Spain, September 2008.
- M. Smith, G. Holzmann, and K. Ettessami. Events and constraints: a graphical editor for capturing logic properties of programs. In 5th Int Sym. on Requirements Engineering, volume 55(2), pages 14-22, Toronto, Canada, August 2001.
- M. Vardi. From Church and Prior to PSL. In 25 Years of Model Checking: History, Achievements, Perspectives, 2008.
- J. Yang, D. Evans, D. Bhardwaj, T. Bhat, and M. Das. Perracotta: Mining temporal API rules from imperfect traces. In International Conference on Software Engineering, pages 282-291, 2006.
- A. Zeller. Why programs fail: a guide to systematic debugging. Morgan Kaufmann, 2005.