Table of Contents

Preface ix
Contributors xi

PART I: INTRODUCTION 1

1 What is Visual Object-Oriented Programming? 3
Adele Goldberg, Margaret Burnett, and Ted Lewis

1.1 Introduction 4
1.2 Object-Oriented Technology 4
1.3 Visual Programming 10
1.4 Visual Object-Oriented Programming 17
1.5 Summary 18
Acknowledgments 19
References 19

2 Visual Programming in the Real World 21
Ed Baroth and Chris Hartsough

2.1 Introduction 22
2.2 Background 23
2.3 Visual Programming Environments in the MTC 24
2.4 Case Studies 29
2.5 Where the Gains of Visual Programming Lie: Real-World Experience 33
2.6 Visual, Coupled with Object-Oriented Programming 36
2.7 Conclusions 36
Acknowledgments 38
References 39
Appendix: Description of Figure 2.3 40

PART II: LANGUAGES 43

3 Prograph 45
P.T. Cox, F.R. Giles, and T. Pietrzykowski

3.1 Introduction 46
3.2 Evolution of Programming Environments 47
3.3 Prograph 50
3.4 Environment 59
3.5 Conclusions and Future Developments 63
References 64

4 The Design of a Completely Visual OOP Language 67
Wayne Citrin, Michael Doherty, and Benjamin Zorn

4.1 Introduction 68
4.2 Motivation 70
4.3 Related Work 72
4.4 An Introduction to VIPR 74
4.5 Object-Oriented Programming in VIPR 78
4.6 Summary 90
Acknowledgments 91
References 91

5 Interface Issues in Visual Shell Programming 95
Frances Mary Modugno

5.1 Introduction 96
5.2 Today's Virtual Shell 97
5.3 Related Work 98
5.4 The Pursuit Visual Shell Design 99
5.5 Benefits of Pursuit's Approach 102
5.6 Issues Raised by Pursuit's Approach 105
5.7 Summary 109
Acknowledgments 110
References 110

6 User-Interface Construction with Constraints 113
John H. Maloney, Alan Borning, and Bjorn N. Freeman-Benson

6.1 Introduction 114
6.2 Objects in Thinglab 116
6.3 Addressing the Need for Responsiveness 117
6.4 Incremental Constraint Satisfaction 118
6.5 Performance 123
6.6 Related Work 125
6.7 Implementation and Availability 125
Acknowledgments 126
References 126

7 Design and Implementation with Vampire 129
David W. McIntire

7.1 Introduction 130
7.2 Related Work 131
7.3 Attributed Graphical Rules 132
7.4 Class Hierarchy and Editor 139
7.5 Icon Editor 143
7.6 The Runtime Workspace 144
7.7 Examples 146
7.8 Summary 158
References 159

8 Seven Programming Languages Issues 161
Margaret Burnett

8.1 Introduction 162
8.2 Issue 1: Sequencing and State Modification 166
8.3 Issue 2: Programming at Both High and Low Levels
8.4 Issue 3: Data Abstraction 169
8.5 Issue 4: Information Hiding 173
8.6 Issue 5: The Runtime Visual Appearance of Objects 175
8.7 Issue 6: Interactive Events 176
8.8 Issue 7: Polymorphism and Inheritance 178
8.9 Summary 179
Acknowledgments 180
References 180

PART III: THE VISUAL ENVIRONMENT 183

9 Getting Close to Objects 185
Bay-Wei Chang, David Ungar, and Randall B. Smith

9.1 Introduction 186
9.2 View-focused Environments 187
9.3 Objects at the Center of Action 192
9.4 Summary 198
References 198

10 Visual Programming and Software Engineering with Vista 199
Stefan Schiffer and Joachim Hans Frohlich

10.1 Introduction 200
10.2 Vista-A Visual Software Technique Approach 202
10.3 Software Engineering Issues 211
10.4 A Complete Example 216
10.5 Further Work 224
10.6 Summary 225
References 226

11 Connecting the Pieces 229
John Grundy, John Hosking, Stephen Fenwick, and Warwick Mugridge

11.1 Introduction 230
11.2 Desirable Features of an Integrated Environment 230
11.3 Existing Work 233
11.4 Views and View Types in SPE 234
11.5 View Construction and View Navigation 236
11.6 Phases and Modes of Construction 238
11.7 View Consistency and Traceability using Update Records 239
11.8 Bridging the Gap to Execution-Cerno 242
11.9 Implementation-MViews 246
11.10 Experience 247
11.11 Future Work 248
11.12 Summary 249
Acknowledgments 250
References 250
12 Framework Development and Reuse Support 253
Wolfgang Pree
12.1 Introduction 254
12.2 Conceptual and Terminological Foundations 255
12.3 Metapatterns 257
12.4 Metapatterns as Basis of Design books 262
12.5 Active Cookbook 264
12.6 Summary 265
Acknowledgments 266
References 266

Index 269