9.2 The Pattern Idea

9.2 The Pattern Idea

By the time Peter Coad's article appeared in 1992, which established a mindshare toehold for the idea among developers in general, the beginnings of a community had been formed.

The notion of patterns seemed to be in the air in the late '80s. The proceedings from OOPSLA86 mention pattern 60 times (incidentally and interestingly, a high-water mark for the term in the annals of OOPSLA for the following decade) mostly in connection with AI, message-passing, and pattern-matching. But only one paper by Bertrand Meyer (discussing ADA versus object-oriented languages) had some tantalizing references, limited to patterns of generic parameters in ADA packages that perhaps hint at design patterns.

9.2.1 First Hints

In 1987, Tom DeMarco and Tim Lister, two well-known methodology gurus from the old school, published a book called Peopleware: Productive Projects and Teams. It was the first mention of patterns but not software patterns. In studying more than 500 software projects, they found that the great majority that failed (a sizable chunk) had not failed for technological reasons. Instead, usually a project's "sociology" was at fault: its management culture, team setup, or physical space. In looking for solutions, they targeted many of the problems that have since ended up on the menu of software pattern writers. For example, they examine ways to deal with a major management failing: "a tendency to manage people as though they were components" (DeMarco and Lister 1987). And much of their discussion of the problems and solutions takes a metaphorical, essay-like form. So, they saw Alexander's ideas as a congenial base for sensible solutions to the organizational problems that were endemic to development.

In that same year, Ward Cunningham and Kent Beck started looking into applying Alexander's ideas to interface design. Kent discovered Alexander while he was an undergraduate at the University of Oregon. This wasn't too difficult because he was surrounded by Alexander there. The Oregon campus was designed by Alexander and his colleagues, using the principles that Alexander championed and ultimately published in book form as The Oregon Experiment (1988).

Kent Beck picked up Alexander's ideas almost by osmosis:

Many of the students in my freshman dorm (accurate nickname "Gonads") were in the School of Architecture. Since I had been drawing goofy house plans since I was six or seven, they pointed me in the direction of Christopher Alexander. I read all of The Timeless Way of Building standing up in the university bookstore over the course of several months. (Beck 1994)

Awhile later, after graduating, he came across Alexander again:

I had been working at Tektronix for a year and a half I found a battered old copy of Notes on the Synthesis of Form Alexander's excoriation of methodologists in the introduction to the second edition resonated with my biases It seemed everything he didn't like about architects, I didn't like about software engineers. (Beck 1994)

9.2.2 The Early Years

Kent and a friend, Ward Cunningham, were developers working with Smalltalk, one of the first object-oriented languages. They were also designing user interfaces. A problem project became an opportunity to try this novel approach called patterns:

Ward and I were consulting with a group that was having trouble designing a user interface. We decided, in Ward's VW Vanagon on the way over, to try out the pattern stuff we'd been studying. Alexander said the occupiers of a building should design it, so we had the users of the system design the interface. Ward came up with a five-pattern language that helped them take advantage of Smalltalk's strengths and avoid its weaknesses We were amazed at the (admittedly Spartan) elegance of the interface they designed. (Beck 1994)

The first patterns?

  • Window per Task

  • Few Panes

  • Standard Panes

  • Nouns and Verbs

  • Short Menus (Beck 1994)

These patterns are very simple: Window per Task determines what windows will be available and what will be done in them; Few Panes and Standard Panes divide each window into panes; Nouns and Verbs and Short Menus identify what can be done within each pane.

Unfortunately, the time wasn't quite ripe for an earthshaking revolution:

We reported the results of this experiment at OOPSLA'87 in Orlando. We talked patterns until we were blue in the face, but without more concrete patterns nobody was signing up. (Beck 1994)

Only Grady Booch, who was even then concerned with object design methods, seemed interested at the time: he had a suggestion for a pattern language from his work with the military.

Then, between 1987 and 1993, a number of developers started to take an interest in patterns, in many cases independently. Sometimes, they met.

9.2.3 The Idea Emerges

