The truth is on the wire

Last week a vendor told me about a product that helps verify whether software meets its requirements, both at delivery and throughout its maintenance lifecycle. The verification involves some pretty deep and invasive measures including, I was told, the ability to reconstruct the entire configurations of machines on which developers made changes to the software.

That's an interesting exercise in forensic system administration, and as developers' machines become flocks of virtual configurations it's probably a worthy challenge. But shouldn't service-oriented architecture make all this unnecessary?

Yes and no. SOA advocates will argue, correctly, that the truth is on the wire. Contracts define the vocabularies that services use when they speak to one another. Messages written in terms of those vocabularies, and patterns formed by the exchange of those messages, tell the story of the software's behavior, and any intermediary that's privy to the message exchange can read it.

In the SOA version of test-driven development, unit tests are reproducible message exchange patterns, verifiable by endpoints and by intermediaries. That sounds great, and it will be, once more traffic shifts into this mode, and once tools emerge to help us capture, analyze, and replay message exchanges.

But just as we don't rely on conventional unit tests alone to ensure software correctness, we won't be able to rely on SOA-style message replays. No suite of canned tests can ever capture the unpredictability of real-world data. There will always be reasons we'll need to pry open the black box, peek inside, find out how a service was built, and account for its change history.

Is there no essential difference, then, between these two verification regimes? I think that there is a difference in degree which, over time, could become a difference in kind. With self-describing messages flowing among services and also visible to authorized intermediaries, we'll be able to build up a much more complete and accurate picture of software's behavior. The truth that's on the wire won't be the only truth that matters, but it'll matter more than other kinds.

Former URL: