Personalities Home Page


Personalities are new design and programming entities that allow a software developer to use a role-based approach when modeling a system. They have their foundation on the fact that classification alone (as in an OO class diagram) is not expressive enough to accommodate different points of view about the objects. Furthermore, clients of a software system care only about their point of view when interacting with the system's objects. Thus, it makes sense to provide for a "buffer zone" where a specific role behavior can be encapsulated. That, in a nutshell, is a personality.

Designing and programming with Personalities is an evolutionary step towards a more complete object-oriented design methodology. Personalities introduce some concepts of their own, but their main focus is, by-and-large, to use the programming-level tools already available to enhance a system's robustness. In some detail, Personalities:

A simple language extension to the Java™ Programming Language, termed Personalities/J, was created to support Personalities. The accompanying compiler into standard Java code was developed and is being improved iteratively. Adaptive Object Oriented Programming and Demeter/Java were used to create the compiler.

This page contains information about Personalities' research, the Personalities/J Compiler implementation, and links to related research activities. If you find the idea of personalities appealing and the PJC compiler useful, we would like to hear from you.