fbpx
Wikipedia

Subject-oriented programming

In computing, subject-oriented programming is an object-oriented software paradigm in which the state (fields) and behavior (methods) of objects are not seen as intrinsic to the objects themselves, but are provided by various subjective perceptions ("subjects") of the objects. The term and concepts were first published in September 1993 in a conference paper[1] which was later recognized as being one of the three most influential papers to be presented at the conference between 1986 and 1996.[2] As illustrated in that paper, an analogy is made with the contrast between the philosophical views of Plato and Kant with respect to the characteristics of "real" objects, but applied to software ones. For example, while we may all perceive a tree as having a measurable height, weight, leaf-mass, etc., from the point of view of a bird, a tree may also have measures of relative value for food or nesting purposes, or from the point of view of a tax-assessor, it may have a certain taxable value in a given year. Neither the bird's nor the tax-assessor's additional state information need be seen as intrinsic to the tree, but are added by the perceptions of the bird and tax-assessor, and from Kant's analysis, the same may be true even of characteristics we think of as intrinsic.

Subject-oriented programming advocates the organization of the classes that describe objects into "subjects", which may be composed to form larger subjects. At points of access to fields or methods, several subjects' contributions may be composed. These points were characterized as the join-points[3] of the subjects. For example, if a tree is cut down, the methods involved may need to join behavior in the bird and tax-assessor's subjects with that of the tree's own. It is therefore fundamentally a view of the compositional nature of software development, as opposed to the algorithmic (procedural) or representation-hiding (object) nature.

Relationships edit

Relationship to aspect-oriented programming edit

The introduction of aspect-oriented programming in 1997[4] raised questions about its relationship to subject-oriented programming, and about the difference between subjects and aspects. These questions were unanswered for some time, but were addressed in the patent on Aspect-oriented programming filed in 1999[5] in which two points emerge as characteristic differences from earlier art:

  • the aspect program comprises both a) a cross-cut that comprises a point in the execution where cross-cutting behavior is to be included; and b) a cross-cut action comprising a piece of implementation associated with the cross-cut, the piece of implementation comprising computer readable program code that implements the cross-cutting behavior.
  • the aspect transparently forces the cross-cutting behavior on object classes and other software entities

In the subject-oriented view, the cross-cut may be placed separately from the aspect (subject) and the behavior is not forced by the aspect, but governed by rules of composition. Hindsight[6] makes it also possible to distinguish aspect-oriented programming by its introduction and exploitation of the concept of a query-like pointcut to externally impose the join-points used by aspects in general ways.

In the presentation of subject-oriented programming, the join-points were deliberately restricted to field access and method call on the grounds that those were the points at which well-designed frameworks were designed to admit functional extension. The use of externally imposed pointcuts is an important linguistic capability, but remains one of the most controversial features of aspect-oriented programming.[7]

Relationship to aspect-oriented software development edit

By the turn of the millennium, it was clear that a number of research groups were pursuing different technologies that employed the composition or attachment of separately packaged state and function to form objects.[8] To distinguish the common field of interest from Aspect-Oriented Programming with its particular patent definitions and to emphasize that the compositional technology deals with more than just the coding phase of software development, these technologies were organized together under the term Aspect-Oriented Software Development,[9] and an organization and series on international conferences begun on the subject. Like aspect-oriented programming, subject-oriented programming, composition filters, feature-oriented programming and adaptive methods are considered to be aspect-oriented software development approaches.

Dimensions edit

Multi-dimensional separation of concerns, Hyper/J, and the Concern Manipulation Environment edit

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++,[10] and Smalltalk.[11] 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 multi-dimensional separation of concerns, and the paper describing it[12] has been recognized as the most influential paper of the ICSE 1999 Conference.[13]

This new concept was implemented for composing Java software, using the name Hyper/J for the tool.[14]

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, called the Concern Manipulation Environment (CME), has been described[15] in which tools for query, analysis, modelling,[16] 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[17] 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[18] or sourceforge,[19] respectively, but neither is actively supported.

Subject-oriented programming as a "third dimension" edit

Method dispatch in object oriented programming can be thought of as "two dimensional" in the sense that the code executed depends on both the method name and the object in question. This can be contrasted[20] with procedural programming, where a procedure name resolves directly, or one dimensionally, onto a subroutine, and also to subject oriented programming, where the sender or subject is also relevant to dispatch, constituting a third dimension.

See also edit

