Today, any large object-oriented software system is built using framew
orks. Yet, designing frameworks and defining their interaction with cl
ients remains a difficult task. A primacy reason is that today's domin
ant modeling concept, the class, is not well suited to describe the co
mplexity of object collaborations as it emerges in framework design an
d integration. We use role modeling to overcome the problems and limit
ations of class-based modeling. Using role models, the design of a fra
mework and its use by clients can be described succinctly and with muc
h better separation of concerns than with classes. Using role objects,
frameworks can be integrated into use-contexts that have not been for
eseen by their original designers.