Designing software is often an exercise in managing complexity. You can take steps to limit the complexity of any given class by only assigning it a discrete set of responsibilities, applying a concept known as object role stereotypes.

In the August 2008 issue of MSDN Magazine, Jeremy Miller explains the most common object role stereotypes by applying them to real-world examples and well-known design patterns.