Towards a new model of abstraction for the engineering o f software

ion In Action I want to start by talking about the current view of abstraction in software engineering: how we use it, what the principles are, what the terminology is and what it does for us. Rather than attempting any sort of formal definition, I will just use an example. I will talk about the implementation of a familiar system, using familiar terms of abstraction, with the goal of getting the terminology I am going to use out on the table. Consider the display portion of a spreadsheet application. In practice, the implementation would be based on “layers of abstraction” as shown in Figure 1. The spreadsheetwould be implemented on top of a window system, which would in turn be implemented on top of an operating system and so on down (not very far) to the machine. The horizontal lines in the figure are commonly called “abstraction barriers,” “abstractions” or “interfaces.” Each provides useful 3333 Coyote Hill Rd., Palo Alto, CA 94304; (415)812-4888; Gregor@parc.xerox.com. c 1992 Xerox Corporation. All Rights Reserved. Spreadsheet Application

[1]  Akinori Yonezawa,et al.  Hybrid Group Reflective Architecture for Object-Oriented Concurrent Reflective Programming , 1991, ECOOP.

[2]  Mary Shaw,et al.  Toward relaxing assumptions in languages and their implementations , 1980, SIGP.

[3]  Amin Vahdat,et al.  The Design of a Metaobject Protocol Controlling Behavior of a Scheme Interpreter , 1993 .

[4]  Ramana Rao,et al.  Implementational Reflection in Silica , 1991, ECOOP.

[5]  Niklaus Wirth,et al.  On the Design of Programming Languages , 1974, IFIP Congress.

[6]  Daniel G. Bobrow,et al.  Metaobject protocols: why we want them and what else they can do , 1993 .

[7]  C. A. R. Hoare,et al.  Communicating sequential processes , 1978, CACM.

[8]  Thomas E. Anderson,et al.  The performance implications of thread management alternatives for shared-memory multiprocessors , 1989, SIGMETRICS '89.

[9]  Andrew A. Berlin,et al.  Partial evaluation applied to numerical computation , 1990, LISP and Functional Programming.

[10]  Fumio Teraoka,et al.  A Reflective Architecture for an Object-Oriented Distributed Operating System , 1989, ECOOP.

[11]  Pattie Maes,et al.  Concepts and experiments in computational reflection , 1987, OOPSLA '87.

[12]  Pierre Cointe Metaclasses are First Class: the ObjVlisp Model , 1987, OOPSLA.

[13]  Akinori Yonezawa,et al.  An Actor-Based Metalevel Architecture for Group-Wide Reflection , 1990, REX Workshop.

[14]  Joannes M. Lucassen Types and Effects Towards the Integration of Functional and Imperative Programming. , 1987 .

[15]  Walter Hamscher,et al.  Joshua: Uniform Access to Heterogeneous Knowledge Structures, or why Joshing Is Better than Conniving or Planning , 1987, AAAI.

[16]  Luis Rodriguez Coarse-Grained Parallelism Using Metaobject Protocols , 1991 .

[17]  Andreas Paepcke Metaobject Protocols: Why We Want Them and What Else They Can Do , 1993 .

[18]  Monica S. Lam,et al.  Coarse-grain parallel programming in Jade , 1991, PPOPP '91.

[19]  Pattie Maes Concepts and experiments in computational reflection , 1987, OOPSLA 1987.

[20]  Satoshi Matsuoka,et al.  Hybrid Group Re ective Architecture for Object-Oriented Concurrent Re ective Programming , 1991 .

[21]  Daniel G. Bobrow,et al.  CommonLoops: merging Lisp and object-oriented programming , 1986, OOPLSA '86.

[22]  Daniel G. Bobrow,et al.  Book review: The Art of the MetaObject Protocol By Gregor Kiczales, Jim des Rivieres, Daniel G. and Bobrow(MIT Press, 1991) , 1991, SGAR.

[23]  Sonya E. Keene,et al.  Object-oriented programming in COMMON LISP - a programmer's guide to CLOS , 1989 .