References edit

  1. ^ William Harrison and Harold Ossher, Subject-Oriented Programming - A Critique of Pure Objects, Proceedings of 1993 Conference on Object-Oriented Programming Systems, Languages, and Applications, September 1993
  2. ^ "Most Influential OOPSLA Paper Award".
  3. ^ Harold Ossher, Peri Tarr. Operation-Level Composition: A Case in (Join) Point, in ECOOP '98 Workshop Reader, 406–409
  4. ^ Kiczales, G.; Lamping, J.; Mendhekar, A.; Maeda, C.; Lopes, C.; Loingtier, J. M.; Irwin, J. (1997). Aspect-oriented programming (PDF). ECOOP'97. Proceedings of the 11th European Conference on Object-Oriented Programming. LNCS. Vol. 1241. pp. 220–242. CiteSeerX 10.1.1.115.8660. doi:10.1007/BFb0053381. ISBN 3-540-63089-9.
  5. ^ Kiczales; Gregor J.; Lamping; John O.; Lopes; Cristina V.; Hugunin; James J.; Hilsdale; Erik A.; Boyapati; Chandrasekhar, Aspect Oriented Programming, United States Patent 6,467,086, October 15, 2002
  6. ^ William Harrison. De-constructing and Re-constructing Aspect-Orientation, Seventh Annual Workshop on Foundations of Aspect Languages, Brussels, Belgium, 1 April 2008, edited by Gary T. Leavens, ACM Digital Library, 2008, pp. 43-50
  7. ^ Friedrich Steimann. The paradoxical success of aspect-oriented programming, Proceedings of the 21st annual ACM SIGPLAN conference on Object-oriented programming systems, languages, and applications, Portland, Oregon, USA, 2006, pp. 481 - 497
  8. ^ Communications of the ACM, Vol. 44, No. 10, October 1994, pp. 28-95
  9. ^ http://aosd.net/
  10. ^ 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
  11. ^ Hafedh Mili, William Harrison, Harold Ossher, Supporting Subject-Oriented Programming in Smalltalk, Proceedings of TOOLS USA 96, August 1996
  12. ^ 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
  13. ^ "SIGSOFT - ACM Special Interest Group on Software Engineering".
  14. ^ 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
  15. ^ William Chung, William Harrison, Vincent Kruskal, Harold Ossher, Stanley M. Sutton, Jr., Peri 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
  16. ^ 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
  17. ^ 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
  18. ^ "Legacy Communities - IBM Community".
  19. ^ "Concern Manipulation Environment (CME)". 24 April 2015.
  20. ^ Journal of Object Technology: Context Oriented Programming

External links edit

  • Distributed Characteristics of Subject Oriented Programming: An evaluation with the Process and Object-Oriented Paradigms
  • alphaWorks: HyperJ
  • Eclipse Archived Technology Projects
  • Amethyst: a JavaScript library for Subject-Oriented Programming

