Exploring Non-functional Coupling Between Subsystems

June 08, 2021


Wednesday, June 23 at 11:00am

Advisor: Jonathan Sillito

MS thesis defense for Matt Pope


Many software systems depend on other systems to function correctly or are themselves composed of interdependent subsystems. In that context, behavioral changes in a dependency may have consequences for a dependent subsystem. This includes changes to non-functional properties such as latency or availability. In this paper we use the term non-functional coupling to mean the extent to which a subsystem is affected by changes to non-functional properties in a dependency. We argue that non-functional coupling has implications for the maintainability, reliability and performance of an overall system. We also explore the extent to which various engineering techniques used in interaction code (i.e., the code in a subsystem that manages requests to and responses from a dependency) can influence the strength of that coupling. We do this by simulating various techniques (including several novel techniques) using a tool named Quartermaster.