Software Connectors and Loose Coupling
|
|
A few months ago I attempted to make sense of loose coupling, I tried by creating a table that would show how different concerns may have varying degrees of coupling. However, I wasn't successful in defining a more coherent scheme. I had observed that many design patterns support loose coupling, so I settled with a categorization analagous to GOF. That is Creational, Behavioral and Structural. Now that I've stumbled on Mehta's categorization of software connectors, I'm again extremelly curious in revisiting the topic again.
Mehta's categorization is extremely rich, however I find some definitions too arbitrary (i.e. hardware vs software, aren't they one in the same conceptually?) and Mehta doesn't seem to leverage what we know about higher language constructs.
If I compared my original table with his categorization. I notice that he doesn't cover my "interface" category, that is you can define interfaces to an entity use an WSDL like object syntax or you can do it REST like. He covers "messaging" in the sense it's a procedure call with parameters as a hash table. For "typing" its equivalent to "Binding". "references" equivalent to "Naming". "ontology" he doesn't cover, that is semantics can be defined implicitly or explicitly. "schema" he doesn't cover, that is syntax can be described in a grammar like way or in a more relaxed pattern language. "communication" described almost identically. "interaction" is described in his top category of "facilitation". He doesn't cover sequencing.
The similarties however are striking enough that its worth more exploration. My hunch is that if I revisit Mehta's categorization with higher level programming constructs in mind, I would come up with a reasonably comprehensive summary of loose coupling . Now, back to the drawing board!

