Abstract
Computer programmers break apart large programs into smaller coherent pieces. Each of these pieces: functions, subroutines, modules, or abstract datatypes, is usually a contiguous piece of program text. The experiment reported here shows that programmers also routinely break programs into one kind of coherent piece which is not coniguous. When debugging unfamiliar programs programmers use program pieces called slices which are sets of statements related by their flow of data. The statements in a slice are not necessarily textually contiguous, but may be scattered through a program.
- 1 Atwood, M.E. and Ramsey, H.R. Cognitive structures in the comprehension and memory of computer programs: An investigation of computer program debugging. TR-78-A21, U.S. Army Research Institute for the Behavioral and Social Sciences, Alexandria, Virginia, August, 1978.Google Scholar
- 2 Chase, W.G. and Simon, H.A. Perception in chess. Cognitive Psychology 5, 4, Oct 1973, 55-81.Google Scholar
- 3 Chi, M.T.H. and Glasser, R. Encoding process characteristics of experts and novices in physics. Symposium on Process Models of Skilled and Less Skilled Behavior in Technical Domains. American Educational Research Association, April, 1979.Google Scholar
- 4 DeGroot, A.D. Thought and Choice in Chess. Mouton Press, The Hague, 1965.Google Scholar
- 5 Dijkstra, E.W. Correctness concerns and, among other things, why they are resented. Proc. Int. Conf. on Reliable Software June 1975, 546-550. SIGPLAN Notices 10, 6. Google ScholarDigital Library
- 6 Gould, J.D. and Drongowski, P. An exploratory study of computer program debugging. Human Factors 1, 6, June 1974, 258- 277.Google Scholar
- 7 Gould, J.D. Some psychological evidence on how people debug computer programs. International J. of Man-Machine Studies 7, 1, Jan 1975, 151-182.Google ScholarCross Ref
- 8 Hecht, M.S. Flow Analysis of Computer Programs. North- Holland, New York 1977. Google ScholarDigital Library
- 9 King, J. Program reduction using symbolic evaluation. Software Engineering Notes 6, 1, (Jan. 1981) ACM SIGSOFT. Google ScholarDigital Library
- 10 Larkin, J., McDermott, J., Simon, D.P., and Simon, H.A. Expert and novice performance in solving physics problems. Science 208, June 20, 1980, 1335-1342.Google ScholarCross Ref
- 11 Lukey, F.J. Understanding and debugging programs. International J. of Man-Machine Studies 12, 2, (Feb. 1980), 189-202.Google ScholarCross Ref
- 12 McKeithen, K.B. Assessing knowledge structures in novice and expert programmers. PhD Thesis, University of Michigan, Ann Arbor, MI, 1979.Google Scholar
- 13 Posner, M.I. and Keele, S.W. On the genesis of abstract ideas. 3". of Experimental Psychology 77, 3, July 1968, 353-363.Google Scholar
- 14 Posner, M.I. and Keele, S.W. Retention of abstract ideas. J. of Experimental Psychology 83, 2, Feb. 1970, 304-308.Google ScholarCross Ref
- 15 Schwartz, J.T. An overview of bugs, In Debugging Techniques in Large Systems. Edited by Randall Rustin. Prentice-Hall, Englewood Cliffs, NJ, 1971.Google Scholar
- 16 Shneiderman, B. Exploratory experiments in programmer behavior. International J. of Computer and Information Sciences 5, 2, April 1976, 123-143.Google ScholarCross Ref
- 17 Shneiderman, B. and Mayer, R. Syntactic/semantic interactions in programmer behavior: A model and experimental results. International J. of Computer and Information Sciences 7, 1979, 219- 239.Google ScholarCross Ref
- 18 Shneiderman, B. Software Psychology: Human Factors in Computer and Information Systems, Winthrop, Reading, MA, 1980. Google ScholarDigital Library
- 19 Siegel, S. Nonparametric Statistics for the Behavioral Sciences. McGraw-Hill, New York, 1955.Google Scholar
- 20 Sime, M.E., Green, T.R.G., and Guest, D.J. Scope marking in computer conditionals--A psychological evaluation. International J. of Man-Machine Studies 5, 1973, 105-113.Google ScholarCross Ref
- 21 Weiser, M. Program slices: Formal, psychological, and practical investigations of an automatic program abstraction method. PhD Thesis, University of Michigan, Ann Arbor, MI, 1979. Google ScholarDigital Library
- 22 Weiser, M. The slicing abstraction in software production and maintenance. Reliable Software Systems Group Technical Memo (RSSM), University of Michigan, Ann Arbor, 1979.Google Scholar
- 23 Weiser, M. Theoretical foundations of program slices. Reliable Software Systems Group ( RSSM) Technical Memo 69, University of Michigan, Ann Arbor, MI 1979.Google Scholar
- 24 Weiser, M. Program slicing. Proceedings of the Fifth International Conference on Software Engineering, San Diego, CA, March, 1981. Google ScholarDigital Library
- 25 Weiser, M. Towards an iterative enhancement software development environment. Fourteenth Hawaii International Conference on System Science, Honolulu, HA, Jan. 1981.Google Scholar
- 26 Wirth, N. and Hoare, C.A.R. A contribution to the development of ALGOL. Comm. A CM 9, 6, (June 1966), 413-431. Google ScholarDigital Library
- 27 Zelkowitz, M.V., Reversible Execution. Comm. ACM 16, 9, (Sept. 1973) 566. Google ScholarDigital Library
Index Terms
- Programmers use slices when debugging
Recommendations
Unions of Slices Are Not Slices
CSMR '03: Proceedings of the Seventh European Conference on Software Maintenance and ReengineeringMany approaches to slicing rely upon the 'fact' that the union of two static slices is a valid slice. It is known that static slices constructed using program dependence graph algorithms are valid slices [19 ]. However, this is not true for other forms ...
A Novel Approach for Computing Dynamic Slices of Web Based Applications
ACCT '14: Proceedings of the 2014 Fourth International Conference on Advanced Computing & Communication TechnologiesProgram slicing is an effective decomposition technique to relevant parts of a program or application during debugging and analysis activities. It extracts slice of codes from a developed program, which have been affected by value of variable for some ...
Comments