Introduction
Software design patterns, first codified by Gamma et. al.
have become an indispensable tool for the jobbing
programmer. In software development, design patterns are structured
descriptions of the common ways in which programmers overcome the kinds of
problems which occur again and again in their work. By formalizing such
patterns, programmers are able to talk to each other about them, to compare
different patterns for a given solution, and to develop a reusable "tool-box"
of both software components and approaches to building software components. For
topic map practitioners, there is an interesting parallel. Often in a topic map
application there will be more than one way of achieving a goal - the structure
of topic maps is sufficiently flexible that two topic map designers faced with
a problem may generate two (or more!) different solutions. In many cases there
is no single correct solution, but instead a set of trade-offs to choose
between. Developing formal patterns for topic map design would benefit
designers in the same way as software engineers benefit from software design
patterns:
-
Design patterns can be compared for their strengths and
weaknesses
-
Design patterns can be reused in different applications
-
Less experienced designers can benefit from the insights
provided by patterns used by other designers.
-
Tools can be built around patterns, making it easier to adopt
the patterns and allowing application designers to concentrate on the
higher-level aspects of the application.