Subject Oriented Programming

This is an approach building Object Oriented software systems by composing several sub-systems (known as subjects) according to a composition expression which describes the rules for what parts of the subjects correspond and how they, in turn, should be merged. The idea is that this supports Separation Of Concerns: each subject encodes the important aspects of the system as perceived from a particular perspective.

Lately this work has been generalized into the notion of Hyper Spaces.


Subjects might be good for encoding the structure of patterns separately and using composition to deploy them in a project. (I'm saying this here mainly because I hope someone will take the bait and disagree with me)

This dangerous viewpoint will inevitably lead to eXtreme Design!

-- Mark Spanglet - I prefer a classless society

See original on c2.com