| Historical Background | p. 1 |
| The 1970s | p. 1 |
| The Experimental Paradigm | p. 1 |
| Methodological Criticism | p. 3 |
| Absence of a Theoretical Framework | p. 3 |
| Badly Used Theoretical Borrowings | p. 5 |
| General Criticisms | p. 6 |
| Second Period | p. 6 |
| Theoretical Framework | p. 7 |
| Theoretical Changes | p. 8 |
| Paradigmatic Changes | p. 8 |
| Recent Thematic Developments | p. 9 |
| What Is a Computer Program? | p. 13 |
| Definition of a Program | p. 13 |
| From a Computer Point of View | p. 13 |
| From a Psychological Point of View | p. 14 |
| Program vs Text | p. 18 |
| A Program Seen as a Narrative Text | p. 18 |
| A Program Seen as a Procedural Text | p. 18 |
| Programming Languages vs Natural Languages | p. 19 |
| Unambiguous Nature of Programming Languages | p. 19 |
| Use of Natural Language or Pseudo-Code | p. 19 |
| Toward a Broader Definition | p. 19 |
| Software Design: Theoretical Approaches | p. 21 |
| Features of the Problems of Program Design | p. 22 |
| Ill-defined Problems | p. 22 |
| Problems of Program Production | p. 22 |
| Knowledge-centredApproaches | p. 23 |
| Theory of Schemas | p. 23 |
| Programming Schemas | p. 24 |
| Other Types of Schema | p. 25 |
| Rules of Discourse | p. 25 |
| Limitations of Schemas | p. 26 |
| Strategy-centred Approach | p. 26 |
| Classification of Strategies | p. 26 |
| Triggering Conditions | p. 28 |
| Organization-centred Approach | p. 31 |
| Hierarchical Models | p. 31 |
| Opportunistic Models | p. 31 |
| The Iterative Nature of Design | p. 32 |
| Modelling the Expert | p. 34 |
| What Distinguishes an Expert from a Novice? | p. 34 |
| Can Different Levels of Expertise Be Distinguished? | p. 35 |
| What Are the Stages in Acquiring Expertise? | p. 36 |
| Making Tools More Suitable for Programmers | p. 36 |
| Future Research | p. 39 |
| Software Reuse | p. 43 |
| Analogical Reasoning Models | p. 44 |
| The Syntactic Model and the Pragmatic Model | p. 44 |
| Clement's Model | p. 46 |
| Cognitive Mechanisms Employed in Reuse | p. 47 |
| Generation of a Source | p. 47 |
| Use of the Source | p. 49 |
| Implications | p. 49 |
| Cognitive Classification of Reuse Situations | p. 51 |
| Reuse of New Code vs Reuse of Old Code | p. 52 |
| Reuse During the Different Design Phases | p. 52 |
| Implications | p. 53 |
| Future Research | p. 54 |
| Design and Reuse of Object-Oriented Software: the Effect of a Programming Paradigm | p. 57 |
| Cognitive Implications of OO: Hypotheses | p. 57 |
| The Object-Oriented Approach | p. 57 |
| The Naturalness of OO Design | p. 58 |
| Better Reusability of OO Components | p. 59 |
| Object-Oriented Design | p. 59 |
| Mapping Between the Problem Space and the Solution Space | p. 60 |
| OO Programming Schemas | p. 60 |
| Design Strategies | p. 61 |
| Organization of the Design Process | p. 63 |
| Development of Expertise in OO | p. 64 |
| Cognitive Implications of OO: Naturalness | p. 66 |
| Practical Implications | p. 67 |
| Reuse in the OO Paradigm | p. 68 |
| Reuse in a Procedural Paradigm vs Reuse in OO | p. 68 |
| Potential Reuse in OO | p. 69 |
| Cognitive Mechanisms Deployed in OO Reuse | p. 70 |
| Cognitive Implications of OO: Summary of Experimental Findings on Reuse | p. 72 |
| Practical Implications | p. 72 |
| Future Research | p. 73 |
| Understanding Software | p. 75 |
| Models of Text Understanding | p. 75 |
| Functional Models | p. 76 |
| Structural Models | p. 77 |
| The Mental Model Approach | p. 78 |
| Program Comprehension Seen as Text Understanding | p. 79 |
| To Understand a Program Is to Apply Knowledge Schemas | p. 79 |
| To Understand a Program Is to Construct a Network of Relations | p. 87 |
| To Understand a Program Is to Construct a Representation of the Situation | p. 93 |
| Program Comprehension Seen as Problem Solving | p. 100 |
| Conclusions and Practical Implications | p. 102 |
| Understanding Software: Effects of the Task and the Textual Structure | p. 105 |
| Influence of the Task | p. 105 |
| Effect of the Purpose for Reading on Text Comprehension | p. 105 |
| Effect of the Task on Program Comprehension | p. 106 |
| Research Prospects | p. 109 |
| Effect of the Textual Structure | p. 110 |
| Surface Structure vs Deep Structure | p. 110 |
| Organizers | p. 110 |
| Discontinuities and Delocalized Plans | p. 113 |
| Research Prospects | p. 114 |
| Practical Implications | p. 115 |
| The Future for Programming Psychology | p. 117 |
| Prospects for the Software Community | p. 117 |
| Obstacles | p. 117 |
| Removing the Obstacles to Effective Transfer | p. 118 |
| Contributions to Cognitive Psychology | p. 119 |
| References | p. 123 |
| Index | p. 135 |
| Table of Contents provided by Publisher. All Rights Reserved. |