Role-Oriented Programming
Encyclopedia
Role-oriented programming is a form of computer programming
aimed at expressing things in terms which are analogous to human concept
ual understanding of the world. This should make programs easier to understand and maintain.
The main idea of role-oriented programming is that humans think in terms of role
s. This claim is often backed up by examples of social relations. For example, a student attending a class and the same student at a party are the same person, yet he plays two different roles. In particular, the interactions of this person with the outside world depend on his current role. The roles typically share features, e.g., the intrinsic properties of being a person. This sharing of properties is often handled by the delegation
mechanism.
In the older literature and in the field of databases, it seems that there has been little consideration for the context in which roles interplay with each other. Such a context is being established in newer role- and aspect-
oriented programming languages such as Object Teams.
Many researchers have argued the advantages of roles in modeling and implementation. Roles allow objects to evolve over time, they enable independent and concurrently
existing views (interfaces) of the object, explicating the different contexts of the object, and separating concerns. Generally roles are a natural element of our daily concept forming. Roles in programming languages enable objects to have changing interfaces, as we see it in real life - things change over time, are used differently in different contexts, etc.
Programming language
A programming language is an artificial language designed to communicate instructions to a machine, particularly a computer. Programming languages can be used to create programs that control the behavior of a machine and/or to express algorithms precisely....
aimed at expressing things in terms which are analogous to human concept
Concept
The word concept is used in ordinary language as well as in almost all academic disciplines. Particularly in philosophy, psychology and cognitive sciences the term is much used and much discussed. WordNet defines concept: "conception, construct ". However, the meaning of the term concept is much...
ual understanding of the world. This should make programs easier to understand and maintain.
The main idea of role-oriented programming is that humans think in terms of role
Role
A role or a social role is a set of connected behaviours, rights and obligations as conceptualised by actors in a social situation. It is an expected or free or continuously changing behaviour and may have a given individual social status or social position...
s. This claim is often backed up by examples of social relations. For example, a student attending a class and the same student at a party are the same person, yet he plays two different roles. In particular, the interactions of this person with the outside world depend on his current role. The roles typically share features, e.g., the intrinsic properties of being a person. This sharing of properties is often handled by the delegation
Delegation (programming)
In object-oriented programming, there are two related notions of delegation.* Most commonly, it refers to a programming language feature making use of the method lookup rules for dispatching so-called self-calls as defined by Lieberman in his 1986 paper "Using Prototypical Objects to Implement...
mechanism.
In the older literature and in the field of databases, it seems that there has been little consideration for the context in which roles interplay with each other. Such a context is being established in newer role- and aspect-
Aspect-oriented programming
In computing, aspect-oriented programming is a programming paradigm which aims to increase modularity by allowing the separation of cross-cutting concerns...
oriented programming languages such as Object Teams.
Many researchers have argued the advantages of roles in modeling and implementation. Roles allow objects to evolve over time, they enable independent and concurrently
Concurrency (computer science)
In computer science, concurrency is a property of systems in which several computations are executing simultaneously, and potentially interacting with each other...
existing views (interfaces) of the object, explicating the different contexts of the object, and separating concerns. Generally roles are a natural element of our daily concept forming. Roles in programming languages enable objects to have changing interfaces, as we see it in real life - things change over time, are used differently in different contexts, etc.
Programming languages with explicit support for roles
- Object Teams
- powerJava
- EpsilonJ
- Chameleon
- Perl 5 (Moose)
- Perl 6
Authors of role literature
- Charles BachmanCharles BachmanCharles William "Charlie" Bachman is an American computer scientist, who spent his entire career as an industrial researcher rather than in academia...
- Trygve ReenskaugTrygve ReenskaugTrygve Mikkjel Heyerdahl Reenskaug is a Norwegian computer scientist and professor emeritus of the University of Oslo. He formulated the model-view-controller pattern for Graphic User Interface software design in 1979 while visiting the Xerox Palo Alto Research Center...
- Georg Gottlob
- Bent Bruun Kristensen
- Kasper Østerbye
- Friedrich Steimann
- Stephan Herrmann
- Barbara Pernici
- Bruce Wallace
- Kasper B. Graversen
See also
- Object Oriented Role Analysis MethodObject Oriented Role Analysis MethodThe Object Oriented Role Analysis and Modeling is a method, based on the concept of role, for performing object-oriented modeling. OOram is a precursor for the Unified Modeling Language ....
- Object role modelingObject role modelingObject Role Modeling is a method for conceptual modeling, and can be used as a tool for information and rules analysis, ontological analysis, and data modeling in the field of software engineering.- Overview :...
- Aspect-oriented programmingAspect-oriented programmingIn computing, aspect-oriented programming is a programming paradigm which aims to increase modularity by allowing the separation of cross-cutting concerns...
- Subject-oriented programmingSubject-oriented programmingIn computing, Subject-Oriented Programming is an object-oriented software paradigm in which the state and behavior of objects are not seen as intrinsic to the objects themselves, but are provided by various subjective perceptions of the objects...
- Subject (programming)
- Traits (computer science)
External links
- ROPE: Role Oriented Programming Environment for Multiagent Systems
- Context Aspect Sensitive Services
- [ftp://ftp.ccs.neu.edu/pub/people/lieber/appcs.pdf Adaptive Plug-and-Play Components for Evolutionary Software Development], by Mira Mezini and Karl Lieberherr