|
P
atterns
have gained a significant role in all areas of software development since
Design
Patterns
by Gamma, Helm, Johnson, and Vlissides was published in 1994.
Today there are patterns for implementation, design, analysis, and organization
of software development. Now
AntiPatterns
promises to add a new
facet to this pattern movement.
According to the authors, "An
AntiPattern is a literary form that describes a commonly occurring solution
to a problem that generates decidedly negative consequences. (...) When
properly documented, an AntiPattern describes a general form, the primary
causes which led to the general form; symptoms describing how to recognize
the general form; the consequences of the general form; and a refactored
solution describing how to change the AntiPattern into a healthier situation."
In discussing the patterns that make projects go sour, the authors of
AntiPatterns
cover all fundamental areas of software business and provide guidance on
refactoring solutions based on identifying dysfunctional behavior.
AntiPatterns
consists
of two parts: the first, smaller, part introduces AntiPatterns and the
abstract models and forces behind them. The second part discusses 50 AntiPatterns,
grouped into three categories: development, architecture, and project management.
An example from each category illustrates the idea of AntiPatterns.
One development AntiPattern
is cut-and-paste programming. In this AntiPattern, code reuse by copying
source statements leads to significant maintenance problems. Developers
should use alternative forms of reuse, including black box reuse, and reduce
maintenance issues by having common source code, testing, and documentation.
Vendor lock-in is one type
of architectural AntiPattern. Vendor lock-in occurs in systems that strongly
depend on proprietary architectures. The use of architectural isolation
layers can provide independence from vendor-specific solutions.
Finally, an example of a project
management AntiPattern is death by planning. In this case, excessive planning
for software projects leads to complex schedules that cause downstream
problems. The authors describe how to plan a reasonable software process
that includes incorporating knowledge facts and incremental replanning.
AntiPatterns
helps to
identify what might be wrong with a software project and what can be done
to solve the problems. Since it does not focus on in-depth technical patterns
but covers the entire range of software development issues, including management
and organizational matters, the book is easy and worthwhile reading. Its
greatest merit is in the establishment of a common vocabulary, which might
ease communication between inherently different groups in a software projects,
such as developers, architects, and managers. They can use the terms defined
in
AntiPatterns
to discuss problems and solutions in a language
that all share and understand.
Angelika Langer
develops
and teaches classes on advanced C++, STL, multithreading, internationalization,
and Java. She has served on the ANSI/ISO C++ Committee since 1993.
Klaus
Kreft
is a software architect and consultant with more than a decade
of experience in industrial software development. He works for Siemens
Business Services in Germany. Langer and Kreft are working on a book about
standard C++ iostreams and locales and are columnists for
C++
Report
.
|