Jeff asked me to have a look at his attempt to quantify the concept of “coupling” from a REST perspective, which I’m happy to do.
I like what I read there quite a bit, in particular the emphasis on an aspect of large scale systems that I rarely see mentioned; the role of intermediary introduction at runtime. Jeff writes;
In addition, a fundamental belief that I hold is that ‘intermediaries’, if introduce-able at runtime, have the potential of bringing a coupling index to an unprecedented low level. This concept is conveyed via ‘Intermediary Decoupling’; where-by, other coupling concerns are mitigated by the use of one or more ‘intermediaries’.
A huge +1 from me on that. Roy Fielding describes a set of properties called “Modifiability”, which I believe encompasses Jeff’s intermediary concept, though I’m unclear exactly which sub-property it would refer to; I still have trouble recognizing some of those properties as distinct from the others.
I also like the mention of “Standards Coupling”, as it gives additional weight to reusing existing standardized solutions (HTTP, URIs), and de-emphasizes “reinventing the wheel” approaches (ahem 8-).
In general, I think most of the value in trying to build a metric is in going through the exercise. The “user weight” factor is much more dynamic than it appears too, or else needs to accomodate the requirements of the context into which a system will be deployed. For example, a system being deployed behind the firewall of an enterprise doesn’t need the same degree of loose coupling that a system being deployed outside a firewall does. That’s just one type of “context” of course, though a pretty darned important one.