next Existing Pattern Representations
up Ontological Representations of Software Patterns (keywords: ontology, pattern)
previous Introduction

PDF version   PostScript version


Software Patterns: Evolution

In their early years, patterns have been mainly used within the community close to the group that described them. A number of fundamental patterns have been refined, in particular at the level of design [4], and are now widely used among software engineers. They are involved in the construction of most medium-size and large object-oriented systems. Some have also been integrated in programming platforms, such as Java, becoming thus readily available for application programming.

As the result of almost a decade of pattern mining, a large quantity (hundreds) of patterns have been described, reviewed, and catalogued. However there have been few initiatives to structure and organise this knowledge [3] into a consistent representation framework.

The rate of growth varies with respect to the level of abstraction--with reference to the specification of a solution--but more so with the level of generality--with reference to the reusability across application domains. General or core patterns tend to be considered as fundamental abstractions and, in time, become integrated into programming languages and tools. Their number is limited and essentially constant. A rate of growth is displayed by patterns specified at the level of middleware. This is because software applications are increasingly complex and, thus, have to be developed around middleware platforms (e.g. J2EE).

A higher rate can be predicted at the level of particular application domains or within particular software development companies. Patterns can naturally describe expertise regarding a specific software development application. Furthermore, they can also naturally express specific policies regarding software development within different organisations. The focus, here, is on promoting the use of explicit, locally defined constructs, motivated by concerns like quality, security, performance or code management.

Domain specific patterns is the category that strongly motivates our work. Because they represent a natural way for the formulation of accumulated expertise and policies, we consider that they will become the means for the representation of such knowledge. Consequently, large knowledge repositories of domain specific patterns will be created (both within organisations and for general use). Furthermore, domain specific patterns form a dynamic pool of knowledge. They are expected to evolve more rapidly than the more generic ones, because the requirements within application domains are under continuous change, and their review and publication process can be expected to be less rigorous.

At this end, manual use of patterns is not an effective solution anymore. Their expected development depends on the existence and motivates the development of tools for their automatic organisation, retrieval and explanation. By development we mean both refinement/statement and employment/use. The latter term encapsulates all the various cognitive activities involved in software development--such as understanding whether to use or not a pattern applicable to a given context, choosing a particular pattern suitable to a specific context and understanding how to generate code in accordance to a particular chosen pattern--and sharing.


next Existing Pattern Representations
up Ontological Representations of Software Patterns (keywords: ontology, pattern)
previous Introduction

Copyright ©2004-05-12 Jean-Marc Rosengard