Dave has written a great piece on loose coupling for Webservices.org. It really breaks things down well, including a list of 10 ways in which loose coupling can be achieved. That list, *GASP*, even includes “constrained interfaces”.
As you might expect, I disagree with Dave on some stuff. But most of it is pretty accurate, I’d say. Where I disagree with him, again, is where he starts talking about the role of humans. In several places, he correctly points out where, in the process of browser-based Web surfing, humans currently enter the equation. But then, in most cases without any evidence that he’s thought about the issue at any depth, automatically assumes that because humans currently do it, machines can’t, concluding with the implicit assumption that the Web isn’t currently good for automata and therefore needs Web services.
I really wish he would take the time to explore that hypothesis of his in more detail, because it’s not like you have to look too far to see how automata have been integrating with one another using constrained interfaces; there’s an entire branch of distributed computing devoted to it. Allow me to paste a relevant snippet from that link;
Large systems of distributed, heterogeneous software components play an increasingly important role within our society. The paradigm shift from objects to components in software engineering is necessitated by such societal demands, and is fuelled by Internet-driven software development. Using components means understanding how they individually interact with their environment, and specifying how they should engage in mutual, cooperative interactions in order for their composition to behave as a coordinated whole. Coordination models and languages address such key issues in Component Based Software Engineering as specification, interaction, and dynamic composition of components.
If I hadn’t mentioned that, and you stumbled upon it in an article like Dave’s, you’d think that was talking about Web services, wouldn’t you? Surprise.