Patterns: Spreading the Word
by
Linda Rising

Software engineers are always casting about, examining other engineering disciplines, looking for solutions to the now decades-old problem called the software crisis. They have considered hardware, industrial engineering, manufacturing scenarios - the list goes on.

The latest investigation into a perhaps-related area is an especially provocative one. A group of respected individuals in the object-oriented community have been taking a hard look at the work of Christopher Alexander, an architect, a building architect. Alexander has some intriguing observations about an entity he calls a pattern, defined as follows [1]:

"Each pattern describes a problem that occurs over and over again in our environment and then describes the core of the solution to that problem in such a way that you can use this solution a million times over without ever doing it the same way twice."

Software patterns have been defined by Jim Coplien and Doug Schmidt [2]:

"Design patterns capture the static and dynamic structures of solutions that occur repeatedly when producing applications in a particular context."

Since members of the software engineering community have been searching, unsuccessfully for the most part, for an answer to the problem of re-inventing the wheel, the patterns investigation has been attracting considerable attention.

I have been an active patterns advocate since I attended the OOPSLA '94 tutorial last October and purchased the GOF text (the Gang of Four: Gamma, Helm, Johnson, and Vlissides) [3] . This paper presents an account of my attempt to spread the word about patterns at my company, AG Communication Systems.

I started by giving noon-time brown bag presentations on object-oriented design heuristics, based on another tutorial from OOPSLA, and during these, mentioned the notion of design patterns to obtain some initial feedback.

Acting on a suggestion from my manager, I scheduled a presentation for our vice-president and his staff (the Gang of Sixteen, GOS) to get approval to buy copies of the GOF text and start training in the GOF patterns, with the long-term goal of collecting domain-specific patterns in a "Best Practices" handbook.

I repeated this presentation at our monthly OO Technology Forum to stimulate interest in the training. I also posted a report from the trenches to the patterns listserver [4]. Thanks to the overwhelming response from patterns lovers everywhere, I felt I was not alone in struggling to introduce patterns to my company. I received several requests for the introductory materials I had created, so I posted an ASCII version of my presentation.

The GOS requested an evaluation phase. Members of the evaluation team included designated representatives of the GOS, some of our resident OO gurus, and others who were just interested in patterns. There were about twenty team members in all.

We ordered copies of the GOF text for the team and others around AG Communication Systems. This part is key. Put the book in the hands of knowledgeable designers and patterns will begin to take hold. It's not enough to derive a lot of benefit, but it is a powerful initial step. My advice to correspondents on the listserver was: start spreading the word by ordering books. Get enough for an evaluation team and more because you'll find that others will want a copy. That's the biggest selling point for patterns - there is a book and designers will start reading it!

The evaluation phase comprised four one-hour meetings over a two-week period. We covered the five patterns and the example in Ralph Johnson's paper [5]. The evaluation meetings were open to anyone who was interested in patterns. That provided a larger audience for the information and more input for the discussions. The papers [6-17] listed in the references were also made available.

It was a thoroughly enjoyable experience - the chance to get together with other developers and talk about design problems and possible patterns solutions. This kind of self-examination doesn't often occur in today's pressured environment. Typically, we rush headlong into the next project without stopping to adequately reflect on what we should have learned from the last. As a result, we could make the same mistakes over and over.

Some members of the team expressed their concern with the lack of real-time, embedded system considerations in the GOF text. These are not trivial enhancements and I anticipate that someone will provide them in the future. Until then, we're building on the GUI examples in the motivation. It's true that everyone can understand this context and that's a good beginning.

The evaluation phase was easy. The patterns sell themselves. The team had no trouble answering the questions:

1. Is the notion of patterns a worthwhile technology for AG Communication Systems? The consensus was an overwhelming yes!

2. Are the patterns in the GOF text worth a training investment? Again, the consensus was an overwhelming yes!

I went back to the GOS with the results and the following suggestions:

1. Every interested designer should have a copy of the GOF text.

2. We should provide training for teams, to enhance communication and design knowledge.

3. I would continue the noon-time brown bag meetings, covering the rest of the patterns, to keep the momentum and provide help for teams who really needed this information. The word was out and patterns were already appearing on some projects.

At this point, we were fortunate to find a training/consulting organization that would come in for a trial with our evaluation team. The training was based on the GOF text and spanned an intensive three days. The evaluation team liked the course but found that twenty-three patterns in three days was too much. They also made some minor suggestions about format and the lab exercise(s).

Ralph Johnson has observed that [18] "... people can't learn patterns without trying them out. Also, people need to find them in their own problem domain." Ralph is absolutely right about the difficulty of learning patterns from lecture. The trial offering of the course uncovered that problem - even though all the members of that group had been through the GOF text in the brown bags.

Fortunately, the trainer spent time after class working with some of the students to apply patterns to their design problems. This experience was so valuable that we wanted to incorporate this consulting opportunity in the training package and reduce the concentrated patterns presentations. The class schedule was changed from three full days to one full day followed by four half-days of training, allowing for four half-days of consulting. We tried to schedule each course offering for a specific team to provide the biggest leap in abstraction and communication. In most cases, however, teams felt that having everyone out for training at the same time was not possible, so they split into two or more sessions. This meant the consulting time was open to all the teams. Some couldn't take advantage of it and did not benefit as much.

Some of the questions raised during this part of the adventure included: What should we do next? Do we start patterns mining and how is that done? We also have another side of the house that is not object-oriented. Managers of those developers were concerned that they were being left out of all the patterns activity. The GOF text was object-oriented; the training was object-oriented. How could they be a part of this new technology?

