| Preface | p. v |
| Facing the Problem | p. 1 |
| The Problem | p. 3 |
| The Maintenance of Software | p. 3 |
| Program Characteristics | p. 4 |
| The Maintenance Process | p. 5 |
| The Maintenace Environment | p. 6 |
| Maintenance Tools | p. 7 |
| The Maintainer | p. 7 |
| The Software Department | p. 9 |
| The Approach | p. 11 |
| Approach Definition | p. 11 |
| Chapter Overview | p. 11 |
| The Managerial Approach | p. 12 |
| The Engineering Approach | p. 13 |
| Software Science | p. 14 |
| The Cognitive Approach | p. 15 |
| Information Science | p. 15 |
| Discussion and Summary | p. 17 |
| The Nature of the Problem | p. 18 |
| Solution Criteria | p. 18 |
| Managerial Approach | p. 18 |
| Engineering Approach | p. 19 |
| Cognitive Approach | p. 19 |
| The Attack | p. 21 |
| EATPUT--An Information Processing Model | p. 21 |
| Software Life Cycle | p. 23 |
| Development | p. 24 |
| Maintenance | p. 26 |
| Plan of Attack | p. 27 |
| Strategy | p. 27 |
| Tactics | p. 27 |
| Using the Plan | p. 28 |
| Solutions Through Symbols | p. 31 |
| Some Basics | p. 33 |
| Procedural Memory | p. 34 |
| Processing | p. 34 |
| Utilization | p. 35 |
| Semantic Memory | p. 35 |
| Processing | p. 35 |
| Utilization | p. 36 |
| Episodic Memory | p. 37 |
| Processing | p. 37 |
| Utilization | p. 38 |
| Naming | p. 39 |
| The Naming Process | p. 39 |
| Event World | p. 39 |
| Acquisition | p. 40 |
| Transmission | p. 40 |
| Processing | p. 40 |
| Utilization and Transfer | p. 40 |
| Analyzing Names | p. 41 |
| Names in Context | p. 41 |
| Words in Semantic Memory | p. 43 |
| Words and Letters | p. 47 |
| Symbols in Procedural Memory | p. 47 |
| Learning Processing Operations | p. 47 |
| Acquisition | p. 48 |
| Learning Factors | p. 48 |
| Procedural and Semantic Memory Interaction | p. 49 |
| Symbols in Semantic Memory | p. 51 |
| Recognizing Words | p. 51 |
| Recalling Words | p. 51 |
| Other Factors in Word Retrieval | p. 52 |
| Degrees of Abstraction | p. 52 |
| Word Fragments | p. 52 |
| "Neighborhood Effect" | p. 52 |
| Word Use | p. 53 |
| Abbreviations and Mnemonics | p. 54 |
| Abbreviations | p. 54 |
| Mnemonics | p. 54 |
| Basic Techniques | p. 55 |
| Truncation | p. 55 |
| Contraction | p. 56 |
| Phonics | p. 56 |
| Concatenation | p. 56 |
| Discussion and Summary | p. 56 |
| Truncation | p. 57 |
| Contraction | p. 58 |
| One-Syllable Words | p. 58 |
| Multisyllable Words | p. 58 |
| Language | p. 60 |
| Languages Used by Programmers | p. 60 |
| Constrained Languages | p. 61 |
| Artificial Languages | p. 61 |
| Language Acquisition and Syntax | p. 62 |
| Language Usage in Programs | p. 62 |
| Indexed Names | p. 63 |
| Compound Names | p. 63 |
| Parts of Speech | p. 63 |
| Abbreviation Techniques | p. 64 |
| Language of Mnemonics | p. 65 |
| Writing Code for the Maintainers | p. 65 |
| Novice Programmers | p. 66 |
| Expert Programmers | p. 66 |
| Skill Level Comparison | p. 66 |
| Organization and Processing | p. 67 |
| Memory Organization | p. 67 |
| Information Processing | p. 67 |
| Maintenance Tasks | p. 68 |
| Language of Mnemonics | p. 68 |
| The Target Audience | p. 69 |
| Naming | p. 69 |
| Indices | p. 70 |
| Bigrams | p. 70 |
| Descriptor Matrices | p. 71 |
| The Language in Operation | p. 72 |
| Solutions Through Structure | p. 73 |
| More on Problem Solving | p. 75 |
| Section Overview | p. 75 |
| Utilizing Information | p. 75 |
| Solving Problems with Gestalt Psychology | p. 76 |
| Means-End Analysis | p. 76 |
| Problem-Solving Factors | p. 77 |
| Problem-Solving Behavior | p. 78 |
| The Expert | p. 78 |
| The Novice | p. 78 |
| Solving Maintenance Problems | p. 80 |
| Understanding the Maintenance Request | p. 80 |
| Program Comprehension | p. 81 |
| Processing the Code | p. 81 |
| Acquiring Program Knowledge | p. 83 |
| Context | p. 83 |
| Information-Seeking Strategy | p. 83 |
| Information-Seeking Tactics | p. 84 |
| Modifying the Code | p. 85 |
| Other Considerations | p. 86 |
| Errors and Barriers | p. 86 |
| Errors | p. 86 |
| Barriers | p. 88 |
| More Novice/Expert Differences | p. 89 |
| Memory Contents | p. 89 |
| Memory Organization | p. 90 |
| Memory Processing | p. 91 |
| With Respect to Tasks | p. 91 |
| Processing and Storage Limitations | p. 91 |
| Communications Theory | p. 92 |
| Memory Limitations | p. 93 |
| Cognitive Structures | p. 95 |
| Types of Structure | p. 95 |
| Overview | p. 96 |
| Global Structure | p. 96 |
| Spatial Layout of a Routine | p. 96 |
| Horizontal Layout | p. 97 |
| Vertical Layout | p. 98 |
| Instruction Formats | p. 98 |
| The Subroutine Call Statement | p. 99 |
| The Read Statement | p. 99 |
| The Common Statement | p. 99 |
| The Arithmetic Statement | p. 99 |
| The Conditional Control (IF) Statement | p. 100 |
| The Iteration (Do-Loop) Statement | p. 101 |
| The Write Statement | p. 101 |
| Documentation | p. 101 |
| The Traditional Approach | p. 102 |
| A New Approach | p. 102 |
| Documentation Content | p. 102 |
| Documentation Structure | p. 103 |
| Implementation and Testing | p. 105 |
| Implementing the Solutions | p. 107 |
| In the Development Phase | p. 107 |
| Specifications | p. 107 |
| Design | p. 107 |
| Implementation | p. 108 |
| Checkout | p. 108 |
| In the Maintenance Phase | p. 109 |
| The Decision | p. 109 |
| The Restoration | p. 110 |
| Program Improvements | p. 110 |
| Planning | p. 110 |
| Assessing Effectiveness | p. 111 |
| Testing | p. 113 |
| Hardware and Software Testing | p. 113 |
| Hardware | p. 113 |
| Software | p. 114 |
| Software Testing Overview | p. 114 |
| Static Testing | p. 114 |
| Dynamic Testing | p. 115 |
| Test Plans | p. 116 |
| Life Cycle Testing | p. 117 |
| Specifications | p. 117 |
| Design | p. 119 |
| Implementation | p. 119 |
| Checkout | p. 119 |
| Maintenance | p. 121 |
| Concluding Remarks | p. 123 |
| Concluding Remarks | p. 125 |
| Appendices | p. 127 |
| The Information Age | p. 129 |
| Information Systems | p. 130 |
| Hardware | p. 130 |
| Software | p. 131 |
| Software Failures | p. 132 |
| Problem Solving | p. 134 |
| Software Science | p. 135 |
| Sensory Input Processing | p. 137 |
| EATPUT Model of the Vision System | p. 138 |
| Classifying Information | p. 139 |
| Facts and Opinions | p. 139 |
| Theories and Processes | p. 139 |
| Naming as a Shortening Process | p. 141 |
| Miniature Artificial Languages | p. 142 |
| Cognitive Grammar | p. 143 |
| Overview | p. 143 |
| Sentence Construction | p. 144 |
| Gestalt Psychology | p. 146 |
| Bibliography | p. 149 |
| Index | p. 161 |
| Table of Contents provided by Syndetics. All Rights Reserved. |