\begin{thebibliography}{KMMN85} \bibitem[ACO85]{albano-cardelli:conceptual-85} A. Albano, L. Cardelli, and R. Orsini. \newblock Galileo: a strongly-typed, interactive conceptual language. \newblock {\it ACM Transactions on Database Systems}, 10(2):230 -- 260, June, 1985. \bibitem[ALM82]{allen:dictionary-82} F. Allen, M. Loomis, and M. Mannino. \newblock {The Integrated Dictionary/ Directory System}. \newblock {\it ACM Computing Surveys}, 14(2), 1982. \bibitem[Bal86]{balzer:sigsoft-86} R.N. Balzer. \newblock Program enhancement. \newblock {\it ACM SIGSOFT Software Engineering Notes}, 11(4):66, 1986. \bibitem[BM84]{boyle:reusability-84} J.M. Boyle and M.N. Muralidharan. \newblock Program reusability through program transformation. \newblock {\it IEEE Transactions on Software Engineering}, SE-10(5), September 1984. \bibitem[Bro87]{brooks:silver} Frederick~P. Brooks. \newblock No silver bullet, essence and accidents of software engineering. \newblock {\it IEEE Computer Magazine}, 10--19, April 1987. \bibitem[CI84]{cameron-ito:gramps} R.D. Cameron and M.R. Ito. \newblock Grammar-based definition of metaprogramming systems. \newblock {\it ACM Transactions on Programming Languages and Systems}, 6(1):20--54, January 1984. \bibitem[Cox86]{cox:oop} Brad~J. Cox. \newblock {\it Object-Oriented Programming, An evolutionary approach}. \newblock Addison Wesley, 1986. \bibitem[CW85]{cardelli-wegner:types-85} L. Cardelli and P. Wegner. \newblock On understanding types, data abstraction, and polymorphism. \newblock {\it ACM Computing Surveys}, 17(4):471, December 1985. \bibitem[DHK*75]{kahn-lang:struct-75} V. Donzeau-Gouge, G. Huet, G. Kahn, B. Lang, and J.J. Levy. \newblock A structure oriented program editor: a first step towards computer assisted programming. \newblock In {\it Proceedings of International Computing Symposium 1975}, page~, 1975. \bibitem[DHKL80]{huet:mentor-80} V. Donzeau-Gouge, G. Huet, G. Kahn, and B. Lang. \newblock {\it {Programming environments based on structured editors: The MENTOR experience}}. \newblock Technical Report, Res. Rep. 26 INRIA, 1980. \bibitem[DMN70]{dahl-nygaard:simula-67} O.J. Dahl, B. Myhrhaug, and K. Nygaard. \newblock {SIMULA 67 Common Base Language}. \newblock {\it Publ. N. S-22, Norwegian Computing Center}, Oct. 1970. \bibitem[FAS*86]{freiling:knowledge-86} M.J. Freiling, J.H. Alexander, S.J. Shulman, J.L. Staley, S. Rehfuss, and S.L. Messick. \newblock Knowledge level engineering: ontological analysis. \newblock In {\it Proceedings AAAI}, pages~963--968, 1986. \bibitem[Fra81]{fraser:syntax-81} C.W. Fraser. \newblock Syntax-directed editing of general data structures. \newblock In {\it Proc. ACM SIGPLAN/SIGOA Conference on Text Manipulation}, pages~17--21, Portland, Oregon, 1981. \bibitem[GL85]{andrew:gem} A.V. Goldberg and K.J. Lieberherr. \newblock {GEM: A generator of environments for metaprogramming}. \newblock In {\it SOFTFAIR II, ACM/IEEE Conference on Software Tools}, pages~86--95, San Francisco, 1985. \bibitem[GR83]{goldberg:smalltalk-l-i} A. Goldberg and D. Robson. \newblock {\it Smalltalk-80: The Language and its Implementation}. \newblock Addison Wesley, 1983. \bibitem[KMMN85]{kristensen:fragments-85} Bent~Bruun Kristensen, Ole~Lehrmann Madsen, Birger Moller-Pederson, and Kristen Nygaard. \newblock An algebra for program fragments. \newblock In {\it ACM SIGPLAN 85 Symposium on Programming Languages and Programming Environments}, SIGPLAN, Seattle, Washington, 1985. \bibitem[Kre87]{kreowski:alg-spec-87} H.J. Kreowski. \newblock Some initial sections of the algebraic specification tale. \newblock {\it Bulletin of the European Association for Theoretical Computer Science}, (31):55--78, February 1987. \bibitem[KW87]{wand-kohlbecker:by-example-87} E. Kohlbecker and Mitchell Wand. \newblock Macro by example. \newblock In {\it ACM Symposium on Principles of Programming Languages}, ACM, 1987. \bibitem[Lam87]{lamb:idl-87} D.A. Lamb. \newblock {IDL: Sharing Intermediate Representations}. \newblock {\it ACM Transactions on Programming Languages and Systems}, 9(3):297--318, July 1987. \bibitem[LHR88]{LHLR:law-paper} Karl~J. Lieberherr, Ian Holland, and Arthur~J. Riel. \newblock Object-oriented programming: an objective sense of style. \newblock In {\it Object-Oriented Programming Systems, Languages and Applications Conference}, San Diego, CA., September 1988. \newblock A short version of this paper appears in IEEE Computer, June 88, Open Channel section, pages 78-79. \bibitem[Lie88a]{karl1:class} Karl Lieberherr. \newblock Object-oriented programming with class dictionaries. \newblock {\it Journal on Lisp and Symbolic Computation}, 1(2):pages unknown, 1988. \bibitem[Lie88b]{karl:demeter} Karl~J. Lieberherr. \newblock {\it The Art of Growing Software: An object-oriented {CASE} approach}. \newblock publisher to be determined, January 1988. \newblock book in preparation, approximately 400 pages. \bibitem[LR88]{lieber-riel:singapore} Karl~J. Lieberherr and Arthur~J. Riel. \newblock Demeter: a {CASE} study of software growth through parameterized classes. \newblock In {\it International Conference on Software Engineering}, pages~254--264, Raffles City, Singapore, 1988. \bibitem[LSAS77]{liskov:abstr-77} B. Liskov, A. Snyder, R. Atkinson, and C. Schaffert. \newblock {Abstraction mechanisms in CLU}. \newblock {\it Communications of the ACM}, 20(8):564--576, August 1977. \bibitem[Mac85]{macqueen:ml-85} D. MacQueen. \newblock {Modules for standard ML}. \newblock {\it Polymorphism Newsletter}, 2(2), October 1985. \bibitem[Mac86]{macqueen:modular-86} D. MacQueen. \newblock Using dependent types to express modular structure. \newblock In {\it ACM Symposium on Principles of Programming Languages}, January 1986. \bibitem[MBW80]{mylopoulos-bernstein:taxis-80} J. Mylopoulos, P.~A. Bernstein, and H.K.T. Wong. \newblock A language facility for designing interactive database intensive systems. \newblock {\it ACM Transactions on Database Systems}, 5(2):185 -- 207, June, 1980. \bibitem[Mey86]{meyer:param-86} B. Meyer. \newblock Genericity versus inheritance. \newblock In {\it Object-Oriented Programming Systems, Languages and Applications Conference}, pages~391--405, 1986. \bibitem[Mil71]{mills:grow-71} H.D. Mills. \newblock Top-down programming in large systems. \newblock In R. Ruskin, editor, {\it Debugging Techniques in Large Systems}, Prentice Hall, 1971. \bibitem[MN88]{madsen-norgard:hicss-88} Ole~Lehrmann Madsen and Claus N{\o}rgaard. \newblock An object-oriented metaprogramming system. \newblock In {\it Proceedings of the Annual Hawaii International Conference on System Sciences}, pages~406--415, 1988. \bibitem[Moo86]{moon:flavors} David~A. Moon. \newblock {Object-Oriented Programming with Flavors}. \newblock In {\it Object-Oriented Programming Systems, Languages and Applications Conference}, pages~1--8, Portland, Oregon, 1986. \bibitem[PS83]{partsch:survey} H. Partsch and R. Steinbrueggen. \newblock Program transformation systems. \newblock {\it ACM Computing Surveys}, 15(3):199--236, September 1983. \bibitem[SCB*86]{schaffert:trellis-86} Craig Schaffert, Topher Cooper, Bruce Bullis, Mike Kilian, and Carrie Wilpolt. \newblock An introduction to {Trellis/Owl}. \newblock In {\it Object-Oriented Programming Systems, Languages and Applications Conference}, pages~9--16, 1986. \bibitem[Sol78]{solomon:param} M. Solomon. \newblock Type definitions with parameters. \newblock In {\it Principles of Programming Languages}, Tucson, Arizona, 1978. \bibitem[SS77]{john-diane:abstr-77} J.M. Smith and D.C.P. Smith. \newblock Data base abstractions: aggregation and generalization. \newblock {\it ACM Transactions on Database Systems}, 2(2), June 1977. \bibitem[Str86]{stroustrup:c++} B. Stroustrup. \newblock {\it The C++ Programming Language}. \newblock Addison Wesley, 1986. \bibitem[Tei84]{reps-teitelbaum:84} T.~Reps~T. Teitelbaum. \newblock The synthesizer generator. \newblock {\it SIGPLAN}, 19(5), 1984. \bibitem[Tho86]{thomsen-override:86} K.~S. Thomsen. \newblock {\it Multiple Inheritance, a structuring mechanism for data, processes and procedures}. \newblock Technical Report~DAIMI PB - 209, University of Aarhus, Denmark, April 1986. \bibitem[TWW82]{thatcher:param-82} J.W. Thatcher, E.G. Wagner, and J.B. Wright. \newblock Data type specification: parameterization and the power of specification techniques. \newblock {\it ACM Transactions on Programming Languages and Systems}, 711--732, 1982. \bibitem[Wil83]{wile:popart-83} D. Wile. \newblock Program developments: formal explanations of implementations. \newblock {\it Communications of the ACM}, 26(11), 1983. \bibitem[Wir71]{wirth:pascal-acta-71} Niklaus Wirth. \newblock {The Programming Language Pascal}. \newblock {\it Acta Informatica}, 1:35--63, 1971. \bibitem[Wir74]{wirth-lang-des:ifip-74} Niklaus Wirth. \newblock On the design of programming languages. \newblock In {\it IFIP, Amsterdam}, pages~386--393, North-Holland, 1974. \bibitem[Wir76]{wirth:a+d=p-76} Niklaus Wirth. \newblock {\it Algorithms + Data Structures = Programs}. \newblock Prentice Hall, Englewood Cliffs, N. J., 1976. \bibitem[Wir77]{wirth:ebnf} N. Wirth. \newblock What can we do about the unnecessary diversity of notation for syntactic definitions? \newblock {\it Comm. ACM}, 20(11):822--823, 1977. \bibitem[Wir84]{wirth:modula-2} Niklaus Wirth. \newblock {\it Programming in Modula-2}. \newblock Springer Verlag, 1984. \end{thebibliography}