John Crupi (via Tim Bray) has this to say about the design of Service Orientated Architectures:

...for SOA to be successful, it must be a "top-down" approach. And top-down, means problem to architecture to solution. It does not mean, working from what we have and just wrapping it with new technologies just because we can. This bottom-up approach is quite natural and easy and is the perfect recipe for a SOA failure.

While I agree with this in general, I’m not so sure it is axiomatic. Firstly, my take on this is that using web services to wrap things up and calling it a SOA is not so much a recipe for a failure as a recipe for spending lots of money and potentially adding little value. Adding little value could be argued to be a failure (but it’s not always transparently a failure), but the process could also be argued to have educational value. If one designs a new architecture from the top-down, and builds it with a new technology, and then you get a failure, what then was the problem? The technology or the architecture? Whose implementation failed? The architects or the implementors?

From an NDG point of view, we’ve played a little at wrapping up web services, but we’ve done the big architectural design thing. Time will tell as to whether we’re in any of the failure modes, but this much I know, we’ve learned a lot about what is possible, and that has value!