Bruce Anderson, from IBM UK; Erich Gamma, at that point a Computer Science student in Switzerland; and Richard Helm (another IBMer) got together at EcoopOopsla90 and started talking patterns. Erich Gamma had been thinking about patterns as part of his Ph.D. He included design patterns in his thesis in 1991, and in the book that came out of it in the following year. The summer of 1991 saw Erich joining Richard Helm "on a rooftop in Zurich on a sweltering summer's day" (Coplien and Schmidt 1995, ix), and the result was the start of the first catalog of design patterns.

Later that year, there were two events at OOPSLA that provided a big nudge.

First, Peter Coad and Mark Mayfield conducted a workshop on patterns that supplied momentum. The workshop struggled with an agenda that included defining patterns, identifying a few, and figuring out their impact. One result was a long list of potential patterns over quite a range. Another was a recognition that a lot of work was needed to make them useful especially in the area of developing templates or standard formats. Plans were laid to repeat the workshop the following year.

Then, Bruce Anderson ran a workshop on developing an architecture handbook. This turned out to be the seminal event for the culture of patterns and the starting point for the patterns community. Many of the people who would later turn out to be key participants in shaping the patterns movement were there.

The WikiWikiWeb story of what happened in Bruce Anderson's workshop gives a sense of the summer camp atmosphere that helped spark the beginnings:

[C]onflicting visions of the future were in the air. Kent Beck's vision of the future was patterns. When Bruce told the group to work in pairs to write an entry for the Architecture Handbook, Kent grabbed Ralph [Johnson] They spent an hour or so writing down 8 or 9 patterns for using HotDraw [a graphics meta-tool] and then coerced Norm Kerth into acting as their test subject. They taught him the patterns, and then when it came time to present their entry to the group, they had Norm show it off by designing a dataflow diagram editor, in real-time and unrehearsed Both Ralph and Kent thought it was a fabulous success. (Kent And Ralph At The Architecture Workshop 1997)

After the fun was over, Ralph Johnson took the patterns home with him, and soon discovered that they needed help:

A month later, Ralph looked at the patterns and thought they looked bare and feeble. Nobody would understand them unless they were better explained. He couldn't understand why he had been so excited a month before, but trusting the memory of his enthusiasm, he fleshed out the few lines into a few pages, and started circulating them. (Kent And Ralph At The Architecture Workshop 1997)

Using his students as guinea pigs, Ralph came to the conclusion that some sort of structure was needed for the patterns to be effective for learning (Kent and Ralph had written them up as individual paragraphs). Ralph went back to the conceptual roots to come up with a format:

I studied Alexander's pattern language again, and realized that each pattern relied on examples and that he provided explanations for his patterns in terms of underlying theories of the properties of building materials or social interaction I integrated the examples with the pattern [and] put enough of the theory of design in the first pattern to define the main vocabulary and put the rest as far down in the patterns as possible The patterns are the only documentation for a version of HotDraw that has been distributed since early 1992, and users say they are satisfied with it Writing the patterns was not hard once I figured out the format. (Johnson 1995)

Meanwhile, on a parallel track, Jim Coplien from AT&T had produced a collection of idioms (language-specific C++ patterns) that were making their way around AT&T as early as 1989. In 1991, they were published as a book, Advanced C++ Programming Styles and Idioms (Coplien 1991). (Jim and Ralph have since become the bookends of the pattern community, each acting as conscience and goad when the community seems to lose touch with the original spirit and intentions.) By 1992, Jim had been exposed to Alexander as well.

IBM itself became interested: Bruce Anderson, by now godfather of patterns workshops and still an IBMer, held a workshop that IBM sponsored at its Thornwood education center in May 1993, with many from the inchoate patterns community in attendance.

9.2.4 The Beginnings of PLoP

August 1993 saw a number of the original Architecture Handbook workshop participants, and others such as Jim Coplien, holed up at a mountain retreat in Colorado initiated by Kent Beck and Grady Booch. Their mandate: "evaluating patterns as an answer to the question, What comes after objects?"(Coplien 1994a).

They decided to start a formal group to sponsor further work on patterns, including what was to become the Pattern Languages of Program conference series (PLoP). They called their group the Hillside Generative Patterns Group, after spending a "breathless" session on a hillside working with Alexander's patterns directly and thinking about a design for an office for the group. They used the term generative originally to indicate that they wanted patterns that worked like Christopher Alexander's as creative tools for planning and building, rather than simply those that "captured observations" (Cunningham and Beck 1997).

