How do Software Practitioners Write Programs? An Empirical Study
Findings of a research investigation into problem decomposition strategies employed by software practitioners during program design are introduced. A cognitive model of designer behavior advances the view that program design is a problem solving task involving repeated application of decomposition and elaboration. The former activity is viewed as goal generation, while the latter activity is considered to consist of the allocation of known ‘clusters’ or plans to the existing decomposition structure. The paper argues that problem decomposition is not performed in an idealized top-down manner, but is influenced by availability effects caused by problem specification characteristics and subject familiarity with component parts of the problem. In addition, it argues that the elaboration of a decomposition involves either the retrieval of known process action clusters or the transformation and re-categorization of information into new clusters. These characteristics of the model provide specific experimental hypotheses. Results from an observational experiment evaluating these hypotheses provide empirical support for the model. The results obtained are discussed in relation to other empirical investigations into program design and directions for further experimentation are presented.
KeywordsProgram Design Decomposition Strategy Action Cluster Problem Decomposition Decomposition Type
Unable to display preview. Download preview PDF.
- Dahl, O., Dijkstra, E. W., and Hoare, C. A. R., 1972, Notes on Structured Programming, Academic Press.Google Scholar
- Feigenbaum, E. A., 1970, “Models of Memory”, Information Processing and Memory, Norman, D. A., Academic Press, pp. 451–469.Google Scholar
- Greeno, J. G., 1973, “The Structure of Memory and the Process of Solving Problems”, Contemporary Issues in Cognitive Psychology: The Loyola Symposium, Solso, R. L., V. H. Winston & Sons, pp. 103–131.Google Scholar
- Hoc, J. M., 1982, “Analysis of Beginners Problem Solving Strategies in Programming”, Proceedings of a Conference on the Psychology of Problem Solving with Computers, Vrijie University, Amsterdam, pp. 85–93.Google Scholar
- Kant, E., 1985, “Understanding and Automating Algorithm Design”, IEEE Transactions on Software Engineering, pp. 1361–1374.Google Scholar
- Lindsay, P. H., and Norman, D. A., 1977, Human Information Processing, Academic Press, pp. 381–417.Google Scholar
- Rist, R. S., 1986, “Plans in Programming: Definition, Demonstration, and Development”, Empirical Studies of Programmers, Soloway, E., and Iyengar, S. S., eds., Ablex, New York.Google Scholar
- Siddiqi, J. I. A., 1984, An Empirical Investigation into Problem Decomposition Strategies Used in Program Design, Ph.D. Thesis, University of Aston in Birmingham.Google Scholar
- Siddiqi, J. I. A., and Ratcliff, B. R., 1987, “The Influence of Problem Specification on Problem Decomposition”, International Journal of Man-Machine Studies, to appear.Google Scholar
- Siddiqi, J. I. A., and Sumiga, J. H., 1986, “Empirical Evaluation of a Proposed Model of the Program Design Process”, The Symposium on Empirical Foundations of Information and Software Sciences, Georgia Institute of Technology, Atlanta, Georgia.Google Scholar
- Soloway, E., and Ehrlich, K., 1984, Empirical Studies of Programmers, Ablex.Google Scholar