For many decades, the correctness of programs has been a concern for computer scientists and software engineers. At present, it is still not easy to ensure the correctness of nontrivial programs, although many researchers have made various attempts in this direction.

Recently, the Verifying Compiler is proposed as a grand challenge in computing research [7]. But its goal can be achieved incrementally. The following is quoted from Hoare (page 68 of [7]):

The progress of the project can be assessed by the number of lines of code that have been verified, and the level of annotation and verification that has been achieved. The relevant levels of annotations are: structural integrity, partial functional specification, total specification. The relevant levels of verification are: by testing, by human proof, by machine assistance, and fully automatic.


False Alarm Constraint Satisfaction Problem Path Condition Symbolic Execution Generate Test Case 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


  1. 1.
    Boyer, R.S., Elspas, B., Levitt, K.N.: SELECT – A formal system for testing and debugging programs by symbolic execution. In: Proc. of the Int. conf. on Reliable Software, pp. 234–245 (1975)Google Scholar
  2. 2.
    Bush, W.R., Pincus, J.D., Sielaff, D.J.: A static analyzer for finding dynamic programming errors. Software – Practice And Experience 30, 775–802 (2000)CrossRefzbMATHGoogle Scholar
  3. 3.
    Cousot, P., et al.: The ASTRÉE analyzer. In: Sagiv, M. (ed.) ESOP 2005. LNCS, vol. 3444, pp. 21–30. Springer, Heidelberg (2005)CrossRefGoogle Scholar
  4. 4.
    Detlefs, D., Nelson, G., Saxe, J.B.: Simplify: A theorem prover for program checking. J. ACM 52(3), 365–473 (2005)MathSciNetCrossRefzbMATHGoogle Scholar
  5. 5.
    Flanagan, C., Leino, K.R.M., Lillibridge, M., Nelson, G., Saxe, J.B., Stata, R.: Extended static checking for Java. In: Proc. of the ACM SIGPLAN Conf. on Programming Language Design and Implementation (PLDI), pp. 234–245 (2002)Google Scholar
  6. 6.
    Hoare, C.A.R.: Assertions in modern software engineering practice, Keynote address. In: 26th Int’l Computer Software and Applications Conf (COMPSAC), Oxford, England (August 2002)Google Scholar
  7. 7.
    Hoare, T.: The verifying compiler: A grand challenge for computing research. J. of the ACM 50(1), 63–69 (2003)CrossRefzbMATHGoogle Scholar
  8. 8.
    King, J.C.: Symbolic execution and testing. Comm. of the ACM 19(7), 385–394 (1976)MathSciNetCrossRefzbMATHGoogle Scholar
  9. 9.
    Mackworth, A.K.: Constraint satisfaction. In: Shapiro, S.C. (ed.) Encyclopedia of Artificial Intelligence, vol. 1, pp. 205–211. John Wiley, New York (1990)Google Scholar
  10. 10.
    Zhang, J.: Symbolic execution of program paths involving pointer and structure variables. In: Proc. of the 4th Int’l Conf. on Quality Software (QSIC), pp. 87–92 (2004)Google Scholar
  11. 11.
    Zhang, J., Wang, X.: A constraint solver and its application to path feasibility analysis. of Software Engineering and Knowledge Engineering 11(2), 139–156 (2001)MathSciNetCrossRefGoogle Scholar
  12. 12.
    Zhang, J., Xu, C., Wang, X.: Path-oriented test data generation using symbolic execution and constraint solving techniques. In: Proc. 2nd Int’l Conf. on Software Engineering and Formal Methods (SEFM), pp. 242–250 (2004)Google Scholar
  13. 13.
    Zitser, M., Lippmann, R., Leek, T.: Testing static analysis tools using exploitable buffer overflows from open source code. In: Proc. of the 12th ACM SIGSOFT Int’l Symp. on Foundations of Software Engineering, pp. 97–106 (2004)Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2008

Authors and Affiliations

  • Jian Zhang
    • 1
  1. 1.State Key Laboratory of Computer Science Institute of SoftwareChinese Academy of SciencesBeijingChina

Personalised recommendations