How do Software Practitioners Write Programs? An Empirical Study

  • Jawed Siddiqi


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.


Program Design Decomposition Strategy Action Cluster Problem Decomposition Decomposition Type 
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.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. Dahl, O., Dijkstra, E. W., and Hoare, C. A. R., 1972, Notes on Structured Programming, Academic Press.Google Scholar
  2. Feigenbaum, E. A., 1970, “Models of Memory”, Information Processing and Memory, Norman, D. A., Academic Press, pp. 451–469.Google Scholar
  3. 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
  4. 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
  5. Kant, E., 1985, “Understanding and Automating Algorithm Design”, IEEE Transactions on Software Engineering, pp. 1361–1374.Google Scholar
  6. Lindsay, P. H., and Norman, D. A., 1977, Human Information Processing, Academic Press, pp. 381–417.Google Scholar
  7. Naur, P., 1969, “Programming by Action Clusters”, Bit., 9, (3), pp. 250–258.MATHCrossRefGoogle Scholar
  8. Pollard, P., 1982, “Human Reasoning: Some Possible Effects of Availability”, Cognition, 12, pp. 65–96.CrossRefGoogle Scholar
  9. 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
  10. 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
  11. 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
  12. 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
  13. Shneiderman, B., and Mayer, R., 1979, “Syntactic/Semantic Interactions in Programmer Behavior: A Model and Experimental Results”, International Journal of Computer and Information Sciences, 8, pp. 219–235.MATHCrossRefGoogle Scholar
  14. Soloway, E., and Ehrlich, K., 1984, Empirical Studies of Programmers, Ablex.Google Scholar
  15. Wirth, N., 1971, “Program Development by Step-Wise Refinement”, Communications of the ACM, 14, (4), pp. 221–226.MATHCrossRefGoogle Scholar

Copyright information

© Plenum Press, New York 1987

Authors and Affiliations

  • Jawed Siddiqi
    • 1
  1. 1.School of Computing and Information TechnologyThe PolytechnicWolverhamptonUK

Personalised recommendations