Supporting high coupling and user-interface flexibility
Collaborative systems that automate the sharing of programmer-defined user interfaces offer limited coupling flexibility, typically forcing all users of an application to share all aspects of the user interfaces. Those that automatically support high coupling flexibility are tied to a narrow set of predefined user-interfaces. We have developed a framework that provides high-level and flexible coupling support for arbitrary, programmer-defined user interfaces. The framework refines an abstract layered model of collaboration with structured application layers and automatic acquisition, transformation, and processing of updates. It has been used to easily provide flexible coupling in complex, existing single-user software and shown to support all known ways to share user-interfaces. Coupling flexibility comes at the cost of a small amount of additional programming. We have carefully crafted the framework to ensure that this overhead is proportional to the degree of coupling flexibility desired.