The answers to these questions came in the guise of an exceptional fellow at AT&T, Jim Coplien (Cope), and his colleague, Bob Hanmer, who introduced us to writers workshops. Cope showed us a new way to look at patterns. Cope and Bob are patterns mining the 4ESS®, one of AT&T's large telecommunications switches. The patterns they shared with us had no object diagrams or C++ code. Furthermore, some of our developers recognized some of the patterns as part of the object-oriented projects and the GTD-5®, the large switch we develop for GTE and independent telephone companies.

As a result of this experience, we have started patterns mining on the GTD-5® with the help of resident domain experts. We hope to share knowledge of patterns across the company and with the folks on the 4ESS®.

Ralph Johnson [18] said, "You'll find that most people are not good at finding patterns. Fortunately, you don't need (or want) most people to be doing that. You want to make everybody feel included and wanted, but ultimately people will sort themselves out into those who will want to work on finding patterns and those who don't. ... your organization's real job is to get a product finished, and patterns are a means to that end. Most people should just get on with their work."

We held writers workshops to look at some of the 4ESS® patterns. Thus far, most of the patterns have also been seen on the GTD-5®, so even if they weren't written here, they should be familiar to many of our developers. Some modification will be required for these patterns before they become ours.

Ralph Johnson comments on this activity [18]: "Working with people from AT&T who are working on similar problems is of course an outstanding idea. That is probably where you should put your energy for finding new patterns, because there will be a lot of synergy. Moreover, the best way to find patterns is to compare and contrast similar systems. So, you should take advantage of this opportunity."

We have a local patterns home page, which is currently behind a firewall. The patterns from the 4ESS®, from Cope's writers' workshop, and the patterns we have found on the GTD-5® are referenced here; each allows input from readers to enable the evolution and improvement of these patterns. This should allow us to create evolving, changing patterns that would eventually be part of a "Best Practices" handbook. There are also several links to other patterns locations [19].

We are also establishing a patterns mining process. We are encouraging developers to write their own patterns, attempting to answer the questions, "What knowledge would be lost to the company if I were to leave tomorrow? What do I know that I have done a thousand times that I think everyone already knows?" Patterns then go through a writers workshop [20]. After updates to the pattern have been made, the pattern is posted on our home page to evolve as others read the pattern and make comments. After a suitable interval, some of these patterns would become part of the "Best Practices" handbook and used for training newcomers to projects and the company.

We are adopting Cope and Bob's approach of interviewing domain experts who don't have the time to write patterns. The interviews are taped and used for patterns creation by pattern crafters. After a pattern has been identified, it goes back to the domain expert, then through a writers workshop and on to the Web page.

I feel the time is right for patterns. People in the object-oriented community are looking for help and, while patterns are not the silver bullet, they offer some help with just a little investment.

There's an interesting side-effect in the patterns activities. Developers at AG Communication Systems feel they're really on the cutting edge and they are! It's exciting to have famous visitors who share what they have learned. There's a sudden interest in attending conferences and classes, including Ralph Johnson's course on patterns at the University of Illinois, this year's PLoP, and OOPSLA '95. When asked about productivity benefits from patterns, I have pointed out that people who are excited about their work and feel a part of something stimulating and rewarding will be more productive, regardless of the technology that's involved. I'm very happy to be a part of something that brings this kind of benefit to my fellow workers.

References

1. Alexander, Christopher, et al. A Pattern Language, Oxford University Press, New York, 1977.

2. Coplien, James O. and Douglas C. Schmidt, ed. Pattern Languages of Program Design, Addison-Wesley, 1995.

3. Gamma, Erich, Richard Helm, Ralph Johnson, and John Vlissides. Design Patterns: Elements of Reusable Object-Oriented Software. Reading, MA: Addison-Wesley, 1995.

4. http://st-www.cs.uiuc.edu/users/patterns/Lists.html

5. Johnson, Ralph E. "How Patterns Work in Teams," ROAD, September-October 1994.

6. Booch, Grady. "Patterns," Object Magazine, July-August 1993.

7. Coplien, James O. "Curiously Recurring Template Patterns," C++ Report, February 1995.

8. Coplien, James O. "Generative Pattern Languages: An Emerging Direction of Software Design," Proceedings of the 5th Annual Borland International Conference, June 1994.

9. Coplien, James O., "Setting the Stage," C++ Report, October 1994.

10. Coplien, James O. "Software Design Patterns: Common Questions and Answers," AT&T Bell Laboratories report.

11. Coplien, James O. "What I Did On My Summer Vacation," C++ Report, September-October 1994.

12. Huni, Hermann, Ralph Johnson, and Robert Engel. "A Framework for Network Protocol Software," submitted for OOPSLA '95.

13. Koenig, Andrew. "Patterns and Antipatterns," JOOP, March-April 1995.

14. Lea, Doug. "Christopher Alexander: An Introduction for Object-Oriented Designers," Software Engineering Notes, Vol. 19, No. 1, January 1994.

15. Schmidt, Douglas C. and Paul Stephenson. "Using design patterns to evolve system software from UNIX to Windows NT," C++ Report, March-April 1995.

16. Vlissides, John. "Pattern hatching - Perspectives from the "Gang of Four," C++ Report, March-April 1995.

17. Vlissides, John, "Reverse Architecture," IBM T.J. Watson Research Center report.

18. Johnson, Ralph E., Electronic mail message.

"Patterns: Spreading the Word," Object Magazine, Dec. 1996, pp. 54-57.

© 1997 by SIGS Publications, Inc., used with permission.


© 2001 AG Communication Systems, used with permission.