Planning for the first PLoP started in April 1994. The group was joined by Richard Gabriel, then a professor of computer science at Stanford who had started looking into Alexander's ideas seriously in 1992. He was also a struggling poet and fit the culture of the group well:

We wanted something really wacky and unusual [Dick Gabriel] exhorted us all to go into PLoP with confidence and act as though we knew what we were doing. On August 4, about 80 people came together at the Allerton Park estate near Monticello, Illinois, to do just that. Things went well, with even the weather cooperating. Ward Cunningham and Ralph Johnson were program and conference chair, respectively. Kent, who had just welcomed a new addition to his family, couldn't make it The PLoP proceedings came out in May, 1995, as "Pattern Languages of Program Design." (Cunningham and Beck 1997)

Jim Coplien regarded the PLoP conference as a "watershed event" (Coplien and Schmidt 1995, ix x). Some of the other attendees were a little less overwhelmed with the proposed new addition to the programmers' and designers' family of tools. Robert Martin, like Coplien a C++ guru, commented:

I arrived at PLoP with high hopes of a very dynamic and information packed conference a pragmatic conference In many ways, this is just what I got. The majority of the papers presented were well done and worth reading [but] there were several things that bothered me I wanted to hear people discuss their own successes and failures with certain patterns Instead, there seemed to be a lot of folks at the conference who felt that "patterns" was the "way," the "solution," the long sought "magic bullet" Excitement was high, but in many cases substance was low there was a tendency to talk about patterns in general; as if there was some spiritual significance in the word "pattern" (Martin 1994)

9.2.5 The Gang of Four and After

While PLoP was being born, Erich Gamma, Ralph Johnson, Richard Helm, and John Vlissides had gotten together to continue the work Erich and Richard started on the rooftop in Zurich in 1991. After a flurry of emails, and a context that included " four countries, three marriages and the birth of two [unrelated] offspring" (Gamma et al. 1995, 429), the result was to be the book on object-oriented patterns and one of the key works on object-oriented design. Called Design Patterns: Elements of Reusable Object-Oriented Software (1995), it was finally published in 1994, just in time for OOPSLA94. It was a runaway success from the start:

It sold 750 copies at the conference more than seven times the highest number of any technical book Addison-Wesley had ever sold at a conference. The book is still doing very well. In fact, Journal of Object-Oriented Programming (JOOP) named it (in their September 1995 issue) both the best object-oriented book of 1995, and the best object-oriented book of all time. (Cunningham and Beck 1997)

Robert Martin's reaction highlights the significance of the book:

For some of us, the patterns in Gamma's book are not new ideas. We have been using techniques like them for years. What is new, however, is the notion of giving them names and standard forms and putting them in a catalog. Giving these patterns names and standard forms allows us to reason about them, and to use them as formal components in our designs. Cataloging them makes them accessible to those of us who have not stumbled across the techniques on our own. (Martin 1994)

The cataloguers came to be known as the Gang of Four, named after the anti-Mao faction in the Chinese Communist Party in the '70s, and the book and its patterns are frequently cited as Gang of Four patterns.

Other works started appearing. In 1995, Peter Coad resurfaced with hisbook Object Models: Strategies, Patterns, and Applications (Coad 1996),which broke ranks with the emphasis on following Alexander. Hesuggested instead that software patterns be treated as templates and examples without any extraneous philosophical baggage an ongoing debate.

The proceedings from PLoP1 were published in book form in 1995, edited by Jim Coplien and Doug Schmidt (Coplien 1994a).PLoP2andPLoP3carried on this "tradition" with PLoP3's collection co-edited by a now convinced Robert Martin (1994). Pattern-Oriented Software Architecture: A System of Patterns(also called "the POSA book") (Buschmann et al. 1996) has already been mentioned. Since then, books such as Analysis Patterns (1997) by Martin Fowler have extended the scope of the genre, and AntiPatterns: Refactoring Software, Architectures, and Projects in Crisis (1998) by William J. Brown, Raphael C. Malveau, William H. Brown, Hays W. McCormick III, and Thomas J. Mowbray have opened up different ways to use the pattern notion.



A UML Pattern Language
A UML Pattern Language (Software Engineering)
ISBN: 157870118X
EAN: 2147483647
Year: 2005
Pages: 100
Authors: Paul Evitts

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net