Design Patterns in Communications Software available in Hardcover
- Pub. Date:
- Cambridge University Press
This definitive compendium of design patterns in communication software, gathered together by Linda Rising, includes contributions by James O. Coplien, Douglas C. Schmidt, Robert Hanmer, Greg Utas, Just van den Broecke, Don Olson, Carlos O'Ryan, Christopher D. Gill, and other experts from the patterns field. Engineers and other professionals working in the field of communications software development will find this unique reference extremely useful.
About the Author
Read an Excerpt
1: Design Patterns in Telecommunications System Architecture
AbstractThe telephone network could be called the world's first distributed computing network. People in telecommunications treat as second nature many of the issues just surfacing in other problem domains. This article describes some of the techniques used in the telecommunications industry to deal with highly distributed high-reliability systems. A number of recurring patterns are identified and used to describe the design of the telecommunications network and its components.
Telephony has even more acronyms than computing, because we've had 50 more years to come up with them.
Telephone pioneer to young turk, 1981
Since Alexander Graham Bell made the first phone call, the telecommunications industry has been constantly striving to produce a more reliable and feature-rich telecommunications network. As evi- dence of their success, telephone service is something we all take pretty much for granted. Even when disaster strikes, such as the big San Francisco earthquake of 1989, the phone system continues to work when all other utilities are knocked out.
Being a well-established industry, the telecommunications industry has a rich set of patterns that are used to solve commonly occurring problems. It is through the use of these patterns that the highly stringent requirements of the network are met. Many of these patterns are visible to the operators of the telecom network, while others are only visible to those building the equipment from which the telecom network is assembled. This chapter focuses on the use of design patterns, as exemplified in the book Design Patterns1, in the architecture and construction of the telephone network and its elements.
The Telephony BackgroundTelephone networks are complex distributed systems with a long and colorful heritage. The domain has a number of inherent challenges. These include the physical distribution of the network and the need for reliability and high capacity. To meet the reliability and capacity challenges, the designers of the telephone network and its components have introduced even more distributed processing. The resulting system is distributed in many dimensions, and this distribution must be handled to ensure that reliability is increased rather than decreased.
ObjectsTelephone switching systems do not have a "main" program: there are many different activities going on inside the system at any time. As a result, these systems have always had to be decomposed into smaller components. The protocols used in communication between such components usually contain an identifier of the object being affected, typically the call or the facility the call is using. This, and specification techniques such as Systems Description Language (SDL), have naturally led to switching systems being implemented using object-based techniques long before object orientation was fashionable.
Inherent DistributionAt the simplest end of the scale, a typical basic telephone call requires coordination of resources and actions across many telephone switching systems (aka switches) and other network elements. The coordination is carried out through the use of protocols between the switches. In the early days, this signaling was done using electrical pulses that told electromechanical "steppers," a hardware implementation of a 10-ary tree, which outgoing circuit to select.
As the network evolved, steppers were replaced by electromechanical logic boards, and ultimately by stored-program-controlled switching mechanisms. As the capabilities of the switches improved, it was possible to upgrade the signaling, first with the addition of multifrequency tones and later with digital messaging. Originally, only digits representing the called party were signaled. Using tones instead of pulses decreased the time required to communicate the information about the desired call, thus allowing more information to be sent, such as call type and billing indicators. Later, information about the calling party was added to the protocols. A key factor driving the richness of the signaling protocols was the desire to support features across the network.
After the basic call, the first significant networked feature was Inward gyre Area Telephone Service (INWATS). This service, now called 800, Tollfree, or Freephone, necessitated the signaling of the whereabouts of the calling party relative to the final destination of the call to give the terminating switching office enough information to generate the appropriate billing records. The details of the protocols (using fancy called-number manipulation) are beyond the scope of this article; suffice it to say that this was truly a case of trying to make a single call "object" appear simultaneously in several telephone switches.
RedundancyA key requirement of the telephone industry is fault tolerance. This is achieved through massive redundancy; anything critical to the operation of the network is duplicated. This is seen at all levels of granularity, from duplicated processors in peripheral modules of switching systems to "mated pairs" of the network databases known as service control points (SCPs)....
Table of Contents
1. Fault-tolerant telecommunication system patterns; 2. Using design patterns to build a framework for multimedia networking; 3. A generative pattern language for distributed processing; 4. Bodyguard; 5. Patterns for logging diagnostic messages; 6. Pattern: half-object + protocol; 7. A pattern language for improving the capacity of reactive systems; 8. A pocket-sized broker; 9. A family of design patterns for application-level gateways; 10. A pattern language of feature interaction; 11. Managing change with patterns; 12. Design patterns in telecommunication systems; 13. Applying patterns to develop extensible ORB middleware; 14. Open Web Server: an adaptive Web server using software patterns; 15. A pattern language of call processing; 16. The design and performance of a pluggable protocols framework for object request broker middleware; 17. Object Lifetime Manager - a complementary pattern for controlling object creation and destruction; 18. A family of design patterns for flexibly configuring network services in distributed systems; 19. Abstract session, an object structural pattern; 20. An input and output pattern language; 21. Lessons from telecommunications.