| Contributing Authors | xiii |
| Preface | xxiii |
| Part A | Visual Formalisms | 1 |
| 1 | Graph Grammars for Visual Programming | 3 |
| 1. | Introduction | 3 |
| 2. | Graph Grammars and DSVL Generation | 5 |
| 2.1 | Graph Grammars | 5 |
| 2.2 | The Reserved Graph Grammar Formalism | 6 |
| 2.3 | Generating DSVLs | 9 |
| 2.4 | Graph Parsing | 12 |
| 3. | Grammar-Based Diagram Visualization | 14 |
| 3.1 | Spatial Grammar Extension | 14 |
| 3.2 | Graph Layout | 16 |
| 3.3 | Position Specification | 18 |
| 3.4 | Direction Specification | 19 |
| 3.5 | An Example: Flowcharts | 20 |
| 4. | Other Applications | 22 |
| 5. | Conclusions and Future Work | 23 |
| References | 25 |
| 2 | Visualizing Program Behavior with the Event Graph | 29 |
| 1. | Introduction | 29 |
| 1.1 | Software Engineering and Visualization | 29 |
| 1.2 | Usage of Graph Theory in Visualization | 30 |
| 1.3 | Addressed Solutions based on the Event Graph | 30 |
| 2. | The Event Graph Model | 31 |
| 2.1 | Basic Definition | 31 |
| 2.2 | Event Attributes | 32 |
| 2.3 | Ordering Relation | 33 |
| 2.4 | Event Graph Generation | 34 |
| 2.5 | Event Graph Visualization | 37 |
| 3. | Program Analysis with the Event Graph Model | 38 |
| 3.1 | Visual Representations | 38 |
| 3.2 | Detection of Program Failures | 40 |
| 3.3 | Detection of Computational Errors | 41 |
| 3.4 | Communication and Synchronization Errors | 41 |
| 3.5 | Visualization of the Detected Behavioral Characteristics | 44 |
| 3.6 | Time-Scale | 45 |
| 4. | Advanced Analysis Activities | 46 |
| 4.1 | Group Identification | 46 |
| 4.2 | Pattern Matching | 47 |
| 4.3 | Loop Detection | 52 |
| 5. | Summary | 54 |
| 6. | Acknowledgments | 55 |
| References | 55 |
| 3 | Flowchart Components for Program Visualization | 59 |
| 1. | Introduction | 59 |
| 2. | Flowchart Components | 60 |
| 2.1 | Definition of flowchart components | 61 |
| 2.2 | The component geometric information | 62 |
| 2.3 | An example | 63 |
| 3. | Developing Flowchart Layout Functions | 64 |
| 3.1 | The method of developing layout functions | 65 |
| 3.2 | Layout functions for flowchart components | 67 |
| 4. | Converting Source Code to Flowcharts | 69 |
| 5. | Prototype Implementation | 70 |
| 6. | Conclusion | 74 |
| References | 74 |
| 4 | A Formalism for Graph-Oriented Distributed Programming | 77 |
| 1. | Introduction | 77 |
| 2. | Related Work | 79 |
| 3. | The Graph-Oriented Programming Model | 80 |
| 4. | The CDG Framework | 83 |
| 5. | Operations on DPGs | 86 |
| 5.1 | Primitive Functions | 87 |
| 5.2 | Construction Operations | 88 |
| 5.3 | Inspection Operations | 89 |
| 5.4 | Replacement | 90 |
| 6. | CDG Calculus | 93 |
| 6.1 | The Composition Calculus | 93 |
| 6.2 | Recursion Calculus | 100 |
| 7. | Applications and a GOP Toolkit | 102 |
| 7.1 | Communication and Synchronization | 102 |
| 7.2 | Subgraph generation | 102 |
| 7.3 | Query | 103 |
| 7.4 | Example | 103 |
| 7.5 | A GOP Toolset | 105 |
| 8. | Conclusions and Future Work | 108 |
| References | 108 |
| Part B | Human Factors | 111 |
| 5 | Designing A Software Exploration Tool Using A Cognitive Framework | 113 |
| 1. | Introduction | 113 |
| 2. | Tool support for program comprehension | 115 |
| 2.1 | Cognitive models of program comprehension | 116 |
| 2.2 | Characteristics affecting comprehension strategies | 118 |
| 2.3 | Reducing cognitive overhead | 119 |
| 3. | SHriMP Views | 120 |
| 4. | Designing a tool using the Cognitive Framework | 122 |
| 4.1 | Supporting program comprehension strategies | 122 |
| 4.2 | Reducing cognitive overhead | 134 |
| 5. | Summary | 140 |
| 6. | Conclusions and Future Work | 142 |
| 7. | Acknowledgments | 143 |
| References | 144 |
| 6 | UML Class Diagrams: An Empirical Study of Comprehension | 149 |
| 1. | Introduction | 149 |
| 1.1 | UML class diagrams | 150 |
| 1.2 | Experimental aims and definitions | 151 |
| 2. | Experiment 1: Notation | 151 |
| 2.1 | Introduction | 151 |
| 2.2 | Notational variations | 152 |
| 2.3 | Methodology | 152 |
| 2.4 | Results | 157 |
| 2.5 | Analysis | 160 |
| 2.6 | Discussion (notational variations) | 162 |
| 3. | Experiment 2: Layout | 163 |
| 3.1 | Introduction | 163 |
| 3.2 | Aesthetic variations | 163 |
| 3.3 | Methodology | 166 |
| 3.4 | Results | 167 |
| 3.5 | Analysis | 168 |
| 3.6 | Within-aesthetic Preference Data | 169 |
| 3.7 | Between-aesthetic preference data | 172 |
| 3.8 | Analysis | 174 |
| 3.9 | Discussion (aesthetic layout variations) | 175 |
| 4. | Conclusion | 176 |
| 5. | Acknowledgements | 176 |
| References | 177 |
| 7 | Analysis of Visual Languages for Parallel Programming | 179 |
| 1. | Introduction | 179 |
| 2. | Related Works | 182 |
| 3. | PCG Language and Editor | 184 |
| 3.1 | PCG Language | 184 |
| 3.2 | PCG Editor | 186 |
| 4. | Usability Analysis | 188 |
| 4.1 | Abstraction Gradient | 189 |
| 4.2 | Closeness of Mapping | 191 |
| 4.3 | Consistency | 192 |
| 4.4 | Diffuseness / Terseness | 193 |
| 4.5 | Error-proneness | 194 |
| 4.6 | Hard Mental Operations | 194 |
| 4.7 | Hidden Dependencies | 195 |
| 4.8 | Premature Commitment | 197 |
| 4.9 | Progressive Evaluation | 197 |
| 4.10 | Role-expressiveness | 197 |
| 4.11 | Secondary Notation and Escape from Formalism | 198 |
| 4.12 | Viscosity | 198 |
| 4.13 | Visibility and Juxtaposability | 198 |
| 5. | Empirical Study | 201 |
| 5.1 | Approach | 202 |
| 5.2 | Lecture | 203 |
| 5.3 | Case Study: Poisson Solver | 204 |
| 5.4 | Observations | 205 |
| 5.5 | Case Study: Matrix Multiply | 208 |
| 5.6 | Experiment: Same-different Judgment Test | 209 |
| 5.7 | Questionnaire | 210 |
| 6. | Conclusion | 212 |
| 7. | Acknowledgment | 214 |
| References | 214 |
| Part C | Architectural Visualization | 217 |
| 8 | A Visual Architectural Approach to Maintaining Web Applications | 219 |
| 1. | Introduction | 219 |
| 1.1 | Organization of Chapter | 221 |
| 2. | The Components of a Web Application | 221 |
| 3. | WebFlight: A Web Application | 223 |
| 4. | Scenario: Modifying a Subsystem | 226 |
| 5. | Visualizing a Web Application | 229 |
| 5.1 | Extracting the Facts | 230 |
| 5.2 | Abstracting and Merging the Extracted Facts | 233 |
| 5.3 | Generating the Architecture Diagrams | 237 |
| 6. | Related Work | 238 |
| 6.1 | Forward Engineering | 391 |
| 6.2 | Reverse Engineering | 239 |
| 7. | Conclusion | 240 |
| 8. | Acknowledgments | 240 |
| References | 240 |
| 9 | Understanding Architecture Through Structure and Behavior Visualization | 243 |
| 1. | Introduction | 243 |
| 2. | General Approach | 245 |
| 3. | Analysis and Visualization Tool Basis | 249 |
| 3.1 | Entities and Relations Displayed | 250 |
| 3.2 | Filtering and Aggregation | 253 |
| 3.3 | Information Flow in the System | 256 |
| 3.4 | Classification | 258 |
| 4. | Understanding the Components | 260 |
| 5. | Understanding the Connectors | 263 |
| 5.1 | Static Analysis | 265 |
| 5.2 | Dynamic Analysis | 268 |
| 5.3 | Visualization | 273 |
| 5.4 | Detection of Further Patterns | 274 |
| 6. | Evaluation | 276 |
| 6.1 | Pattern Detection in our Analyzer Tool | 276 |
| 6.2 | Pattern Detection in the SwingSet2 Example | 278 |
| 7. | Related Work | 279 |
| 8. | Conclusions and Future Work | 282 |
| References | 284 |
| 10 | Design Pattern Compositions in UML | 287 |
| 1. | Introduction | 287 |
| 2. | Illustration of the Problem | 289 |
| 3. | Notations for Pattern Composition | 292 |
| 3.1 | Venn Diagram-Style Pattern Annotation | 293 |
| 3.2 | Dotted Bounding Pattern Annotation | 293 |
| 3.3 | UML Collaboration Notation | 295 |
| 3.4 | Pattern: Role Annotations | 295 |
| 4. | UML Extensions | 296 |
| 5. | UML Profile for Design Patterns | 302 |
| 6. | Case Study | 303 |
| 7. | Conclusions | 305 |
| References | 306 |
| Part D | Visualization in Practice | 309 |
| 11 | The BLOOM Software Visualization System | 311 |
| 1. | Introduction | 311 |
| 1.1 | Objectives | 312 |
| 1.2 | System Architecture | 313 |
| 2. | Gathering Information | 315 |
| 2.1 | Structural Data | 316 |
| 2.2 | Trace Data | 317 |
| 3. | Data Analysis | 323 |
| 3.1 | Trace Data Analysis | 323 |
| 3.2 | Encoding Sequences | 326 |
| 3.3 | Summary | 330 |
| 4. | Combining Analyses | 330 |
| 4.1 | The Data Model | 330 |
| 4.2 | The User Interface | 332 |
| 4.3 | Specifying Visualizations | 338 |
| 4.4 | Related Work | 340 |
| 4.5 | Experience with MURAL | 341 |
| 5. | Visualizing the Result | 342 |
| 5.1 | HIVE and COMB | 344 |
| 5.2 | BUD | 349 |
| 5.3 | APIS | 350 |
| 5.4 | BEE | 352 |
| 5.5 | Experience | 352 |
| 6. | Current and Future Work | 353 |
| 7. | Acknowledgements | 355 |
| References | 356 |
| 12 | Visual Program Visualization | 359 |
| 1. | Introduction | 359 |
| 2. | Clavia Nord Modular | 362 |
| 2.1 | Hardware | 362 |
| 2.2 | Software | 363 |
| 2.3 | Programming Environment | 365 |
| 3. | Patch Maps | 366 |
| 4. | Visualising Patch Cable Layouts | 372 |
| 5. | Patch Cables | 376 |
| 6. | Module Choice | 377 |
| 6.1 | Module Power | 378 |
| 6.2 | Module Size | 379 |
| 7. | Module Layout | 380 |
| 7.1 | Module Position | 381 |
| 7.2 | Location Use | 383 |
| 8. | Related Work | 384 |
| 9. | Discussion and Conclusion | 385 |
| 10. | Acknowledgements | 387 |
| References | 387 |
| 13 | Use of Visualization to Aid Object-Oriented Redesign | 389 |
| 1. | Introduction | 389 |
| 2. | Related Studies | 392 |
| 3. | Methodology | 393 |
| 3.1 | Abstracting OO Design From Program Structure and Pattern Matching | 393 |
| 3.2 | Identifying Original Code Related to Each Class | 397 |
| 3.3 | Refining OO design | 400 |
| 4. | Case Study--An Inventory Management System | 401 |
| 5. | Conclusions | 410 |
| References | 411 |
| 14 | Effective Graph Visualization Via Node Grouping | 413 |
| 1. | Introduction | 413 |
| 2. | Previous Work | 416 |
| 3. | Methodologies for the Application of Node Grouping in Graph Drawing | 417 |
| 4. | Two Fast Techniques for Finding Small Cliques | 418 |
| 4.1 | The Triangle Technique | 418 |
| 4.2 | The Coloring Technique | 422 |
| 4.3 | Implementation and Experimental Results | 424 |
| 5. | Applying Node Grouping to Force-Directed Drawing | 425 |
| 6. | Applying Node Grouping to Orthogonal Drawing | 429 |
| 7. | Conclusions | 435 |
| 8. | Acknowledgements | 436 |
| References | 436 |
| Index | 439 |