This document discusses role-based component engineering. It defines role-based components as focusing on the interface, granularity, encapsulation, and composition of object-oriented components. Components may play different roles based on their uses in a system. Role interfaces separate a component's public interface into smaller interfaces modeling these roles. Using roles can reduce complexity measures like coupling between classes and increase measures like depth of inheritance tree. Frameworks are also discussed as a way to apply roles, with frameworks providing partial designs and implementations using roles, interfaces, abstract classes and components.