subject, oriented, programming, this, article, uses, bare, urls, which, uninformative, vulnerable, link, please, consider, converting, them, full, citations, ensure, article, remains, verifiable, maintains, consistent, citation, style, several, templates, tool. This article uses bare URLs which are uninformative and vulnerable to link rot Please consider converting them to full citations to ensure the article remains verifiable and maintains a consistent citation style Several templates and tools are available to assist in formatting such as reFill documentation and Citation bot documentation August 2022 Learn how and when to remove this message In computing subject oriented programming is an object oriented software paradigm in which the state fields and behavior methods of objects are not seen as intrinsic to the objects themselves but are provided by various subjective perceptions subjects of the objects The term and concepts were first published in September 1993 in a conference paper 1 which was later recognized as being one of the three most influential papers to be presented at the conference between 1986 and 1996 2 As illustrated in that paper an analogy is made with the contrast between the philosophical views of Plato and Kant with respect to the characteristics of real objects but applied to software ones For example while we may all perceive a tree as having a measurable height weight leaf mass etc from the point of view of a bird a tree may also have measures of relative value for food or nesting purposes or from the point of view of a tax assessor it may have a certain taxable value in a given year Neither the bird s nor the tax assessor s additional state information need be seen as intrinsic to the tree but are added by the perceptions of the bird and tax assessor and from Kant s analysis the same may be true even of characteristics we think of as intrinsic Subject oriented programming advocates the organization of the classes that describe objects into subjects which may be composed to form larger subjects At points of access to fields or methods several subjects contributions may be composed These points were characterized as the join points 3 of the subjects For example if a tree is cut down the methods involved may need to join behavior in the bird and tax assessor s subjects with that of the tree s own It is therefore fundamentally a view of the compositional nature of software development as opposed to the algorithmic procedural or representation hiding object nature Contents 1 Relationships 1 1 Relationship to aspect oriented programming 1 2 Relationship to aspect oriented software development 2 Dimensions 2 1 Multi dimensional separation of concerns Hyper J and the Concern Manipulation Environment 2 2 Subject oriented programming as a third dimension 3 See also 4 References 5 External linksRelationships editRelationship to aspect oriented programming edit The introduction of aspect oriented programming in 1997 4 raised questions about its relationship to subject oriented programming and about the difference between subjects and aspects These questions were unanswered for some time but were addressed in the patent on Aspect oriented programming filed in 1999 5 in which two points emerge as characteristic differences from earlier art the aspect program comprises both a a cross cut that comprises a point in the execution where cross cutting behavior is to be included and b a cross cut action comprising a piece of implementation associated with the cross cut the piece of implementation comprising computer readable program code that implements the cross cutting behavior the aspect transparently forces the cross cutting behavior on object classes and other software entities In the subject oriented view the cross cut may be placed separately from the aspect subject and the behavior is not forced by the aspect but governed by rules of composition Hindsight 6 makes it also possible to distinguish aspect oriented programming by its introduction and exploitation of the concept of a query like pointcut to externally impose the join points used by aspects in general ways In the presentation of subject oriented programming the join points were deliberately restricted to field access and method call on the grounds that those were the points at which well designed frameworks were designed to admit functional extension The use of externally imposed pointcuts is an important linguistic capability but remains one of the most controversial features of aspect oriented programming 7 Relationship to aspect oriented software development edit By the turn of the millennium it was clear that a number of research groups were pursuing different technologies that employed the composition or attachment of separately packaged state and function to form objects 8 To distinguish the common field of interest from Aspect Oriented Programming with its particular patent definitions and to emphasize that the compositional technology deals with more than just the coding phase of software development these technologies were organized together under the term Aspect Oriented Software Development 9 and an organization and series on international conferences begun on the subject Like aspect oriented programming subject oriented programming composition filters feature oriented programming and adaptive methods are considered to be aspect oriented software development approaches Dimensions editMulti dimensional separation of concerns Hyper J and the Concern Manipulation Environment edit 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 10 and Smalltalk 11 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 multi dimensional separation of concerns and the paper describing it 12 has been recognized as the most influential paper of the ICSE 1999 Conference 13 This new concept was implemented for composing Java software using the name Hyper J for the tool 14 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 called the Concern Manipulation Environment CME has been described 15 in which tools for query analysis modelling 16 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 17 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 18 or sourceforge 19 respectively but neither is actively supported Subject oriented programming as a third dimension edit Method dispatch in object oriented programming can be thought of as two dimensional in the sense that the code executed depends on both the method name and the object in question This can be contrasted 20 with procedural programming where a procedure name resolves directly or one dimensionally onto a subroutine and also to subject oriented programming where the sender or subject is also relevant to dispatch constituting a third dimension See also editSeparation of concerns Data context and interactionReferences edit William Harrison and Harold Ossher Subject Oriented Programming A Critique of Pure Objects Proceedings of 1993 Conference on Object Oriented Programming Systems Languages and Applications September 1993 Most Influential OOPSLA Paper Award Harold Ossher Peri Tarr Operation Level Composition A Case in Join Point in ECOOP 98 Workshop Reader 406 409 Kiczales G Lamping J Mendhekar A Maeda C Lopes C Loingtier J M Irwin J 1997 Aspect oriented programming PDF ECOOP 97 Proceedings of the 11th European Conference on Object Oriented Programming LNCS Vol 1241 pp 220 242 CiteSeerX 10 1 1 115 8660 doi 10 1007 BFb0053381 ISBN 3 540 63089 9 Kiczales Gregor J Lamping John O Lopes Cristina V Hugunin James J Hilsdale Erik A Boyapati Chandrasekhar Aspect Oriented Programming United States Patent 6 467 086 October 15 2002 William Harrison De constructing and Re constructing Aspect Orientation Seventh Annual Workshop on Foundations of Aspect Languages Brussels Belgium 1 April 2008 edited by Gary T Leavens ACM Digital Library 2008 pp 43 50 Friedrich Steimann The paradoxical success of aspect oriented programming Proceedings of the 21st annual ACM SIGPLAN conference on Object oriented programming systems languages and applications Portland Oregon USA 2006 pp 481 497 Communications of the ACM Vol 44 No 10 October 1994 pp 28 95 http aosd net 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 Hafedh Mili William Harrison Harold Ossher Supporting Subject Oriented Programming in Smalltalk Proceedings of TOOLS USA 96 August 1996 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 SIGSOFT ACM Special Interest Group on Software Engineering 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 William Chung William Harrison Vincent Kruskal Harold Ossher Stanley M Sutton Jr Peri 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 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 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 Legacy Communities IBM Community Concern Manipulation Environment CME 24 April 2015 Journal of Object Technology Context Oriented ProgrammingExternal links editDistributed Characteristics of Subject Oriented Programming An evaluation with the Process and Object Oriented Paradigms alphaWorks HyperJ Eclipse Archived Technology Projects Amethyst a JavaScript library for Subject Oriented Programming Retrieved from https en wikipedia org w index php title Subject oriented programming amp oldid 1205101280, wikipedia, wiki, book, books, library,

article

, read, download, free, free download, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, picture, music, song, movie, book, game, games.