Towards a new model of abstraction in software engineering

G. Kiczales
Proceedings 1991 International Workshop on Object Orientation in Operating Systems  
We now come to the decisive step of mathematical abstraction: we forget about what the symbols stand for... [The mathematician] need not be idle; there are many operations he can carry out with these symbols, without ever having to look at the things they stand for. Hermann Weyl, "The Mathematical Way of Thinking" (This appears at the beginning of the Building Abstractions With Data chapter of "Structure and Interpretation of Computer Programs" by Harold Abelson and Gerald Jay Sussman.) This is
more » ... an abridged version of a longer paper in preparation. The eventual goal is to present, to those outside of the reflection and meta-level architecturescommunity, the intuitions surroundingopen implementations and the use of meta-level architectures, particularly metaobject protocols, to achieve them. The view of abstraction on which software engineering is based does not support the reality of practice: it suggests that abstractions hide their implementation, whereas the evidence is that this is not generally possible. This discrepancy between our basic conceptual foundations and practice appears to be at the heart of a number of portability and complexity problems. Work on metaobject protocols suggests a new view, in which abstractions do expose their implementations, but do so in a way that makes a principled division between the functionality they provide and the underlying implementation. By resolving the discrepancy with practice, this new view appears to lead to simpler programs. It also has the potential to resolve important outstanding problems surround reuse, software building blocks, and high-level programming languages.
doi:10.1109/iwooos.1991.183036 fatcat:aptwt5fzd5gkvgtuy5ko6xashy