Abstract Software developers utilize design methods that enable them to manipulate conceptual structures that correlate to programming language features. However, programming languages and the programming paradigms they embody co-evolve over time. Within industrial and academic circles, for example, object-oriented programming has evolved and effectively replaced imperative programming. More recently, many object-oriented languages have assimilated features from other programming paradigms, evolving into multiparadigm languages we refer to as ‘object-oriented plus–plus’ or OO++. This language evolution may weaken the interface between design and implementation, introducing what we call ‘design dysphasia’—a partial disability in the use of a programming language because of incongruous design methods. Software design patterns capture elements of reusable design within a specific context. When the programming languages that are part of pattern context evolve, patterns must adapt to the language change or they may reinforce design dysphasia in the practitioner. We assert that the current ‘capture/recapture’ pattern maintenance model is suboptimal for adapting patterns to language evolution and propose a new ‘capture/modify/recapture’ maintenance cycle as a more effective approach. We then suggest a concrete ‘modify’ phase for current patterns to be adapted to object-oriented based multiparadigm language trends. We present an OO++ Iterator pattern as an example throughout.
[1]
Yannis Smaragdakis,et al.
FC++: Functional tools for object‐oriented tasks
,
2002,
Softw. Pract. Exp..
[2]
Brandon Goldfedder.
The Joy of Patterns: Using Patterns for Enterprise Development
,
2001
.
[3]
Ali Mili,et al.
An empirical study of programming language trends
,
2005,
IEEE Software.
[4]
Joseph Dvorak.
Conceptual entropy and its effect on class hierarchies
,
1994,
Computer.
[5]
W. Mitchell,et al.
A paradigm shift to OOP has occurred…implementation to follow
,
2001
.
[6]
Charles D. Knutson.
Pattern systems and methodologies for multiparadigm analysis and design
,
1998
.
[7]
Peter Sommerlad,et al.
Pattern-Oriented Software Architecture Volume 1: A System of Patterns
,
1996
.
[8]
Ralph Johnson,et al.
design patterns elements of reusable object oriented software
,
2019
.
[9]
Margaret M. Burnett,et al.
Operational versus definitional: a perspective on programming paradigms
,
1992,
Computer.
[10]
Martin Odersky,et al.
Pizza into Java: translating theory into practice
,
1997,
POPL '97.