Lessons Learned Building Communication Software

Douglas C. Schmidt
Department of Computer Science
Washington University, St. Louis

An earlier version of this article appeared in the Lucent Bell Labs ``Multiuse Express'' magazine, Vol. 4, No. 6, December, 1996.

The Distributed Software Crisis

Developing complex software systems is expensive and error-prone. Object-oriented (OO) programming languages [Stroustrup:91,Gosling:96], components [Box:97], and frameworks [Lewis:95] are heavily touted technologies for reducing software cost and improving software quality. When stripped of their hype, the primary benefits of OO stem from the emphasis on modularity and extensibility, which encapsulate volatile implementation details behind stable interfaces and enhance software reuse.

Developers in certain well-traveled domains have successfully applied OO techniques and tools for years. For instance, the Microsoft MFC GUI framework and OCX components are de facto industry standards for creating graphical business applications on PC platforms. Although these tools have their limitations, they demonstrate the productivity benefits of reusing common frameworks and components.

Software developers in more complex domains, such as telecom, avionics, and other mission-critical control systems, have traditionally lacked standard off-the-shelf middleware components. As a result, telecom developers largely build, validate, and maintain software systems from scratch. In an era of deregulation and stiff global competition, this in-house development process is becoming prohibitively costly and time consuming. Across the industry, this situation has produced a ``distributed software crisis,'' where computing hardware and networks get smaller, faster, and cheaper; yet telecom software gets larger, slower, and more expensive to develop and maintain.

The challenges of building distributed software stem from inherent and accidental complexities [Brooks:87] associated with telecom systems:

The lack of extensibility and reuse in-the-large is particularly problematic for complex distributed telecom software. Extensibility is essential to ensure timely modification and enhancement of services and features. Reuse is essential to leverage the domain knowledge of expert developers to avoid re-developing and re-validating common solutions to recurring requirements and software challenges.

While developing high quality reusable software is hard enough, developing high quality extensible and reusable telecom software is even harder. Not surprisingly, many companies attempting to build reusable middleware fail -- often with enormous loss of money, time, and marketshare. Those companies that do succeed, however, reap the benefits resulting from their ability to develop and deploy complex applications rapidly, rather than wrestling endlessly with infrastructure problems. Unfortunately, the skills required to successfully produce telecom middleware remain something of a "black art," often locked in the heads of expert developers.

Lessons Learned Building Reusable OO Communication Software Frameworks

Over the past decade, I've worked with many companies (including Motorola Iridium, Ericsson, Siemens, Bellcore, Lucent, SAIC, Kodak, and Boeing) building reusable OO communication software [Schmidt:96]. In these projects, we've applied a range of OO middleware tools including OMG CORBA (an emerging industry standard for distributed object computing) and the ACE framework (a widely used C++ framework that implements many strategic and tactical design patterns for concurrent communication software). The following are lessons learned from developing and deploying reusable OO communication software components and frameworks in practice:

Concluding Remarks

Developing reusable OO middleware components and frameworks is not a silver bullet. Software is inherently abstract, which makes it hard to engineer its quality and to manage its production. The good news, however, is that OO component and framework technologies are becoming mainstream. Developers and users are increasingly adopting and succeeding with object-oriented design and programming.

On the other hand, the bad news is that (1) existing OO components and frameworks are largely focused on only a few areas (e.g., GUIs) and (2) existing industry standards still lack the semantics, features, and interoperability to be truly effective throughout the telecom software domain. Too often, vendors use industry standards to sell proprietary software under the guise of open systems. Therefore, it's essential for telecom companies to work with standards organizations and middleware vendors to ensure the emerging specifications support true interoperability and define features that meet telecom software needs.

Finally, to support the standardization effort, it's crucial for us to capture and document the patterns that underlie the successful telecom software components and frameworks that do exist. Likewise, we need to reify these patterns to guide the creation of standard frameworks and components for the telecom domain. I'm optimistic that the next generation of OO frameworks and components will be a substantial improvement over those we've worked with in the past.

For more information on building reusable OO communication software frameworks with CORBA and ACE, see the following WWW URLs:



[Box:97] Don Box, ``Understanding COM,'' Addison-Wesley, Reading, MA, 1997.

[Brooks:75] Frederick P. Brooks, ``The Mythical Man-Month,'' Addison-Wesley, Reading, MA, 1975.

[Brooks:87] Frederick P. Brooks, ``No Silver Bullet: Essence and Accidents of Software Engineering,'' IEEE Computer, Volume 20, Number 4, April 1987, 10-19.

[Gosling:96] The Java Programming Language, Addison-Wesley, Reading, MA, 1996.

[Lewis:95], Ted Lewis et al., ``Object Oriented Application Frameworks,'' IEEE Computer Society Press, 1995.

[OMG:95] Object Management Group, The Common Object Request Broker: Architecture and Specification 2.0, July, 1995.

[Schmidt:96] Douglas C. Schmidt, ``A Family of Design Patterns for Application-Level Gateways,'' Theory and Practice of Object Systems, Wiley and Sons, 1996.

[Schmidt:97] Aniruddha Gokhale, Douglas C. Schmidt, Tim Harrison, and Guru Parulkar, ``A High-performance Endsystem Architecture for Real-time CORBA,'' IEEE Communications Magazine, Volume 14, Number 2, February 1997.

[Stroustrup:91] Bjarne Stroustrup, The C++ Programming Language, 2nd Edition, Addison-Wesley, Reading, MA, 1991.

Back to ACE home page.

Last modified 13:31:00 CST 16 December 2012