Are objects that important? effects of expertise and familiarity on classification of object-oriented code

This article reports a study of the use of card sorts in the categorization of fragments of object-oriented (OO) programs. We are interested in the way in which programmers think about code so that we might attempt to provide support for browsing and reuse activities within OO environments. As a consequence, we have been exploring the use of knowledge acquisition techniques in order to elicit programmers' knowledge about code. The study reported here required expert and novice programmers to sort through several cards, each containing a fragment of code. In the case of the expert group, half of the subjects were familiar with the code, and half were not. The subjects sorted the cards according to any criteria they felt were appropriate. Our results showed, contrary to our expectations, that experts tended to focus on the functional relations between the code fragments and that the novices were much more concerned with objects and inheritance relations. Moreover, those experts who were familiar with the code also appeared to focus to a greater degree on functional information compared to those who were unfamiliar with the code, who derived classifications based on object and class relations. We discuss these results in terms of the existing body of knowledge about expertise in procedural programming and with respect to the claims that have been made about the naturalness of conceiving the world in terms of objects and their relations. Last, we suggest several directions for future research into the psychological mechanisms that might underpin OO design and programming.

[1]  Neil A. M. Maiden,et al.  Software Reusability: Delivering productivity gains or short cuts , 1990, INTERACT.

[2]  F. Javier Lerch,et al.  Towards a model of cognitive process in logical design: comparing object-oriented and traditional functional decomposition software methodologies , 1992, CHI.

[3]  David J. Gilmore,et al.  Towards a cognitive browser for OOPS , 1992, Int. J. Hum. Comput. Interact..

[4]  Mary Beth Rosson,et al.  The Cognitive Consequences of Object-Oriented Design , 1990, Hum. Comput. Interact..

[5]  Frederick Reif,et al.  Prescribing Effective Human Problem-Solving Processes: Problem Description in Physics. Working Paper ES-19. , 1984 .

[6]  Paul J. Feltovich,et al.  Categorization and Representation of Physics Problems by Experts and Novices , 1981, Cogn. Sci..

[7]  J. Reitman,et al.  Knowledge organization and skill differences in computer programmers , 1981, Cognitive Psychology.

[8]  Kate Ehrlich,et al.  Empirical Studies of Programming Knowledge , 1984, IEEE Transactions on Software Engineering.

[9]  Nigel Shadbolt,et al.  A formal evaluation of knowledge elicitation techniques for expert systems: domain 1 , 1988 .

[10]  Thomas G. Moher,et al.  Some strategies of reuse in an object-oriented programming environment , 1989, CHI '89.

[11]  B. Adelson Problem solving and the development of abstract categories in programming languages , 1981, Memory & cognition.

[12]  Herbert A. Simon,et al.  Models of Competence in Solving Physics Problems , 1980, Cogn. Sci..

[13]  Simon P. Davies,et al.  The Nature and Development of Programming Plans , 1990, Int. J. Man Mach. Stud..

[14]  Simon P. Davies The role of notation and knowledge representation in the determination of programming strategy: A framework for integrating models of programming behavior , 1991 .

[15]  Simon P. Davies,et al.  Contextualizing design: narratives and rationalization in empirical studies of software design , 1992 .

[16]  Michelene T. H. Chi,et al.  Expertise in Problem Solving. , 1981 .

[17]  Allan G. Bateson,et al.  Cognitive Processing Differences Between Novice and Expert Computer Programmers , 1987, Int. J. Man Mach. Stud..

[18]  N. Pennington Stimulus structures and mental representations in expert comprehension of computer programs , 1987, Cognitive Psychology.

[19]  Grady Booch,et al.  Object-oriented development , 1986, IEEE Transactions on Software Engineering.

[20]  Nigel Shadbolt,et al.  The efficacy of knowledge elicitation techniques: a comparison across domains and levels of expertise , 1990 .

[21]  John A. Hartigan,et al.  Clustering Algorithms , 1975 .

[22]  Woodrow Barfield,et al.  Expert-novice differences for software: implications for problem-solving and knowledge acquisition , 1986 .