MODULE COMPOSITION AND SYSTEM DESIGN FOR THE OBJECT PARADIGM
Joseph A. Goguen and Adolfo Socorro
Abstract
This paper argues that a powerful module composition facility can enhance the ability of object oriented languages to reuse and compose designs, specifications and code. In addition, several flexible ways to produce prototypes can be supported, including symbolic execution of designs composing prototype versions of components, and using "built-in" modules. Much of this power comes from having module expressions, theories and views as first class citizens: some comes from providing both vertical and horizontal composition, and from distinguishing between sorts for values, classes for objects, modules for code, and theories as types for modules. New features introduced in this paper include dynamic binding with views, vertical wrappers, support for abstract classes and private class inheritance, and the dynamic integration of components from different libraries. Although we illustrate these features using the FOOPS language, they could be added to many other languages, and some comparison with other languages is given.