Towards tool support for design patterns using program transformations

Design patterns have greatly helped spreading a limited number of well-tried solutions to recurring object-oriented problems. But as new patterns are introduced at a steady rate, the concept must evolve so that tools can help programmers not to be lost, facing a host of patterns. In this paper, we propose that design patterns be systematically analyzed and reformulated to exhibit a reasoning binding solutions to precisely stated problems, given a set of mechanisms. We show on some creational patterns how these mechanisms can be described as program transformations and how an assistant tool could systematically explore the set of potential solutions induced by these transformations. This would both help the selection and the instantiation of the appropriate patterns. NOTE. — This paper is an improved and at least twice longer version of [ZIA 00]. RESUME. Les modeles de conception ont largement participe a la diffusion de solutions eprouvees a des problemes recurrents de conception et de programmation a objets. Pourtant le concept doit a present evoluer pour que les programmeurs puissent gerer le nombre croissant de ces modeles. Dans ce papier nous proposons que les modeles de conception soient systematiquement analyses et reformules pour exhiber un raisonnement liant les solutions a des problemes decrit precisement, etant donne un ensemble de mecanismes. Nous montrons sur certains modeles createurs comment ces mecanismes peuvent etre decrits comme des transformations de programmes et comment un outil d'assistance pourrait systematiquement explorer l'ensemble des solutions possibles induit par ces transformations. Ceci faciliterait la selection mais aussi l'instanciation des modeles appropries.

[1]  Eric Amiel,et al.  Supporting Explicit Disambiguation of Multi-Methods , 1996, ECOOP.

[2]  James O. Coplien Software design patterns: common questions and answers , 1998 .

[3]  Amnon H. Eden,et al.  LEPUS - SYMBOLIC LOGIC MODELING OF OBJECT ORIENTED ARCHITECTURES: A CASE STUDY , 1999 .

[4]  Craig Chambers,et al.  A debate on language and tool support for design patterns , 2000, POPL '00.

[5]  Stuart Kent,et al.  Precise Visual Specification of Design Patterns , 1998, ECOOP.

[6]  Linda Rising,et al.  The Pattern Almanac 2000 , 2000 .

[7]  Bruce G. Lindsay,et al.  Static type checking of multi-methods , 1991, OOPSLA '91.

[8]  AgrawalRakesh,et al.  Static type checking of multi-methods , 1991 .

[9]  Christopher Alexander,et al.  The Timeless Way of Building , 1979 .

[10]  Gerson Sunyé,et al.  Génération de code à l'aide de patrons de conception , 1999, LMO.

[11]  James O. Coplien,et al.  Patterns for Encapsulating Class Trees , 1995 .

[12]  Helmut A. Partsch,et al.  Specification and transformation of programs , 1990 .

[13]  Dirk Riehle,et al.  Patterns for encapsulating class trees , 1996 .

[14]  Ralph E. Johnson,et al.  A Refactoring Tool for Smalltalk , 1997, Theory Pract. Object Syst..

[15]  James Coplien,et al.  Advanced C++ Programming Styles and Idioms , 1991, Proceedings. Technology of Object-Oriented Languages and Systems, TOOLS 25 (Cat. No.97TB100239).

[16]  Linda Rising,et al.  The Pattern Almanac , 2000 .

[17]  Ellen Agerbo,et al.  How to preserve the benefits of design patterns , 1998, OOPSLA '98.

[18]  Rakesh Agrawal,et al.  Static type checking of multi-methods , 1991, OOPSLA '91.

[19]  Jan Bosch,et al.  Language Support for Design Patterns , 1996 .

[20]  John M. Vlissides,et al.  Automatic Code Generation from Design Patterns , 1996, IBM Syst. J..

[21]  Ralph Johnson,et al.  design patterns elements of reusable object oriented software , 2019 .

[22]  Amnon H. Eden,et al.  Precise specification and automatic application of design patterns , 1997, Proceedings 12th IEEE International Conference Automated Software Engineering.

[23]  James O. Coplien,et al.  Pattern languages of program design , 1995 .