CONTENTS (with pagenumber)

  • ABSTRACT 1
  • ACKNOWLEDGEMENTS  2
  • FIGURES OF THE BOOK 3
  • TABLES OF THE BOOK 5
  • TAXONOMY FOR SYMBOLIC ANALYSIS 6
  • CONTENTS 7

1 INTRODUCTION 15

  • 1.1 Practical challenges for software maintenance 15
  • 1.2 Purpose of the book 16
  • 1.3 The framework for program comprehension Pragmatics 17
  • 1.4 Short overview of the discoveries 19
  • 1.5 Contents of the book 19

2 BACKGROUND FOR PROGRAM COMPR.  RAGMATICS 21

  • 2.1 Software development life cycle  21
  • 2.1.1 Evolution laws 22
  • 2.1.2 Maintenance means a continuous life cycle 22
  • 2.1.3 Reverse engineering and reengineering 24
  • 2.1.4 Best practices of maintenance and reverse engineering  25
  • 2.2 PC as an independent discipline 26
  • 2.2.1 Single-disciplinary approach  27
  • 2.2.2 Influence of individual programmer differences 29
  • 2.2.3 Object-Oriented Program Comprehension  30
  • 2.3 PC integrated into code analysis  31
  • 2.3.1 Connecting PC and static analysis 32
  • 2.3.2 Connecting PC and dynamic analysis 35
  • 2.4 Dividing PC to principal focus areas  36
  • 2.4.1 Grammar related approach 37
  • 2.4.2 Model related approach 38
  • 2.4.3 Behavior oriented approach (Simulation) 41
  • 2.4.4 Knowledge related approach  42
  • 2.5 About Symbolic processing 43
  • 2.5.1 Symbolic terminology 44
  • 2.6 Summary of the related work 45

3 TOWARDS SYMBOLIC ANALYSIS FOR PROGRAM COMPR. 46

  • 3.1 Selected focus 46
  • 3.1.1 Basic ideas and commitments 47
  • 3.1.2 Ideal goal for the theory 48
  • 3.2 Foundation: Purity of concepts 50
  • 3.2.1 Main concepts defining the symbolic layer 50
  • 3.2.2 The user’s side of the methodology  52
  • 3.3 Simplicity of theories: Technology spaces  53
  • 3.3.1 Commitments to GrammarWare 54
  • 3.3.2 Commitments to ModelWare  54
  • 3.3.3 Commitments to SimulationWare  55
  • 3.3.4 Commitments to KnowledgeWare 56
  • 3.4 Accuracy of PC transformations 57
  • 3.4.1 Universal transformation formalism  58
  • 3.4.2 Indentifying higher order types for lower level elements  59
  • 3.4.3 Knowledge transformation set 59
  • 3.5 SimulationWare: Completeness of logic  60
  • 3.5.1 Definition for a computation model for symbols 61
  • 3.5.2 Towards an ideal analysis 62
  • 3.5.3 The base of computer simulation  63
  • 3.5.4 Simulating parallel features, the starting logic of threads  64
  • 3.6 Relevance of questions: referring to use scenarios 64
  • 3.6.1 MaintenanceWare and mental simulation made by the user  64
  • 3.6.2 Organizational approaches have influence in tools 65
  • 3.6.3 Familiarization scenario 66
  • 3.6.4 Testing scenario 67
  • 3.6.5 Troubleshooting scenario 67
  • 3.6.6 Definition for the focused approach towards source code 68
  • 3.7 Certainty of the results of analyses (answers) 69
  • 3.7.1 Does the method give correct answers? 70
  • 3.7.2 Test evaluation possibilities for the results 70
  • 3.8 Correctness of programs and ToolWare 71
  • 3.8.1 Programming approach for tools 71
  • 3.8.2 Hybrid programming, combining logic and OOP 72
  • 3.8.3 Knowledge analysis of maintenance tasks 73
  • 3.8.4 About the formalization and development tool Visual Prolog 74
  • 3.9 Summary of the approach 75

4 SYMBOLIC GRAMMARWARE 78

  • 4.1 Foundation for GrammarWare 79
  • 4.1.1 Definitions for a symbolic grammar notation 79
  • 4.1.2 Implementing the grammar tool  82
  • 4.1.3 The Symbolic notation 85
  • 4.1.4 Abstraction by symbolic transformation  87
  • 4.1.5 Conclusions about the GrammarWare automata A1 to A3  89
  • 4.2 Improving abstract syntax tree 89
  • 4.2.1 Original AST node and its typical implementation  89
  • 4.2.2 The improved formal definition  90
  • 4.3 Raising the abstraction level 91
  • 4.4 Direct translation 92
  • 4.4.1 The principles and the main goals of translating source code  92
  • 4.4.2 Definitions for a direct translation  93
  • 4.5 Symbolic, the symbolic language 94
  • 4.5.1 The Symbolic language  95
  • 4.5.2 Categories of the Symbolic clause  97
  • 4.5.3 Data model of the Symbolic language 98
  • 4.5.4 Operational model of Symbolic language 99
  • 4.6 Summary of GrammarWare, a bridge to ModelWare 99

5 MODELWARE, THE ATOMISTIC SYMBOLIC MODEL 101

  • 5.1 Symbolic model, its definition and features 101
  • 5.1.1 Atomistic model and its features  102
  • 5.1.2 Symbolic atom 103
  • 5.1.3 Automaton A4, Symbolic-to-model transformation 104
  • 5.1.4 Semantic definition for the symbolic atom 107
  • 5.1.5 Arguments of the atom command  108
  • 5.1.6 Atomistic operations: scanning and searching 109
  • 5.2 Atomistic architecture 110
  • 5.2.1 Hybrid implementation for the atom  110
  • 5.2.2 Features of an executable model 111
  • 5.2.3 Creating the model and other model functions  112
  • 5.2.4 Queries to the model  113
  • 5.2.5 Traversing the model 113
  • 5.2.6 Outputs from the symbolic atomistic model  114
  • 5.2.7 Features of symbolic graphs 115
  • 5.2.8 Analyzing sequences and control flows 115
  • 5.3 How to apply the atomistic model  116
  • 5.3.1 Programming model for the symbolic model 116
  • 5.3.2 Atomistic hybrid object  117
  • 5.3.3 Conclusions about ModelWare (Automaton A4) 117
  • 5.4 Summary of ModelWare  117

6 SIMULATIONWARE, AN ABSTRACT MACHINE FOR SOFTWARE 119

  • 6.1 Foundation for SimulationWare  120
  • 6.1.1 Automaton A5, defining a simulation process 120
  • 6.1.2 Automaton A6, the simulation process 121
  • 6.1.3 Conclusions about SimulationWare for automata A5 and A6  124
  • 6.2 Background for the abstract machine 124
  • 6.2.1 Chomsky hierarchy and the corresponding automata 125
  • 6.2.2 Principles for computations in the atomistic model 126
  • 6.2.3 Symbolic abstract machine (SAM) 127
  • 6.3 Technical preconditions for Java simulation 128
  • 6.3.1 Java execution model 128
  • 6.3.2 Sequential computation model 129
  • 6.3.3 Reachability analysis  129
  • 6.3.4 Problems and limitations of symbolic execution  130
  • 6.3.5 Relations of the abstract machine to hardware and performance 130
  • 6.3.6 Influence of the object-oriented paradigm to simulation 131
  • 6.4 Automata theory as a reference for simulation 133
  • 6.5 Foundation for source code simulation 135
  • 6.5.1 Simulation in computer science 135
  • 6.5.2 Source code simulation 135
  • 6.5.3 Complete simulation of the whole application 136
  • 6.5.4 Partial simulation 136
  • 6.5.5 Run method, the nucleus of the simulation  140
  • 6.5.6 Limitations of the simulation solutions in this book 140
  • 6.6 Simulating static procedural commands  141
  • 6.6.1 Simulating a statement block 142
  • 6.6.2 Constants and their semantics (valClause) 142
  • 6.6.3 Simulating operations (opClause) 142
  • 6.6.4 Simulating variable references (refClause)  143
  • 6.6.5 Simulating assignments (setClause) 143
  • 6.6.6 Simulating conditional clauses (pathClause) 144
  • 6.6.7 Simulating loops (loopClause)  144
  • 6.6.8 Simulating method calls (getClause)  145
  • 6.7 Simulating dynamic object-oriented commands 146
  • 6.7.1 Limitations of the partial simulation of object-oriented code  146
  • 6.7.2 A protocol to handle unknown types and object handles  146
  • 6.7.3 Simulating create commands (creatorClause) 148
  • 6.7.4 A protocol to simulate polymorphism 148
  • 6.8 Atomistic and distributed semantics  148
  • 6.8.1 Turing model for the atomistic element 149
  • 6.8.2 Atomistic semantics for defining Java as a high abstraction  150
  • 6.9 Summary: describing semantics by an abstract machine 151
  • 6.9.1 Simulating Java in Symbolic 153
  • 6.9.2 Results from the symbolic model 154
  • 6.9.3 Unified data model for the simulation results 155

7 KNOWLEDGEWARE 156

  • 7.1 Preliminaries for KnowledgeWare  156
  • 7.1.1 Information ladder for knowledge capture  157
  • 7.1.2 Hierarchical action model for capturing knowledge 158
  • 7.1.3 An example code and its simulation model 158
  • 7.2 Foundation for KnowledgeWare 160
  • 7.2.1 Domain-independent definitions for knowledge 160
  • 7.2.2 Problem centric knowledge definitions  163
  • 7.2.3 Summary illustrating knowledge-related information 165
  • 7.3 Illustrating information model for source code  166
  • 7.3.1 Information model for an atom 166
  • 7.3.2 Information model for a flow 167
  • 7.3.3 Information model for ProgramContext 169
  • 7.4 Interaction model using action levels  171
  • 7.4.1 SkillAction 171
  • 7.4.2 Rule Action 172
  • 7.4.3 Knowledge Action 174
  • 7.4.4 MetaAction 175
  • 7.4.5 Combined Action – model  175
  • 7.5 Method: Configuring hypotheses for familiarization and proofing  176
  • 7.5.1 Hypotheses are bridges from goals to actions 177
  • 7.5.2 Model checking approach for a tape based on resolution trees 177
  • 7.5.3 Building a resolution tree: theorems, operands and constraints 179
  • 7.6 Summary of KnowledgeWare 183

8 MAINTENANCEWARE 184

  • 8.1 Extending the method to the maintenance process 184
  • 8.1.1 Learning method based on gradual proving  184
  • 8.1.2 Top-down approach considering the change request  185
  • 8.1.3 Problem recognition 186
  • 8.1.4 Problem formulation 187
  • 8.1.5 Problem analysis 187
  • 8.1.6 A use case: Using symbolic analysis for capturing knowledge 189
  • 8.2 Summary of KnowledgeWare and MaintenanceWare 191

9 TOOLWARE FOR SYMBOLIC ANALYSIS 193

  • 9.1 Requirements for the tool 193
  • 9.1.1 Selected features for the tool 193
  • 9.2 Selected architecture 195
  • 9.2.1 PCMEF – architecture  195
  • 9.2.2 Summary of the selected architecture 197
  • 9.2.3 Some measures of the tool implementation 198
  • 9.2.4 Data flow through the tool 198
  • 9.3 Low level approach, the technology behind ToolWare  200
  • 9.3.1 Graphic symbols for the symbolic Turing machine 200
  • 9.3.2 Prototyping small code examples 202
  • 9.3.3 Capturing knowledge: KnowledgeWare 204
  • 9.4 Symbolic Turing machine for symbolic analysis  205
  • 9.4.1 Principles of symbolic analysis 205
  • 9.4.2 Starting simulation  205
  • 9.4.3 The method to use hypotheses for program comprehension  206
  • 9.4.4 User interface for proving simulation results 207
  • 9.4.5 Code understanding process  209
  • 9.5 Practical use case  209
  • 9.5.1 Practical example, a Server 210
  • 9.5.2 Problem Recognition 212
  • 9.5.3 Problem formulating  213
  • 9.5.4 Simulating critical paths 213
  • 9.5.5 General rules for detecting problems in the output tape 213
  • 9.6 The concluding remarks related to the PC process 218
  • 9.7 Summary of ToolWare  219

10 RESULTS: PRAGMATICS FOR PROGRAM COMPREHENSION 222

  • 10.1 Conceptual framework for PC Pragmatics  222
  • 10.1.1 Splitting Pragmatics to technology spaces 222
  • 10.2 Technology spaces 224
  • 10.2.1 GrammarWare 224
  • 10.2.2 ModelWare 225
  • 10.2.3 SimulationWare 226
  • 10.2.4 MaintenanceWare 227
  • 10.2.5 KnowledgeWare  228
  • 10.2.6 Program type theory 230
  • 10.2.7 Automation decreases efforts of mental simulation 232
  • 10.3 Summary about the goals of Pragmatics 232
  • 10.4 Summary of Pragmatics 238

11 CONCLUSIONS 239

  • 11.1 Combined computation model to support PC Pragmatics  239
  • 11.1.1 Summarizing the Pragmatics computation model  244
  • 11.2 How can Pragmatics meet the scientific ideals 245
  • 11.2.1 Purity of the created concepts 245
  • 11.2.2 Simplicity of the created theories  245
  • 11.2.3 Accuracy of transformations from code to knowledge 247
  • 11.2.4 Completeness of the logic of the technology spaces 247
  • 11.2.5 Correctness of programs of ToolWare  248
  • 11.2.6 Certainty of answers given to MaintenanceWare  249
  • 11.2.7 Relevancy of questions considering MaintenanceWare 249
  • 11.3 Connections to Computer Science 250
  • 11.3.1 Experiments in building PC formalism 250
  • 11.3.2 Created theories for the technology spaces 250
  • 11.3.3 Created knowledge to be used in future research  251
  • 11.3.4 New discoveries to summarize Pragmatics 251
  • 11.3.5 Interdisciplinarity and multidisciplinarity 252

Rest of the book

  • REFERENCES  255
  • SUMMARY  270
  • APPENDIX 1 : SERVER – EXAMPLE 273
  • APPENDIX 2: TUTORIAL FOR VISUAL PROLOG  278
  • APPENDIX 3 : SIMULATION RESULTS OF THE EXAMPLE 287
  • ANNEX 4: DEFINITION FOR SYMBOLIC LANGUAGE 290

Advertisements