Michael Nygard wrote Release It! Design and Deploy Production-Ready Software (Pragmatic Bookshelf), which won a Jolt Productivity award in 2008. His other writings can be found at http://www.michaelnygard.com/blog.
A SYSTEM CONSISTS OF INTERDEPENDENT PROGRAMS. We call the arrangement of these programs and their relationships architecture. When we diagram these systems, we often represent individual programs or servers as simplistic little rectangles, connected by arrows.
One little arrow might mean, "Synchronous request/reply using SOAP-XML over HTTP." That's quite a lot of information for one glyph to carry. There's not usually enough room to write all that, so we label the arrow with either "XML over HTTP" from an internal perspective, or "SKU Lookup" for the external perspective.
That arrow bridging programs looks like a direct contact, but it isn't. The white space between the boxes is filled with hardware and software components. This substrate may contain:
There will always be four or five computers between program A and B, running their software for packet switching, traffic analysis, routing, threat ...