|
ABSTRACT
The automated and semi-automated analysis of source code has remained a topic of intense research for more than thirty years. During this period, algorithms and techniques for source-code analysis have changed, sometimes dramatically. The abilities of the tools that implement them have also expanded to meet new and diverse challenges. This paper surveys current work on source-code analysis. It also provides a road map for future work over the next five-year period and speculates on the development of source-code analysis applications, techniques, and challenges over the next 10, 20, and 50 years.
REFERENCES
Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.
| |
1
|
[1] L. O. Andersen. Program Analysis and Specialization for the C Programming Language. PhD thesis, DIKU, University of Copenhagen, May 1994. (DIKU report 94/19).
|
| |
2
|
|
| |
3
|
[3] G. Balakrishnan and T. Reps. Analyzing memory accesses in x86 executables. In Proc. of the International Conference on Compiler Construction. Springer-Verlag, New York, NY, 2004.
|
| |
4
|
[4] T. Ball and S. G. Eick. Visualizing program slices. In A. L. Ambler and T. D. Kimura, editors, Proceedings of the Symposium on Visual Languages, Los Alamitos, CA, USA, Oct. 1994. IEEE Computer Society Press.
|
| |
5
|
|
| |
6
|
|
 |
7
|
André Baresel , David Binkley , Mark Harman , Bogdan Korel, Evolutionary testing in the presence of loop-assigned flags: a testability transformation approach, Proceedings of the 2004 ACM SIGSOFT international symposium on Software testing and analysis, July 11-14, 2004, Boston, Massachusetts, USA
|
| |
8
|
|
 |
9
|
|
| |
10
|
|
| |
11
|
|
| |
12
|
[12] D. Binkley and K. B. Gallagher. Program slicing. In M. Zelkowitz, editor, Advances in Computing, Volume 43. Academic Press, 1996.
|
| |
13
|
[13] D. Binkley and M. Harman. Results from a large-scale study of performance optimization techniques for source code analyses based on graph reachability algorithms. In IEEE International Workshop on Source Code Analysis and Manipulation (SCAM 2003), Amsterdam, Netherlands, Sept. 2003. IEEE Computer Society Press, Los Alamitos, California, USA.
|
| |
14
|
|
| |
15
|
[15] D. Binkley and M. Harman. A survey of empirical results on program slicing. Advances in Computers, 62, 2004.
|
| |
16
|
|
| |
17
|
[17] A. Binstock. Extra-strength code cleaners, January 2006. www.infoworld.com/article/06/01/26/ 74270_05FEcodelint_1.html.
|
 |
18
|
Bruno Blanchet , Patrick Cousot , Radhia Cousot , Jérome Feret , Laurent Mauborgne , Antoine Miné , David Monniaux , Xavier Rival, A static analyzer for large safety-critical software, Proceedings of the ACM SIGPLAN 2003 conference on Programming language design and implementation, June 09-11, 2003, San Diego, California, USA
|
| |
19
|
[19] R. Brooks. Towards a theory of comprehension of computer programs, volume 18. ACM Press Journal Man-Machine Studies, 1983.
|
| |
20
|
[20] G. Canfora, A. Cimitile, and M. Munro. RE2: Reverse engineering and reuse re-engineering. Journal of Software Maintenance : Research and Practice, 6(2), 1994.
|
| |
21
|
|
| |
22
|
[22] B. Carey. Accidental invention points to end of light bulbs, October 2005. www.livescience.com.
|
 |
23
|
|
 |
24
|
|
| |
25
|
[25] J. Cobleigh, L. Clarke, and L. Osterweil. Flavers: A finite state verification technique for software systems. IBM Systems Journal - Software Testing and Verification, 41(1), 2002.
|
| |
26
|
|
| |
27
|
[27] J. Cordy, T. Dean, A. Malton, and K. Schneider. Source transformation in software engineering using the TXL transformation system. Information and Software Technology , 44(13), 2002.
|
| |
28
|
[28] J. Cordy et. al. eds. International Workshop on Program Comprehension. Computer Society Press, St. Louis, MO, 2005.
|
| |
29
|
[29] Coverity. www.coverity.com, 2006.
|
| |
30
|
[30] 9th European Conference on Software Maintenance and Reengineering, Manchester, UK, March 2005. IEEE Computer Society.
|
 |
31
|
|
| |
32
|
|
 |
33
|
Brian Demsky , Michael D. Ernst , Philip J. Guo , Stephen McCamant , Jeff H. Perkins , Martin Rinard, Inference and enforcement of data structure consistency specifications, Proceedings of the 2006 international symposium on Software testing and analysis, July 17-20, 2006, Portland, Maine, USA
[doi> 10.1145/1146238.1146266]
|
| |
34
|
|
| |
35
|
[35] Edison Design Group. Compiler front ends, 2006.
|
 |
36
|
|
| |
37
|
[37] M. Ernst, J. Perkins, P. Guo, S. McCamant, C. Pacheco, M. Tschantz, and C. Xiao. The Daikon system for dynamic detection of likely invariants. Science of Computer Programming, 2006.
|
 |
38
|
Manuel Fähndrich , Jeffrey S. Foster , Zhendong Su , Alexander Aiken, Partial online cycle elimination in inclusion constraint graphs, Proceedings of the ACM SIGPLAN 1998 conference on Programming language design and implementation, p.85-96, June 17-19, 1998, Montreal, Quebec, Canada
|
 |
39
|
|
| |
40
|
|
| |
41
|
|
| |
42
|
|
 |
43
|
|
| |
44
|
[44] R. Gupta, M. J. Harrold, and M. L. Soffa. An approach to regression testing using slicing. Proc. of the Int. Conf. on Software Maintenance, 1992.
|
 |
45
|
|
| |
46
|
[46] S. Guyer and C. Lin. Client-driven pointer analysis. In FCRC Static Analysis Symposium, June 2003.
|
 |
47
|
|
| |
48
|
|
| |
49
|
|
| |
50
|
|
| |
51
|
|
| |
52
|
|
 |
53
|
|
| |
54
|
|
| |
55
|
|
| |
56
|
[56] R. M. Hierons, M. Harman, and S. Danicic. Using program slicing to assist in the detection of equivalent mutants. Software Testing, Verification and Reliability, 9(4), 1999.
|
 |
57
|
|
 |
58
|
|
 |
59
|
|
 |
60
|
|
| |
61
|
|
 |
62
|
|
| |
63
|
|
 |
64
|
|
| |
65
|
[65] K. K7. www.klocwork.com, 2006.
|
| |
66
|
|
 |
67
|
|
| |
68
|
[68] P. Koopman. Elements of the self-healing system problem space. In Workshop on Software Architectures for Dependable Systems (WADS), May 2003.
|
| |
69
|
|
| |
70
|
|
| |
71
|
|
 |
72
|
|
 |
73
|
|
| |
74
|
|
| |
75
|
|
| |
76
|
|
| |
77
|
[77] J. R. Lyle and M. Weiser. Automatic program bug location by program slicing. In 2nd International Conference on Computers and Applications, Peking, 1987. IEEE Computer Society Press, Los Alamitos, California, USA.
|
| |
78
|
|
| |
79
|
|
| |
80
|
|
 |
81
|
Michael Martin , Benjamin Livshits , Monica S. Lam, Finding application errors and security flaws using PQL: a program query language, Proceedings of the 20th annual ACM SIGPLAN conference on Object oriented programming, systems, languages, and applications, October 16-20, 2005, San Diego, CA, USA
|
| |
82
|
|
| |
83
|
|
| |
84
|
[84] M. Mendonca and N. Sunderhaft. Mining software engineering data: A survey, 1999.
|
 |
85
|
|
| |
86
|
|
| |
87
|
|
| |
88
|
[88] G. Moore. Cramming more components onto integrated circuits. Electronics Magazine, 1965.
|
 |
89
|
|
| |
90
|
|
 |
91
|
|
| |
92
|
|
| |
93
|
[93] H. Pohlheim. Visualization of evolutionary algorithms - set of standard techniques and multidimensional visualization. In W. Banzhaf, J. Daida, A. E. Eiben, M. H. Garzon, V. Honavar, M. Jakiela, and R. E. Smith, editors, Proceedings of the Genetic and Evolutionary Computation Conference , volume 1, Orlando, Florida, USA, 13-17 July 1999. Morgan Kaufmann.
|
| |
94
|
|
| |
95
|
|
 |
96
|
|
| |
97
|
|
| |
98
|
[98] T. Reps. Program analysis via graph reachability. In M. Harman and K. Gallagher, editors, Information and Software Technology Special Issue on Program Slicing, volume 40(11 and 12). Elsevier Science B. V., 1998.
|
| |
99
|
|
 |
100
|
|
| |
101
|
[101] S. Rugaber. Program Comprehension, volume 35(20). Marcel Dekker, Inc. New York, 1995.
|
| |
102
|
[102] B. Ryder. Dimensions of precision in reference analysis of object-oriented programming languages. In Proc. of the Twelfth International Conference on Compiler Construction , Warsaw, Poland, April 2003.
|
| |
103
|
|
 |
104
|
|
| |
105
|
|
| |
106
|
|
| |
107
|
|
| |
108
|
[108] N. Shahmehri. Generalized algorithmic debugging. PhD Thesis, Department of Computer Science and Information Science, Linköoping University, Sweden, 1991. Available as Linköping Studies in Science and Technology, Dissertations, Number 260.
|
| |
109
|
[109] J. Silva. Algorithmic debugging strategies. In International Symposium on Logic-based Program Synthesis and Transformation (LOPSTR 2006), 2006.
|
| |
110
|
|
| |
111
|
|
| |
112
|
[112] A. Stuckenholz. Component evolution and versioning state of the art. ACM Press, 2005.
|
 |
113
|
|
 |
114
|
Daniel Weise , Roger F. Crew , Michael Ernst , Bjarne Steensgaard, Value dependence graphs: representation without taxation, Proceedings of the 21st ACM SIGPLAN-SIGACT symposium on Principles of programming languages, p.297-310, January 16-19, 1994, Portland, Oregon, United States
[doi> 10.1145/174675.177907]
|
| |
115
|
[115] M. Weiser. Program slicing. IEEE Transactions on Software Engineering, 10(4), 1984.
|
 |
116
|
|
| |
117
|
|
| |
118
|
|
| |
119
|
|
|