==={{anchor|Multi-dimensional separation of concerns}}Multi-dimensional separation of concerns, Hyper/J, and the Concern Manipulation Environment===
The original formulation of subject-oriented programming deliberately envisioned it as a packaging technology – allowing the space of functions and data types to be extended in either dimension. The first implementations had been for C++,<ref>Harold Ossher , Matthew Kaplan , William Harrison, Alexander Katz and Vincent Kruskal , Subject-Oriented Composition Rules, Proceedings of 1995 Conference on Object-Oriented Programming Systems, Languages, and Applications, October 1995</ref> and Smalltalk .<ref>Hafedh Mili, William Harrison, Harold Ossher , Supporting Subject-Oriented Programming in Smalltalk , Proceedings of TOOLS USA 96, August 1996</ref> These implementations exploited the concepts of software labels and composition rules to describe the joining of subjects.
To address the concern that a better foundation should be provided for the analysis and composition of software not just in terms of its packaging but in terms of the various concerns these packages addressed, an explicit organization of the material was developed in terms of a multi-dimensional "matrix" in which concerns are related to the software units that implement them. This organization is called {{em|multi-dimensional separation of concerns}}, and the paper describing it<ref>Harold Ossher , Peri Tarr , William Harrison, Stanley Sutton, N Degrees of Separation: Multi-Dimensional Separation of Concerns, Proceedings of 1999 International Conference on Software Engineering, May 1999</ref> has been recognized as the most influential paper of the ICSE 1999 Conference.<ref>{{Cite web|url =http ://www .sigsoft .org/awards/mostInfPapAwd.htm |title = SIGSOFT - ACM Special Interest Group on Software Engineering}}</ref>
This new concept was implemented for composing [[Java (programming language)|Java]] software, using the name '''Hyper/J''' for the tool.<ref>Harold Ossher , Peri Tarr. Hyper/J: Multi-dimensional separation of concerns for Java, Proceedings of the 23rd International Conference on Software Engineering, Toronto, Ontario, Canada, 2001, Pages: 821 - 822</ref>
Composition and the concept of subject can be applied to software artifacts that have no executable semantics, like requirement specifications or documentation. A research vehicle for [[Eclipse (software)|Eclipse]], called the '''Concern Manipulation Environment''' (CME ), has been described<ref>William Chung, William Harrison, Vincent Kruskal , Harold Ossher , Stanley M. Sutton, Jr., PeriP Tarr, Matthew Chapman, Andrew Clement, Helen Hawkins, Sian January. The concern manipulation environment, Proceedings of the 27th international conference on Software engineering table of contents, St. Louis, MO, USA, 2005</ref> in which tools for query, analysis, modelling,<ref>William Harrison, Harold Ossher , Stanley Sutton, Peri Tarr . Concern modeling in the concern manipulation environment, Proceedings of the 2005 workshop on Modeling and analysis of concerns in software, St. Louis, Missouri, 2005</ref> and composition are applied to artifacts in any language or representation, through the use of appropriate plug-in adapters to manipulate the representation.
A successor to the Hyper/J composition engine<ref>William Harrison, Harold Ossher , Peri Tarr . General Composition of Software Artifacts, Proceedings of Software Composition Workshop 2006, March 2006, Springer -Verlag , LNCS 4089, pages 194-210</ref> was developed as part of CME which uses a general approach for the several elements of a composition engine:
* a query language with unification to identify join points,
* a flexible structural-attachment model,
* a nested-graph specification for ordering identified elements,
* and a priority ordering specification to resolve conflicts among conflicting rules.
Both Hyper/J and CME are available, from alphaWorks<ref>{{Cite web|url=http://www.alphaworks.ibm.com/tech/hyperj|title = Legacy Communities - IBM Community}}</ref> or sourceforge,<ref>{{Cite web|url=http://sourceforge.net/projects/cme/|title=Concern Manipulation Environment (CME)}}</ref> respectively, but neither is actively supported.
===Subject-oriented programming as a "third dimension"===
|