Role Analysis

paper ps   
We present a new role system in which the type (or role) of each object depends on its referencing relationships with other objects, with the role changing as these relationships change. Roles capture important object and data structure properties and provide useful information about how the actions of the program interact with these properties. Our role system enables the programmer to specify the legal aliasing relationships that define the set of roles that objects may play, the roles of procedure parameters and object fields, and the role changes that procedures perform while manipulating objects. We present an interprocedural, compositional, and context-sensitive role analysis algorithm that verifies that a program maintains role constraints.

Citation

Viktor Kuncak, Patrick Lam, and Martin Rinard. Role analysis. In ACM SIGACT-SIGPLAN Symposium on Principles of Programming Languages (POPL), 2002.

BibTex Entry

@inproceedings{KuncakETAL02RoleAnalysis,
  author = {Viktor Kuncak and Patrick Lam and Martin Rinard},
  title = {Role Analysis},
  booktitle = {ACM SIGACT-SIGPLAN Symposium on Principles of Programming Languages (POPL)},
  ee = {http://doi.acm.org/10.1145/503272.503276},
  isbn = {1-58113-450-9},
  year = 2002,
  abstract = {
We present a new {\em role system} in which the type (or
{\em role}) of each object depends on its referencing
relationships with other objects, with the role changing as
these relationships change.  Roles capture important object
and data structure properties and provide useful information
about how the actions of the program interact with these
properties.  Our role system enables the programmer to
specify the legal aliasing relationships that define the set
of roles that objects may play, the roles of procedure
parameters and object fields, and the role changes that
procedures perform while manipulating objects.  We present
an interprocedural, compositional, and context-sensitive
role analysis algorithm that verifies that a program
maintains role constraints.
}
}