Subjective, multidimensional modularity with korz

Korz is a new computational model that provides for context-oriented programming by combining implicit arguments and multiple dispatch in a slot-based model. This synthesis enables the writing of software that supports contextual variation along multiple dimensions, and graceful evolution of that software to support new, unexpected dimensions of variability, without the need for additional mechanism such as layers or aspects. With Korz, a system consists of a sea of method and data slots in a multidimensional space. There is no fixed organization of slots into objects – a slot pertains to a number of objects instead of being contained by a single object – and slots can come together according to the implicit context in any given situation, yielding subjective objects. There is no dominant decomposition, and no dimension holds sway over any other. IDE support is essential for managing complexity when working with the slot space and with subjectivity, allowing the task at hand to dictate what subspaces to isolate and what dominance of dimensions to use when presenting nested views to the user. We have implemented a prototype interpreter and IDE, and used it on several examples. This early experience has revealed much that needs to be done, but has also shown promise. It seems that Korz's particular combination of concepts, each well-known from the past, is indeed more powerful than the sum of its parts.

[1]  Don S. Batory,et al.  The GenVoca model of software-system generators , 1994, IEEE Software.

[2]  Randall B. Smith,et al.  SELF: The power of simplicity , 1987, OOPSLA '87.

[3]  Harold Ossher,et al.  Subject-oriented programming: a critique of pure objects , 1993, OOPSLA '93.

[4]  Harold Ossher,et al.  Korz: Simple, Symmetric, Subjective, Context-Oriented Programming , 2014, Onward!.

[5]  Tzilla Elrad,et al.  Aspect-oriented programming: Introduction , 2001, CACM.

[6]  Andry Rakotonirainy,et al.  Context-oriented programming , 2003, MobiDe '03.

[7]  Gregor Kiczales,et al.  Aspect-oriented programming , 2001, ESEC/FSE-9.

[8]  Christian Prehofer,et al.  Feature-Oriented Programming: A Fresh Look at Objects , 1997, ECOOP.

[9]  Stanley M. Sutton,et al.  N degrees of separation: multi-dimensional separation of concerns , 1999, Proceedings of the 1999 International Conference on Software Engineering (IEEE Cat. No.99CB37002).

[10]  William G. Griswold,et al.  An Overview of AspectJ , 2001, ECOOP.