Cognitive Activities and Levels of Abstraction in Procedural and Object-Oriented Design

The research reported in this article provides descriptions of design activities and of the evolving designs for expert procedural and expert object-oriented (OO) designers and for novice OO designers who also had extensive procedural experience. Ten experienced programmers were observed while designing software that would serve as a scoring system for swim meet competitions. Talk-aloud protocols were collected and analyzed for different types of cognitive activities and strategies that occurred during the course of design. In particular, we analyzed both the design activities and the level of abstraction of the designs over the course of time for each group in order to examine the role of several design strategies described in the literature as central in procedural design. In the course of these analyses, we developed a generic way (design template) of comparing the final designs of designers in different paradigms. Using this template, we analyzed the designs in terms of their completeness for different views at different levels of abstraction. Our analyses of procedural and OO designers-in terms of their cognitive activities, design strategies, and final designs-provide a detailed comparison between design paradigms in practice. A variety of descriptive results are discussed in terms of positive transfer, interference, and implications for design training. Findings are also discussed in terms of the relation between tasks and design paradigms.

[1]  Nancy Pennington,et al.  The effects of paradigm on cognitive activities in design , 1994, Int. J. Hum. Comput. Stud..

[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]  Françoise Détienne Design strategies in object-oriented programming and expertise , 1992, CHI '92.

[4]  David Bellin A seminar course in object oriented programming , 1992, SIGCSE '92.

[5]  Deborah A. Boehm-Davis,et al.  Program Design Methodologies and the Software Development Process , 1992, Int. J. Man Mach. Stud..

[6]  Simon P. Davies,et al.  The Role of Notation and Knowledge Representation in the Determination of Programming Strategy: A Framework for Integrating Models of Programming Behavior , 1991, Cogn. Sci..

[7]  Simon P. Davies,et al.  Characterizing the program design activity : neither strictly top-down nor globally opportunistic , 1991 .

[8]  Robert S. Rist Knowledge Creation and Retrieval in Program Design: A Comparison of Novice and intermediate Student Programmers , 1991, Hum. Comput. Interact..

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

[10]  Morey Antebi Issues in teaching C , 1990 .

[11]  Richard C. Waters,et al.  The programmer's apprentice , 1990, ACM Press frontier series.

[12]  John D. McGregor,et al.  Understanding object-oriented: a unifying paradigm , 1990, CACM.

[13]  Françoise Détienne Difficulties in designing with an object-oriented language: An empirical study , 1990, INTERACT.

[14]  Robert S. Rist Variability in Program Design: The Interaction of Process with Knowledge , 1990, Int. J. Man Mach. Stud..

[15]  Raymonde Guindon,et al.  Designing the Design Process: Exploiting Opportunistic Thoughts , 1990, Hum. Comput. Interact..

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

[17]  Mary Beth Rosson,et al.  Smalltalk scaffolding: a case study of minimalist instruction , 1990, CHI '90.

[18]  David J. Gilmore,et al.  Expert Programming Knowledge: A Strategic Approach , 1990 .

[19]  Willemien Visser,et al.  Expert Software Design Strategies , 1990 .

[20]  Nancy Pennington,et al.  The Tasks of Programming , 1990 .

[21]  Marian Petre,et al.  Expert Programmers and Programming Languages , 1990 .

[22]  David J. Gilmore,et al.  Methodological Issues in the Study of Programming , 1990 .

[23]  Rebecca Wirfs-Brock,et al.  Designing object-oriented software , 1990 .

[24]  Mary Beth Rosson,et al.  Climbing the smalltalk mountain , 1990, SGCH.

[25]  Mary Beth Rosson,et al.  Problem-solution mapping in object-oriented design , 1989, OOPSLA '89.

[26]  Kent L. Beck,et al.  A laboratory for teaching object oriented thinking , 1989, OOPSLA '89.

[27]  Robert S. Rist Schema Creation in Programming , 1989, Cogn. Sci..

[28]  Robert Simon Rist Knowledge creation and retrieval in program design: a comparison of novice and experienced programmers , 1989 .

[29]  Marian Petre,et al.  Issues Governing the Suitability of Programming Languages for Programming Tasks , 1988, BCS HCI.

[30]  R. Guindon,et al.  Control of cognitive processes during software design: what tools are needed? , 1988, CHI '88.

[31]  Roger S. Pressman,et al.  Software Engineering: A Beginner's Guide , 1988 .

[32]  D. Boehm-Davis,et al.  Mental representations of programs for student and professional programmers , 1987 .

[33]  Bill Curtis,et al.  Breakdowns and processes during the early activities of software design by professionals , 1987 .

[34]  Willemien Visser Strategies in programming programmable controllers: a field study on a professional programmer , 1987 .

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

[36]  Bill Curtis,et al.  COGNITIVE PROCESSES IN SOFTWARE DESIGN: Activities in Early, Upstream Design. , 1987 .

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

[38]  Tim O'Shea,et al.  The Learnability of Object-Oriented Programming Systems - Panel , 1986, OOPSLA.

[39]  B. Adelson,et al.  The Role of Domain Expenence in Software Design , 1985, IEEE Transactions on Software Engineering.

[40]  Elliot Soloway,et al.  A Goal/Plan Analysis of Buggy Pascal Programs , 1985, Hum. Comput. Interact..

[41]  Jawed I. A. Siddiqi,et al.  An Empirical Investigation into Problem Decomposition Strategies Used in Program Design , 1985, Int. J. Man Mach. Stud..

[42]  Barry W. Boehm,et al.  Prototyping Versus Specifying: A Multiproject Experiment , 1984, IEEE Transactions on Software Engineering.

[43]  John R. Anderson,et al.  Learning to Program in LISP , 1984, Cogn. Sci..

[44]  Allen Newell,et al.  Problem solving techniques for the design of algorithms , 1984, Inf. Process. Manag..

[45]  Kate Ehrlich,et al.  Cognitive strategies and looping constructs: an empirical study , 1983, CACM.

[46]  Anthony I. Wasserman,et al.  Characteristics of Software Development Methodologies , 1983, CRIS.

[47]  Glenn D. Bergland,et al.  A Guided Tour of Program Design Methodologies , 1981, Computer.

[48]  André Thayse P-functions: A new tool for the analysis and synthesis of binary programs , 1981, IEEE Transactions on Computers.

[49]  Robin Jeffries,et al.  The Processes Involved in Designing Software. , 1980 .

[50]  John C. Thomas,et al.  Clinical— experimental analysis of design problem solving , 1979 .

[51]  Barbara Hayes-Roth,et al.  A Cognitive Model of Planning , 1979, Cogn. Sci..

[52]  Ruven E. Brooks,et al.  Towards a Theory of the Cognitive Processes in Computer Programming , 1999, Int. J. Man Mach. Stud..

[53]  Michael Jackson,et al.  Principles of program design , 1975 .

[54]  Niklaus Wirth,et al.  On the Composition of Well-Structured Programs , 1974, CSUR.