An empirical study of publish/subscribe middleware versatility
Versatility is an important quality that enables software to serve multiple purposes in a usable and useful way. As such, versatility is central to middleware in general and publish/subscribe infrastructures specifically. The development of versatile software, however, is difficult. It must achieve a favorable balance between different software qualities (or non-functional requirements) including: usability, reusability, flexibility, maintainability and performance, while supporting problem domain dependencies and constraints. Developers adopt different strategies in the design of versatile software including: modularization, stabilization, variation, generalization and specialization. By combining these strategies, different versatility approaches have been applied in the construction of infrastructures, for example: minimal core, one-size-fits-all, coordination languages and flexible infrastructures. Each one of have costs and benefits.
In this work, we motivate the need for versatility in the publish/subscribe domain, discuss its challenges, propose our own solution to the problem: YANCEES, a flexible publish/subscribe infrastructure, and present the results of a multi-dimensional quantitative and qualitative empirical study where we compare YANCEES with existing versatility approaches in the publish/subscribe domain. We summarize the results in the form of guiding principles, which goal is to better support application developers in choosing the best design approaches in the development of middleware; and infrastructure consumers in selecting the most appropriate infrastructure to support their applications.