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 [http://www.objectteams.org/].
Many researchers have argued the advantages of roles in [[Computer_modelComputer model|modeling]] and implementation. Roles allow objects to evolve over time, they enable independent and [[Concurrency_%28computer_science%29Concurrency (computer science)|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.