(L3) Software Patterns
(L3) Software Patterns
Schmidt,
M
Ralph E. Johnson,
handbooks that describe successful Guest Editors
s o l u t i o n s t o k n ow n p ro b l e m s . Fo r
i n s t a n c e , a u t o m o b i l e d e s i g n e r s d o n’ t d e s i g n c a r s u s i n g t h e l a w s o f
physics. Instead, they reuse standard designs with successful track
records. The minor percentage in performance value
a s s o c i a t e d w i t h s t a r t i n g f r o m s c r a t c h t y p i c a l l y i s n’ t
worth the cost.
T he theme of this section is patterns, which are attempts to describe suc-
exist, patterns have proven useful in the short term to help people reuse success-
ful practices. Not only do patterns teach useful techniques, they help people com-
municate better, and they help people reason about what they do and why. In addition, patterns are
A pattern is a recurring solution to a standard problem. When related patterns are woven
together they form a language that provides a process for the orderly resolution
vocabulary for talking about a particular problem. Both patterns and pattern lan-
guages help developers communicate architectural knowledge, help people learn a new design
paradigm or architectural style, and help new developers ignore traps and pitfalls that have tra-
Patterns have a context in which they apply. In addition, they must balance, or trade off, a set of
opposing forces. We must make all these things clear as we describe patterns. Clarity of expression
makes it easier to see when and why to use certain patterns, as well as why not use these patterns. All
solutions have costs, and pattern descriptions should state the costs clearly.
TERESA BERASI
From one point of view, there is nothing new about patterns since, by definition, patterns cap-
ture experience. It has long been recognized that expert programmers don’t think about programs
Integration with current software development methods and soft- RALPH E. JOHNSON is on the faculty of the computer science
ware process models. Patterns help to alleviate software department at the University of Illinois at Urbana-Champaign. He
has helped develop an object-oriented operating system (Choices),
complexity at several phases in the software life cycle. compiler (Typed Small talk), graphics editor framework (HotDraw),
Although patterns are not a software development among others; email: [email protected]
method or process, they complement existing methods
and processes. For instance, patterns help to bridge the
abstractions in the domain analysis and architectural ©ACM 0002-0782/96/1000