Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
10.1007/11678779_9guideproceedingsArticle/Chapter ViewAbstractPublication PagesConference Proceedingsacm-pubtype
Article

An extensible open-source compiler infrastructure for testing

Published: 13 November 2005 Publication History

Abstract

Testing forms a critical part of the development process for large-scale software, and there is growing need for automated tools that can read, represent, analyze, and transform the application's source code to help carry out testing tasks. However, the support required to compile applications written in common general purpose languages is generally inaccessible to the testing research community. In this paper, we report on an extensible, open-source compiler infrastructure called ROSE, which is currently in development at Lawrence Livermore National Laboratory. ROSE specifically targets developers who wish to build source-based tools that implement customized analyses and optimizations for large-scale C, C++, and Fortran90 scientific computing applications (on the order of a million lines of code or more). However, much of this infrastructure can also be used to address problems in testing, and ROSE is by design broadly accessible to those without a formal compiler background. This paper details the interactions between testing of applications and the ways in which compiler technology can aid in the understanding of those applications. We emphasize the particular aspects of ROSE, such as support for the general analysis of whole programs, that are particularly well-suited to the testing research community and the scale of the problems that community solves.

References

[1]
Dan Quinlan, Markus Schordan, Qing Yi, and Andreas Saebjornsen. Classification and utilization of abstractions for optimization. In Proc. 1st International Symposium on Leveraging Applications of Formal Methods, Paphos, Cyprus, October 2004.
[2]
Markus Schordan and Dan Quinlan. A source-to-source architecture for userdefined optimizations. In Proc. Joint Modular Languages Conference, 2003.
[3]
Qing Yi and Dan Quinlan. Applying loop optimizations to object-oriented abstractions through general classification of array semantics. In Proc. Workshop on Languages and Compilers for Parallel Computing, West Lafayette, Indiana, USA, September 2004.
[4]
Daniel Jackson and Martin Rinard. Software analysis: A roadmap. In Proc. Conference on the Future of Software Engineering (International Conference on Software Engineering), pages 133-145, Limerick, Ireland, 2000.
[5]
David Hovemeyer and William Pugh. Finding bugs is easy. SIGPLAN Notices (Proceedings of Onward! at OOPSLA 2004), December 2004.
[6]
Dawson Engler and Mandanlal Musuvathi. Static analysis versus software model checking for bug finding. In Proc.International Conference on Verification, Model Checking, and Abstract Interpretation, Venice, Italy, 2004.
[7]
Orit Edelstein, Eitan Farchi, Evgeny Goldin, Yarden Nir, Gil Ratsaby, and Shmuel Ur. Testing multithreaded Java programs. IBM Systems Journal: Special Issue on Software Testing, February 2002.
[8]
Shmuel Ur and A. Ziv. Off-the-shelf vs. custom made coverage models, which is the one for you? In Proc. International Conference on Software Testing Analysis and Review, May 1998.
[9]
Gregg Rothermel and Mary Jean Harrold. A safe, efficient regression test selection technique. ACM Trans. Softw. Eng. Methodol., 6(2):173-210, 1997.
[10]
Gil Ratsaby, Baruch Sterin, and Shmuel Ur. Improvements in coverability analysis. In FME, pages 41-56, 2002.
[11]
Eitan Farchi and Bradley R. Harrington. Assisting the code review process using simple pattern recognition. In Proc. IBM Verification Conference, Haifa, Israel, November 2005.
[12]
Francois Bodin, Peter Beckman, Dennis Gannon, Jacob Gotwals, Srinivas Narayana, Suresh Srinivas, and Beata Winnicka. Sage++: An object-oriented toolkit and class library for building fortran and C++ restructuring tools. In Proceedings. OONSKI '94, Oregon, 1994.
[13]
Edison Design Group. EDG front-end. www.edg.com.
[14]
Lingxiao Jiang and Zhendong Su. Osprey: A practical type system for validating the correctness of measurement units in C programs, 2005. (submitted; wwwcsif.cs.ucdavis.edu/~jiangl/research.html).
[15]
NIST. The economic impacts of inadequate infrastructure for software testing. Technical Report Planning Report 02-3, National Institute of Standards and Technology, May 2002.
[16]
Bjarne Stroustrop. The C++ programming language. Addison-Wesley, 3rd edition, 2000.
[17]
M. S. Lam S. P. Amarasinghe, J. M. Anderson and C. W. Tseng. The suif compiler for scalable parallel machines. In Proc. SIAM Conference on Parallel Processing for Scientific Computing, Feb 1995.
[18]
G.-A. Silber and A. Darte. The Nestor library: A tool for implementing Fortran source to source transformations. Lecture Notes in Computer Science, LNCSD9(1593), 1999.
[19]
Free Software Foundation. GNU Compiler Collection, 2005. gcc.gnu.org.
[20]
Shigeru Chiba. Macro processing in object-oriented languages. In TOOLS Pacific '98, Technology of Object-Oriented Languages and Systems, 1998.
[21]
Yutaka Ishikawa, Atsushi Hori, Mitsuhisa Sato, Motohiko Matsuda, Jorg Nolte, Hiroshi Tezuka, Hiroki Konaka, Munenori Maeda, and Kazuto Kubota. Design and implementation of metalevel architecture in C++--MPC++ approach. In Proc. Reflection '96 Conference, April 1996.
[22]
Sibylle Schupp, Douglas Gregor, David Musser, and Shin-Ming Liu. Semantic and behavioral library transformations. Information and Software Technology, 44(13):797-810, April 2002.
[23]
Scott McPeak and George C. Necula. Elkhound: A fast, practical GLR parser generator. In Proc. Conference on Compiler Construction, Barcelona, Spain, April 2004.
[24]
Bjarne Stroustrop and Gabriel Dos Reis. Supporting SELL for high-performance computing. In Proc. Workshop on Languages and Compilers for Parallel Computing, Hawthorne, NY, USA, October 2005.
[25]
S. C. Johnson. Lint, a C program checker, April 1986.
[26]
David Evans and David Larochelle. Improving security using extensible lightweight static analysis. IEEE Software, pages 42-51, Jan 2002.
[27]
Scott Meyers. Effective C++: 50 specific ways to improve your programs and design. Addison-Wesley, 2nd edition, 1997.
[28]
Amy Williams, William Thies, and Michael D. Ernst. Static deadlock detection for Java libraries. In Proceedings of the 19th European Conference on Object-Oriented Programming, Glasgow, Scotland, July 2005.
[29]
Jeffrey S. Foster, Tachio Terauchi, and Alex Aiken. Flow-sensitive type qualifiers. In Proc. ACM SIGPLAN Conference on Programming Language Design and Implementation, pages 1-12, Berlin, Germany, June 2002.
[30]
Seth Hallem, Benjamin Chelf, Yichen Xie, and Dawson Engler. A system and language for building system-specific, static analyses. In Proc. ACM SIGPLAN Conference on Programming Language Design and Implementation, Berlin, Germany, June 2002.
[31]
Coverity Inc. Coverity source code security tool. www.coverity.com.
[32]
William R. Bush, Jonathan D. Pincus, and David J. Sielaff. A static analyzer for finding dynamic programming errors. Software-Practice and Experience, 30:775- 802, 2000.
[33]
Sarfraz Khurshid, Corina Pasareanu, and Willem Visser. Generalized symbolic execution for model checking and testing. In Proc. International Conference on Tools and Algorithms for Construction and Analysis of Systems, Warsaw, Poland, April 2003.
[34]
Douglas Gregor and Sibylle Schupp. STLlint: Lifting static checking from languages to libraries. Software: Practice and Experience, 2005. (to appear).
[35]
Manuvir Das, Sorin Lerner, and Mark Seigle. ESP: Path-sensitive program verification in polynomial time. In Proc. ACM SIGPLAN Conference on Programming Language Design and Implementation, Berlin, Germany, June 2002.
[36]
Edmund Clarke, Daniel Kroening, and Flavio Lerda. A tool for checking ANSI C programs. In Proc. International Conference on Tools and Algorithms for Construction and Analysis of Systems, volume LNCS 2988, Barcelona, Spain, March 2004.
[37]
Yichen Xie and Alex Aiken. Scalable error detection using boolean satisfiability. In Proc. Principles of Programming Languages, Long Beach, CA, USA, January 2005.
[38]
Parasoft Corporation. Jtest, 2005. www.parasoft.com.
[39]
Michelle Mills Strout, John Mellor-Crummey, and Paul D. Hovland. Representation-independent program analysis. In Proc. ACM SIGPLANSIGSOFT Workshop on Program Analysis for Software Tools and Engineering, September 2005.
[40]
Gerard J. Holzmann and Margaret H. Smith. Automating software feature verification. Bell Labs Technical Journal, 5(2):72-87, 2000.
[41]
Willem Visser, Klaus Havelund, Guillame Brat, Seung-Joon Park, and Flavio Lerda. Model checking programs. Automated Software Engineering Journal, 10(2), April 2002.
[42]
Gerard J. Holzmann. The model checker SPIN. IEEE Trans. on Software Engineering, 23(5):279-295, May 1997.
[43]
James C. Corbett, Matthew B. Dwyer, John Hatcliff, Shawn Laubach, Corina S. Păsăreanu, and Robby. Bandera: Extracting finite-state models from Java source code. In Proc.International Conference on Software Engineering, pages 439-448, Limerick, Ireland, 2000.
[44]
Robby, Matthew B. Dwyer, and John Hatcliff. Bogor: An extensible and highlymodular model checking framework. In Proc. Joint Meeting of the European Software Engineering Conference and ACM SIGSOFT Symposium on the Foundations of Software Engineering, March 2003.
[45]
Hao Chen, Drew Dean, and David Wagner. Model checking one million lines of C code. In Proc. Network and Distributed System Security Symposium, San Diego, CA, USA, February 2004.
[46]
Thomas A. Ball and Sriram K. Rajamani. The SLAM project: Debugging system software via static analysis. In Proc. Principles of Programming Languages, January 2002.
[47]
Thomas A. Henzinger, Ranjit Jhala, Rupak Majumdar, and Gregoire Sutre. Software verification with BLAST. In Proc. 10th SPIN Workshop on Model Checking Software, volume LNCS 2648, pages 235-239. Springer-Verlag, 2003.
[48]
Patrice Godefroid. Software model checking: the VeriSoft approach. Technical Report ITD-03-44189G, Bell Labs, 2003.
[49]
David L. Detlefs, K. Rustan M. Leino, Greg Nelson, and James B. Saxe. Extended static checking. Technical Report SRC-159, Compaq Systems Research Center, December 18 1998.
[50]
Gregor Kiczales, John Lamping, Anurag Menhdhekar, Chris Maeda, Cristina Lopes, Jean-Marc Loingtier, and John Irwin. Aspect-oriented programming. In Mehmet Ak,sit and Satoshi Matsuoka, editors, Proceedings European Conference on Object-Oriented Programming, volume 1241, pages 220-242. Springer-Verlag, Berlin, Heidelberg, and New York, 1997.
[51]
Gregor Kiczales, Erik Hilsdale, Jim Hugunin, Mik Kersten, Jeffrey Palm, and William G. Griswold. An overview of AspectJ. Lecture Notes in Computer Science, 2072:327-355, 2001.
[52]
Daniel Hughes and Philip Greenwood. Aspect testing framework. In Proceedings of the Formal Methods for Open Object-based Distributed Systems and Distributed Applications and Interoperable Systems Student Workshop, Paris, France, November 2003.
[53]
Shady Copty and Shmuel Ur. Multi-threaded testing with AOP is easy, and it finds bugs! In Euro-Par, pages 740-749, 2005.

Recommendations

Comments

Information & Contributors

Information

Published In

cover image Guide Proceedings
HVC'05: Proceedings of the First Haifa international conference on Hardware and Software Verification and Testing
November 2005
264 pages
ISBN:3540326049
  • Editors:
  • Shmuel Ur,
  • Eyal Bin,
  • Yaron Wolfsthal

Publisher

Springer-Verlag

Berlin, Heidelberg

Publication History

Published: 13 November 2005

Qualifiers

  • Article

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • 0
    Total Citations
  • 0
    Total Downloads
  • Downloads (Last 12 months)0
  • Downloads (Last 6 weeks)0
Reflects downloads up to 12 Nov 2024

Other Metrics

Citations

View Options

View options

Get Access

Login options

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media