Academia.eduAcademia.edu

Outline

Let's Look at the Logs: Low-Impact Runtime Verification

2010

https://doi.org/10.1093/COMJNL/BXH000

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)

  1. 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.
  2. 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.
  3. J. H. Andrews and Y. Zhang. General test result checking with log file analysis. IEEE Transactions on Software Engineering, 29(7):634-648, 2003.
  4. D. Angluin. Learning regular sets from queries and counterexamples. Inf. Comput., 75(2):87-106, 1987.
  5. 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.
  6. 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.
  7. H. Barringer, D. Rydeheard, and K. Havelund. RuleR: A tutorial guide. Available at: http://www.cs.man.ac.uk/˜howard/LPA.html, 2008.
  8. H. Barringer, D. Rydeheard, and K. Havelund. Rule systems for run-time monitoring: from Eagle to RuleR. Journal of Logic and Computation, 2009.
  9. 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.
  10. F. Chang and J. Ren. Validating system properties exhibited in execution traces. In Automated Software Engineering, pages 517-520, 2007.
  11. 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.
  12. 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.
  13. 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.
  14. 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.
  15. D. Drusinsky. Modeling and Verification using UML Statecharts. Elsevier, 2006. ISBN-13: 978-0-7506-7949-7, 400 pages.
  16. S. Eckmann, G. Vigna, and R. A. Kemmerer. STATL definition. Reliable Software Group, Department of
  17. GraphViz. http://www.graphviz.org.
  18. K. Havelund. Runtime verification of C programs. In Proc. of the 1st TestCom/FATES conference, volume 5047 of LNCS, Tokyo, Japan, June 2008. Springer.
  19. K. Havelund and G. Ros ¸u. Efficient monitoring of safety properties. Software Tools for Technology Transfer, 6(2):158-173, 2004.
  20. 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.
  21. 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.
  22. R. Laddad. AspectJ in Action. Manning, 2003.
  23. 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.
  24. A. Pnueli. The temporal logic of programs. In Proc. of the 18th IEEE Symposium on Foundations of Computer Science, pages 46-77, 1977.
  25. 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.
  26. 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.
  27. M. Vardi. From Church and Prior to PSL. In 25 Years of Model Checking: History, Achievements, Perspectives, 2008.
  28. 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.
  29. A. Zeller. Why programs fail: a guide to systematic debugging. Morgan Kaufmann, 2005.